tests.haskell.cabalSdist: Prevent rebuilds when Nix files change

The generated file sets its own directory as the source, including the
generated file itself, which causes rebuilds when that file is
reformatted. We can avoid this by overriding the source with a filtered
version and using that throughout the tests.

See https://github.com/NixOS/nixpkgs/pull/320572 for more context

Changed files
+15 -4
pkgs
test
haskell
cabalSdist
+15 -4
pkgs/test/haskell/cabalSdist/default.nix
···
-
{ lib, haskellPackages, runCommand }:
+
{ lib, haskell, haskellPackages, runCommand }:
let
-
localRaw = haskellPackages.callPackage ./local/generated.nix {};
+
src = lib.fileset.toSource {
+
root = ./local;
+
fileset = lib.fileset.unions [
+
./local/app
+
./local/CHANGELOG.md
+
./local/local.cabal
+
];
+
};
+
# This prevents the source from depending on the formatting of the ./local/generated.nix file
+
localRaw = haskell.lib.compose.overrideSrc {
+
inherit src;
+
} (haskellPackages.callPackage ./local/generated.nix {});
in
lib.recurseIntoAttrs rec {
···
assumptionLocalHasDirectReference = runCommand "localHasDirectReference" {
drvPath = builtins.unsafeDiscardOutputDependency localRaw.drvPath;
} ''
-
grep ${./local} $drvPath >/dev/null
+
grep ${src} $drvPath >/dev/null
touch $out
'';
localHasNoDirectReference = runCommand "localHasNoDirectReference" {
drvPath = builtins.unsafeDiscardOutputDependency localFromCabalSdist.drvPath;
} ''
-
grep -v ${./local} $drvPath >/dev/null
+
grep -v ${src} $drvPath >/dev/null
touch $out
'';
}