[Debian-med-packaging] Bug#1105698: proteinortho: FTBFS with make --shuffle=reverse: rm: cannot remove 'remove.*': No such file or directory
Lucas Nussbaum
lucas at debian.org
Tue May 13 20:13:15 BST 2025
Source: proteinortho
Version: 6.3.1+dfsg-1
Severity: minor
Tags: trixie sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-shuffle
Hi,
GNU Make now has a --shuffle option that simulates non-deterministic ordering
of target prerequisites. See
https://trofi.github.io/posts/238-new-make-shuffle-mode.html and also previous
work in Debian by Santiago Vila:
https://people.debian.org/~sanvila/make-shuffle/
This package fails to build with make --shuffle=reverse.
This is likely to be caused by a missing dependency in
debian/rules or an upstream Makefile.
More information about this mass bug filing is available at
https://wiki.debian.org/qa.debian.org/FTBFS/Shuffle
Relevant part (hopefully):
> make[2]: Entering directory '/build/reproducible-path/proteinortho-6.3.1+dfsg'
> Makefile:436: update target 'test_integrity_2' due to: target is .PHONY
> ./proteinortho6.pl -silent -force -singles -project=test_singles_diamond -p=diamond test/*.faa 2>/dev/null;
> echo -n "testing if all proteins are in the output (using -singles): ";
> testing if all proteins are in the output (using -singles): grep -E '^>' test/C.faa test/C2.faa test/E.faa test/L.faa test/M.faa | wc -l | sed -E 's/[ \t]//g' > test_singles_diamond.true;
> perl -le 'my %d; while(<>){if(/^#/){next;}$_=~s/^[^\t]+\t[^\t]+\t[^\t]+//g;chomp;my $j=0;my $l=join ",", map {$j+=1;"$j:$_"} split /\t/,$_;foreach my $i (split /,/,$l){if($i !~ /:[*]/ && $i ne ""){$d{$i}=1;}}}print scalar keys %d' test_singles_diamond.proteinortho.tsv | sed -E 's/[ \t]//g' > test_singles_diamond.test;
> set -e ; diff test_singles_diamond.true test_singles_diamond.test;
> echo "passed"
> passed
> Makefile:429: update target 'test_integrity' due to: target is .PHONY
> ./proteinortho6.pl -silent -force -project=test_diamond -p=diamond test/*.faa 2>/dev/null;
> echo -n "testing if there is a protein that occurs twice in the output: ";
> testing if there is a protein that occurs twice in the output: perl -e 'my %d; while(<>){$_=~s/^[^\t]+\t[^\t]+\t[^\t]+//g;chomp;foreach my $i (split /[,\t]/,$_){if($i ne "*" && $i ne "" && exists $d{$i}){die "error found a protein that occurs in the output twice <${i}>\n"}$d{$i}=1;}}' test_diamond.proteinortho.tsv;
> echo "passed"
> passed
> Makefile:469: update target 'test_step3_K5' due to: target is .PHONY
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -lapack 2 test/K5.blast-graph >test_lapack_K5.proteinortho.tsv 2>/dev/null ; \
> set -e ; ./src/chk_test.pl test_lapack_K5.proteinortho.tsv "K5";
> echo "passed"
> passed
> Makefile:463: update target 'test_step3_P4' due to: target is .PHONY
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -lapack 2 test/P4.blast-graph >test_lapack_P4.proteinortho.tsv 2>/dev/null ; \
> set -e ; ./src/chk_test.pl test_lapack_P4.proteinortho.tsv "P4";
> echo "passed"
> passed
> Makefile:457: update target 'test_step3_P3_K5' due to: target is .PHONY
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -lapack 2 test/P3_K5.blast-graph >test_lapack_P3_K5.proteinortho.tsv 2>/dev/null ; \
> set -e ; ./src/chk_test.pl test_lapack_P3_K5.proteinortho.tsv "P3_K5";
> echo "passed"
> passed
> Makefile:451: update target 'test_step3_ring4_K5_lapack' due to: target is .PHONY
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -lapack 2 test/ring4_K5.blast-graph >test_lapack_ring4_K5.proteinortho.tsv 2>/dev/null ; \
> set -e ; ./src/chk_test.pl test_lapack_ring4_K5.proteinortho.tsv "ring4_K5";
> echo "passed"
> passed
> Makefile:445: update target 'test_step3_ring4_K5_power' due to: target is .PHONY
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -lapack 0 test/ring4_K5.blast-graph >test_power_ring4_K5.proteinortho.tsv 2>/dev/null ; \
> set -e ; ./src/chk_test.pl test_power_ring4_K5.proteinortho.tsv "ring4_K5";
> echo "passed"
> passed
> Makefile:399: update target 'test_step3' due to: target is .PHONY
> ./proteinortho6.pl -silent -force -project=test_blastp -p=blastp test/*.faa;
> echo "[TEST] 2. -step=3 tests (proteinortho_clustering) "
> [TEST] 2. -step=3 tests (proteinortho_clustering)
> echo -n " [1/6] various test functions of proteinortho_clustering (if this fails, try make clean first): "; \
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -test> /dev/null 2>&1
> [1/6] various test functions of proteinortho_clustering (if this fails, try make clean first): echo "passed"
> passed
> echo -n " [2/6] Test proteinortho_clustering using lapack: "; \
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -lapack 2 -weighted 2 -double 0 -debug 1 test_blastp.blast-graph 2>test_lapack.err | sort | awk -F'\t' '{$3="";print $0}' >test_lapack.proteinortho.tsv ; \
> set -e ; ./src/chk_test.pl test_lapack.proteinortho.tsv;
> [2/6] Test proteinortho_clustering using lapack: echo "passed"
> passed
> perl -lne 'print join "\t", sort split("\t",$_)' remove.graph | sort | uniq > remove.graph.lapack;
> echo -n " [3/6] Test proteinortho_clustering using power: "; \
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -lapack 0 -weighted 2 -double 0 -debug 1 test_blastp.blast-graph 2>test_power.err | sort | awk -F'\t' '{$3="";print $0}' >test_power.proteinortho.tsv; \
> set -e ; ./src/chk_test.pl test_power.proteinortho.tsv;
> [3/6] Test proteinortho_clustering using power: echo "passed"
> passed
> perl -lne 'print join "\t", sort split("\t",$_)' remove.graph | sort | uniq > remove.graph.power;
> echo -n " [4/6] Test proteinortho_clustering using lapack and no weights: "; \
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -lapack 2 -weighted 0 -double 0 -debug 1 test_blastp.blast-graph 2>test_power.err | sort | awk -F'\t' '{$3="";print $0}' >test_power.proteinortho.tsv; \
> set -e ; ./src/chk_test.pl test_power.proteinortho.tsv;
> [4/6] Test proteinortho_clustering using lapack and no weights: echo "passed"
> passed
> echo -n " [5/6] Test proteinortho_clustering using maxnodes/flooding: "; \
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -maxnodes 2 -conn 0 -debug 1 test_blastp.blast-graph 2>test_power.err | sort | awk -F'\t' '{$3="";print $0}' >test_power.proteinortho.tsv; \
> set -e ; ./src/chk_test.pl test_power.proteinortho.tsv;
> [5/6] Test proteinortho_clustering using maxnodes/flooding: echo "passed"
> passed
> echo -n " [6/6] Test proteinortho_clustering using no clustering at all: "; \
> OMP_NUM_THREADS=1 src/BUILD/Linux_x86_64/proteinortho_clustering -conn -1 -debug 1 test_blastp.blast-graph 2>test_power.err | sort | awk -F'\t' '{$3="";print $0}' >test_power.proteinortho.tsv; \
> set -e ; ./src/chk_test.pl test_power.proteinortho.tsv;
> [6/6] Test proteinortho_clustering using no clustering at all: echo "passed"
> passed
> Makefile:480: update target 'test_clean2' due to: target is .PHONY
> echo "[TEST] Clean up all test files..."; \
> rm -rf remove.graph* proteinortho_cache_test_* test.* test_* test/C.faa.* test/E.faa.* test/C2.faa.* test/L.faa.* test/M.faa.*> /dev/null 2>&1;
> [TEST] Clean up all test files...
> Makefile:287: update target 'test_step2' due to: target is .PHONY
> echo "[TEST] 1. basic proteinortho6.pl -step=2 test. (algorithms that are not present are skipped)"
> [TEST] 1. basic proteinortho6.pl -step=2 test. (algorithms that are not present are skipped)
> echo -n " [1/12] -p=blastp test: "
> [1/12] -p=blastp test: if [ "/usr/bin/blastp" = "" ]; then\
> echo "blastp missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_blastp -p=blastp test/*.faa; \
> set -e ; ./src/chk_test.pl test_blastp.proteinortho.tsv; \
> echo "passed"; \
> fi
> passed
> echo -n " [2/12] -p=blastp+ synteny (PoFF) test: "
> [2/12] -p=blastp+ synteny (PoFF) test: if [ "/usr/bin/blastp" = "" ]; then\
> echo "blastp missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_synteny -synteny -singles -p=blastp+ test/*.faa; \
> set -e ; ./src/chk_test.pl test_synteny.proteinortho.tsv; \
> set -e ; ./src/chk_test.pl test_synteny.poff.tsv; \
> echo "passed"; \
> fi
> tput: No value for $TERM and no -T specified
> tput: No value for $TERM and no -T specified
> tput: No value for $TERM and no -T specified
> tput: No value for $TERM and no -T specified
> passed
> echo -n " [3/12] -p=diamond test: "
> [3/12] -p=diamond test: if [ "/usr/bin/diamond-aligner" = "" ]; then\
> echo "diamond missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_diamond -p=diamond test/*.faa; \
> set -e ; ./src/chk_test.pl test_diamond.proteinortho.tsv; \
> echo "passed"; \
> fi
> passed
> echo -n " [4/12] -p=diamond (--moresensitive) test (subparaBlast): "
> [4/12] -p=diamond (--moresensitive) test (subparaBlast): if [ "/usr/bin/diamond-aligner" = "" ]; then\
> echo "diamond missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_diamondmoresensitive -p=diamond -subparaBlast="--more-sensitive" test/*.faa; \
> set -e ; ./src/chk_test.pl test_diamondmoresensitive.proteinortho.tsv; \
> echo "passed"; \
> fi
> passed
> echo -n " [5/12] -p=lastp (lastal) test: "
> [5/12] -p=lastp (lastal) test: if [ "" = "" ]; then\
> echo "lastal missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_lastp -p=lastp test/*.faa; \
> set -e ; ./src/chk_test.pl test_lastp.proteinortho.tsv ; \
> echo "passed"; \
> fi
> lastal missing, skipping...
> echo -n " [6/12] -p=topaz test: "
> [6/12] -p=topaz test: if [ "" = "" ]; then\
> echo "topaz missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_topaz -p=topaz test/*.faa; \
> set -e ; ./src/chk_test.pl test_topaz.proteinortho.tsv; \
> echo "passed"; \
> fi
> topaz missing, skipping...
> echo -n " [7/12] -p=usearch test: "
> [7/12] -p=usearch test: if [ "" = "" ]; then\
> echo "usearch missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_usearch -p=usearch test/*.faa; \
> set -e ; ./src/chk_test.pl test_usearch.proteinortho.tsv; \
> echo "passed"; \
> fi
> usearch missing, skipping...
> echo -n " [8/12] -p=ublast test: "
> [8/12] -p=ublast test: if [ "" = "" ]; then\
> echo "usearch missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_ublast -p=ublast test/*.faa; \
> set -e ; ./src/chk_test.pl test_ublast.proteinortho.tsv; \
> echo "passed"; \
> fi
> usearch missing, skipping...
> echo -n " [9/12] -p=rapsearch test: "
> [9/12] -p=rapsearch test: if [ "" = "" ]; then\
> echo "rapsearch missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_rapsearch -p=rapsearch test/*.faa; \
> set -e ; ./src/chk_test.pl test_rapsearch.proteinortho.tsv; \
> echo "passed"; \
> fi
> rapsearch missing, skipping...
> echo -n " [10/12] -p=blatp (blat) test: "
> [10/12] -p=blatp (blat) test: if [ "" = "" ]; then\
> echo "blat missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_blatp -p=blatp test/*.faa; \
> set -e ; ./src/chk_test.pl test_blatp.proteinortho.tsv; \
> echo "passed"; \
> fi
> blat missing, skipping...
> echo -n " [11/12] -p=mmseqsp (mmseqs) test: "
> [11/12] -p=mmseqsp (mmseqs) test: if [ "" = "" ]; then\
> echo "mmseqs missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_mmseqsp -p=mmseqsp test/*.faa; \
> set -e ; ./src/chk_test.pl test_blatp.proteinortho.tsv; \
> echo "passed"; \
> fi
> mmseqs missing, skipping...
> echo -n " [12/12] -p=autoblast (automatically detect blastp,blastn,...) test: "
> [12/12] -p=autoblast (automatically detect blastp,blastn,...) test: if [ "/usr/bin/blastp" = "" ]; then\
> echo "ncbi-blast missing, skipping..."; \
> else \
> ./proteinortho6.pl -silent -force -project=test_autoblast -p=autoblast test/*.faa; \
> set -e ; ./src/chk_test.pl test_autoblast.proteinortho.tsv; \
> echo "passed"; \
> fi
> passed
> Makefile:475: update target 'test_clean' due to: target is .PHONY
> echo "[TEST] Clean up all test files..."; \
> rm -rf remove.graph* proteinortho_cache_test_* test.* test_* test/C.faa.* test/E.faa.* test/C2.faa.* test/L.faa.* test/M.faa.*> /dev/null 2>&1;
> [TEST] Clean up all test files...
> Makefile:283: update target 'test' due to: target is .PHONY
> echo "[TEST] All tests passed"
> [TEST] All tests passed
> make[2]: Leaving directory '/build/reproducible-path/proteinortho-6.3.1+dfsg'
> rm test_* remove.* test/C_clean.faa
> rm: cannot remove 'test_*': No such file or directory
> rm: cannot remove 'remove.*': No such file or directory
> make[1]: *** [debian/rules:15: override_dh_auto_test] Error 1 shuffle=reverse
The full build log is available from:
http://qa-logs.debian.net/2025/05/05/shuffle/reverse/proteinortho_6.3.1+dfsg-1_unstable_reverse.log
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
More information about the Debian-med-packaging
mailing list