Control: tag -1 + patch Hi,
On Sat, 3 Nov 2012 16:44:13 +0000 Roger Leigh <[email protected]> wrote: > On Fri, Oct 26, 2012 at 05:13:10PM +0100, Wookey wrote: > > If a new architecture is added to dpkg such that the version inside the > > build chroot knows about this, but the version outside does not then the > > Arch check stage can fail if the package arch is a wildcard like > > 'linux-any'. > > > > The offending code is in lib/Sbuild/Build.pm: > > > > That arch check should (I think) be done inside the chroot, where it will > > come out correct. > > This makes sense I think. The only possible disadvantage is the performance > hit of setting up the schroot session and then tearing it down immediately if > invalid. But that's not too a high cost, and correctness is better. > > I'll just need to check where this occurs in the build sequence and maybe > move it to a point where we have an active session, if it's not already in > the right place. I'll need to double-check that has no nasty side-effects as > well. the following untested patch should fix the problem: diff --git a/lib/Sbuild/Build.pm b/lib/Sbuild/Build.pm index d03401c..00f3c3a 100644 --- a/lib/Sbuild/Build.pm +++ b/lib/Sbuild/Build.pm @@ -1118,7 +1118,23 @@ sub fetch_source_files { } else { my $valid_arch; for my $a (split(/\s+/, $dscarchs)) { - if (Dpkg::Arch::debarch_is($host_arch, $a)) { + my $command = <<"EOF"; + use strict; + use warnings; + use Dpkg::Arch; + if (Dpkg::Arch::debarch_is($host_arch, $a)) { + exit 0; + } + exit 1; +EOF + $self->run_command( + { COMMAND => ['perl', + '-e', + $command], + USER => 'root', + PRIORITY => 0, + DIR => '/' }); + if ($? == 0) { $valid_arch = 1; last; } Thanks! cheers, josch
signature.asc
Description: signature

