conda-forge / expat-feedstock

A conda-smithy repository for expat.
BSD 3-Clause "New" or "Revised" License
0 stars 19 forks source link

Heads-up: expat-2.2.9 renames the DLL on Windows #22

Closed tigarmo closed 4 years ago

tigarmo commented 4 years ago

Issue: Expat 2.2.9 renames the DLL from expat.dll to libexpat.dll.


Environment (conda list):

``` (expat-vtk-py36) λ conda list # packages in environment at X:\1\envs\expat-vtk-py36: # # Name Version Build Channel bzip2 1.0.6 vc14_1 [vc14] mirror-conda-forge ca-certificates 2019.11.28 hecc5488_0 mirror-conda-forge certifi 2019.11.28 py36_0 mirror-conda-forge curl 7.65.3 h4496350_0 mirror-conda-forge expat 2.2.9 he025d50_0 mirror-conda-forge freetype 2.10.0 h563cfd7_1 mirror-conda-forge future 0.18.2 py36_0 mirror-conda-forge hdf4 4.2.13 hf8e6fe8_1003 mirror-conda-forge hdf5 1.10.4+1 h6538335_3 esss jpeg 9c hfa6e2cd_1001 mirror-conda-forge jsoncpp 1.8.4 h1ad3211_1002 mirror-conda-forge krb5 1.16.4 hdd46e55_0 mirror-conda-forge libcurl 7.65.3 h4496350_0 mirror-conda-forge libiconv 1.15 hfa6e2cd_1005 mirror-conda-forge libnetcdf 4.6.2 h396784b_1001 mirror-conda-forge libpng 1.6.37 h7602738_0 mirror-conda-forge libssh2 1.8.2 h642c060_2 mirror-conda-forge libtiff 4.0.9 h36446d0_1002 mirror-conda-forge libxml2 2.9.10 h9ce36c8_0 mirror-conda-forge lz4-c 1.8.3 he025d50_1001 mirror-conda-forge openssl 1.1.1d hfa6e2cd_0 mirror-conda-forge pip 20.0.2 py36_0 mirror-conda-forge python 3.6.7 he025d50_1006 mirror-conda-forge setuptools 45.1.0 py36_0 mirror-conda-forge tbb 2019.9 he980bc4_1 mirror-conda-forge tk 8.6.10 hfa6e2cd_0 mirror-conda-forge vc 14.1 h0510ff6_4 mirror-main vs2015_runtime 14.16.27012 hf0eaf9b_1 mirror-main vtk 8.2.0 py36h2e9203a_201 mirror-conda-forge wheel 0.34.1 py36_0 mirror-conda-forge wincertstore 0.2 py36_1003 mirror-conda-forge zlib 1.2.11 vc14_0 [vc14] mirror-conda-forge ```


Details about conda and system ( conda info ):

``` (expat-vtk-py36) λ conda info active environment : expat-vtk-py36 active env location : X:\1\envs\expat-vtk-py36 shell level : 1 user config file : C:\Users\tnobrega.ESSS.CO\.condarc populated config files : C:\Miniconda\.condarc X:\1\.condarc conda version : 4.6.2 conda-build version : 3.17.8 python version : 3.6.7.final.0 base environment : C:\Miniconda (writable) channel URLs : https://esss:@eden.esss.com.br/conda-channel/esss/win-64 https://esss:@eden.esss.com.br/conda-channel/esss/noarch https://esss:@eden.esss.com.br/conda-channel/mirror-main/win-64 https://esss:@eden.esss.com.br/conda-channel/mirror-main/noarch https://esss:@eden.esss.com.br/conda-channel/mirror-conda-forge/win-64 https://esss:@eden.esss.com.br/conda-channel/mirror-conda-forge/noarch package cache : X:\1\envs\.pkgs envs directories : X:\1\envs C:\Miniconda\envs C:\Users\tnobrega.ESSS.CO\.conda\envs C:\Users\tnobrega.ESSS.CO\AppData\Local\conda\conda\envs platform : win-64 user-agent : conda/4.6.2 requests/2.22.0 CPython/3.6.7 Windows/10 Windows/10.0.17763 administrator : True netrc file : None offline mode : False ```

Expat version 2.2.9 renames the DLL from expat.dll to libexpat.dll. This breaks packages with binaries that were compiled against expat.dll but that didn't pin expat to the patch (the previous version is 2.2.5). For example, VTK:

(expat-vtk-py36) λ python -c "import vtk"
Traceback (most recent call last):
  File "X:\1\envs\expat-vtk-py36\lib\site-packages\vtkmodules\vtkIOXMLParser.py", line 5, in <module>
    from .vtkIOXMLParserPython import *
ImportError: DLL load failed: The specified module could not be found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "X:\1\envs\expat-vtk-py36\lib\site-packages\vtk.py", line 32, in <module>
    all_spec.loader.exec_module(all_m)
  File "X:\1\envs\expat-vtk-py36\lib\site-packages\vtkmodules\all.py", line 31, in <module>
    from .vtkIOXMLParser import *
  File "X:\1\envs\expat-vtk-py36\lib\site-packages\vtkmodules\vtkIOXMLParser.py", line 9, in <module>
    from vtkIOXMLParserPython import *
ModuleNotFoundError: No module named 'vtkIOXMLParserPython'

The load fails because expat.dll can't be found. From Dependencies:

image

In our case we "solved" this by pinning the expat version to 2.2.5. This issue is mostly a heads-up to the maintainer because I expect this to break other packages.

ocefpaf commented 4 years ago

One workaound we may try is to copy to the old name and re-pin so future versions do not need this. Working on this now...


Edit: I also moved the Windows version to the broken label.

tigarmo commented 4 years ago

Thanks for the quick fix!

On Tue, Jan 28, 2020 at 4:10 PM Filipe notifications@github.com wrote:

Closed #22 https://github.com/conda-forge/expat-feedstock/issues/22 via

23 https://github.com/conda-forge/expat-feedstock/pull/23.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/conda-forge/expat-feedstock/issues/22?email_source=notifications&email_token=AAO4MQYMMNTLO5IKSVFIVEDRAB7KVA5CNFSM4KMSMNW2YY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOWIEEMTQ#event-2986886734, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAO4MQ4GQM4WIB76GNXGTW3RAB7KVANCNFSM4KMSMNWQ .