diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2013-08-13 20:58:32 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2013-08-13 20:58:32 +0100 |
commit | 820e6dffcbc02d66950cf62424b263e953b9c714 (patch) | |
tree | 76ed4ae33521680013700fa407f0f6ea9485c27d | |
parent | 7969c5b08add442b930ac674ad8dc1607b2063c5 (diff) |
rmadison
-rw-r--r-- | TODO | 4 | ||||
-rwxr-xr-x | dgit | 26 |
2 files changed, 16 insertions, 14 deletions
@@ -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 @@ -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 .* - \<a\ href=\"([^"&]+([^"/]+\.dsc))\"\>\2\</a\> - }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 $!; |