-
-
Notifications
You must be signed in to change notification settings - Fork 14.5k
/
default.nix
81 lines (65 loc) · 2 KB
/
default.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
lib,
stdenv,
perl,
toPerlModule,
}:
{
buildInputs ? [ ],
nativeBuildInputs ? [ ],
outputs ? [
"out"
"devdoc"
],
src ? null,
# enabling or disabling does nothing for perl packages so set it explicitly
# to false to not change hashes when enableParallelBuildingByDefault is enabled
enableParallelBuilding ? false,
doCheck ? true,
checkTarget ? "test",
# Prevent CPAN downloads.
PERL_AUTOINSTALL ? "--skipdeps",
# From http://wiki.cpantesters.org/wiki/CPANAuthorNotes: "allows
# authors to skip certain tests (or include certain tests) when
# the results are not being monitored by a human being."
AUTOMATED_TESTING ? true,
# current directory (".") is removed from @INC in Perl 5.26 but many old libs rely on it
# https://metacpan.org/pod/release/XSAWYERX/perl-5.26.0/pod/perldelta.pod#Removal-of-the-current-directory-%28%22.%22%29-from-@INC
PERL_USE_UNSAFE_INC ? "1",
env ? { },
...
}@attrs:
lib.throwIf (attrs ? name)
"buildPerlPackage: `name` (\"${attrs.name}\") is deprecated, use `pname` and `version` instead"
(
let
defaultMeta = {
homepage = "https://metacpan.org/dist/${attrs.pname}";
inherit (perl.meta) platforms;
};
package = stdenv.mkDerivation (
attrs
// {
name = "perl${perl.version}-${attrs.pname}-${attrs.version}";
builder = ./builder.sh;
buildInputs = buildInputs ++ [ perl ];
nativeBuildInputs =
nativeBuildInputs
++ (if !(stdenv.buildPlatform.canExecute stdenv.hostPlatform) then [ perl.mini ] else [ perl ]);
inherit
outputs
src
doCheck
checkTarget
enableParallelBuilding
;
env = {
inherit PERL_AUTOINSTALL AUTOMATED_TESTING PERL_USE_UNSAFE_INC;
fullperl = perl.__spliced.buildHost or perl;
} // env;
meta = defaultMeta // (attrs.meta or { });
}
);
in
toPerlModule package
)