From cb2f8a87d5389c7347b27937cbcde510696e36f7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 24 Jan 2022 19:55:22 +0100 Subject: [PATCH] Check that nix-env output doesn't depend on the Nixpkgs location --- .../nixpkgs-basic-release-checks.nix | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/pkgs/top-level/nixpkgs-basic-release-checks.nix b/pkgs/top-level/nixpkgs-basic-release-checks.nix index fd302dfa5a1..441f9b33823 100644 --- a/pkgs/top-level/nixpkgs-basic-release-checks.nix +++ b/pkgs/top-level/nixpkgs-basic-release-checks.nix @@ -19,15 +19,8 @@ pkgs.runCommand "nixpkgs-release-checks" { src = nixpkgs; buildInputs = [nix]; } exit 1 fi - # Make sure that derivation paths do not depend on the Nixpkgs path. - mkdir $TMPDIR/foo - ln -s $(readlink -f $src) $TMPDIR/foo/bar - p1=$(nix-instantiate $src --dry-run -A firefox --show-trace) - p2=$(nix-instantiate $TMPDIR/foo/bar --dry-run -A firefox --show-trace) - if [ "$p1" != "$p2" ]; then - echo "Nixpkgs evaluation depends on Nixpkgs path ($p1 vs $p2)!" - exit 1 - fi + src2=$TMPDIR/foo + cp -rd $src $src2 # Check that all-packages.nix evaluates on a number of platforms without any warnings. for platform in ${pkgs.lib.concatStringsSep " " supportedSystems}; do @@ -42,7 +35,25 @@ pkgs.runCommand "nixpkgs-release-checks" { src = nixpkgs; buildInputs = [nix]; } --arg config '{ allowAliases = false; }' \ --option experimental-features 'no-url-literals' \ -qa --drv-path --system-filter \* --system \ - "''${opts[@]}" 2>&1 >/dev/null | tee eval-warnings.log + "''${opts[@]}" 2> eval-warnings.log > packages1 + + s1=$(sha1sum packages1 | cut -c1-40) + echo $s1 + + nix-env -f $src2 \ + --show-trace --argstr system "$platform" \ + --arg config '{ allowAliases = false; }' \ + --option experimental-features 'no-url-literals' \ + -qa --drv-path --system-filter \* --system \ + "''${opts[@]}" > packages2 + + s2=$(sha1sum packages2 | cut -c1-40) + + if [[ $s1 != $s2 ]]; then + echo "Nixpkgs evaluation depends on Nixpkgs path" + diff packages1 packages2 + exit 1 + fi # Catch any trace calls not caught by NIX_ABORT_ON_WARN (lib.warn) if [ -s eval-warnings.log ]; then