forked from mirrors/nixpkgs
cc07ee1c77
to construct an image that better approximates the Linux distribution in question. svn path=/nixpkgs/trunk/; revision=11184
52 lines
1,015 B
Perl
Executable file
52 lines
1,015 B
Perl
Executable file
#! /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-z0-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";
|
|
if (length $hash == 32) {
|
|
print EXPR " (fetchurl {url=$url; md5=\"$hash\";})\n";
|
|
} else {
|
|
print EXPR " (fetchurl {url=$url; sha256=\"$hash\";})\n";
|
|
}
|
|
}
|
|
|
|
else {
|
|
die "invalid line"
|
|
}
|
|
}
|
|
|
|
print EXPR "]\n";
|
|
|
|
close LIST;
|
|
close NEW;
|
|
close EXPR;
|
|
|
|
rename "$list\.tmp", "$list" or die "cannot rename";
|