[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