From 820e6dffcbc02d66950cf62424b263e953b9c714 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 13 Aug 2013 20:58:32 +0100 Subject: [PATCH] rmadison --- TODO | 4 +++- dgit | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index 8c617a2f..53298b5f 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,6 @@ -Do not screenscrape p.d.o use rmadison ? +Cope with outside-main things (rmadison does not print pool path) + +Cope with non-Debian archives Make it possible to do dgit clone / fetch anonymously diff --git a/dgit b/dgit index fef71e54..7b5803aa 100755 --- a/dgit +++ b/dgit @@ -10,8 +10,7 @@ use POSIX; open DEBUG, ">&STDERR" or die $!; -our $pdo = 'http://packages.debian.org/'; -#our $mirror = 'http://mirror.relativity.greenend.org.uk/mirror/debian-ftp/'; +our $mirror = 'http://mirror.relativity.greenend.org.uk/mirror/debian-ftp/'; our $suite = 'sid'; our $package; @@ -65,17 +64,18 @@ sub parsecontrol { } sub get_archive_dsc () { - my $pdourl = "$pdo/source/$suite/$package"; - my $pdodata = url_get($pdourl); - # FFS. The Debian archive has no sane way to find what - # version is currently the tip in any branch (aka, what - # is the current version in any suite). - $pdodata =~ m{ - Download\ \Q$package\E .* - \\2\ - }msx - or die "screenscraping of $pdourl failed :-(\n"; - $dscurl = $1; + my $rmad = cmdoutput qw(rmadison -asource),"-s$suite",$package; + $rmad =~ m/^ \s*( [^ \t|]+ )\s* \| + \s*( [^ \t|]+ )\s* \| + \s*( [^ \t|]+ )\s* \| + \s*( [^ \t|]+ )\s* /x or die "$rmad $?"; + $1 eq $package or die "$rmad $package ?"; + my $vsn = $2; + $3 eq $suite or die "$rmad $suite ?"; + $4 eq 'source' or die "$rmad ?"; + # fixme it does not show us the component ? + my $prefix = substr($package, 0, $package =~ m/^l/ ? 4 : 1); + $dscurl = "$mirror/pool/main/$prefix/$package/${package}_$vsn.dsc"; #print DEBUG Dumper($pdodata, $&, $dscurl); $dscdata = url_get($dscurl); my $dscfh = new IO::File \$dscdata, '<' or die $!; -- 2.30.2