From f8d91f20e6c88510282263715a1b87c99afad5a1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 26 May 2003 09:44:18 +0000 Subject: * Nix can now fetch prebuilts (and other files) from the network, iff a mapping from the hash to a url has been registered through `nix regurl'. * Bug fix in nix: don't pollute stdout when running tar, it made nix-switch barf. * Bug fix in nix-push-prebuilts: don't create a subdirectory on the target when rsync'ing. --- scripts/Makefile.am | 2 +- scripts/nix-pull-prebuilts | 16 ++++++++++++++-- scripts/nix-push-prebuilts | 10 ++++++---- scripts/nix-switch | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) (limited to 'scripts') diff --git a/scripts/Makefile.am b/scripts/Makefile.am index f1d008f1e..cf70f1574 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -1,4 +1,4 @@ -bin_SCRIPTS = nix-generate-regscript nix-switch nix-collect-garbage \ +bin_SCRIPTS = nix-switch nix-collect-garbage \ nix-pull-prebuilts nix-push-prebuilts install-exec-local: diff --git a/scripts/nix-pull-prebuilts b/scripts/nix-pull-prebuilts index 91bbf8082..9cc668337 100755 --- a/scripts/nix-pull-prebuilts +++ b/scripts/nix-pull-prebuilts @@ -9,13 +9,25 @@ my $conffile = "$etcdir/prebuilts.conf"; sub register { my $fn = shift; + my $url = shift; return unless $fn =~ /([^\/]*)-([0-9a-z]{32})-([0-9a-z]{32})\.tar\.bz2/; my $id = $1; my $pkghash = $2; my $prebuilthash = $3; + print "$pkghash => $prebuilthash ($id)\n"; + system "nix regprebuilt $pkghash $prebuilthash"; if ($?) { die "`nix regprebuilt' failed"; } + + if ($url =~ /^\//) { + system "nix regfile $url"; + if ($?) { die "`nix regfile' failed"; } + } else { + system "nix regurl $prebuilthash $url"; + if ($?) { die "`nix regurl' failed"; } + } + print KNOWNS "$pkghash\n"; } @@ -35,7 +47,7 @@ while () { # It's a local path. foreach my $fn (glob "$url/*") { - register $fn; + register($fn, $fn); } } else { @@ -54,7 +66,7 @@ while () { my $fn = $1; next if $fn =~ /\.\./; next if $fn =~ /\//; - register $fn; + register($fn, "$url/$fn"); } close INDEX; diff --git a/scripts/nix-push-prebuilts b/scripts/nix-push-prebuilts index 2e3029b16..952897879 100755 --- a/scripts/nix-push-prebuilts +++ b/scripts/nix-push-prebuilts @@ -17,7 +17,6 @@ close KNOWNS; # For each installed package, check whether a prebuilt is known. open PKGS, "nix listinst|"; -open KNOWNS, ">>$knowns"; while () { chomp; @@ -28,13 +27,16 @@ while () { print "exporting $pkghash...\n"; system "nix export '$exportdir' $pkghash"; if ($?) { die "`nix export' failed"; } - print KNOWNS "$pkghash\n"; } } -close KNOWNS; close PKGS; # Push the prebuilts to the server. !!! FIXME -system "rsync -av -e ssh '$exportdir' losser:/home/eelco/public_html/nix-prebuilts/"; +system "rsync -av -e ssh '$exportdir'/ losser:/home/eelco/public_html/nix-prebuilts/"; + +# Rerun `nix-pull-prebuilts' to rescan the prebuilt source locations. + +print "running nix-pull-prebuilts..."; +system "nix-pull-prebuilts"; diff --git a/scripts/nix-switch b/scripts/nix-switch index 570f7e9e9..d58a5f249 100755 --- a/scripts/nix-switch +++ b/scripts/nix-switch @@ -30,7 +30,7 @@ while (-e "$linkdir/$id-$nr") { $nr++; } my $link = "$linkdir/$id-$nr"; # Create a symlink from $link to $pkgdir. -symlink($pkgdir, $link) or die "cannot create $link"; +symlink($pkgdir, $link) or die "cannot create $link: $!"; # Also store the hash of $pkgdir. This is useful for garbage # collection and the like. -- cgit v1.2.3