From e945b52a31ab339b253df40e35828582eff77e54 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 17 Feb 2011 13:26:33 +0000 Subject: [PATCH] * nix-push: handle the case where the hash is not set in the DB. --- scripts/nix-push.in | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scripts/nix-push.in b/scripts/nix-push.in index 1d8ba86a8d..fa83f92c8e 100644 --- a/scripts/nix-push.in +++ b/scripts/nix-push.in @@ -193,6 +193,16 @@ for (my $n = 0; $n < scalar @storePaths; $n++) { die "cannot query hash for `$storePath'" if $? != 0; chomp $narHash; + # In some exceptional cases (such as VM tests that use the Nix + # store of the host), the database doesn't contain the hash. So + # compute it. + if ($narHash eq "sha256:0000000000000000000000000000000000000000000000000000000000000000") { + $narHash = `$binDir/nix-hash --type sha256 '$storePath'`; + die "cannot hash `$storePath'" if $? != 0; + chomp $narHash; + $narHash = "sha256:$narHash"; + } + my $narSize = `$binDir/nix-store --query --size '$storePath'`; die "cannot query size for `$storePath'" if $? != 0; chomp $narSize;