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