[Pkg-tcltk-devel] Bug#1089353: itcl3: Supporting rootless builds by default

Niels Thykier niels at thykier.net
Sat Dec 7 19:28:13 GMT 2024


Source: itcl3
Version: 3.4.4-2
Severity: important
Tags: ftbfs
Justification: FTBFS
X-Debbugs-Cc: niels at thykier.net
User: niels at thykier.net
Usertags: rrr-no-as-default-issue

Dear maintainer,

During a test rebuild for building packages with
`Rules-Requires-Root: no` as the default in `dpkg`,
itcl3 failed to rebuild.

Log Summary:
-------------------------------------------------------------------------------
[...]
rm -f libitcl3.4.so
gcc -g -O2 -Werror=implicit-function-declaration 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong 
-fstack-clash-protection -Wformat -Werror=format-security 
-mbranch-protection=standard -pipe -Wdate-time -D_FORTIFY_SOURCE=2 
-Wl,-z,relro -Wl,--export-dynamic  -shared -o libitcl3.4.so 
itclStubInit.o itcl_bicmds.o itcl_class.o itcl_cmds.o itcl_ensemble.o 
itcl_linkage.o itcl_methods.o itcl_migrate.o itcl_objects.o itcl_parse.o 
itcl_util.o -Wl,-soname,libitcl3.4.so.1 -L/usr/lib/aarch64-linux-gnu 
-ltclstub8.6 : libitcl3.4.so
gcc -DPACKAGE_NAME=\"itcl\" -DPACKAGE_TARNAME=\"itcl\" 
-DPACKAGE_VERSION=\"3.4\" -DPACKAGE_STRING=\"itcl\ 3.4\" 
-DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DBUILD_itcl=/\*\*/ 
-DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 
-DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 
-DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DTCL_THREADS=1 
-DUSE_TCL_STUBS=1 -DUSE_TCLOO_STUBS=1 -DMODULE_SCOPE=extern\ 
__attribute__\(\(__visibility__\(\"hidden\"\)\)\) -DHAVE_HIDDEN=1 
-DHAVE_CAST_TO_UNION=1 -D_LARGEFILE64_SOURCE=1 -DTCL_WIDE_INT_IS_LONG=1 
-DUSE_TCL_STUBS=1  -DITCL_LIBRARY=\"/usr/lib/aarch64-linux-gnu/itcl3.4\" 
-I"./generic" -I"/usr/include/tcl8.6/tcl-private/generic" 
-I"/usr/include/tcl8.6/tcl-private/unix"  -fPIC  -g -O2 
-Werror=implicit-function-declaration 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong 
-fstack-clash-protection -Wformat -Werror=format-security 
-mbranch-protection=standard -pipe -Wdate-time -D_FORTIFY_SOURCE=2 -c 
`echo ./generic/itclStubLib.c` -o itclStubLib.o
rm -f libitclstub3.4.a
ar cr libitclstub3.4.a itclStubLib.o
ranlib libitclstub3.4.a
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
    dh_auto_test
	make -j16 test "TESTSUITEFLAGS=-j16 --verbose" VERBOSE=1
make[1]: Entering directory '/<<PKGBUILDDIR>>'
TCL_LIBRARY=`echo /usr/include/tcl8.6/tcl-private/library` 
ITCL_LIBRARY=`echo ./library` 
LD_LIBRARY_PATH=".:/usr/lib/aarch64-linux-gnu/tcl8.6:" 
PATH=".:/usr/lib/aarch64-linux-gnu/tcl8.6:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 
TCLLIBPATH="." /usr/bin/tclsh8.6 `echo ./tests/all.tcl` -load "package 
require Itcl 3.4" Tests running in interp:  /usr/bin/tclsh8.6
Tests located in:  /<<PKGBUILDDIR>>/tests
Tests running in:  /<<PKGBUILDDIR>>
Temporary files stored in /<<PKGBUILDDIR>>
Test files run in separate interpreters
Running tests that match:  *
Skipping test files that match:  l.*.test
Only running test files that match:  *.test
Tests began at Sat Nov 16 19:14:09 UTC 2024
basic.test
body.test
chain.test
delete.test
ensemble.test
import.test
info.test
inherit.test
interp.test
local.test
methods.test
mkindex.test


==== mkindex-1.3 examine tclIndex FAILED
==== Contents of test case:

     namespace eval itcl_mkindex_tmp {
         set dir "."
         variable auto_index
         source tclIndex
         set result ""
         foreach elem [lsort [array names auto_index]] {
             lappend result [list $elem $auto_index($elem)]
         }
         set result
     }

---- Result was:
{::Simple2::bump {source ./mkindex.itcl}} {::Simple2::by {source 
./mkindex.itcl}} {::buried::deep::within {source ./mkindex.itcl}} 
{::buried::ens {source ./mkindex.itcl}} {::buried::inside {source 
./mkindex.itcl}} {::buried::inside::bump {source ./mkindex.itcl}} 
{::buried::inside::by {source ./mkindex.itcl}} {::buried::inside::find 
{source -encoding utf-8 ./mkindex.itcl}} {::buried::under::neath {source 
./mkindex.itcl}} {::top::find {source -encoding utf-8 ./mkindex.itcl}} 
{::top::notice {source -encoding utf-8 ./mkindex.itcl}} {Simple1 {source 
./mkindex.itcl}} {Simple2 {source ./mkindex.itcl}} {ens {source 
./mkindex.itcl}} {top {source ./mkindex.itcl}}
---- Result should have been (exact matching):
{::Simple2::bump {source ./mkindex.itcl}} {::Simple2::by {source 
./mkindex.itcl}} {::buried::deep::within {source ./mkindex.itcl}} 
{::buried::ens {source ./mkindex.itcl}} {::buried::inside {source 
./mkindex.itcl}} {::buried::inside::bump {source ./mkindex.itcl}} 
{::buried::inside::by {source ./mkindex.itcl}} {::buried::inside::find 
{source ./mkindex.itcl}} {::buried::under::neath {source 
./mkindex.itcl}} {::top::find {source ./mkindex.itcl}} {::top::notice 
{source ./mkindex.itcl}} {Simple1 {source ./mkindex.itcl}} {Simple2 
{source ./mkindex.itcl}} {ens {source ./mkindex.itcl}} {top {source 
./mkindex.itcl}}
==== mkindex-1.3 FAILED

namespace.test
protection.test
scope.test

Tests ended at Sat Nov 16 19:14:10 UTC 2024
all.tcl:	Total	404	Passed	403	Skipped	0	Failed	1
Sourced 15 Test Files.
Files with failing tests: mkindex.test
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
    create-stamp debian/debhelper-build-stamp
    dh_prep
    debian/rules override_dh_auto_install
make[1]: Entering directory '/<<PKGBUILDDIR>>'
/usr/bin/make prefix=/<<PKGBUILDDIR>>/debian/tmp/usr \
	exec_prefix=/<<PKGBUILDDIR>>/debian/tmp/usr \
	includedir=/<<PKGBUILDDIR>>/debian/tmp/usr/include/itcl3 \
	install
make[2]: Entering directory '/<<PKGBUILDDIR>>'
  /bin/bash ./tclconfig/install-sh -c  -m 755 libitcl3.4.so 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itcl3.4/libitcl3.4.so
  : 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itcl3.4/libitcl3.4.so
  /bin/bash ./tclconfig/install-sh -c  -m 755 libitclstub3.4.a 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itcl3.4/libitclstub3.4.a
  ranlib 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itcl3.4/libitclstub3.4.a
  Install itcl.tcl 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itcl3.4/itcl.tcl
/bin/bash ./tclconfig/install-sh -c  -m 444 pkgIndex.tcl 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itcl3.4
/bin/bash ./tclconfig/install-sh -c  -m 444 itclConfig.sh 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu
Installing header files in /<<PKGBUILDDIR>>/debian/tmp/usr/include/itcl3
Installing ./generic/itcl.h
Installing ./generic/itclDecls.h
Installing ./generic/itclInt.h
Installing ./generic/itclIntDecls.h
Installing man pages in /<<PKGBUILDDIR>>/debian/tmp/usr/share/man
Installing body.n
Installing class.n
Installing code.n
Installing configbody.n
Installing delete.n
Installing ensemble.n
Installing find.n
Installing is.n
Installing itcl.n
Installing itclvars.n
Installing local.n
Installing scope.n
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
#
# Fix up the itcl libraries.
mv 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itcl*/libitcl3.4.so 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/libitcl3.4.so.1
mv /<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itcl*/*.a 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu
ln -sf libitcl3.4.so.1 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/libitcl3.4.so
#  (itclConfig.sh doesn't get installed at all, so we install it here)
sed -e 
"s:^\(\(ITCL\|itcl\)_\(BUILD_\)\?LIB_SPEC\)=.*$:\1='-L/usr/lib/aarch64-linux-gnu 
-litcl3.4':" \
     -e 
"s:^\(\(ITCL\|itcl\)_\(BUILD_\)\?STUB_LIB_SPEC\)=.*$:\1='-L/usr/lib/aarch64-linux-gnu 
-litclstub3.4':" \
     -e 
"s:^\(\(ITCL\|itcl\)_\(BUILD_\)\?STUB_LIB_PATH\)=.*$:\1=/usr/lib/aarch64-linux-gnu/libitclstub3.4.a:" 
\
     -e 
"s:^\(\(ITCL\|itcl\)_SRC_DIR\)=.*$:\1='/usr/include/itcl3/itcl-private':" \
     -e "s:^\(\(ITCL\|itcl\)_LIB_FILE\)=.*$:\1=libitcl3.4.so.1:" \
     -e "s:^\(\(ITCL\|itcl\)_STUB_LIB_FILE\)=.*$:\1=libitclstub3.4.a:" \
     -e "s:^\(\(ITCL\|itcl\)_VERSION\)=.*$:\1='3.4':" \
     itclConfig.sh > 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itclConfig.sh
/bin/sh: 1: cannot create 
/<<PKGBUILDDIR>>/debian/tmp/usr/lib/aarch64-linux-gnu/itclConfig.sh: 
Permission denied
make[1]: *** [debian/rules:43: override_dh_auto_install] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:16: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit 
status 2
--------------------------------------------------------------------------------
Build finished at 2024-11-16T19:14:15Z

-------------------------------------------------------------------------------


The above is just how the build ends and not necessarily the most
relevant part. If required, the full build log is available here:

https://people.debian.org/~nthykier/rrr-no-as-default/logs/998649.gz

You can find common solutions at
https://people.debian.org/~nthykier/rrr-no-as-default/docs/solutions.md

If this is really a bug in one of the build-depends, please use
reassign and affects, so that this is still visible in the BTS web
page for this package.

If this package is listed in
https://people.debian.org/~nthykier/rrr-no-as-default/docs/static-ownership.list,
then please just set `Rules-Requires-Root: binary-targets` to the source
stanza of `debian/control` as a fix to this bug.

If this package is listed in
https://people.debian.org/~nthykier/rrr-no-as-default/docs/maybe-misbuilds.list,
then the package was deemed at risk for misbuilding (having wrong
ownership) but had a FTBFS problem we tested it. Please test whether the
package works with `Rules-Requires-Root: no` validating that the
resulting deb has the correct ownership for all paths in the deb.

The goal is to have the default changed in `dpkg` either in `Trixie` or
`Forky`, depending on progress and feasibility with the release schedule
for Trixie.

For more information on this bug filing, please see:
https://lists.debian.org/debian-dpkg/2024/11/msg00016.html

Thanks,


PS: The builds were performed in mid-November. If you fixed the problem
between between then and this bug being filed, then please just close
the bug with the version it was fixed in.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-tcltk-devel/attachments/20241207/796aa1a3/attachment.sig>


More information about the Pkg-tcltk-devel mailing list