tests.haskell.ghcWithPackages: init

`ghcWithPackages` broke in #411741, partially because we don't have
tests for it. This adds some tests to make sure it keeps working in the
future. For now these tests will fail until #415436 is fixed.

This is split off of #415434.

Adds a regression test for https://github.com/NixOS/nixpkgs/pull/224542
This commit is contained in:
Rebecca Turner 2025-06-10 10:26:41 -07:00
parent 41a64ff35a
commit cf62cc7f1f
No known key found for this signature in database
2 changed files with 51 additions and 2 deletions

View File

@ -1,10 +1,11 @@
{ lib, callPackage }:
lib.recurseIntoAttrs {
shellFor = callPackage ./shellFor { };
cabalSdist = callPackage ./cabalSdist { };
documentationTarball = callPackage ./documentationTarball { };
setBuildTarget = callPackage ./setBuildTarget { };
ghcWithPackages = callPackage ./ghcWithPackages { };
incremental = callPackage ./incremental { };
setBuildTarget = callPackage ./setBuildTarget { };
shellFor = callPackage ./shellFor { };
upstreamStackHpackVersion = callPackage ./upstreamStackHpackVersion { };
}

View File

@ -0,0 +1,48 @@
{
lib,
runCommand,
haskellPackages,
}:
lib.recurseIntoAttrs {
# This is special-cased to return just `ghc`.
trivial = haskellPackages.ghcWithPackages (hsPkgs: [ ]);
# Here we actually build a trivial package.
hello = haskellPackages.ghcWithPackages (hsPkgs: [
hsPkgs.hello
]);
# Here we build a database with multiple packages.
multiple = haskellPackages.ghcWithPackages (hsPkgs: [
hsPkgs.hspec
hsPkgs.unordered-containers
]);
# See: https://github.com/NixOS/nixpkgs/pull/224542
regression-224542 =
runCommand "regression-224542"
{
buildInputs = [
(haskellPackages.ghcWithPackages (hsPkgs: [
hsPkgs.hspec
]))
];
}
''
ghc --interactive \
-Werror=unrecognised-warning-flags \
-Werror=missed-extra-shared-lib \
2>&1 \
| tee ghc-output.txt
# If GHC failed to find a shared library, linking dylibs in
# `ghcWithPackages` didn't work correctly.
if grep --quiet "error: .*-Wmissed-extra-shared-lib" ghc-output.txt \
&& grep --quiet "no such file" ghc-output.txt; then
exit 1
fi
touch $out
'';
}