From 328f7cbe435d79d61f57129d9e3ee90404d6bfda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 7 Feb 2017 14:44:55 +0100 Subject: [PATCH] daemon: Define 'NIX_STORE' before invoking 'guix perform-download'. Reported by rohit yadav at . This fixes a regression whereby 'guix perform-download' would always see NIX_STORE as unset and thus use "/gnu/store", leading it to miscompute the hydra.gnu.org content-addressed URLs when the store file name is not "/gnu/store". * nix/libstore/builtins.cc (builtinDownload): Add 'setenv' call for 'NIX_STORE'. --- nix/libstore/builtins.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nix/libstore/builtins.cc b/nix/libstore/builtins.cc index 7ed75e5079..a5ebb47737 100644 --- a/nix/libstore/builtins.cc +++ b/nix/libstore/builtins.cc @@ -21,6 +21,7 @@ #include #include +#include namespace nix { @@ -41,6 +42,11 @@ static void builtinDownload(const Derivation &drv, "download", drvPath.c_str(), output.c_str(), NULL }; + /* Tell the script what the store file name is, so that + 'strip-store-file-name' (used for instance to determine the URL of + content-addressed mirrors) works correctly. */ + setenv("NIX_STORE", settings.nixStore.c_str(), 1); + /* XXX: Hack our way to use the 'download' script from 'LIBEXECDIR/guix' or just 'LIBEXECDIR', depending on whether we're running uninstalled or not. */