diff --git a/perl/lib/Nix/Store.xs b/perl/lib/Nix/Store.xs index 8ca72b62a3..2ebff55756 100644 --- a/perl/lib/Nix/Store.xs +++ b/perl/lib/Nix/Store.xs @@ -86,7 +86,7 @@ SV * queryDeriver(char * path) } -SV * queryPathInfo(char * path) +SV * queryPathInfo(char * path, int base32) PPCODE: try { doInit(); @@ -95,7 +95,7 @@ SV * queryPathInfo(char * path) XPUSHs(&PL_sv_undef); else XPUSHs(sv_2mortal(newSVpv(info.deriver.c_str(), 0))); - string s = "sha256:" + printHash(info.hash); + string s = "sha256:" + (base32 ? printHash32(info.hash) : printHash(info.hash)); XPUSHs(sv_2mortal(newSVpv(s.c_str(), 0))); mXPUSHi(info.registrationTime); mXPUSHi(info.narSize); diff --git a/scripts/nix-push.in b/scripts/nix-push.in index 51106657bb..35ad43d283 100755 --- a/scripts/nix-push.in +++ b/scripts/nix-push.in @@ -146,7 +146,7 @@ for (my $n = 0; $n < scalar @storePaths; $n++) { my $baseName = basename $storePath; # Get info about the store path. - my ($deriver, $narHash, $time, $narSize, $refs) = queryPathInfo($storePath); + my ($deriver, $narHash, $time, $narSize, $refs) = queryPathInfo($storePath, 1); # In some exceptional cases (such as VM tests that use the Nix # store of the host), the database doesn't contain the hash. So @@ -155,7 +155,7 @@ for (my $n = 0; $n < scalar @storePaths; $n++) { my $nar = "$tmpDir/nar"; system("$Nix::Config::binDir/nix-store --dump $storePath > $nar") == 0 or die "cannot dump $storePath\n"; - $narHash = `$Nix::Config::binDir/nix-hash --type sha256 --flat $nar`; + $narHash = `$Nix::Config::binDir/nix-hash --type sha256 --base32 --flat $nar`; die "cannot hash `$nar'" if $? != 0; chomp $narHash; $narHash = "sha256:$narHash";