[Pkg-tcltk-devel] Bug#1105593: tclx8.4: FTBFS with make --shuffle=reverse: dh_install: error: missing files, aborting
Lucas Nussbaum
lucas at debian.org
Tue May 13 20:16:43 BST 2025
Source: tclx8.4
Version: 8.4.1-4
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[1]: Entering directory '/build/reproducible-path/tclx8.4-8.4.1'
> Makefile:459: update target 'install-help' due to: target does not exist
> if test -d "/build/reproducible-path/tclx8.4-8.4.1/help" ; then \
> echo "Installing TclX help files in `echo /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/help`"; \
> mkdir -p `echo /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/help`; \
> TCL_LIBRARY=`echo /usr/include/tcl8.6/tcl-private/library` TCLX_LIBRARY=`echo ./library` TCLX_HELP_DIR="`echo /build/reproducible-path/tclx8.4-8.4.1/help`" LD_LIBRARY_PATH=".:/usr/lib:" PATH=".:/usr/lib:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" TCLLIBPATH="." /usr/bin/tclsh8.6 `echo ./unix/tools`/instcopy.tcl `echo /build/reproducible-path/tclx8.4-8.4.1/help` `echo /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/help`; \
> fi
> Makefile:223: update target 'install-doc' due to: target does not exist
> mkdir -p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/share/man/mann
> echo "Installing documentation in /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/share/man"
> Installing documentation in /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/share/man
> list='./doc/*.n'; for i in $list; do \
> echo "Installing $i"; \
> rm -f /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/share/man/mann/`basename $i`; \
> /usr/bin/install -c -m 644 $i /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/share/man/mann ; \
> done
> Installing ./doc/TclX.n
> Makefile:210: update target 'install-libraries' due to: target does not exist
> mkdir -p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/include
> echo "Installing header files in /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/include"
> Installing header files in /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/include
> list='generic/tclExtend.h'; for i in $list; do \
> echo "Installing ./$i" ; \
> /usr/bin/install -c -m 644 ./$i /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/include ; \
> done;
> Installing ./generic/tclExtend.h
> Makefile:411: update target 'install-bin-binaries' due to: target does not exist
> mkdir -p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/bin
> list=''; for p in $list; do \
> if test -f $p; then \
> echo " /usr/bin/install -c $p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/bin/$p"; \
> /usr/bin/install -c $p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/bin/$p; \
> fi; \
> done
> Makefile:366: update target 'install-lib-binaries' due to: target does not exist
> mkdir -p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4
> list='libtclx8.4.a'; for p in $list; do \
> if test -f $p; then \
> echo " /usr/bin/install -c $p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$p"; \
> /usr/bin/install -c $p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$p; \
> stub=`echo $p|sed -e "s/.*\(stub\).*/\1/"`; \
> if test "x$stub" = "xstub"; then \
> echo " x86_64-linux-gnu-ranlib /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$p"; \
> x86_64-linux-gnu-ranlib /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$p; \
> else \
> echo " x86_64-linux-gnu-ranlib /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$p"; \
> x86_64-linux-gnu-ranlib /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$p; \
> fi; \
> ext=`echo $p|sed -e "s/.*\.//"`; \
> if test "x$ext" = "xdll"; then \
> lib=`basename $p|sed -e 's/.[^.]*$//'`.lib; \
> if test -f $lib; then \
> echo " /usr/bin/install -c -m 644 $lib /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$lib"; \
> /usr/bin/install -c -m 644 $lib /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$lib; \
> fi; \
> fi; \
> fi; \
> done
> /usr/bin/install -c libtclx8.4.a /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/libtclx8.4.a
> x86_64-linux-gnu-ranlib /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/libtclx8.4.a
> list='library/tclx.tcl library/autoload.tcl library/arrayprocs.tcl library/compat.tcl library/convlib.tcl library/edprocs.tcl library/events.tcl library/forfile.tcl library/globrecur.tcl library/help.tcl library/profrep.tcl library/pushd.tcl library/setfuncs.tcl library/showproc.tcl library/stringfile.tcl library/tcllib.tcl library/fmath.tcl library/buildhelp.tcl'; for p in $list; do \
> if test -f ./$p; then \
> destp=`basename $p`; \
> echo " Install $destp /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$destp"; \
> /usr/bin/install -c -m 644 ./$p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/$destp; \
> fi; \
> done
> Install tclx.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/tclx.tcl
> Install autoload.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/autoload.tcl
> Install arrayprocs.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/arrayprocs.tcl
> Install compat.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/compat.tcl
> Install convlib.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/convlib.tcl
> Install edprocs.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/edprocs.tcl
> Install events.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/events.tcl
> Install forfile.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/forfile.tcl
> Install globrecur.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/globrecur.tcl
> Install help.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/help.tcl
> Install profrep.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/profrep.tcl
> Install pushd.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/pushd.tcl
> Install setfuncs.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/setfuncs.tcl
> Install showproc.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/showproc.tcl
> Install stringfile.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/stringfile.tcl
> Install tcllib.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/tcllib.tcl
> Install fmath.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/fmath.tcl
> Install buildhelp.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/buildhelp.tcl
> if test "x0" = "x1"; then \
> echo " Install pkgIndex.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4"; \
> /usr/bin/install -c -m 644 pkgIndex.tcl /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4; \
> fi
> make[1]: Leaving directory '/build/reproducible-path/tclx8.4-8.4.1'
> cp -fp libtclx*.a /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/
> # Fix the installation
> mv /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/lib* /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/
> ln -nfs libtclx8.4.so.0 \
> /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/libtclx8.4.so
> mkdir -p /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/include/tclx8.4
> mv /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/include/*.h \
> /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/include/tclx8.4/
> sh ./debian/install_manpages /build/reproducible-path/tclx8.4-8.4.1/debian/tmp
> ln -nfs TclX.3tclx.gz /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/share/man/man3/tclx.3tclx.gz
> # Load only on tcl8.4
> echo 'if {[package vcompare [info tclversion] 8.4] < 0} return' \
> > /build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/pkgIndex.tcl
> sed 's|\$dir|/usr/lib|' < pkgIndex.tcl \
> >>/build/reproducible-path/tclx8.4-8.4.1/debian/tmp/usr/lib/tclx8.4/pkgIndex.tcl
> # Copy files in packages directories
> dh_install -v --sourcedir=debian/tmp
> dh_install: warning: Cannot find (any matches for) "usr/lib/libtclx*.so.*" (tried in debian/tmp, debian/tmp)
>
> dh_install: warning: tclx8.4 missing files: usr/lib/libtclx*.so.*
> dh_install: error: missing files, aborting
> make: *** [debian/rules:126: install] Error 255 shuffle=reverse
The full build log is available from:
http://qa-logs.debian.net/2025/05/05/shuffle/reverse/tclx8.4_8.4.1-4_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 Pkg-tcltk-devel
mailing list