diff options
Diffstat (limited to 'pkgs/build-support/vm/rpm/rpm-list-to-nix.pl')
-rwxr-xr-x | pkgs/build-support/vm/rpm/rpm-list-to-nix.pl | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/pkgs/build-support/vm/rpm/rpm-list-to-nix.pl b/pkgs/build-support/vm/rpm/rpm-list-to-nix.pl new file mode 100755 index 000000000000..c625cce2fd9e --- /dev/null +++ b/pkgs/build-support/vm/rpm/rpm-list-to-nix.pl @@ -0,0 +1,47 @@ +#! /usr/bin/perl -w + +use strict; + +my $list = shift; +my $expr = shift; + +open LIST, "<$list"; +open NEW, ">$list.tmp"; +open EXPR, ">$expr"; + +print EXPR "{fetchurl}: [\n"; + +my $baseURL; + +while (<LIST>) { + + if (/^\s*baseURL\s+(\S+)\s*$/) { + $baseURL = $1; + print NEW "baseURL $baseURL\n"; + } + + elsif (/^\s*(\S+)(\s+([a-f0-9]+))?\s*$/) { + my $pkgName = $1; + my $url = "$baseURL/$pkgName"; + my $hash = $3; + if (!defined $hash) { + $hash = `nix-prefetch-url '$url'`; + die "fetch of `$url' failed" if ($? != 0); + chomp $hash; + } + print NEW "$pkgName $hash\n"; + print EXPR " (fetchurl {url=$url; md5=\"$hash\";})\n"; + } + + else { + die "invalid line" + } +} + +print EXPR "]\n"; + +close LIST; +close NEW; +close EXPR; + +rename "$list\.tmp", "$list" or die "cannot rename"; |