On Tue, Jun 07, 2011 at 11:14:14AM +0200, Tollef Fog Heen wrote: > ]] Steve Langasek > > Hi, > > | 4) Turn on direct use of 'debian/rules build-arch' on the autobuilders for > | all packages in unstable and experimental immediately, with no fallback > | if the target does not exist; requires a corresponding update to Policy > | and mass updates to fix packages that fail to build as a result. > > I'd be happy to provide hardware to do a full scale rebuild test of the > archive if somebody does the actual work of doing the rebuilds. rleigh > did it for his sbuild resolver test so I've Cc-ed him to see if he's > interested in doing a test for this too.
We discussed this briefly on IRC, and it's certainly doable. I would suggest building using the current dpkg.git repo - unpatched - with the "make -qn" autodetection patch - with the "break world" patch which unconditionally enables the use of the targets The unpatched form would contain Bill's Build-Features work, but this won't have any effect given that no packages yet use the feature; this will give us a baseline failure rate (given that not all packages in unstable will currently be buildable) which we can then compare the other two against. I still have the build scripts and database schema I used to process the resolver builds and results, so these can be repurposed easily enough. Assuming the same hardware as last time, it'll take around 24-30 hours per complete rebuild, running 24 parallel builds. I've attached the two patches. Regards, Roger -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `- GPG Public Key: 0x25BFB848 Please GPG sign your mail.
diff --git a/scripts/dpkg-buildpackage.pl b/scripts/dpkg-buildpackage.pl
index 32427a0..a7d217c 100755
--- a/scripts/dpkg-buildpackage.pl
+++ b/scripts/dpkg-buildpackage.pl
@@ -32,6 +32,7 @@ use Dpkg::Compression;
use Dpkg::Version;
use Dpkg::Changelog::Parse;
use Dpkg::Path qw(find_command);
+use Dpkg::IPC;
textdomain("dpkg-dev");
@@ -253,7 +254,22 @@ if ($noclean) {
}
my $buildfeats = Dpkg::BuildFeatures->new();
-$buildtarget = 'build' unless $buildfeats->has('build-arch');
+unless ($buildtarget eq "build" or $buildfeats->has('build-arch') or
+ scalar(@debian_rules) > 1) {
+ my $pid = spawn(exec => [ "make", "-f", @debian_rules, "-qn", $buildtarget ],
+ from_file => "/dev/null", to_file => "/dev/null",
+ error_to_file => "/dev/null");
+ my $cmdline = "make -f @debian_rules -qn $buildtarget";
+ wait_child($pid, nocheck => 1, cmdline => $cmdline);
+ my $exitcode = WEXITSTATUS($?);
+ subprocerr($cmdline) unless WIFEXITED($?);
+ if ($exitcode == 2) {
+ warning(_g("%s must be updated to support the 'build-arch' and " .
+ "'build-indep' targets (at least '%s' seems to be " .
+ "missing)"), "@debian_rules", $buildtarget);
+ $buildtarget = "build";
+ }
+}
if ($< == 0) {
warning(_g("using a gain-root-command while being root")) if (@rootcommand);
diff --git a/scripts/dpkg-buildpackage.pl b/scripts/dpkg-buildpackage.pl
index 32427a0..190b164 100755
--- a/scripts/dpkg-buildpackage.pl
+++ b/scripts/dpkg-buildpackage.pl
@@ -252,9 +252,6 @@ if ($noclean) {
$include = BUILD_BINARY if ($include & BUILD_DEFAULT);
}
-my $buildfeats = Dpkg::BuildFeatures->new();
-$buildtarget = 'build' unless $buildfeats->has('build-arch');
-
if ($< == 0) {
warning(_g("using a gain-root-command while being root")) if (@rootcommand);
} else {
signature.asc
Description: Digital signature

