bob.learn.libsvm fails to compile with conda

41 views
Skip to first unread message

Amir Mohammadi

unread,
Feb 26, 2016, 11:23:23 AM2/26/16
to bob-devel
https://travis-ci.org/bioidiap/bob.conda/jobs/112045447

by running this on my laptop I realised that:
.../_test/lib/libsvm.so exists but not libsvm.so.2


===== testing package: bob.learn.libsvm-2.0.3-py27_0 =====

import: 'bob'

import: 'bob.learn'

import: 'bob.learn.libsvm'

/home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.extension-2.0.11-py2.7.egg/bob/extension/__init__.py:12: UserWarning: Module bob was already imported from /home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob/__init__.py, but /home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.blitz-2.0.8-py2.7-linux-x86_64.egg is being added to sys.path

 import pkg_resources

/home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.extension-2.0.11-py2.7.egg/bob/extension/__init__.py:12: UserWarning: Module bob was already imported from /home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob/__init__.py, but /home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.core-2.1.0-py2.7-linux-x86_64.egg is being added to sys.path

 import pkg_resources

/home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.extension-2.0.11-py2.7.egg/bob/extension/__init__.py:12: UserWarning: Module bob was already imported from /home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob/__init__.py, but /home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.extension-2.0.11-py2.7.egg is being added to sys.path

 import pkg_resources

/home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.extension-2.0.11-py2.7.egg/bob/extension/__init__.py:12: UserWarning: Module bob was already imported from /home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob/__init__.py, but /home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.learn.libsvm-2.0.3-py2.7-linux-x86_64.egg is being added to sys.path

 import pkg_resources

Traceback (most recent call last):

 File "/home/travis/miniconda/conda-bld/test-tmp_dir/run_test.py", line 31, in <module>

   import bob.learn.libsvm

 File "/home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.learn.libsvm-2.0.3-py2.7-linux-x86_64.egg/bob/learn/libsvm/__init__.py", line 6, in <module>

   bob.extension.load_bob_library('bob.learn.libsvm', __file__)

 File "/home/travis/miniconda/envs/_test/lib/python2.7/site-packages/bob.extension-2.0.11-py2.7.egg/bob/extension/__init__.py", line 234, in load_bob_library

   ctypes.cdll.LoadLibrary(full_libname)

 File "/home/travis/miniconda/envs/_test/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary

   return self._dlltype(name)

 File "/home/travis/miniconda/envs/_test/lib/python2.7/ctypes/__init__.py", line 365, in __init__

   self._handle = _dlopen(self._name, mode)

OSError: libsvm.so.2: cannot open shared object file: No such file or directory

TESTS FAILED: bob.learn.libsvm-2.0.3-py27_0



Manuel Günther

unread,
Feb 26, 2016, 12:24:03 PM2/26/16
to bob-devel
When you have a look at the packages, which are downloaded, you will find out that it installs libsvm in version 3.21, while bob.learn.libsvm was compiled against libsvm version 2. Hence, the package is linked against libsvm.so.2, and not against libsvm.so.3, which is provided by the package.

Amir Mohammadi

unread,
Feb 26, 2016, 12:29:00 PM2/26/16
to bob-devel
It is building bob.learn.libsvm in that container. There is not any other version of libsvm installed and it builds fine. Also, only "libsvm.so" is available neither "libsvm.so.2" nor "libsvm.so.3"

Amir Mohammadi

unread,
Feb 26, 2016, 12:40:54 PM2/26/16
to bob-devel
It is a problem with how libsvm was packaged for conda.
+ install -D libsvm.so.2 /home/amir/miniconda3/envs/_build/lib/libsvm.so
This guy just copies .so.2 as .so

Manuel Günther

unread,
Feb 26, 2016, 1:03:26 PM2/26/16
to bob-devel
True. SO, it seems to be a problem of libsvm. Usually, when a library is installed, the real file is the .so.version file, and the .so file is simply a link to that. By default, the the library gets linked without any version information (here, using the -lsvm flag):
but the link is established to the versioned library:
$ ldd libbob_learn_libsvm.so
should point to libsvm.so.3 in this case (I have no clue why it points to libsvm.so.2).

The only thing that I can imagine is that the LibSVM developer have messed up their build files. I don't see any problem on our side.
Reply all
Reply to author
Forward
0 new messages