From c5e934dcc9f3c0e75cd14fd7dbab6048abf907d1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 9 Aug 2007 23:52:53 +0000 Subject: [PATCH] * nix-pull: using nix-prefetch-url (so that we get caching for free), and store the manifests in the Nix store. (So now /nix/var/nix/manifests/ just contains symlinks to the store and is searched for GC roots.) --- Makefile.am | 4 ++-- scripts/nix-pull.in | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index 911f30801..5454b55a9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -35,11 +35,11 @@ init-state: $(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/nix/temproots $(INSTALL) $(INIT_FLAGS) $(GROUP_WRITABLE) -d $(DESTDIR)$(localstatedir)/nix/gcroots/tmp $(INSTALL) $(INIT_FLAGS) $(GROUP_WRITABLE) -d $(DESTDIR)$(localstatedir)/nix/gcroots/channels - rm -f $(DESTDIR)$(localstatedir)/nix/gcroots/profiles - ln -s $(localstatedir)/nix/profiles $(DESTDIR)$(localstatedir)/nix/gcroots/profiles + ln -sfn $(localstatedir)/nix/profiles $(DESTDIR)$(localstatedir)/nix/gcroots/profiles $(INSTALL) $(INIT_FLAGS) -d $(DESTDIR)$(localstatedir)/nix/userpool $(INSTALL) $(INIT_FLAGS) -m 1777 -d $(DESTDIR)$(prefix)/store $(INSTALL) $(INIT_FLAGS) $(GROUP_WRITABLE) -d $(DESTDIR)$(localstatedir)/nix/manifests + ln -sfn $(localstatedir)/nix/manifests $(DESTDIR)$(localstatedir)/nix/gcroots/manifests # $(bindir)/nix-store --init else diff --git a/scripts/nix-pull.in b/scripts/nix-pull.in index 94ac74425..1a5338af2 100644 --- a/scripts/nix-pull.in +++ b/scripts/nix-pull.in @@ -7,7 +7,7 @@ use readmanifest; my $tmpDir = tempdir("nix-pull.XXXXXX", CLEANUP => 1, TMPDIR => 1) or die "cannot create a temporary directory"; -my $manifest = "$tmpDir/manifest"; +#my $manifest = "$tmpDir/manifest"; my $binDir = $ENV{"NIX_BIN_DIR"}; $binDir = "@bindir@" unless defined $binDir; @@ -37,12 +37,13 @@ sub processURL { my $url = shift; $url =~ s/\/$//; - print "obtaining list of Nix archives at $url...\n"; - - system("@curl@ --fail -# --show-error --location --max-redirs 20 " . - "'$url' > '$manifest'") == 0 - or die "curl failed: $?"; + print "obtaining list of Nix archives at `$url'...\n"; + $ENV{"PRINT_PATH"} = 1; + $ENV{"QUIET"} = 1; + my ($dummy, $manifest) = `@bindir@/nix-prefetch-url '$url'`; + chomp $manifest; + if (readManifest($manifest, \%narFiles, \%localPaths, \%patches) < 3) { die "manifest `$url' is too old (i.e., for Nix <= 0.7)\n"; } @@ -67,8 +68,8 @@ sub processURL { my $finalPath = "$stateDir/manifests/$baseName-$hash.nixmanifest"; - system ("@coreutils@/mv", "-f", "$manifest", "$finalPath") == 0 - or die "cannot move `$manifest' to `$finalPath"; + system ("@coreutils@/ln", "-sfn", "$manifest", "$finalPath") == 0 + or die "cannot link `$finalPath to `$manifest'"; } while (@ARGV) {