The mystery of the missing library.

David Naylor dbn at freebsd.org
Tue Jul 28 18:46:11 UTC 2015


Hi Hackers,

I am busy simplifying the lang/pypy port (see 
https://reviews.freebsd.org/D3209) however I have uncovered a rather 
strange problem:

## BACKGROUND ##
PyPy has it's own directory layout so we install it into $PREFIX/pypy-2.6.  In 
there is everything pypy needs including bin/pypy (the binary) and 
bin/libpypy-c.so (the shared library).  

For convenience we create a symlink to the pypy binary:
```
# ln -s ../pypy-2.6/bin/pypy $PREFIX/bin/pypy
```

## PROBLEM ##
For some reason FreeBSD cannot find the library when executing the 
pypy command - except under some situations:
```
# uname -a
FreeBSD dragon.local 10.1-RELEASE-p10 FreeBSD 10.1-RELEASE-p10 #0: 
Wed May 13 06:54:13 UTC 2015     root at amd64-
builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

# cd /

# pypy
Shared object "libpypy-c.so" not found, required by "pypy"

# `which pypy`
Shared object "libpypy-c.so" not found, required by "pypy"

# .`which pypy`
Python 2.7.9 (295ee98b69288471b0fcf2e0ede82ce5209eb90b, Jul 26 
2015, 18:38:23)
[PyPy 2.6.0 with GCC 4.2.1 Compatible FreeBSD Clang 3.4.1 
(tags/RELEASE_34/dot1-final 208032)] on freebsd10
Type "help", "copyright", "credits" or "license" for more information.
>>>> 

# ldd `which pypy`
/usr/local/bin/pypy:
        libpypy-c.so => not found (0)
        libthr.so.3 => /lib/libthr.so.3 (0x80081d000)
        libc.so.7 => /lib/libc.so.7 (0x800a42000)

# ldd .`which pypy`
./usr/local/bin/pypy:
        libpypy-c.so => /usr/local/pypy-2.6/bin//libpypy-c.so (0x80081d000)
        libthr.so.3 => /lib/libthr.so.3 (0x804337000)
        libc.so.7 => /lib/libc.so.7 (0x80455c000)
        libbz2.so.4 => /usr/lib/libbz2.so.4 (0x804906000)
        libm.so.5 => /lib/libm.so.5 (0x804b18000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x804d40000)
        libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x804f4a000)
        libz.so.6 => /lib/libz.so.6 (0x805170000)
        libssl.so.7 => /usr/lib/libssl.so.7 (0x805386000)
        libcrypto.so.7 => /lib/libcrypto.so.7 (0x8055f1000)
        libffi.so.6 => /usr/local/lib/libffi.so.6 (0x8059e5000)
        libcrypt.so.5 => /lib/libcrypt.so.5 (0x805bec000)
        librt.so.1 => /usr/lib/librt.so.1 (0x805e0c000)
        libutil.so.9 => /lib/libutil.so.9 (0x806012000)
        libncurses.so.8 => /lib/libncurses.so.8 (0x806224000)
```

Why would the shared library be found when using a relative path but not 
when using an absolute path?  Is this a bug in FreeBSD? 

Regards

David
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 949 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20150728/e8a18eca/attachment.bin>


More information about the freebsd-ports mailing list