Commit bdd23d10 authored by Linus Heckemann's avatar Linus Heckemann
Browse files

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.
parent 10d3ba75
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -21,14 +21,22 @@ stdenv.mkDerivation {

  nativeBuildInputs = [ coreutils jq ];

  empty = rootPaths == [];

  buildCommand =
    ''
      out=''${outputs[out]}

      mkdir $out

      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

    '';
}