* Improve architecture support in which_deb. Closes: #695244
+ Check all the architectures available in the archive if we're not specifically told which to use (e.g. on source builds) + If we fail to find packages/sources for the specified package, say so and bail out properly.
This commit is contained in:
parent
44907c0720
commit
3e98cc6044
|
@ -22,6 +22,11 @@ debian-cd (3.1.11) UNRELEASED; urgency=low
|
||||||
release. The new code degrades gracefully if version info is not
|
release. The new code degrades gracefully if version info is not
|
||||||
available.
|
available.
|
||||||
+ Add a dependency on libdpkg-perl for version comparison code.
|
+ Add a dependency on libdpkg-perl for version comparison code.
|
||||||
|
* Improve architecture support in which_deb. Closes: #695244
|
||||||
|
+ Check all the architectures available in the archive if we're not
|
||||||
|
specifically told which to use (e.g. on source builds)
|
||||||
|
+ If we fail to find packages/sources for the specified package, say
|
||||||
|
so and bail out properly.
|
||||||
|
|
||||||
-- Steve McIntyre <93sam@debian.org> Wed, 26 Sep 2012 01:09:13 +0100
|
-- Steve McIntyre <93sam@debian.org> Wed, 26 Sep 2012 01:09:13 +0100
|
||||||
|
|
||||||
|
|
|
@ -7,23 +7,15 @@
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use List::Util qw{first};
|
use List::Util qw{first};
|
||||||
# Give prefernce to i386 and amd64, if specified, or if building a
|
|
||||||
# source-only CD.
|
|
||||||
my @ARCHES;
|
|
||||||
if ( $ENV{ARCHES} ) {
|
|
||||||
push @ARCHES, 'i386' if $ENV{ARCHES} =~ /i386/;
|
|
||||||
push @ARCHES, 'amd64' if $ENV{ARCHES} =~ /amd64/;
|
|
||||||
push @ARCHES, grep { !/source|i386|amd64/ } split /\s+/, $ENV{ARCHES};
|
|
||||||
}
|
|
||||||
@ARCHES = qw{i386 amd64} unless @ARCHES;
|
|
||||||
|
|
||||||
my ($mirror, $codename, $pkg, $pth, $output);
|
my ($mirror, $codename, $pkg, $pth, $output, $result);
|
||||||
|
|
||||||
$mirror = shift;
|
$mirror = shift;
|
||||||
$codename = shift;
|
$codename = shift;
|
||||||
$pkg = shift;
|
$pkg = shift;
|
||||||
$output = shift;
|
$output = shift;
|
||||||
$pth = "$mirror/dists/$codename";
|
$pth = "$mirror/dists/$codename";
|
||||||
|
$text_out = "";
|
||||||
|
|
||||||
my @components = qw(main);
|
my @components = qw(main);
|
||||||
push @components, 'contrib' if $ENV{CONTRIB};
|
push @components, 'contrib' if $ENV{CONTRIB};
|
||||||
|
@ -34,6 +26,39 @@ if (!defined ($output)) {
|
||||||
$output = "binary";
|
$output = "binary";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Give preference to i386 and amd64, if specified
|
||||||
|
my @ARCHES;
|
||||||
|
if ( $ENV{ARCHES} ) {
|
||||||
|
push @ARCHES, 'i386' if $ENV{ARCHES} =~ /i386/;
|
||||||
|
push @ARCHES, 'amd64' if $ENV{ARCHES} =~ /amd64/;
|
||||||
|
push @ARCHES, grep { !/source|i386|amd64/ } split /\s+/, $ENV{ARCHES};
|
||||||
|
}
|
||||||
|
|
||||||
|
# We seem to be building a source-only CD. Check for whatever binary
|
||||||
|
# arches exist in the archive; #695244
|
||||||
|
if (!@ARCHES) {
|
||||||
|
my %found_arches;
|
||||||
|
my $dh;
|
||||||
|
for my $component(@components) {
|
||||||
|
opendir ($dh, "$pth/$component");
|
||||||
|
if ($dh) {
|
||||||
|
while (my $entry = readdir $dh) {
|
||||||
|
$entry =~ /^binary-(.*)/ and $1 !~ /all/ and $found_arches{$1} = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close $dh;
|
||||||
|
}
|
||||||
|
if ($found_arches{"i386"}) {
|
||||||
|
push @ARCHES, 'i386';
|
||||||
|
}
|
||||||
|
if ($found_arches{"amd64"}) {
|
||||||
|
push @ARCHES, 'amd64';
|
||||||
|
}
|
||||||
|
for my $arch (sort keys %found_arches) {
|
||||||
|
push @ARCHES, $arch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub grab_bin_info {
|
sub grab_bin_info {
|
||||||
my $pth = shift;
|
my $pth = shift;
|
||||||
my $arch = shift;
|
my $arch = shift;
|
||||||
|
@ -118,7 +143,7 @@ if ($pkg eq "silo") {
|
||||||
if (length($pkgdata) > 2) {
|
if (length($pkgdata) > 2) {
|
||||||
if ($output eq "binary") {
|
if ($output eq "binary") {
|
||||||
$pkgdata =~ m/^Filename: (\S+)/m and $bin_deb = $1;
|
$pkgdata =~ m/^Filename: (\S+)/m and $bin_deb = $1;
|
||||||
print "$bin_deb\n";
|
$text_out = "$bin_deb\n";
|
||||||
}
|
}
|
||||||
elsif ($output eq "source") {
|
elsif ($output eq "source") {
|
||||||
$srcname = $pkg;
|
$srcname = $pkg;
|
||||||
|
@ -128,7 +153,15 @@ if (length($pkgdata) > 2) {
|
||||||
my $dir;
|
my $dir;
|
||||||
$pkgdata =~ m/^Directory: (\S+)/m and $dir = $1;
|
$pkgdata =~ m/^Directory: (\S+)/m and $dir = $1;
|
||||||
# Explicitly use the md5 lines in the Sources stanza, hence the xdigit(32) here
|
# Explicitly use the md5 lines in the Sources stanza, hence the xdigit(32) here
|
||||||
while ($pkgdata =~ m/^ ([[:xdigit:]]{32}) (\d+) (\S+)/msg) { print "$dir/$3\n"; }
|
while ($pkgdata =~ m/^ ([[:xdigit:]]{32}) (\d+) (\S+)/msg) {
|
||||||
|
$text_out = $text_out . "$dir/$3\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (length($text_out) < 2) {
|
||||||
|
die "which_deb: can't find $output file(s) for $pkg in $codename\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
print $text_out;
|
||||||
|
|
Loading…
Reference in New Issue