[Debian-med-packaging] C++ help needed for psortb
Andreas Tille
andreas at an3as.eu
Tue Apr 18 20:15:21 UTC 2017
Hi,
I intend to package psortb in Debian Med team[1]. To successfully build
this package I needed to re-arrange the package layout of biosquid and
hmmer2 since psortb is using code from those project but only provides
the according header files. This was solved by proper -dev packages -
however, these reside currently in experimental. So if you intend to
reproduce the issue described below you need to add experimental to your
sources.list to fullfil the Build-Dependency relations.
When building psortb I'm running into
...
g++ -c -Isrc/include `pkg-config --cflags libsquid` `pkg-config --cflags libhmmer2` -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.02\" -DXS_VERSION=\"0.02\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.24/CORE" HMM.c
hmm-binding.cpp: In member function ‘HMMReport* HMM::search(char*)’:
hmm-binding.cpp:138:15: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
FALSE);
^
hmm-binding.cpp: In member function ‘void HMM::init(char*, int, int)’:
hmm-binding.cpp:245:20: error: ‘CUT_NONE’ was not declared in this scope
thresh.autocut = CUT_NONE;
^~~~~~~~
Makefile:346: recipe for target 'hmm-binding.o' failed
...
The relevant code in algorithm-hmm/hmm-binding.cpp is
136 PostprocessSignificantHit(ghit, dhit, trace, model, dseq, seqlen, "SEQ",
137 NULL, NULL, doForward, score, doNull2, &thresh,
138 FALSE);
where the problem is the declaration of the argument thresh which is done
in algorithm-hmm/hmm.h:
class HMM {
...
struct threshold_s thresh;
...
}
The definition of the structure threshold_s can be found in
/usr/include/hmmer2/structs.h (of package libhmmer2-dev) and
looks like
struct threshold_s {
float globT; /* T parameter: keep only hits > globT bits */
double globE; /* E parameter: keep hits < globE E-value */
float domT; /* T parameter for individual domains */
double domE; /* E parameter for individual domains */
/* autosetting of cutoffs using Pfam annot: */
enum { CUT_NONE, CUT_GA, CUT_NC, CUT_TC } autocut;
int Z; /* nseq to base E value calculation on */
};
>From my naive ANSII C programmers perspective the definition looks
sensible and the enum correctly initialised with CUT_NONE - but there
seem to be some issues in C++ which I'm unaware about.
Any hint how to fix this would be welcome.
Kind regards
Andreas.
[1] https://anonscm.debian.org/git/debian-med/psortb.git
--
http://fam-tille.de
More information about the Debian-med-packaging
mailing list