Files
haskell.nix/test/cabal-sublib/default.nix
Hamish Mackenzie 9e3463d65f Switch to enableNativeBignum = true when available (#1784)
* Switch to enableNativeBignum = true when available

* Fix bitvec dependency on gmp

Adds https://github.com/Bodigrim/bitvec/pull/61

* Fix dynamic linking tests (now GMP is not always linked)

Co-authored-by: Tom McLaughlin <tom@codedown.io>
2022-11-18 20:28:54 +13:00

66 lines
1.8 KiB
Nix

# Test a package set
{ stdenv, lib, util, cabalProject', haskellLib, recurseIntoAttrs, testSrc, compiler-nix-name, evalPackages }:
with lib;
let
modules = [
{
# Package has no exposed modules which causes
# haddock: No input file(s)
packages.cabal-sublib.doHaddock = false;
}
];
# The ./pkgs.nix works for linux & darwin, but not for windows
project = cabalProject' {
inherit compiler-nix-name evalPackages;
src = testSrc "cabal-sublib";
inherit modules;
cabalProject = ''
packages: .
allow-newer: aeson:*
'';
};
packages = project.hsPkgs;
in recurseIntoAttrs {
ifdInputs = {
inherit (project) plan-nix;
};
run = stdenv.mkDerivation {
name = "cabal-sublib-test";
buildCommand = ''
exe="${packages.cabal-sublib.components.exes.cabal-sublib.exePath}"
size=$(command stat --format '%s' "$exe")
printf "size of executable $exe is $size. \n" >& 2
# fixme: run on target platform when cross-compiled
printf "checking whether executable runs... " >& 2
cat ${haskellLib.check packages.cabal-sublib.components.exes.cabal-sublib}/test-stdout
'' +
# Musl and Aarch are statically linked..
optionalString (!stdenv.hostPlatform.isAarch32 && !stdenv.hostPlatform.isAarch64 && !stdenv.hostPlatform.isMusl) (''
printf "checking that executable is dynamically linked to system libraries... " >& 2
'' + optionalString (stdenv.isLinux && !stdenv.hostPlatform.isMusl) ''
ldd $exe | grep 'libc[.]so'
'' + optionalString stdenv.isDarwin ''
otool -L $exe |grep .dylib
'') + ''
touch $out
'';
meta.platforms = platforms.all;
passthru = {
# Used for debugging with nix repl
inherit packages project;
};
};
}