Here's a new patch that will allow sbuild to support packages that add the 'Architecture' fields with any of the architecture wildcards, along with the Package interrelationship fields using the wildcards.
-- Regards, Andres
--- lib/Sbuild/Build.pm.old 2009-03-27 17:54:25.000000000 -0400
+++ lib/Sbuild/Build.pm 2009-03-27 17:57:05.000000000 -0400
@@ -339,12 +339,23 @@
$self->log("$dsc has no Architecture: field -- skipping arch check!\n");
}
else {
- if ($dscarchs ne "any" && $dscarchs !~ /\b$arch\b/ &&
- !($dscarchs eq "all" && $self->get_conf('BUILD_ARCH_ALL')) ) {
- $self->log("$dsc: $arch not in arch list: $dscarchs -- skipping\n");
- $self->set('Pkg Fail Stage', "arch-check");
- return 0;
- }
+ my $valid_arch;
+ my $dpkg_architecture = '/usr/bin/dpkg-architecture';
+ for my $a (split(/\s+/, $dscarchs)) {
+ if (system($dpkg_architecture,
+ '-a' . $arch, '-i' . $a) eq 0) {
+ $valid_arch = 1;
+ last;
+ }
+ }
+ if ($dscarchs ne "any" && !($valid_arch) &&
+ !($dscarchs eq "all" && $self->get_conf('BUILD_ARCH_ALL')) ) {
+ my $msg = "$dsc: $arch not in arch list or does not match any arch ";
+ $msg .= "wildcards: $dscarchs -- skipping\n";
+ $self->log($msg);
+ $self->set('Pkg Fail Stage', "arch-check");
+ return 0;
+ }
}
debug("Arch check ok ($arch included in $dscarchs)\n");
@@ -1848,11 +1859,16 @@
my @archs = split( /\s+/, $archlist );
my ($use_it, $ignore_it, $include) = (0, 0, 0);
foreach (@archs) {
+ # Let's use 'dpkg-architecture' so we can support architecture
+ # wildcards.
+ my $dpkg_architecture = '/usr/bin/dpkg-architecture';
if (/^!/) {
- $ignore_it = 1 if substr($_, 1) eq $self->get('Arch');
+ $ignore_it = 1 if system($dpkg_architecture, '-a' .
+ $self->get('Arch'), '-i' . substr($_, 1)) eq 0;
}
else {
- $use_it = 1 if $_ eq $self->get('Arch');
+ $use_it = 1 if system($dpkg_architecture, '-a' .
+ $self->get('Arch'), '-i' . $_) eq 0;
$include = 1;
}
}
signature.asc
Description: This is a digitally signed message part.

