From bdd23d10b25840d8336af1f7958d4cc7d1868098 Mon Sep 17 00:00:00 2001 From: Linus Heckemann Date: Sat, 4 Nov 2023 09:54:41 +0100 Subject: closureInfo: handle empty path set explicitly Arguably, this is a bug in Nix's structuredAttrs: without structuredAttrs, exportReferencesGraph with an empty path set would still result in information being provided. With structuredAttrs, no info is provided for an empty path set. Nevertheless, we need to be able to build even if Nix has the bug, so work around it by checking for an empty path set and handling it explicitly. --- pkgs/build-support/closure-info.nix | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'pkgs/build-support') diff --git a/pkgs/build-support/closure-info.nix b/pkgs/build-support/closure-info.nix index f6c31bd786b..f2aa4964d9a 100644 --- a/pkgs/build-support/closure-info.nix +++ b/pkgs/build-support/closure-info.nix @@ -21,14 +21,22 @@ stdenv.mkDerivation { nativeBuildInputs = [ coreutils jq ]; + empty = rootPaths == []; + buildCommand = '' out=''${outputs[out]} mkdir $out - jq -r ".closure | map(.narSize) | add" < "$NIX_ATTRS_JSON_FILE" > $out/total-nar-size - jq -r '.closure | map([.path, .narHash, .narSize, "", (.references | length)] + .references) | add | map("\(.)\n") | add' < "$NIX_ATTRS_JSON_FILE" | head -n -1 > $out/registration - jq -r '.closure[].path' < "$NIX_ATTRS_JSON_FILE" > $out/store-paths + if [[ -n "$empty" ]]; then + echo 0 > $out/total-nar-size + touch $out/registration $out/store-paths + else + jq -r ".closure | map(.narSize) | add" < "$NIX_ATTRS_JSON_FILE" > $out/total-nar-size + jq -r '.closure | map([.path, .narHash, .narSize, "", (.references | length)] + .references) | add | map("\(.)\n") | add' < "$NIX_ATTRS_JSON_FILE" | head -n -1 > $out/registration + jq -r '.closure[].path' < "$NIX_ATTRS_JSON_FILE" > $out/store-paths + fi + ''; } -- cgit 1.4.1