[Wheel-builders] Error from numpy wheel - any thoughts

Matthew Brett matthew.brett at gmail.com
Mon Mar 28 18:17:47 EDT 2016


On Mon, Mar 28, 2016 at 3:12 PM, Matthew Brett <matthew.brett at gmail.com> wrote:
> On Mon, Mar 28, 2016 at 2:30 PM, Nathaniel Smith <njs at pobox.com> wrote:
>> On Mar 28, 2016 14:20, "Matthew Brett" <matthew.brett at gmail.com> wrote:
>>>
>>> On Mon, Mar 28, 2016 at 1:42 PM, Matthew Brett <matthew.brett at gmail.com>
>>> wrote:
>>> > I'm installing a manylinux wheel on a Debian sid machine I have.  For
>>> > the manylinux wheel, but not a local build, I get the following error
>>> > from `nosetests numpy.f2py`:
>>> >
>>> > ```
>>> > ======================================================================
>>> > ERROR: test_kind.TestKind.test_all
>>> > ----------------------------------------------------------------------
>>> > Traceback (most recent call last):
>>> >   File
>>> > "/home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/nose/case.py",
>>> > line 381, in setUp
>>> >     try_run(self.inst, ('setup', 'setUp'))
>>> >   File
>>> > "/home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/nose/util.py",
>>> > line 471, in try_run
>>> >     return func()
>>> >   File
>>> > "/home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/f2py/tests/util.py",
>>> > line 358, in setUp
>>> >     module_name=self.module_name)
>>> >   File
>>> > "/home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/f2py/tests/util.py",
>>> > line 78, in wrapper
>>> >     memo[key] = func(*a, **kw)
>>> >   File
>>> > "/home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/f2py/tests/util.py",
>>> > line 149, in build_module
>>> >     __import__(module_name)
>>> > ImportError:
>>> > /home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/core/../.libs/libgfortran.so.3:
>>> > version `GFORTRAN_1.4' not found (required by
>>> > /tmp/tmpsFHJXE/_test_ext_module_5405.so)
>>> > ```
>>> >
>>> > Anyone out there with insight as to what's going on?
>>>
>>> I guess what might be happening, is that the built f2py module should
>>> be linking against the system libgfortran, but in fact is finding the
>>> shipped gfortran.
>>
>> I think this diagnosis is correct, but I don't know why it would be
>> happening. The newly compiled module should be getting loaded into a fresh
>> ELF context and find the system gfortran. We're not adding the .libs dir to
>> LD_LIBRARY_PATH, right? Are we somehow adding the .libs dir to the built
>> module's rpath?
>>
>> Some things to try:
>> - run with LD_DEBUG=libs
>> - check LD_LIBRARY_PATH
>> - use readelf on the _test_ex_module.so to see if it has an rpath set
>
> I can't replicate this error in a fresh Python process:
>
> ImportError: /home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/core/../.libs/libgfortran.so.3:
> version `GFORTRAN_1.4' not found (required by
> /tmp/tmpjqst5B/_test_ext_module_5405.so)
>
> $ cd /tmp/tmpjqst5B
> $ python -c 'import _test_ext_module_5405'
>
> No sign of a custom rpath:
>
> $ readelf -d _test_ext_module_5405.so
>
> Dynamic section at offset 0x5d60 contains 29 entries:
>   Tag        Type                         Name/Value
>  0x0000000000000001 (NEEDED)             Shared library: [libpython2.7.so.1.0]
>  0x0000000000000001 (NEEDED)             Shared library: [libgfortran.so.3]
>  0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
>  0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
>  0x0000000000000001 (NEEDED)             Shared library: [libquadmath.so.0]
>  0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
>  0x000000000000000c (INIT)               0x17c0
>  0x000000000000000d (FINI)               0x41e0
>  0x0000000000000019 (INIT_ARRAY)         0x205d40
>  0x000000000000001b (INIT_ARRAYSZ)       8 (bytes)
>  0x000000000000001a (FINI_ARRAY)         0x205d48
>  0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
>  0x000000006ffffef5 (GNU_HASH)           0x1f0
>  0x0000000000000005 (STRTAB)             0x9c8
>  0x0000000000000006 (SYMTAB)             0x2a8
>  0x000000000000000a (STRSZ)              1328 (bytes)
>  0x000000000000000b (SYMENT)             24 (bytes)
>  0x0000000000000003 (PLTGOT)             0x206000
>  0x0000000000000002 (PLTRELSZ)           1128 (bytes)
>  0x0000000000000014 (PLTREL)             RELA
>  0x0000000000000017 (JMPREL)             0x1358
>  0x0000000000000007 (RELA)               0xfe0
>  0x0000000000000008 (RELASZ)             888 (bytes)
>  0x0000000000000009 (RELAENT)            24 (bytes)
>  0x000000006ffffffe (VERNEED)            0xf90
>  0x000000006fffffff (VERNEEDNUM)         1
>  0x000000006ffffff0 (VERSYM)             0xef8
>  0x000000006ffffff9 (RELACOUNT)          18
>  0x0000000000000000 (NULL)               0x0
>
> Stopping in pdb:
>
> $ nosetests numpy.f2py --pdb
> ..........................................................................................................................................................................................................................................................................................................................................................................>
> /home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/f2py/tests/util.py(151)build_module()
> -> __import__(module_name)
> (Pdb) os.environ['LD_LIBRARY_PATH']
> *** KeyError: 'LD_LIBRARY_PATH'
> (Pdb) module_name
> '_test_ext_module_5405'
> (Pdb) import _test_ext_module_5405
> *** ImportError:
> /home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/core/../.libs/libgfortran.so.3:
> version `GFORTRAN_1.4' not found (required by
> /tmp/tmp8KkcW2/_test_ext_module_5405.so)
>
> Running
>
> LD_DEBUG=libs nosetests
> /home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/f2py/tests/test_kind.py:TestKind.test_all
>
> gives no test error, but does show this:
>
>      18543:    find library=libgfortran.so.3 [0]; searching
>      18543:     search
> path=/home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/core/../.libs
>        (RPATH from file
> /home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/core/multiarray.so)
>      18543:      trying
> file=/home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/core/../.libs/libgfortran.so.3

And:

$ python -c 'import _test_ext_module_5403'  # No error
$ python -c 'import numpy; import _test_ext_module_5403'  # Error
after importing numpy
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: /home/mb312/dev_trees/2fd9d9a29e022c297634/manylinux-test/lib/python2.7/site-packages/numpy/core/../.libs/libgfortran.so.3:
version `GFORTRAN_1.4' not found (required by
./_test_ext_module_5403.so)


Matthew


More information about the Wheel-builders mailing list