[Debian-med-packaging] Psortb has errors in Perl testsuite

Andreas Tille tille at debian.org
Wed Apr 19 14:19:04 UTC 2017


Hi again,

On Wed, Apr 19, 2017 at 12:44:06PM +0200, Andreas Tille wrote:
> On Wed, Apr 19, 2017 at 12:37:48PM +0200, Bas Couwenberg wrote:
> > >>"… SVMLoc.so: … undefined symbol: _ZN7DataSet12getAttributeEi at
> > >>/usr/lib/x86_64-linux-gnu/perl/5.24/DynaLoader.pm line 187."
> > >
> > >Ahh, makes sense.  Hmmm, but what now.  How can I know were this symbol
> > >comes from?  I greped the code and the linkes libs but failed.
> > 
> > Did you run it through c++filt first to decode the symbol?
> > 
> >  $ echo _ZN7DataSet12getAttributeEi | c++filt
> >  DataSet::getAttribute(int)
> 
> I did not - but also this does not ring a bell what lib might be
> missing.

I think I found the problem.  DataSet::getAttribute(int) is defined in
bio-tools-psort-svmloc/libsvm.cpp.  While
bio-tools-psort-svmloc/Makefile.PL does not mention libsvm the file
bio-tools-psort-svmloc/Makefile that is created inside the pbuilder
chroot does contain

# Handy lists of source code files:
XS_FILES = SVMLoc.xs
C_FILES  = SVMLoc.c \
i	libsvm.cpp
O_FILES  = SVMLoc.o \
	libsvm.o
H_FILES  = bindings.h \
	libsvm.h

(no idea what magic is used to let this happen - I never used
Makefile.PL myself).  However, in the build log libsvm.cpp is neither
compiled nor linked::

...
make[2]: Entering directory '/build/psortb-3.0.4+dfsg/bio-tools-psort-svmloc'
"/usr/bin/perl" "/usr/share/perl/5.24.1/ExtUtils/xsubpp"  -C++ -typemap "/usr/share/perl/5.24/ExtUtils/typemap" -typemap "typemap"  SVMLoc.xs > SVMLoc.xsc && mv SVMLoc.xsc SVMLoc.c
Running Mkbootstrap for Bio::Tools::PSort::SVMLoc ()
chmod 644 "SVMLoc.bs"
cp lib/Bio/Tools/PSort/SVMLoc/DataSet.pm ../blib/lib/Bio/Tools/PSort/SVMLoc/DataSet.pm
cp lib/Bio/Tools/PSort/SVMLoc.pm ../blib/lib/Bio/Tools/PSort/SVMLoc.pm
AutoSplitting ../blib/lib/Bio/Tools/PSort/SVMLoc.pm (../blib/lib/auto/Bio/Tools/PSort/SVMLoc)
Please specify prototyping behavior for SVMLoc.xs (see perlxs manual)
g++ -c   -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fdebug-prefix-map=/build/psortb-3.0.4+dfsg=. -fstack-     protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2   -DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.24/CORE"   SVMLoc.c
rm -f ../blib/arch/auto/Bio/Tools/PSort/SVMLoc/SVMLoc.so
x86_64-linux-gnu-gcc -g -O2 -fdebug-prefix-map=/build/psortb-3.0.4+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro  -shared -L/usr/local/lib -fstack-protector-strong SVMLoc.o  -   o ../blib/arch/auto/Bio/Tools/PSort/SVMLoc/SVMLoc.so  \
   -lm -lstdc++         \
...


and I suspect this explains why DataSet::getAttribute is missing.

Any idea how to fix Makefile.PL (or whatever needs fixing) to get the
code linked?

Kind regards

       Andreas.

-- 
http://fam-tille.de



More information about the Debian-med-packaging mailing list