From 5116214343ecce70a3cb7037f223313314a0a614 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 1 Jul 2013 21:02:36 +0200 Subject: Add support for uncompressed NARs in binary caches Issue NixOS/hydra#102. --- scripts/download-from-binary-cache.pl.in | 7 ++++--- scripts/download-using-manifests.pl.in | 9 +++++---- scripts/nix-push.in | 4 +++- 3 files changed, 12 insertions(+), 8 deletions(-) (limited to 'scripts') diff --git a/scripts/download-from-binary-cache.pl.in b/scripts/download-from-binary-cache.pl.in index abd1f7b712c4..ab72e83e8f35 100644 --- a/scripts/download-from-binary-cache.pl.in +++ b/scripts/download-from-binary-cache.pl.in @@ -513,8 +513,9 @@ sub downloadBinary { next unless defined $info; my $decompressor; - if ($info->{compression} eq "bzip2") { $decompressor = "$Nix::Config::bzip2 -d"; } - elsif ($info->{compression} eq "xz") { $decompressor = "$Nix::Config::xz -d"; } + if ($info->{compression} eq "bzip2") { $decompressor = "| $Nix::Config::bzip2 -d"; } + elsif ($info->{compression} eq "xz") { $decompressor = "| $Nix::Config::xz -d"; } + elsif ($info->{compression} eq "none") { $decompressor = ""; } else { print STDERR "unknown compression method ‘$info->{compression}’\n"; next; @@ -522,7 +523,7 @@ sub downloadBinary { my $url = "$cache->{url}/$info->{url}"; # FIXME: handle non-relative URLs print STDERR "\n*** Downloading ‘$url’ to ‘$storePath’...\n"; checkURL $url; - if (system("$Nix::Config::curl --fail --location --insecure '$url' | $decompressor | $Nix::Config::binDir/nix-store --restore $destPath") != 0) { + if (system("$Nix::Config::curl --fail --location --insecure '$url' $decompressor | $Nix::Config::binDir/nix-store --restore $destPath") != 0) { warn "download of `$url' failed" . ($! ? ": $!" : "") . "\n"; next; } diff --git a/scripts/download-using-manifests.pl.in b/scripts/download-using-manifests.pl.in index 0471a9e1fac4..9d4b89bac9a2 100755 --- a/scripts/download-using-manifests.pl.in +++ b/scripts/download-using-manifests.pl.in @@ -344,17 +344,18 @@ while (scalar @path > 0) { checkURL $narFile->{url}; my $decompressor = - $narFile->{compressionType} eq "bzip2" ? "$Nix::Config::bzip2 -d" : - $narFile->{compressionType} eq "xz" ? "$Nix::Config::xz -d" : + $narFile->{compressionType} eq "bzip2" ? "| $Nix::Config::bzip2 -d" : + $narFile->{compressionType} eq "xz" ? "| $Nix::Config::xz -d" : + $narFile->{compressionType} eq "none" ? "" : die "unknown compression type `$narFile->{compressionType}'"; if ($curStep < $maxStep) { # The archive will be used a base to a patch. - system("$curl '$narFile->{url}' | $decompressor > $tmpNar") == 0 + system("$curl '$narFile->{url}' $decompressor > $tmpNar") == 0 or die "cannot download and unpack `$narFile->{url}' to `$v'\n"; } else { # Unpack the archive to the target path. - system("$curl '$narFile->{url}' | $decompressor | $Nix::Config::binDir/nix-store --restore '$destPath'") == 0 + system("$curl '$narFile->{url}' $decompressor | $Nix::Config::binDir/nix-store --restore '$destPath'") == 0 or die "cannot download and unpack `$narFile->{url}' to `$v'\n"; } diff --git a/scripts/nix-push.in b/scripts/nix-push.in index 7a6670f67bd3..2c392c4155d7 100755 --- a/scripts/nix-push.in +++ b/scripts/nix-push.in @@ -34,6 +34,8 @@ for (my $n = 0; $n < scalar @ARGV; $n++) { exec "man nix-push" or die; } elsif ($arg eq "--bzip2") { $compressionType = "bzip2"; + } elsif ($arg eq "--none") { + $compressionType = "none"; } elsif ($arg eq "--force") { $force = 1; } elsif ($arg eq "--dest") { @@ -202,7 +204,7 @@ for (my $n = 0; $n < scalar @storePaths2; $n++) { $compressedHash =~ /^[0-9a-z]+$/ or die "invalid hash"; close HASH; - my $narName = "$compressedHash.nar." . ($compressionType eq "xz" ? "xz" : "bz2"); + my $narName = "$compressedHash.nar" . ($compressionType eq "xz" ? ".xz" : $compressionType eq "bzip2" ? ".bz2" : ""); my $narFile = "$narDir/$narName"; (-f $narFile) or die "NAR file for $storePath not found"; -- cgit 1.4.1