sq: 0.48.3 -> 0.48.4 (#359055)
[NixPkgs.git] / pkgs / tools / package-management / nix / nix-perl.nix
blob50e342e96cad5dd188b61d844ea88ff779cdcc70
1 { stdenv
2 , lib
3 , perl
4 , pkg-config
5 , curl
6 , nix
7 , libsodium
8 , boost
9 , autoreconfHook
10 , autoconf-archive
11 , xz
12 , Security
13 , meson
14 , ninja
15 , bzip2
18 let
19   atLeast223 = lib.versionAtLeast nix.version "2.23";
20   atLeast224 = lib.versionAtLeast nix.version "2.24";
22   mkConfigureOption = { mesonOption, autoconfOption, value }:
23     let
24       setFlagTo = if atLeast223
25         then lib.mesonOption mesonOption
26         else lib.withFeatureAs true autoconfOption;
27     in
28     setFlagTo value;
29 in stdenv.mkDerivation (finalAttrs: {
30   pname = "nix-perl";
31   inherit (nix) version src;
33   postUnpack = "sourceRoot=$sourceRoot/${lib.optionalString atLeast224 "src"}/perl";
35   # TODO: Remove this once the nix build also uses meson
36   postPatch = lib.optionalString atLeast224 ''
37     substituteInPlace lib/Nix/Store.xs \
38       --replace-fail 'config-util.hh' 'nix/config.h' \
39       --replace-fail 'config-store.hh' 'nix/config.h'
40   '';
42   buildInputs = [
43     boost
44     bzip2
45     curl
46     libsodium
47     nix
48     perl
49     xz
50   ] ++ lib.optional (stdenv.hostPlatform.isDarwin) Security;
52   # Not cross-safe since Nix checks for curl/perl via
53   # NEED_PROG/find_program, but both seem to be needed at runtime
54   # as well.
55   nativeBuildInputs = [
56     pkg-config
57     perl
58     curl
59   ] ++ (if atLeast223 then [
60     meson
61     ninja
62   ] else [
63     autoconf-archive
64     autoreconfHook
65   ]);
67   # `perlPackages.Test2Harness` is marked broken for Darwin
68   doCheck = !stdenv.hostPlatform.isDarwin;
70   nativeCheckInputs = [
71     perl.pkgs.Test2Harness
72   ];
74   ${if atLeast223 then "mesonFlags" else "configureFlags"} = [
75     (mkConfigureOption {
76       mesonOption = "dbi_path";
77       autoconfOption = "dbi";
78       value = "${perl.pkgs.DBI}/${perl.libPrefix}";
79     })
80     (mkConfigureOption {
81       mesonOption = "dbd_sqlite_path";
82       autoconfOption = "dbd-sqlite";
83       value = "${perl.pkgs.DBDSQLite}/${perl.libPrefix}";
84     })
85   ] ++ lib.optionals atLeast223 [
86     (lib.mesonEnable "tests" finalAttrs.finalPackage.doCheck)
87   ];
89   preConfigure = "export NIX_STATE_DIR=$TMPDIR";
91   passthru = { inherit perl; };