[Bioperl-l] Packaging BioPerl for mandrake linux

Guillaume Rousse rousse at ccr.jussieu.fr
Fri Jan 9 07:35:35 EST 2004


I'm maintaining BioPerl modules for MandrakeLinux. I'm having some problems to 
build bioperl-ext.

First, the compilation doesn't support parallel build on multiple-cpu build 
host, as readm.pm get installed after it is needed:
make[1]: Entering directory 
/usr/bin/perl5.8.2 -Mblib -MInline=NOISY,_INSTALL_ -MBio::SeqIO::staden::read 
-e1 0.01 ../blib/arch
Can't locate Bio/SeqIO/staden/read.pm in @INC (@INC 
contains: /home/guillomovitch/rpm/BUILD/bioperl-ext-1.4/Bio/SeqIO/staden/../blib/arch /home/guillomovitch/rpm/BUILD/bioperl-ext-1.4/Bio/SeqIO/staden/../blib/lib /usr/lib/perl5/5.8.2/i386-linux-thread-multi /usr/lib/perl5/5.8.2 /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .).
BEGIN failed--compilation aborted.
make[1]: *** [read.inl] Error 2
make[1]: *** Waiting for unfinished jobs....
cp read.pm ../blib/lib/Bio/SeqIO/staden/read.pm
make[1]: *** Waiting for unfinished jobs....

Forcing linear build is OK however.

Second, correct optimisation flags (-O2 -fomit-frame-pointer -pipe -march=i586 
-mcpu=pentiumpro) are not passed to all gcc invocations:
-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -fomit-frame-pointer -pipe 
-march=i586 -mcpu=pentiumpro   -DVERSION=\"0.1\" -DXS_VERSION=\"0.1\" -fPIC 
"-I/usr/lib/perl5/5.8.2/i386-linux-thread-multi/CORE"  -DPOSIX -DNOERROR 
gcc -c -O   -c -o dnamatrix.o dnamatrix.c
The first one is OK, the second is not.

Third, I can't find any installed binary files at the end of the compilation 
process, only source C files and headers 
in /usr/lib/perl5/vendor_perl/5.8.2/Bio/Ext/Align/libs, whereas i was 
expecting to have some .so 
under /usr/lib/perl5/vendor_perl/5.8.2/Bio/Ext/Align/libs/
I don't have previous experience of using Inline::C, however

Fourth, invocating make test as part of the build process fails for some 
uninstalled module:
-- PERL_DL_NONLAZY=1 /usr/bin/perl5.8.2 "-MExtUtils::Command::MM" "-e" 
"test_harness(0, '../blib/lib', '../blib/arch')" test.pl
test....The extension 'Bio::SeqIO::staden::read' is not properly installed in 

If this is a CPAN/distributed module, you may need to reinstall it on your

To allow Inline to compile the module in a temporary cache, simply remove the
Inline config option 'VERSION=' from the Bio::SeqIO::staden::read module.

 at test.pl line 0
INIT failed--call queue aborted, <DATA> line 1.
It look like 1), but happens either using parallel or linear build. The 
message about using a temporary cache is quite confusing. Am I supposed to 
remove line 79 in  Bio/SeqIO/staden/read.pm just to pass the tests ? And how 
will such a change impacts further use of the module ?
Just skipping the test is enough to workaround the problem, however.

Any help appreciated.

BTW, some modules in main bioperl package have references to some modules in 
bioperl-run package:

This make both packages to requires each other. Maybe those modules should be 
moved to bioperl-run, to make bioperl self-sufficient ?

Does a fish get cramps after eating? 
		-- Why Why Why n°2

More information about the Bioperl-l mailing list