mueval,diagrams-builder: fix GHC libdir

Rather than hardcoding the path to GHC's libdir which may change, use
`ghc --print-libdir` in wrappers.

Another option would be to expose mkGhcLibdir from generic-builder.nix.

Also add a test for mueval.
This commit is contained in:
Naïm Favier 2024-04-04 10:48:34 +02:00
parent 5d1a8fcb66
commit 7eb7e71eb8
No known key found for this signature in database
GPG Key ID: 95AFCE8211908325
2 changed files with 18 additions and 7 deletions

View File

@ -1,4 +1,4 @@
{ stdenv, makeWrapper, haskellPackages, packages ? (pkgs: [])
{ lib, stdenv, makeWrapper, haskellPackages, packages ? (pkgs: [])
}:
let defaultPkgs = pkgs: [ pkgs.show
@ -8,7 +8,6 @@ let defaultPkgs = pkgs: [ pkgs.show
];
env = haskellPackages.ghcWithPackages
(pkgs: defaultPkgs pkgs ++ packages pkgs);
libDir = "${env}/lib/ghc-${env.version}";
in stdenv.mkDerivation {
name = "mueval-env";
@ -17,11 +16,23 @@ in stdenv.mkDerivation {
nativeBuildInputs = [ makeWrapper ];
buildCommand = ''
dontUnpack = true;
buildPhase = ''
runHook preBuild
mkdir -p $out/bin
makeWrapper $mueval/bin/mueval $out/bin/mueval \
--set "NIX_GHC_LIBDIR" "${libDir}"
--set "NIX_GHC_LIBDIR" "$(${lib.getExe' env "ghc"} --print-libdir)"
runHook postBuild
'';
doCheck = true;
checkPhase = ''
[[ $($out/bin/mueval -e 42) == 42 ]]
'';
passthru = { inherit defaultPkgs; };

View File

@ -17,13 +17,13 @@ let
# Used same technique as for the yiCustom package.
wrappedGhc = ghcWithPackages
(self: [ diagrams-builder ] ++ extraPackages self);
ghcVersion = wrappedGhc.version;
ghc = lib.getExe' wrappedGhc "ghc";
exeWrapper = backend : ''
makeWrapper \
"${diagrams-builder}/bin/diagrams-builder-${backend}" "$out/bin/diagrams-builder-${backend}" \
--set NIX_GHC ${wrappedGhc}/bin/ghc \
--set NIX_GHC_LIBDIR ${wrappedGhc}/lib/ghc-${ghcVersion}
--set NIX_GHC ${ghc} \
--set NIX_GHC_LIBDIR "$(${ghc} --print-libdir)"
'';
backends = ["svg" "cairo" "ps"];