about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--configure.ac5
-rw-r--r--corepkgs/fetchurl/builder.sh.in8
-rw-r--r--corepkgs/nar/nar.sh.in11
-rw-r--r--corepkgs/nar/unnar.sh.in6
-rwxr-xr-xscripts/nix-collect-garbage.in2
-rw-r--r--scripts/nix-install-package.in6
-rw-r--r--scripts/nix-prefetch-url.in18
-rw-r--r--scripts/nix-pull.in6
-rw-r--r--scripts/nix-push.in14
-rw-r--r--scripts/readmanifest.pm.in2
-rw-r--r--substitute.mk5
11 files changed, 47 insertions, 36 deletions
diff --git a/configure.ac b/configure.ac
index f07dd6dd7b82..a2d05707e48a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -42,7 +42,10 @@ AC_LANG_PUSH(C++)
 AC_CHECK_HEADERS([locale])
 AC_LANG_POP(C++)
 
-AC_PATH_PROG(wget, wget)
+AC_PATH_PROG(curl, curl)
+AC_PATH_PROG(bzip2, bzip2)
+AC_PATH_PROG(bunzip2, bunzip2)
+AC_PATH_PROG(shell, sh)
 AC_PATH_PROG(xmllint, xmllint)
 AC_PATH_PROG(xsltproc, xsltproc)
 AC_PATH_PROG(flex, flex, false)
diff --git a/corepkgs/fetchurl/builder.sh.in b/corepkgs/fetchurl/builder.sh.in
index a6cc6993028a..4379b423dbae 100644
--- a/corepkgs/fetchurl/builder.sh.in
+++ b/corepkgs/fetchurl/builder.sh.in
@@ -1,15 +1,15 @@
-#! /bin/sh
+#! @shell@ -e
 
 export PATH=/bin:/usr/bin
 
-echo "downloading $url into $out..."
+echo "downloading $url into $out"
 
 prefetch=@prefix@/store/nix-prefetch-url-$md5
 if test -f "$prefetch"; then
     echo "using prefetched $prefetch";
-    mv $prefetch $out || exit 1
+    mv $prefetch $out
 else
-    @wget@ --passive-ftp "$url" -O "$out" || exit 1
+    @curl@ --fail --location --max-redirs 20 "$url" > "$out"
 fi
 
 actual=$(@bindir@/nix-hash --flat $out)
diff --git a/corepkgs/nar/nar.sh.in b/corepkgs/nar/nar.sh.in
index 8d3fdb51b283..9635d29f4f74 100644
--- a/corepkgs/nar/nar.sh.in
+++ b/corepkgs/nar/nar.sh.in
@@ -1,12 +1,13 @@
-#! /bin/sh
+#! @shell@ -e
 
+# !!! impure; fix this
 export PATH=/bin:/usr/bin
 
 echo "packing $path into $out..."
-mkdir $out || exit 1
-dst=$out/`basename $path`.nar.bz2
-@bindir@/nix-store --dump "$path" | bzip2 > $dst || exit 1
+mkdir $out
+dst=$out/$(basename $path).nar.bz2
+@bindir@/nix-store --dump "$path" | @bzip2@ > $dst
 
 md5=$(md5sum -b $dst | cut -c1-32)
 if test $? != 0; then exit 1; fi
-echo $md5 > $out/md5 || exit 1
+echo $md5 > $out/md5
diff --git a/corepkgs/nar/unnar.sh.in b/corepkgs/nar/unnar.sh.in
index b0b6f9d468f2..6fab350a1782 100644
--- a/corepkgs/nar/unnar.sh.in
+++ b/corepkgs/nar/unnar.sh.in
@@ -1,6 +1,4 @@
-#! /bin/sh
-
-export PATH=/bin:/usr/bin
+#! @shell@ -e
 
 echo "unpacking $narFile to $out..."
-bunzip2 < $narFile | @bindir@/nix-store --restore "$out" || exit 1
+@bunzip2@ < $narFile | @bindir@/nix-store --restore "$out"
diff --git a/scripts/nix-collect-garbage.in b/scripts/nix-collect-garbage.in
index c701ad482f00..20c6731a14b5 100755
--- a/scripts/nix-collect-garbage.in
+++ b/scripts/nix-collect-garbage.in
@@ -34,7 +34,7 @@ foreach my $link (@links) {
 
 my $extraarg = "";
 if ($keepsuccessors) { $extraarg = "--include-successors"; };
-my $pid = open2(\*READ, \*WRITE, "nix-store --query --requisites $extraarg @roots") 
+my $pid = open2(\*READ, \*WRITE, "@bindir@/nix-store --query --requisites $extraarg @roots") 
     or die "determining live paths";
 close WRITE;
 while (<READ>) {
diff --git a/scripts/nix-install-package.in b/scripts/nix-install-package.in
index 73afead7d825..0fcfd4e8f770 100644
--- a/scripts/nix-install-package.in
+++ b/scripts/nix-install-package.in
@@ -17,7 +17,7 @@ system "bunzip2 < $pkgfile | (cd $tmpdir && tar xf -)";
 die if $?;
 
 print "This package contains the following derivations:\n";
-system "nix-env -qasf $tmpdir/default.nix";
+system "@bindir@/nix-env -qasf $tmpdir/default.nix";
 die if $?;
 
 print "Do you wish to install these (Y/N)? ";
@@ -26,11 +26,11 @@ chomp $reply;
 exit if (!($reply eq "y"));
 
 print "Pulling caches...\n";
-system "nix-pull `cat $tmpdir/caches`";
+system "@bindir@/nix-pull `cat $tmpdir/caches`";
 die if $?;
 
 print "Installing package...\n";
-system "nix-env -if $tmpdir/default.nix '*'";
+system "@bindir@/nix-env -if $tmpdir/default.nix '*'";
 die if $?;
 
 print "Installation succeeded! Press Enter to continue.\n";
diff --git a/scripts/nix-prefetch-url.in b/scripts/nix-prefetch-url.in
index d921e922b589..df6a1c86a5a0 100644
--- a/scripts/nix-prefetch-url.in
+++ b/scripts/nix-prefetch-url.in
@@ -10,7 +10,7 @@ print "fetching $url...\n";
 
 my $out = "@storedir@/nix-prefetch-url-$$";
 
-system "@wget@ --passive-ftp '$url' -O '$out'";
+system "@curl@ --fail --location --max-redirs 20 \"$url\" > \"$out\"";
 $? == 0 or die "unable to fetch $url";
 
 my $hash=`@bindir@/nix-hash --flat $out`;
@@ -27,11 +27,12 @@ my $nixexpr =
     "(import @datadir@/nix/corepkgs/fetchurl) " .
     "{url = $url; md5 = \"$hash\"; system = \"@system@\";}";
 
-print "expr: $nixexpr\n";
+#print STDERR "expr: $nixexpr\n";
 
 # Instantiate a Nix expression.
-print STDERR "instantiating Nix expression...\n";
-my $pid = open2(\*READ, \*WRITE, "nix-instantiate -") or die "cannot run nix-instantiate";
+#print STDERR "instantiating Nix expression...\n";
+my $pid = open2(\*READ, \*WRITE, "@bindir@/nix-instantiate -")
+    or die "cannot run nix-instantiate";
 
 print WRITE $nixexpr;
 close WRITE;
@@ -43,8 +44,13 @@ waitpid $pid, 0;
 $? == 0 or die "nix-instantiate failed";
 
 # Run Nix.
-print STDERR "realising store expression $drvpath...\n";
-system "nix-store --realise $drvpath > /dev/null";
+#print STDERR "realising store expression $drvpath...\n";
+system "@bindir@/nix-store --realise $drvpath > /dev/null";
 $? == 0 or die "realisation failed";
 
+my $path = `@bindir@/nix-store -qn $drvpath`;
+$? == 0 or die "query failed";
+
+print "path is $path";
+
 unlink $out2;
diff --git a/scripts/nix-pull.in b/scripts/nix-pull.in
index acb4c0732623..6472c7c64776 100644
--- a/scripts/nix-pull.in
+++ b/scripts/nix-pull.in
@@ -65,7 +65,7 @@ $fullexpr .= "]";
 
 # Instantiate store expressions from the Nix expressions we created above.
 print STDERR "instantiating store expressions...\n";
-my $pid = open2(\*READ, \*WRITE, "nix-instantiate -") or die "cannot run nix-instantiate";
+my $pid = open2(\*READ, \*WRITE, "@bindir@/nix-instantiate -") or die "cannot run nix-instantiate";
 
 print WRITE $fullexpr;
 close WRITE;
@@ -91,7 +91,7 @@ while (scalar @subs > 0) {
     if ($n > 256) { $n = 256 };
     my @subs2 = @subs[0..$n - 1];
     @subs = @subs[$n..scalar @subs - 1];
-    system "nix-store --substitute @subs2";
+    system "@bindir@/nix-store --substitute @subs2";
     if ($?) { die "`nix-store --substitute' failed"; }
 }
 
@@ -104,6 +104,6 @@ while (scalar @sucs > 0) {
     if ($n > 256) { $n = 256 };
     my @sucs2 = @sucs[0..$n - 1];
     @sucs = @sucs[$n..scalar @sucs - 1];
-    system "nix-store --successor @sucs2";
+    system "@bindir@/nix-store --successor @sucs2";
     if ($?) { die "`nix-store --successor' failed"; }
 }
diff --git a/scripts/nix-push.in b/scripts/nix-push.in
index 167d787b759c..57d89d13ccad 100644
--- a/scripts/nix-push.in
+++ b/scripts/nix-push.in
@@ -12,7 +12,7 @@ my $manifest = "$tmpdir/MANIFEST";
 
 END { unlink $manifest; unlink $nixfile; rmdir $tmpdir; }
 
-my $curl = "curl --fail --silent";
+my $curl = "@curl@ --fail --silent";
 
 
 # Parse the command line.
@@ -30,10 +30,10 @@ foreach my $storeexpr (@ARGV) {
 
     # Get all paths referenced by the normalisation of the given 
     # Nix expression.
-    system "nix-store --realise $storeexpr > /dev/null";
+    system "@bindir@/nix-store --realise $storeexpr > /dev/null";
     die if ($?);
 
-    open PATHS, "nix-store --query --requisites --include-successors $storeexpr 2> /dev/null |" or die;
+    open PATHS, "@bindir@/nix-store --query --requisites --include-successors $storeexpr 2> /dev/null |" or die;
     while (<PATHS>) {
         chomp;
         die "bad: $_" unless /^\//;
@@ -69,7 +69,7 @@ close NIX;
 # Instantiate store expressions from the Nix expression.
 my @storeexprs;
 print STDERR "instantiating store expressions...\n";
-open STOREEXPRS, "nix-instantiate $nixfile |" or die "cannot run nix-instantiate";
+open STOREEXPRS, "@bindir@/nix-instantiate $nixfile |" or die "cannot run nix-instantiate";
 while (<STOREEXPRS>) {
     chomp;
     die unless /^\//;
@@ -90,10 +90,10 @@ while (scalar @tmp > 0) {
     my @tmp2 = @tmp[0..$n - 1];
     @tmp = @tmp[$n..scalar @tmp - 1];
 
-    system "nix-store --realise -B @tmp2 > /dev/null";
+    system "@bindir@/nix-store --realise -B @tmp2 > /dev/null";
     if ($?) { die "`nix-store --realise' failed"; }
 
-    open NARPATHS, "nix-store --query --list @tmp2 |" or die "cannot run nix";
+    open NARPATHS, "@bindir@/nix-store --query --list @tmp2 |" or die "cannot run nix";
     while (<NARPATHS>) {
         chomp;
         die unless (/^\//);
@@ -135,7 +135,7 @@ for (my $n = 0; $n < scalar @storepaths; $n++) {
     print MANIFEST "  MD5: $hash\n";
 
     if ($storepath =~ /\.store$/) {
-        open PREDS, "nix-store --query --predecessors $storepath |" or die "cannot run nix";
+        open PREDS, "@bindir@/nix-store --query --predecessors $storepath |" or die "cannot run nix";
         while (<PREDS>) {
             chomp;
             die unless (/^\//);
diff --git a/scripts/readmanifest.pm.in b/scripts/readmanifest.pm.in
index 08227a5d7ea5..bca6c4c8acc5 100644
--- a/scripts/readmanifest.pm.in
+++ b/scripts/readmanifest.pm.in
@@ -10,7 +10,7 @@ sub processURL {
     $url =~ s/\/$//;
     print "obtaining list of Nix archives at $url...\n";
 
-    system("curl --fail --silent --show-error " .
+    system("@curl@ --fail --silent --show-error --location --max-redirs 20 " .
            "'$url' > '$manifest' 2> /dev/null") == 0
            or die "curl failed: $?";
         
diff --git a/substitute.mk b/substitute.mk
index 73a93963f192..848029a024cd 100644
--- a/substitute.mk
+++ b/substitute.mk
@@ -8,7 +8,10 @@
 	 -e "s^@libexecdir\@^$(libexecdir)^g" \
 	 -e "s^@storedir\@^$(storedir)^g" \
 	 -e "s^@system\@^$(system)^g" \
-	 -e "s^@wget\@^$(wget)^g" \
+	 -e "s^@shell\@^$(shell)^g" \
+	 -e "s^@curl\@^$(curl)^g" \
+	 -e "s^@bzip2\@^$(bzip2)^g" \
+	 -e "s^@bunzip2\@^$(bunzip2)^g" \
 	 -e "s^@perl\@^$(perl)^g" \
 	 -e "s^@version\@^$(VERSION)^g" \
 	 < $< > $@ || rm $@