Control: clone -1 -2 Control: retitle -2 dist: unit ordering relies on make not shuffling targets Control: reassign -2 dist 1:3.5-236-1.1 Control: retitle -1 perl: FTBFS with make --shuffle=reverse: Configure reordering Control: tag -1 confirmed patch
On Tue, May 13, 2025 at 09:12:44PM +0200, Lucas Nussbaum wrote: > Source: perl > Version: 5.40.1-3 > Severity: minor > Tags: trixie sid ftbfs > User: lu...@debian.org > Usertags: ftbfs-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. Lucas, many thanks for your work on archive wide QA! Indeed it looks like GNUMAKEFLAGS=--shuffle=reverse causes reordering in the generated Configure script, causing it to differ from the one shipped by Perl upstream. The build failure is due to an explicit check in debian/rules making sure that we can rebuild an identical Configure script from the sources in the regen-configure/ directory. Even if we didn't do that, the resulting rebuilt Configure is broken so the build would fail anyway. Calling metaconfig from debian/rules with an empty MAKEFLAGS setting works around the issue and makes the package build successfully. It looks like metaconfig relies on the default make ordering when it determines the correct order for units. For instance, quoting /usr/share/dist/U/Begin.U : ?X: This file comes after option processing had been done and after all ?X: the default values have been set up. It marks the beginning of questions. ?X: It is important that Options be listed *after* Myinit to ensure that the ?X: default initializations performed by Init and Myinit will not clobber ?X: any setting done on the command line via -D or -U. ?X: ?MAKE:Begin: Myinit Options package Extractall and the MAKE: line ends up in a temporary Makefile as-is, so relying on left to right execution order. This is where the Configure script generated with GNUMAKEFLAGS=--shuffle=reverse first breaks, as the 'package' variable gets set first to 'perl5' by the 'package' unit, and then clobbered by 'Myinit'. I'm cloning a separate bug about this for src:dist which ships the metaconfig we use. For the purposes of src:perl, I suppose I'll close this by resetting MAKEFLAGS for the metaconfig call (probably after the trixie release of course). BTW the hordes of sh: 1: Makefile:472:: not found sh: 1: Makefile:909:: not found in the build log are related to make --trace and seem to be harmless. -- Niko