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
|
{ callPackage }:
let
# Common passthru for all perl interpreters.
# copied from lua
passthruFun =
{
overrides,
perlOnBuildForBuild,
perlOnBuildForHost,
perlOnBuildForTarget,
perlOnHostForHost,
perlOnTargetForTarget,
perlAttr ? null,
tests ? { },
self, # is perlOnHostForTarget
}:
let
perlPackages =
callPackage
# Function that when called
# - imports perl-packages.nix
# - adds spliced package sets to the package set
(
{
stdenv,
pkgs,
perl,
callPackage,
makeScopeWithSplicing',
}:
let
perlPackagesFun = callPackage ../../../top-level/perl-packages.nix {
inherit stdenv pkgs;
perl = self;
};
otherSplices = {
selfBuildBuild = perlOnBuildForBuild.pkgs;
selfBuildHost = perlOnBuildForHost.pkgs;
selfBuildTarget = perlOnBuildForTarget.pkgs;
selfHostHost = perlOnHostForHost.pkgs;
selfTargetTarget = perlOnTargetForTarget.pkgs or { };
};
in
makeScopeWithSplicing' {
inherit otherSplices;
f = perlPackagesFun;
}
)
{
perl = self;
};
in
rec {
buildEnv = callPackage ./wrapper.nix {
perl = self;
inherit (pkgs) requiredPerlModules;
};
withPackages = f: buildEnv.override { extraLibs = f pkgs; };
pkgs = perlPackages // (overrides pkgs);
interpreter = "${self}/bin/perl";
libPrefix = "lib/perl5/site_perl";
perlOnBuild = perlOnBuildForHost.override {
inherit overrides;
self = perlOnBuild;
};
inherit tests;
};
in
rec {
perl5 = callPackage ./interpreter.nix {
self = perl5;
version = "5.42.3";
sha256 = "sha256-ETd0CYWDe1zfFfDPq5Miedy0NS+RL+1vwUTotPCCNic=";
inherit passthruFun;
};
}
|