package devscripts tags 587523 patch thanks Hi,
> In order to test/bisect stuff, it would be convenient to be able to use > debsnap to download binary packages from snapshot.d.o, e.g. > $ debsnap -a amd64 xterm 256-1 > to get xterm_256-1_amd64.deb. Not sure if that should get all debs from > a given source package, or just the one specified. here's a patch against git master, please review.
>From 1ddcb8ea8f096037aa716ec5edc9a7804def321b Mon Sep 17 00:00:00 2001 From: Timo Juhani Lindfors <timo.lindf...@iki.fi> Date: Sun, 17 Apr 2011 15:16:32 +0300 Subject: [PATCH] Implement --binary and --architecture (closes: #587523). --- scripts/debsnap.pl | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 50 insertions(+), 2 deletions(-) diff --git a/scripts/debsnap.pl b/scripts/debsnap.pl index eb4ee46..6176748 100755 --- a/scripts/debsnap.pl +++ b/scripts/debsnap.pl @@ -91,6 +91,11 @@ The following options are supported: Default is ./source-<package name> -f, --force Force overwriting an existing destdir + --binary Download binary packages instead of + source packages + -a <architecture>, + --architecture <architecture> Specify architecture of binary packages, + implies --binary Default settings modified by devscripts configuration files or command-line options: @@ -180,7 +185,7 @@ sub verbose($) read_conf(@ARGV); Getopt::Long::Configure('gnu_compat'); Getopt::Long::Configure('no_ignore_case'); -GetOptions(\%opt, 'verbose|v', 'destdir|d=s', 'force|f', 'help|h', 'version') || exit 1; +GetOptions(\%opt, 'verbose|v', 'destdir|d=s', 'force|f', 'help|h', 'version', 'binary', 'architecture|a=s') || exit 1; usage(0) if $opt{help}; usage(1) unless @ARGV; @@ -193,7 +198,13 @@ if (@ARGV) { $package eq '' && usage(1); -$opt{destdir} ||= "source-$package"; +$opt{binary} ||= $opt{architecture}; + +if ($opt{binary}) { + $opt{destdir} ||= "binary-$package"; +} else { + $opt{destdir} ||= "source-$package"; +} my $baseurl = "$opt{baseurl}/mr/package/$package/"; if (-d $opt{destdir}) { @@ -203,6 +214,43 @@ if (-d $opt{destdir}) { } make_path($opt{destdir}); +if ($opt{binary}) { + $baseurl = "$opt{baseurl}/mr/binary/$package/"; + + my $json_text = fetch_json_page($baseurl); + unless ($json_text && @{$json_text->{result}}) { + fatal "Unable to retrieve information for $package from $baseurl."; + } + + foreach my $version (@{$json_text->{result}}) { + if ($pkgversion) { + next if ($version->{binary_version} <=> $pkgversion); + } + + 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++; + } + + foreach my $result (@{$src_json->{result}}) { + if ($opt{architecture}) { + next if ($result->{architecture} ne $opt{architecture}); + } + my $fileinfo = @{$src_json->{fileinfo}{$result->{hash}}}[0]; + my $file_url = "$opt{baseurl}/file/$result->{hash}"; + my $file_name = basename($fileinfo->{name}); + verbose "Getting file $file_name: $file_url"; + LWP::Simple::getstore($file_url, "$opt{destdir}/$file_name"); + } + } + if ($warnings) { + exit 2; + } + exit 0; +} + my $json_text = fetch_json_page($baseurl); unless ($json_text && @{$json_text->{result}}) { fatal "Unable to retrieve information for $package from $baseurl."; -- 1.7.2.5
Some usage examples: Specific version of a binary package for a specific arch ======================================================== $ debsnap -a amd64 xterm 256-1 $ ls -l binary-xterm/ total 524 -rw-r--r-- 1 lindi kurp 532374 Apr 17 15:22 xterm_256-1_amd64.deb All versions of a binary package for a specific arch ==================================================== $ debsnap -a armel xterm $ ls -l binary-xterm/ total 16196 -rw-r--r-- 1 lindi kurp 477906 Apr 17 15:27 xterm_231-1_armel.deb -rw-r--r-- 1 lindi kurp 478264 Apr 17 15:27 xterm_232-1_armel.deb -rw-r--r-- 1 lindi kurp 481140 Apr 17 15:26 xterm_234-1_armel.deb -rw-r--r-- 1 lindi kurp 483878 Apr 17 15:26 xterm_235-1_armel.deb -rw-r--r-- 1 lindi kurp 484486 Apr 17 15:26 xterm_235-2_armel.deb -rw-r--r-- 1 lindi kurp 484356 Apr 17 15:26 xterm_236-1_armel.deb -rw-r--r-- 1 lindi kurp 485618 Apr 17 15:26 xterm_237-1_armel.deb -rw-r--r-- 1 lindi kurp 492332 Apr 17 15:26 xterm_238-1_armel.deb -rw-r--r-- 1 lindi kurp 492408 Apr 17 15:26 xterm_238-2_armel.deb -rw-r--r-- 1 lindi kurp 493862 Apr 17 15:26 xterm_239-1_armel.deb -rw-r--r-- 1 lindi kurp 495334 Apr 17 15:26 xterm_241-1_armel.deb -rw-r--r-- 1 lindi kurp 495426 Apr 17 15:26 xterm_242-1_armel.deb -rw-r--r-- 1 lindi kurp 498354 Apr 17 15:26 xterm_243-1_armel.deb -rw-r--r-- 1 lindi kurp 512634 Apr 17 15:26 xterm_244-1_armel.deb -rw-r--r-- 1 lindi kurp 506930 Apr 17 15:26 xterm_244-2_armel.deb -rw-r--r-- 1 lindi kurp 516226 Apr 17 15:26 xterm_246-1_armel.deb -rw-r--r-- 1 lindi kurp 512772 Apr 17 15:26 xterm_247-1_armel.deb -rw-r--r-- 1 lindi kurp 512928 Apr 17 15:26 xterm_248-1_armel.deb -rw-r--r-- 1 lindi kurp 514432 Apr 17 15:26 xterm_249-1_armel.deb -rw-r--r-- 1 lindi kurp 509882 Apr 17 15:26 xterm_250-1_armel.deb -rw-r--r-- 1 lindi kurp 512126 Apr 17 15:26 xterm_251-1_armel.deb -rw-r--r-- 1 lindi kurp 518056 Apr 17 15:26 xterm_253-1_armel.deb -rw-r--r-- 1 lindi kurp 521836 Apr 17 15:26 xterm_255-1_armel.deb -rw-r--r-- 1 lindi kurp 525752 Apr 17 15:26 xterm_256-1_armel.deb -rw-r--r-- 1 lindi kurp 527862 Apr 17 15:26 xterm_258-1_armel.deb -rw-r--r-- 1 lindi kurp 541532 Apr 17 15:26 xterm_259-1_armel.deb -rw-r--r-- 1 lindi kurp 542638 Apr 17 15:25 xterm_260-1_armel.deb -rw-r--r-- 1 lindi kurp 544224 Apr 17 15:25 xterm_261-1_armel.deb -rw-r--r-- 1 lindi kurp 548098 Apr 17 15:25 xterm_264-1_armel.deb -rw-r--r-- 1 lindi kurp 547978 Apr 17 15:25 xterm_266-1_armel.deb -rw-r--r-- 1 lindi kurp 558528 Apr 17 15:25 xterm_268-1_armel.deb -rw-r--r-- 1 lindi kurp 566382 Apr 17 15:25 xterm_269-1_armel.deb Specific version of a binary package for all architectures ========================================================== $ debsnap --binary xterm 256-1 $ ls -l binary-xterm/ total 9016 -rw-r--r-- 1 lindi kurp 565478 Apr 17 15:28 xterm_256-1_alpha.deb -rw-r--r-- 1 lindi kurp 532374 Apr 17 15:28 xterm_256-1_amd64.deb -rw-r--r-- 1 lindi kurp 525752 Apr 17 15:28 xterm_256-1_armel.deb -rw-r--r-- 1 lindi kurp 506646 Apr 17 15:28 xterm_256-1_avr32.deb -rw-r--r-- 1 lindi kurp 543952 Apr 17 15:28 xterm_256-1_hppa.deb -rw-r--r-- 1 lindi kurp 512656 Apr 17 15:28 xterm_256-1_hurd-i386.deb -rw-r--r-- 1 lindi kurp 512954 Apr 17 15:28 xterm_256-1_i386.deb -rw-r--r-- 1 lindi kurp 644642 Apr 17 15:28 xterm_256-1_ia64.deb -rw-r--r-- 1 lindi kurp 532590 Apr 17 15:28 xterm_256-1_kfreebsd-amd64.deb -rw-r--r-- 1 lindi kurp 512840 Apr 17 15:28 xterm_256-1_kfreebsd-i386.deb -rw-r--r-- 1 lindi kurp 537378 Apr 17 15:28 xterm_256-1_mips.deb -rw-r--r-- 1 lindi kurp 534294 Apr 17 15:28 xterm_256-1_mipsel.deb -rw-r--r-- 1 lindi kurp 523994 Apr 17 15:28 xterm_256-1_powerpc.deb -rw-r--r-- 1 lindi kurp 540010 Apr 17 15:28 xterm_256-1_s390.deb -rw-r--r-- 1 lindi kurp 535924 Apr 17 15:28 xterm_256-1_sh4.deb -rw-r--r-- 1 lindi kurp 528400 Apr 17 15:28 xterm_256-1_sparc.deb -rw-r--r-- 1 lindi kurp 535114 Apr 17 15:28 xterm_256-1_sparc64.deb All versionf of a binary package for all architectures ====================================================== $ debsnap --binary xterm $ ls -l binary-xterm/ <output omited since it is so long> -Timo