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
This commit is contained in:
Silvan Mosberger 2024-07-12 20:41:18 +02:00 committed by Silvan Mosberger
parent 7cb66fd579
commit e6d45588ad

View File

@ -1,7 +1,18 @@
{ 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 {
@ -20,14 +31,14 @@ 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
'';
}