• Bug#1105698: proteinortho: FTBFS with make --shuffle=reverse: rm: canno

    From Lucas Nussbaum@21:1/5 to All on Tue May 13 21:30:25 2025
    Source: proteinortho
    Version: 6.3.1+dfsg-1
    Severity: minor
    Tags: trixie sid ftbfs
    User: lucas@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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)