This is an automated email from the git hooks/post-receive script. jamessan pushed a commit to branch master in repository devscripts.
commit 81c4d4da5bbcbbda3dad4e510df5261f31095893 Author: James McCoy <[email protected]> Date: Sat Jan 3 02:20:06 2015 -0500 debsnap: Error when version or architecture aren't found Signed-off-by: James McCoy <[email protected]> --- debian/changelog | 4 ++++ scripts/debsnap.pl | 41 ++++++++++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/debian/changelog b/debian/changelog index e36f634..2b9e08f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,10 @@ devscripts (2.15.1+exp1) UNRELEASED; urgency=medium * uscan: explicitly dearmor, rather than --import upstream signing key (Closes: #768345) + [ James McCoy ] + * debsnap: When specified version or architectures aren't available, warn + and exit with error code 2. (Closes: #774276) + -- James McCoy <[email protected]> Sat, 03 Jan 2015 00:47:36 -0500 devscripts (2.15.1) unstable; urgency=medium diff --git a/scripts/debsnap.pl b/scripts/debsnap.pl index 48c3832..8800e37 100755 --- a/scripts/debsnap.pl +++ b/scripts/debsnap.pl @@ -54,7 +54,7 @@ if ($@) { my $modified_conf_msg = ''; my %config_vars = (); -my %opt; +my %opt = (architecture => []); my $package = ''; my $pkgversion = ''; my $warnings = 0; @@ -215,7 +215,7 @@ if (@ARGV) { $package eq '' && usage(1); -$opt{binary} ||= $opt{architecture}; +$opt{binary} ||= @{$opt{architecture}}; my $baseurl; if ($opt{binary}) { @@ -238,23 +238,37 @@ unless ($json_text && @{$json_text->{result}}) { fatal "Unable to retrieve information for $package from $baseurl."; } +my @versions = @{$json_text->{result}}; +if ($pkgversion) { + @versions = $opt{binary} ? grep { !($_->{binary_version} <=> $pkgversion) } @versions + : grep { !($_->{version} <=> $pkgversion) } @versions; + unless (@versions) { + warn "$progname: No matching versions found for $package\n"; + $warnings++; + } +} if ($opt{binary}) { - foreach my $version (@{$json_text->{result}}) { - if ($pkgversion) { - next if ($version->{binary_version} <=> $pkgversion); - } - + foreach my $version (@versions) { my $src_json = fetch_json_page("$opt{baseurl}/mr/package/$version->{source}/$version->{version}/binfiles/$version->{name}/$version->{binary_version}?fileinfo=1"); unless ($src_json) { warn "$progname: No binary packages found for $package version $version->{binary_version}\n"; $warnings++; + next; } - foreach my $result (@{$src_json->{result}}) { - if ($opt{architecture} && @{$opt{architecture}}) { - next unless (grep { $_ eq $result->{architecture} } @{$opt{architecture}}); + my @results = @{$src_json->{result}}; + if (@{$opt{architecture}}) + { + my %archs = map { ($_ => 1) } @{$opt{architecture}}; + @results = grep { $archs{$_->{architecture}}-- } @results; + my @missing = grep { $archs{$_} == 1 } sort keys %archs; + if (@missing) { + warn "$progname: No binary packages found for $package version $version->{binary_version} on " . join(', ', @missing) . "\n"; + $warnings++; } + } + foreach my $result (@results) { my $hash = $result->{hash}; my $fileinfo = @{$src_json->{fileinfo}{$hash}}[0]; my $file_url = "$opt{baseurl}/file/$hash"; @@ -267,15 +281,12 @@ if ($opt{binary}) { } } else { - foreach my $version (@{$json_text->{result}}) { - if ($pkgversion) { - next if ($version->{version} <=> $pkgversion); - } - + foreach my $version (@versions) { my $src_json = fetch_json_page("$baseurl/$version->{version}/srcfiles?fileinfo=1"); unless ($src_json) { warn "$progname: No source files found for $package version $version->{version}\n"; $warnings++; + next; } foreach my $hash (keys %{$src_json->{fileinfo}}) { -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git _______________________________________________ devscripts-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel
