adang1345 / delvewheel

Self-contained Python wheels for Windows
MIT License
123 stars 12 forks source link

Experience with delvewheel and the PostgreSQL libpq #13

Closed dvarrazzo closed 3 years ago

dvarrazzo commented 3 years ago

Hello,

I am using cibuildwheel+delvewheel to build psycopg >= 3 packages on GitLab CI runners.

The psycopg package depends on the libpq.dll (the Postgres client library) which in turn depends on a bunch of other libraries. One of them is libiconv-2.dll. It seems that the version of this library distributed with PostgreSQL cannot be managed by delvewheel, resulting in this error.

I am running other tests but it seems that using --no-mangle libiconv-2.dll produces a working package.

It also happen that the GitLab CI runner has other software installed, which include another libiconv-2.dll on the path, coming from git. delvewheel has no problem with this version of this library (but I am modifying the build pipeline to remove these unwanted files).

Just wanted to share this. I think everything is working ok and I don't think there's anything to do about the libiconv. However if you want I can try and run more tests.

Thank you for this tool!

adang1345 commented 3 years ago

It looks like the particular copy of libiconv-2.dll in question cannot be name-mangled. The machomachomangler dependency can't handle certain DLLs during the name-mangling step if that DLL was built in a particular way. In this case, the solution would be to use the --no-mangle flag or use a different libiconv-2.dll. What you're doing now is fine.