aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2007-08-09 23:52:53 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2007-08-09 23:52:53 +0000
commitc5e934dcc9f3c0e75cd14fd7dbab6048abf907d1 (patch)
treebfa034347383ad6308372da8be4aa3799fa06683
parentf881f7a017059fb501668aa85d41e873fe8f5285 (diff)
* 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.)
-rw-r--r--Makefile.am4
-rw-r--r--scripts/nix-pull.in17
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) {