conda-forge / kwant-feedstock

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

Problem with run dependency: libgfortran #56

Closed RafalSkolasinski closed 2 months ago

RafalSkolasinski commented 5 years ago

Run dependency is incorrectly set to libgfortran and not libgfortran-ng. Kwant here is build against libgfortran.so.4 that is shipped with libgfortran-ng.

To reproduce bug use environment with conda without ANY libgfortran (this include system or conda one)

docker run --rm -it jupyter/minimal-notebook:1145fb1198b2 bash
conda install conda-forge::kwant==1.3.3

now importing kwant will fail

jovyan@c25a9f7eb4d7:~$ python -c "import kwant"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/conda/lib/python3.6/site-packages/kwant/__init__.py", line 37, in <module>
    exec('from . import {0}'.format(module))
  File "<string>", line 1, in <module>
  File "/opt/conda/lib/python3.6/site-packages/kwant/builder.py", line 20, in <module>
    from .linalg import lll
  File "/opt/conda/lib/python3.6/site-packages/kwant/linalg/__init__.py", line 10, in <module>
    from . import lapack
ImportError: libgfortran.so.4: cannot open shared object file: No such file or directory

More on the error:

jovyan@c25a9f7eb4d7:~$ ldd /opt/conda/lib/python3.6/site-packages/kwant/linalg/lapack.cpython-36m-x86_64-linux-gnu.so 
        linux-vdso.so.1 (0x00007fff04b72000)
        libopenblas.so.0 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../../libopenblas.so.0 (0x00007f7a990a2000)
        libgfortran.so.4 => not found
        libpython3.6m.so.1.0 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../../libpython3.6m.so.1.0 (0x00007f7a98b65000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7a98946000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7a98555000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7a981b7000)
        libgfortran.so.3 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../.././libgfortran.so.3 (0x00007f7a97eae000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7a97caa000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f7a97aa7000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f7a9789f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f7a9ba04000)
        libgcc_s.so.1 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../../././libgcc_s.so.1 (0x00007f7a9768d000)

Installing libgfortran-ng fixes the problem. There had to be some change in how conda handle fortran dependencies as before libgfortran-ng happend to be installed automatically.

conda install libgfortran-ng
jovyan@c25a9f7eb4d7:~$ python -c "import kwant"
jovyan@c25a9f7eb4d7:~$ ldd /opt/conda/lib/python3.6/site-packages/kwant/linalg/lapack.cpython-36m-x86_64-linux-gnu.so 
        linux-vdso.so.1 (0x00007ffeaf91a000)
        libopenblas.so.0 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../../libopenblas.so.0 (0x00007f8b7d236000)
        libgfortran.so.4 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../../libgfortran.so.4 (0x00007f8b7cf0c000)
        libpython3.6m.so.1.0 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../../libpython3.6m.so.1.0 (0x00007f8b7c9cf000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8b7c7b0000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8b7c3bf000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8b7c021000)
        libgfortran.so.3 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../.././libgfortran.so.3 (0x00007f8b7bd18000)
        libquadmath.so.0 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../.././libquadmath.so.0 (0x00007f8b7bae7000)
        libgcc_s.so.1 => /opt/conda/lib/python3.6/site-packages/kwant/linalg/../../../.././libgcc_s.so.1 (0x00007f8b7b8d5000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8b7b6d1000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f8b7b4ce000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f
akhmerov commented 5 years ago

@basnijholt does this issue still stand?

basnijholt commented 5 years ago

I don't know. I don't remember ever encountering it.