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 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 in
lib.recurseIntoAttrs rec { lib.recurseIntoAttrs rec {
@ -20,14 +31,14 @@ lib.recurseIntoAttrs rec {
assumptionLocalHasDirectReference = runCommand "localHasDirectReference" { assumptionLocalHasDirectReference = runCommand "localHasDirectReference" {
drvPath = builtins.unsafeDiscardOutputDependency localRaw.drvPath; drvPath = builtins.unsafeDiscardOutputDependency localRaw.drvPath;
} '' } ''
grep ${./local} $drvPath >/dev/null grep ${src} $drvPath >/dev/null
touch $out touch $out
''; '';
localHasNoDirectReference = runCommand "localHasNoDirectReference" { localHasNoDirectReference = runCommand "localHasNoDirectReference" {
drvPath = builtins.unsafeDiscardOutputDependency localFromCabalSdist.drvPath; drvPath = builtins.unsafeDiscardOutputDependency localFromCabalSdist.drvPath;
} '' } ''
grep -v ${./local} $drvPath >/dev/null grep -v ${src} $drvPath >/dev/null
touch $out touch $out
''; '';
} }