core/pkgs/by-name/ni/nix/nix-perl.nix
2024-05-13 22:24:10 +01:00

55 lines
1.6 KiB
Nix

{ stdenv, lib, perl, pkg-config, curl, nix, libsodium, boost, autoreconfHook
, autoconf-archive, nlohmann_json, xz, Security, meson, ninja, bzip2 }:
let
atLeast223 = lib.versionAtLeast nix.version "2.23";
mkConfigureOption = { mesonOption, autoconfOption, value }:
let
setFlagTo = if atLeast223 then
lib.mesonOption mesonOption
else
lib.withFeatureAs true autoconfOption;
in setFlagTo value;
in stdenv.mkDerivation (finalAttrs: {
pname = "nix-perl";
inherit (nix) version src;
postUnpack = "sourceRoot=$sourceRoot/perl";
buildInputs = [ boost bzip2 curl libsodium nix perl xz ]
++ lib.optional (stdenv.isDarwin) Security;
# Not cross-safe since Nix checks for curl/perl via
# NEED_PROG/find_program, but both seem to be needed at runtime
# as well.
nativeBuildInputs = [ pkg-config perl curl ] ++ (if atLeast223 then [
meson
ninja
] else [
autoconf-archive
autoreconfHook
]);
# `perlPackages.Test2Harness` is marked broken for Darwin
doCheck = !stdenv.isDarwin;
nativeCheckInputs = [ perl.pkgs.Test2Harness ];
${if atLeast223 then "mesonFlags" else "configureFlags"} = [
(mkConfigureOption {
mesonOption = "dbi_path";
autoconfOption = "dbi";
value = "${perl.pkgs.DBI}/${perl.libPrefix}";
})
(mkConfigureOption {
mesonOption = "dbd_sqlite_path";
autoconfOption = "dbd-sqlite";
value = "${perl.pkgs.DBDSQLite}/${perl.libPrefix}";
})
] ++ lib.optionals atLeast223
[ (lib.mesonEnable "tests" finalAttrs.doCheck) ];
preConfigure = "export NIX_STATE_DIR=$TMPDIR";
})