perlPackages.BioExtAlign: bug fix and add test

Bug: with perl > 5.36, the compiler is more
restrictive with errors. This package has implicit
function definitions. The fix is to ignore the
errors as vep, the main package for that, runs
without issue. Also this package is no longer
maintained

We also add test that were missing from the package.
Not all test can be run as they depends on
other Perl modules in Bioper.
This commit is contained in:
Alexis Praga
2025-02-08 11:35:15 +01:00
parent 24f7710cb6
commit 386d93d06d
4 changed files with 118 additions and 6 deletions

View File

@@ -8,10 +8,7 @@ buildPerlPackage rec {
pname = "BioExtAlign";
version = "1.5.1";
outputs = [
"out"
"dev"
];
outputs = [ "out" ];
src = fetchFromGitHub {
owner = "bioperl";
@@ -20,7 +17,15 @@ buildPerlPackage rec {
sha256 = "sha256-+0tZ6q3PFem8DWa2vq+njOLmjDvMB0JhD0FGk00lVMA=";
};
patches = [ ./fprintf.patch ];
patches = [
# Starting for Perl 5.6, implicit function declaration are treated as errors
# There may be an error but ensembl-vep (the main package for this dependency)
# runs
./no-implicit-function.patch
# Tests need other parts of BioExt, disabling them
./disable-other-tests.patch
./fprintf.patch
];
# Do not install other Bio-ext packages
preConfigure = ''
@@ -30,6 +35,15 @@ buildPerlPackage rec {
# Disable tests as it requires Bio::Tools::Align which is in a different directory
buildPhase = ''
make
'';
checkPhase = ''
runHook preCheck
make test
runHook postCheck
'';
meta = {
@@ -39,5 +53,6 @@ buildPerlPackage rec {
Part of BioPerl Extensions (BioPerl-Ext) distribution, a collection of Bioperl C-compiled extensions.
'';
license = with lib.licenses; [ artistic1 ];
maintainers = with lib.maintainers; [ apraga ];
};
}

View File

@@ -0,0 +1,84 @@
diff --git a/Bio/Ext/Align/test.pl b/Bio/Ext/Align/test.pl
index 72411f3..1deb77b 100755
--- a/Bio/Ext/Align/test.pl
+++ b/Bio/Ext/Align/test.pl
@@ -8,13 +8,10 @@ my $DEBUG = $ENV{'BIOPERLDEBUG'} || 0;
BEGIN {
eval { require Test; };
use Test;
- plan tests => 9;
+ plan tests => 4;
}
use Bio::Ext::Align;
-use Bio::Tools::dpAlign;
-use Bio::Seq;
-use Bio::AlignIO;
$loaded = 1;
ok(1); # modules loaded
@@ -34,64 +31,3 @@ $alb = &Bio::Ext::Align::Align_Sequences_ProteinSmithWaterman($seq1,$seq2,
$seq2->seq,15,50,STDERR) if $DEBUG;
-warn( "Testing Local Alignment case...\n") if $DEBUg;
-
-$alnout = new Bio::AlignIO(-format => 'pfam', -fh => \*STDERR);
-$aln = &Bio::Ext::Align::Align_DNA_Sequences("AATGCCATTGACGG",
- "CAGCCTCGCTTAG",3,-1,3,1,
- Bio::Tools::dpAlign::DPALIGN_LOCAL_MILLER_MYERS);
-
-$out = Bio::SimpleAlign->new();
-
-$out->add_seq(Bio::LocatableSeq->new(-seq => $aln->aln1,
- -start => $aln->start1,
- -end => $aln->end1,
- -id => "one"));
-
-$out->add_seq(Bio::LocatableSeq->new(-seq => $aln->aln2,
- -start => $aln->start2,
- -end => $aln->end2,
- -id => "two"));
-$alnout->write_aln($out) if $DEBUG;
-
-$aln = &Bio::Ext::Align::Align_Protein_Sequences("WLGQRNLVSSTGGNLLNVWLKDW","WMGNRNVVNLLNVWFRDW",0,
- Bio::Tools::dpAlign::DPALIGN_LOCAL_MILLER_MYERS);
-$out = Bio::SimpleAlign->new();
-ok($aln);
-
-$out->add_seq(Bio::LocatableSeq->new(-seq => $aln->aln1,
- -start => $aln->start1,
- -end => $aln->end1,
- -id => "one"));
-
-$out->add_seq(Bio::LocatableSeq->new(-seq => $aln->aln2,
- -start => $aln->start2,
- -end => $aln->end2,
- -id => "two"));
-$alnout->write_aln($out) if $DEBUG;
-ok(1);
-
-warn( "Testing Global Alignment case...\n") if $DEBUG;
-
-$factory = new Bio::Tools::dpAlign('-alg' => Bio::Tools::dpAlign::DPALIGN_GLOBAL_MILLER_MYERS);
-$s1 = new Bio::Seq(-id => "one", -seq => "AATGCCATTGACGG", -alphabet => 'dna');
-$s2 = new Bio::Seq(-id => "two", -seq => "CAGCCTCGCTTAG", -alphabet => 'dna');
-$aln = $factory->pairwise_alignment($s1, $s2);
-$alnout->write_aln($aln) if $DEBUG;
-$factory->align_and_show($s1, $s2) if $DEBUG;
-
-ok(1);
-
-$s1 = new Bio::Seq(-id => "one", -seq => "WLGQRNLVSSTGGNLLNVWLKDW",
- -alphabet => 'protein');
-$s2 = new Bio::Seq(-id => "two", -seq => "WMGNRNVVNLLNVWFRDW",
- -alphabet => 'protein');
-$aln = $factory->pairwise_alignment($s1, $s2);
-$alnout->write_aln($aln) if $DEBUG;
-$factory->align_and_show($s1, $s2) if $DEBUG;
-ok(1);
-
-$prof = $factory->sequence_profile($s1);
-warn( "Optimal Alignment Score = %d\n", $factory->pairwise_alignment_score($prof, $s2)) if $DEBUG;
-
-ok($factory->pairwise_alignment_score($prof,$s2),77);

View File

@@ -7,7 +7,7 @@ index 0e07b67..0eab932 100644
dpAlign_fatal(char * s)
{
- fprintf(stderr, s);
+ fputs(stderr, s);
+ fputs(s, stderr);
exit(-1);
}

View File

@@ -0,0 +1,13 @@
diff --git a/Bio/Ext/Align/Makefile.PL b/Bio/Ext/Align/Makefile.PL
index cc6c343..ea5cffa 100755
--- a/Bio/Ext/Align/Makefile.PL
+++ b/Bio/Ext/Align/Makefile.PL
@@ -5,7 +5,7 @@ WriteMakefile(
'NAME' => 'Bio::Ext::Align',
'VERSION' => '1.5.1',
'LIBS' => ['-lm'], # e.g., '-lm'
- 'DEFINE' => '-DPOSIX -DNOERROR', # e.g., '-DHAVE_SOMETHING'
+ 'DEFINE' => '-DPOSIX -DNOERROR -Wno-implicit-function-declaration', # e.g., '-DHAVE_SOMETHING'
'INC' => '-I./libs', # e.g., '-I/usr/include/other'
'MYEXTLIB' => 'libs/libsw$(LIB_EXT)',
'clean' => { 'FILES' => 'libs/*.o libs/*.a' }