Bug#1089373: libtrycatch-perl: Supporting rootless builds by default

Niels Thykier niels at thykier.net
Sat Dec 7 19:37:05 GMT 2024


Source: libtrycatch-perl
Version: 1.003002-4
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`,
libtrycatch-perl failed to rebuild.

Log Summary:
-------------------------------------------------------------------------------
[...]
                  from TryCatch.xs:2:
TryCatch.xs: In function ‘XS_TryCatch__XS_uninstall_op_checks’:
/usr/lib/aarch64-linux-gnu/perl/5.40/CORE/embed.h:151:49: warning: 
ignoring return value of ‘Perl_av_shift’ declared with attribute 
‘warn_unused_result’ [-Wunused-result]
   151 | # define av_shift(a) 
Perl_av_shift(aTHX_ a)
       | 
^~~~~~~~~~~~~~~~~~~~~~
TryCatch.xs:263:5: note: in expansion of macro ‘av_shift’
   263 |     av_shift(av);
       |     ^~~~~~~~
rm -f blib/arch/auto/TryCatch/TryCatch.so
aarch64-linux-gnu-gcc  -Wl,-z,relro -shared -L/usr/local/lib 
-fstack-protector-strong  TryCatch.o  -o 
blib/arch/auto/TryCatch/TryCatch.so  \
       \
   chmod 755 blib/arch/auto/TryCatch/TryCatch.so
true
true
true
true
"/usr/bin/perl" "-Iinc" "-MExtUtils::Command::MM" -e pod2man "--" 
--section=3pm --perm_rw=644 -u \
   lib/TryCatch.pm blib/man3/TryCatch.3pm Manifying 1 pod document
true
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
touch debian/stamp-makefile-build
/usr/bin/make -C . OPTIMIZE="-g -O2 
-Werror=implicit-function-declaration 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong 
-fstack-clash-protection -Wformat -Werror=format-security 
-mbranch-protection=standard -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv 
-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -D_REENTRANT 
-D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe 
-I/usr/local/include" LDDLFLAGS="-Wl,-z,relro -shared -L/usr/local/lib 
-fstack-protector-strong" test TEST_VERBOSE=1
make[1]: Entering directory '/<<PKGBUILDDIR>>'
true
true
true
true
true
rm -rf blib/arch/auto/TryCatch/TryCatch.bs
"/usr/bin/perl" "-Iinc" -MExtUtils::Command::MM -e 'cp_nonempty' -- 
TryCatch.bs blib/arch/auto/TryCatch/TryCatch.bs 644
true
true
true
true
true
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" 
"-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(1, 
'inc', 'blib/lib', 'blib/arch')" t/catch_01.t t/context.t t/destroy.t 
t/handwritten.t t/invalid.t t/method.t t/mx_types_structured.t 
t/nested.t t/simple.t t/types.t t/xml_sax_expat.t
t/catch_01.t ............. ok 1 - use TryCatch;
ok 2 - simple_return
ok 3 - simple_die
ok 4 - simple_catch_type
ok 5 - simple_catch_type
ok 6 - simple_catch_type
ok 7 - simple_catch_type
ok 8 - No catch-all causes error to propogate
ok 9 - Caught error in catch all
ok 10 - Catch-all doesn't cause error to propogate
ok 11 - 'die' propogates errors as expected
1..11
ok
t/context.t .............. ok 1 - Scalar try context preserved
ok 2 - Array try context preserved
ok 3 - void try context preserved
ok 4 - Scalar catch context preserved
ok 5 - Array catch context preserved
ok 6 - void catch context preserved
1..6
ok
t/destroy.t .............. old die handler
caught error 'ERROR at t/destroy.t line 27.
'
old die handler
caught error 'ERROR at t/destroy.t line 27.
'
not ok 1 # TODO work out what this needs to test
#   Failed (TODO) test at t/destroy.t line 44.
1..1
ok
t/handwritten.t .......... 1..4
ok 1
ok 2
ok 3
ok 4
ok
t/invalid.t .............. ok 1 - no block after try
ok 2 - Error from line 4
ok 3 - no block after catch
ok 4 - Error from line 5
ok 5 - invalid catch signature
ok 6 - Error from line 4
ok 7 - invalid catch signature (missing parenthesis)
ok 8 - Error from line 4
ok 9 - bareword between try and catch
ok 10 - Error from line 3
ok 11 - catch is not special
ok 12 - Error from line 3
ok 13 - try is not too reserved
ok 14 - catch is not special
# syntax error at (eval 373) line 8, near ";="
# Execution of (eval 373) aborted due to compilation errors.
not ok 15 - POD doesn't interfer with things. # TODO Sort out POD
#   Failed (TODO) test 'POD doesn't interfer with things.'
#   at t/invalid.t line 111.
1..15
ok
t/method.t ............... 1..3
ok 1 - function
ok 2 - class method
ok 3 - instance method
ok
t/mx_types_structured.t .. 1..3
ok 1 - use TryCatch;
ok 2 - where condition 1
ok 3 - where condition 2
ok
t/nested.t ............... ok 1 - nested try
ok 2 - nested try (as method)
ok 3 - call nested try
ok 4 - call nested try (as method)
ok 5 - nested catch
ok 6 - Nested try-catch in same function behaves
ok 7 - nested rethrow
1..7
ok
t/simple.t ............... ok 1 - use TryCatch;
ok 2 - try with explicit return
ok 3 - try without explicity return
ok 4 - use in try block
ok 5 - Catch block not run
ok 6 - No warnings from try in not in sub
1..6
ok
t/types.t ................ Error catched
ok 1 - Types dont need to be pre-declared
ok 2 - Types can be declared without a var name
1..2
ok
t/xml_sax_expat.t ........ 1..5
ok 1
ok 2
ok 3
ok 4
ok 5
Completed successfully
ok
All tests successful.
Files=11, Tests=63,  5 wallclock secs ( 0.05 usr  0.02 sys +  3.84 cusr 
0.39 csys =  4.30 CPU)
Result: PASS
true
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
touch debian/stamp-makefile-check
/usr/bin/make -C . OPTIMIZE="-g -O2 
-Werror=implicit-function-declaration 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong 
-fstack-clash-protection -Wformat -Werror=format-security 
-mbranch-protection=standard -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv 
-fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE 
-D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -D_REENTRANT 
-D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe 
-I/usr/local/include" LDDLFLAGS="-Wl,-z,relro -shared -L/usr/local/lib 
-fstack-protector-strong" install DESTDIR=" 
/<<PKGBUILDDIR>>/debian/libtrycatch-perl"
make[1]: Entering directory '/<<PKGBUILDDIR>>'
true
true
true
true
true
true
rm -rf blib/arch/auto/TryCatch/TryCatch.bs
"/usr/bin/perl" "-Iinc" -MExtUtils::Command::MM -e 'cp_nonempty' -- 
TryCatch.bs blib/arch/auto/TryCatch/TryCatch.bs 644
true
true
true
true
"/usr/bin/perl" "-Iinc" "-MExtUtils::Command::MM" -e pod2man "--" 
--section=3pm --perm_rw=644 -u \
   lib/TryCatch.pm blib/man3/TryCatch.3pm Manifying 1 pod document
true
umask 022; "/usr/bin/perl" "-Iinc" -MExtUtils::Install -e 'install([ 
from_to => {@ARGV}, verbose => '\''0'\'', uninstall_shadows => 
'\''0'\'', dir_mode => '\''755'\'' ]);' -- \
	"blib/lib" "/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/share/perl5" \
	"blib/arch" 
"/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/lib/aarch64-linux-gnu/perl5/5.40" 
\
	"blib/bin" "/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/bin" \
	"blib/script" "/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/bin" \
	"blib/man1" "/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/share/man/man1" \
	"blib/man3" "/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/share/man/man3"
Files found in blib/arch: installing files in blib/lib into architecture 
dependent library tree
Installing 
/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/lib/aarch64-linux-gnu/perl5/5.40/auto/TryCatch/TryCatch.so
Installing 
/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/lib/aarch64-linux-gnu/perl5/5.40/TryCatch.pm
Installing 
/<<PKGBUILDDIR>>/debian/libtrycatch-perl/usr/share/man/man3/TryCatch.3pm
true
true
true
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
touch debian/stamp-makefile-install
Adding cdbs dependencies to debian/libtrycatch-perl.substvars
dh_installdirs -plibtrycatch-perl \
	
dh_installdocs -plibtrycatch-perl ./README
dh_installexamples -plibtrycatch-perl dh_installman -plibtrycatch-perl 
dh_installinfo -plibtrycatch-perl dh_installmenu -plibtrycatch-perl 
dh_installcron -plibtrycatch-perl dh_systemd_enable -plibtrycatch-perl 
dh_installinit -plibtrycatch-perl dh_installdebconf -plibtrycatch-perl 
dh_installemacsen -plibtrycatch-perl dh_installcatalogs 
-plibtrycatch-perl dh_installpam -plibtrycatch-perl dh_installlogrotate 
-plibtrycatch-perl dh_installlogcheck -plibtrycatch-perl 
dh_installchangelogs -plibtrycatch-perl ./Changes
dh_installudev -plibtrycatch-perl dh_lintian -plibtrycatch-perl 
dh_bugfiles -plibtrycatch-perl dh_install -plibtrycatch-perl 
dh_systemd_start -plibtrycatch-perl dh_link -plibtrycatch-perl 
dh_buildinfo -plibtrycatch-perl dh_installmime -plibtrycatch-perl 
dh_installgsettings -plibtrycatch-perl dh_strip -plibtrycatch-perl 
strip: unable to copy file 
'debian/libtrycatch-perl/usr/lib/aarch64-linux-gnu/perl5/5.40/auto/TryCatch/TryCatch.so'; 
reason: Permission denied
dh_strip: error: strip --remove-section=.comment --remove-section=.note 
--strip-unneeded 
debian/libtrycatch-perl/usr/lib/aarch64-linux-gnu/perl5/5.40/auto/TryCatch/TryCatch.so 
returned exit code 1
dh_strip: error: Aborting due to earlier error
make: *** [/usr/share/cdbs/1/rules/debhelper.mk:298: 
binary-strip-IMPL/libtrycatch-perl] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit 
status 2
--------------------------------------------------------------------------------
Build finished at 2024-11-17T07:28:03Z

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


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/1018022.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-perl-maintainers/attachments/20241207/409ce9e4/attachment-0001.sig>


More information about the pkg-perl-maintainers mailing list