diff options
author | Yi Yang <yi.y.yang@intel.com> | 2010-04-02 14:57:59 +0800 |
---|---|---|
committer | Ludwig Nussel <ludwig.nussel@suse.de> | 2010-04-08 15:35:44 +0200 |
commit | fb8ac84452e88589cd3d73de76a0876cbcd4725a (patch) | |
tree | 8d8ab9716afe532b1a62430ca792a91438c1ed58 /createrepomddeps | |
parent | 2577636e4b7e09db9a174ab7bb22b379499c58f7 (diff) | |
download | build-fb8ac84452e88589cd3d73de76a0876cbcd4725a.tar.gz build-fb8ac84452e88589cd3d73de76a0876cbcd4725a.tar.bz2 build-fb8ac84452e88589cd3d73de76a0876cbcd4725a.zip |
Support remote repos
Diffstat (limited to 'createrepomddeps')
-rwxr-xr-x | createrepomddeps | 24 |
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; |