summaryrefslogtreecommitdiff
path: root/createrepomddeps
diff options
context:
space:
mode:
authorYi Yang <yi.y.yang@intel.com>2010-04-02 14:57:59 +0800
committerLudwig Nussel <ludwig.nussel@suse.de>2010-04-08 15:35:44 +0200
commitfb8ac84452e88589cd3d73de76a0876cbcd4725a (patch)
tree8d8ab9716afe532b1a62430ca792a91438c1ed58 /createrepomddeps
parent2577636e4b7e09db9a174ab7bb22b379499c58f7 (diff)
downloadbuild-fb8ac84452e88589cd3d73de76a0876cbcd4725a.tar.gz
build-fb8ac84452e88589cd3d73de76a0876cbcd4725a.tar.bz2
build-fb8ac84452e88589cd3d73de76a0876cbcd4725a.zip
Support remote repos
Diffstat (limited to 'createrepomddeps')
-rwxr-xr-xcreaterepomddeps24
1 files changed, 24 insertions, 0 deletions
diff --git a/createrepomddeps b/createrepomddeps
index 61c604a..fb2f499 100755
--- a/createrepomddeps
+++ b/createrepomddeps
@@ -9,6 +9,11 @@ use XML::Parser;
use Data::Dumper;
use Getopt::Long;
use Build::Rpm;
+use Digest::MD5 qw(md5 md5_hex md5_base64);
+use File::Path qw(mkpath rmtree);
+use File::Basename;
+use LWP::UserAgent;
+use URI;
Getopt::Long::Configure("no_ignore_case");
my @parent = [];
@@ -342,6 +347,16 @@ sub printasbuildcachefile(@)
}
}
+sub getmetadata
+{
+ my $url = $_[0];
+ my $dir = $_[1];
+
+ my $dest = $dir . "repodata";
+ mkpath($dest);
+ system($INC[0].'/download', $dest, $url . "repodata/repomd.xml");
+}
+
### main
GetOptions (
@@ -378,6 +393,12 @@ for my $url (@ARGV) {
} else {
die "unsupported repo type: $type\n";
}
+ } elsif ($url =~ /^http:\/\/([^\/]*)\/?/) {
+ my $repoid = md5_hex($url);
+ my $cachedir = ($::ENV{'CACHE_DIR'} || '/var/cache/build');
+ $dir = "$cachedir/$repoid/";
+ getmetadata($url, $dir);
+ $baseurl = $url;
} else {
$dir = $url;
$dir .= '/' unless $dir =~ /\/$/;
@@ -395,6 +416,9 @@ for my $url (@ARGV) {
@cursor = ([undef, $primaryparser]);
my $u = $dir . $f->{'location'};
+ if ($url =~ /^http:\/\/([^\/]*)\/?/) {
+ system($INC[0].'/download', $dir . "repodata/", $baseurl . "repodata/" . basename($u));
+ }
$u = 'gzip -cd ' . $u . '|' if ($u =~ /\.gz$/); # XXX
my $fh;