about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/download-from-binary-cache.pl.in2
-rwxr-xr-xscripts/download-using-manifests.pl.in20
-rwxr-xr-xscripts/nix-push.in1
3 files changed, 15 insertions, 8 deletions
diff --git a/scripts/download-from-binary-cache.pl.in b/scripts/download-from-binary-cache.pl.in
index f49f246613a0..751623eebf2e 100644
--- a/scripts/download-from-binary-cache.pl.in
+++ b/scripts/download-from-binary-cache.pl.in
@@ -508,7 +508,7 @@ sub downloadBinary {
             next;
         }
         my $url = "$cache->{url}/$info->{url}"; # FIXME: handle non-relative URLs
-        print STDERR "\n*** Downloading ‘$url’ into ‘$storePath’...\n";
+        print STDERR "\n*** Downloading ‘$url’ to ‘$storePath’...\n";
         Nix::Utils::checkURL $url;
         if (system("$Nix::Config::curl --fail --location --insecure '$url' | $decompressor | $Nix::Config::binDir/nix-store --restore $storePath") != 0) {
             die "download of `$info->{url}' failed" . ($! ? ": $!" : "") . "\n" unless $? == 0;
diff --git a/scripts/download-using-manifests.pl.in b/scripts/download-using-manifests.pl.in
index 24f7c98e0cb9..8f66a292e361 100755
--- a/scripts/download-using-manifests.pl.in
+++ b/scripts/download-using-manifests.pl.in
@@ -325,7 +325,7 @@ while (scalar @path > 0) {
             # into the target path.
             print STDERR "  unpacking patched archive...\n";
             system("$Nix::Config::binDir/nix-store --restore $v < $tmpNar2") == 0
-                or die "cannot unpack $tmpNar2 into `$v'\n";
+                or die "cannot unpack $tmpNar2 to `$v'\n";
         }
 
         $finalNarHash = $patch->{narHash};
@@ -333,20 +333,26 @@ while (scalar @path > 0) {
 
     elsif ($edge->{type} eq "narfile") {
         my $narFile = $edge->{info};
-        print STDERR "downloading `$narFile->{url}' into `$v'\n";
+        print STDERR "downloading `$narFile->{url}' to `$v'\n";
 
         my $size = $narFile->{size} || -1;
         print LOGFILE "$$ narfile $narFile->{url} $size $v\n";
 
         Nix::Utils::checkURL $narFile->{url};
+
+        my $decompressor =
+            $narFile->{compressionType} eq "bzip2" ? "$Nix::Config::bzip2 -d" :
+            $narFile->{compressionType} eq "xz" ? "$Nix::Config::xz -d" :
+            die "unknown compression type `$narFile->{compressionType}'";
+
         if ($curStep < $maxStep) {
             # The archive will be used a base to a patch.
-            system("$curl '$narFile->{url}' | $Nix::Config::bzip2 -d > $tmpNar") == 0
-                or die "cannot download and unpack `$narFile->{url}' into `$v'\n";
+            system("$curl '$narFile->{url}' | $decompressor > $tmpNar") == 0
+                or die "cannot download and unpack `$narFile->{url}' to `$v'\n";
         } else {
-            # Unpack the archive into the target path.
-            system("$curl '$narFile->{url}' | $Nix::Config::bzip2 -d | $Nix::Config::binDir/nix-store --restore '$v'") == 0
-                or die "cannot download and unpack `$narFile->{url}' into `$v'\n";
+            # Unpack the archive to the target path.
+            system("$curl '$narFile->{url}' | $decompressor | $Nix::Config::binDir/nix-store --restore '$v'") == 0
+                or die "cannot download and unpack `$narFile->{url}' to `$v'\n";
         }
 
         $finalNarHash = $narFile->{narHash};
diff --git a/scripts/nix-push.in b/scripts/nix-push.in
index 1edd8e77314b..00d03c3c1f0c 100755
--- a/scripts/nix-push.in
+++ b/scripts/nix-push.in
@@ -227,6 +227,7 @@ for (my $n = 0; $n < scalar @storePaths; $n++) {
         { url => "$archivesURL/$narName"
         , hash => "sha256:$compressedHash"
         , size => $compressedSize
+        , compressionType => $compressionType
         , narHash => "$narHash"
         , narSize => $narSize
         , references => join(" ", @{$refs})