about summary refs log tree commit diff
path: root/pkgs/build-support/vm/rpm/rpm-list-to-nix.pl
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support/vm/rpm/rpm-list-to-nix.pl')
-rwxr-xr-xpkgs/build-support/vm/rpm/rpm-list-to-nix.pl47
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";