tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
luaPackages: copy passthruFun from python
Artturin
3 years ago
39571bd6
bdb8ca17
+150
-95
8 changed files
expand all
collapse all
unified
split
pkgs
development
interpreters
lua-5
build-lua-package.nix
default.nix
interpreter.nix
luajit
2.0.nix
2.1.nix
default.nix
lua-modules
default.nix
top-level
lua-packages.nix
+1
-4
pkgs/development/interpreters/lua-5/build-lua-package.nix
···
1
1
# Generic builder for lua packages
2
2
{ lib
3
3
, lua
4
4
-
, buildPackages
5
4
, wrapLua
6
5
, luarocks
7
6
# Whether the derivation provides a lua module or not.
···
14
13
, version
15
14
16
15
# by default prefix `name` e.g. "lua5.2-${name}"
17
17
-
, namePrefix ? if lua.pkgs.isLuaJIT
18
18
-
then lua.name + "-"
19
19
-
else "lua" + lua.luaversion + "-"
16
16
+
, namePrefix ? "${lua.pname}${lua.sourceVersion.major}.${lua.sourceVersion.minor}-"
20
17
21
18
# Dependencies for building the package
22
19
, buildInputs ? []
+86
-2
pkgs/development/interpreters/lua-5/default.nix
···
1
1
# similar to interpreters/python/default.nix
2
2
{ stdenv, lib, callPackage, fetchurl, fetchpatch, makeBinaryWrapper }:
3
3
4
4
+
5
5
+
let
6
6
+
7
7
+
# Common passthru for all lua interpreters.
8
8
+
# copied from python
9
9
+
passthruFun =
10
10
+
{ executable
11
11
+
, sourceVersion
12
12
+
, luaversion
13
13
+
, packageOverrides
14
14
+
, luaOnBuildForBuild
15
15
+
, luaOnBuildForHost
16
16
+
, luaOnBuildForTarget
17
17
+
, luaOnHostForHost
18
18
+
, luaOnTargetForTarget
19
19
+
, luaAttr ? null
20
20
+
, self # is luaOnHostForTarget
21
21
+
}: let
22
22
+
luaPackages = callPackage
23
23
+
# Function that when called
24
24
+
# - imports lua-packages.nix
25
25
+
# - adds spliced package sets to the package set
26
26
+
# - applies overrides from `packageOverrides`
27
27
+
({ lua, overrides, callPackage, splicePackages, newScope }: let
28
28
+
luaPackagesFun = callPackage ../../../top-level/lua-packages.nix {
29
29
+
lua = self;
30
30
+
};
31
31
+
generatedPackages = if (builtins.pathExists ../../lua-modules/generated-packages.nix) then
32
32
+
(final: prev: callPackage ../../lua-modules/generated-packages.nix { inherit (final) callPackage; } final prev)
33
33
+
else (final: prev: {});
34
34
+
overridenPackages = callPackage ../../lua-modules/overrides.nix { };
35
35
+
36
36
+
otherSplices = {
37
37
+
selfBuildBuild = luaOnBuildForBuild.pkgs;
38
38
+
selfBuildHost = luaOnBuildForHost.pkgs;
39
39
+
selfBuildTarget = luaOnBuildForTarget.pkgs;
40
40
+
selfHostHost = luaOnHostForHost.pkgs;
41
41
+
selfTargetTarget = luaOnTargetForTarget.pkgs or {};
42
42
+
};
43
43
+
keep = self: { };
44
44
+
extra = spliced0: {};
45
45
+
extensions = lib.composeManyExtensions [
46
46
+
generatedPackages
47
47
+
overridenPackages
48
48
+
overrides
49
49
+
];
50
50
+
in lib.makeScopeWithSplicing
51
51
+
splicePackages
52
52
+
newScope
53
53
+
otherSplices
54
54
+
keep
55
55
+
extra
56
56
+
(lib.extends extensions luaPackagesFun))
57
57
+
{
58
58
+
overrides = packageOverrides;
59
59
+
lua = self;
60
60
+
};
61
61
+
in rec {
62
62
+
buildEnv = callPackage ./wrapper.nix {
63
63
+
lua = self;
64
64
+
inherit (luaPackages) requiredLuaModules;
65
65
+
};
66
66
+
withPackages = import ./with-packages.nix { inherit buildEnv luaPackages;};
67
67
+
pkgs = luaPackages;
68
68
+
interpreter = "${self}/bin/${executable}";
69
69
+
inherit executable luaversion sourceVersion;
70
70
+
luaOnBuild = luaOnBuildForHost.override { inherit packageOverrides; self = luaOnBuild; };
71
71
+
72
72
+
inherit luaAttr;
73
73
+
};
74
74
+
75
75
+
in
76
76
+
4
77
rec {
5
78
lua5_4 = callPackage ./interpreter.nix {
79
79
+
self = lua5_4;
6
80
sourceVersion = { major = "5"; minor = "4"; patch = "3"; };
7
81
hash = "1yxvjvnbg4nyrdv10bq42gz6dr66pyan28lgzfygqfwy2rv24qgq";
8
82
makeWrapper = makeBinaryWrapper;
83
83
+
inherit passthruFun;
9
84
10
85
patches = lib.optional stdenv.isDarwin ./5.4.darwin.patch
11
86
++ [
···
28
103
};
29
104
30
105
lua5_4_compat = lua5_4.override({
106
106
+
self = lua5_4_compat;
31
107
compat = true;
32
108
});
33
109
34
110
lua5_3 = callPackage ./interpreter.nix {
111
111
+
self = lua5_3;
35
112
sourceVersion = { major = "5"; minor = "3"; patch = "6"; };
36
113
hash = "0q3d8qhd7p0b7a4mh9g7fxqksqfs6mr1nav74vq26qvkp2dxcpzw";
37
114
makeWrapper = makeBinaryWrapper;
115
115
+
inherit passthruFun;
38
116
39
117
patches =
40
118
lib.optionals stdenv.isDarwin [ ./5.2.darwin.patch ];
41
119
};
42
120
43
121
lua5_3_compat = lua5_3.override({
122
122
+
self = lua5_3_compat;
44
123
compat = true;
45
124
});
46
125
47
126
48
127
lua5_2 = callPackage ./interpreter.nix {
128
128
+
self = lua5_2;
49
129
sourceVersion = { major = "5"; minor = "2"; patch = "4"; };
50
130
hash = "0jwznq0l8qg9wh5grwg07b5cy3lzngvl5m2nl1ikp6vqssmf9qmr";
51
131
makeWrapper = makeBinaryWrapper;
132
132
+
inherit passthruFun;
52
133
patches = [
53
134
./CVE-2022-28805.patch
54
135
] ++ lib.optional stdenv.isDarwin ./5.2.darwin.patch;
55
136
};
56
137
57
138
lua5_2_compat = lua5_2.override({
139
139
+
self = lua5_2_compat;
58
140
compat = true;
59
141
});
60
142
61
143
62
144
lua5_1 = callPackage ./interpreter.nix {
145
145
+
self = lua5_1;
63
146
sourceVersion = { major = "5"; minor = "1"; patch = "5"; };
64
147
hash = "2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333";
65
148
makeWrapper = makeBinaryWrapper;
149
149
+
inherit passthruFun;
66
150
patches = (lib.optional stdenv.isDarwin ./5.1.darwin.patch)
67
151
++ [ ./CVE-2014-5461.patch ];
68
152
};
69
153
70
154
luajit_2_0 = import ../luajit/2.0.nix {
71
155
self = luajit_2_0;
72
72
-
inherit callPackage lib;
156
156
+
inherit callPackage lib passthruFun;
73
157
};
74
158
75
159
luajit_2_1 = import ../luajit/2.1.nix {
76
160
self = luajit_2_1;
77
77
-
inherit callPackage;
161
161
+
inherit callPackage passthruFun;
78
162
};
79
163
80
164
}
+27
-20
pkgs/development/interpreters/lua-5/interpreter.nix
···
2
2
, compat ? false
3
3
, callPackage
4
4
, makeWrapper
5
5
+
, self
5
6
, packageOverrides ? (final: prev: {})
7
7
+
, pkgsBuildBuild
8
8
+
, pkgsBuildHost
9
9
+
, pkgsBuildTarget
10
10
+
, pkgsHostHost
11
11
+
, pkgsTargetTarget
6
12
, sourceVersion
7
13
, hash
14
14
+
, passthruFun
8
15
, patches ? []
9
16
, postConfigure ? null
10
17
, postBuild ? null
11
18
, staticOnly ? stdenv.hostPlatform.isStatic
12
12
-
}:
19
19
+
, luaAttr ? "lua${sourceVersion.major}_${sourceVersion.minor}"
20
20
+
} @ inputs:
13
21
let
14
14
-
luaversion = with sourceVersion; "${major}.${minor}";
22
22
+
luaPackages = self.pkgs;
15
23
16
16
-
luaPackages = callPackage ../../lua-modules {
17
17
-
lua = self;
18
18
-
overrides = packageOverrides;
19
19
-
packagesAttr = "lua${lib.replaceChars ["."] ["_"] luaversion}.pkgs";
20
20
-
};
24
24
+
luaversion = with sourceVersion; "${major}.${minor}";
21
25
22
26
plat = if (stdenv.isLinux && lib.versionOlder self.luaversion "5.4") then "linux"
23
27
else if (stdenv.isLinux && lib.versionAtLeast self.luaversion "5.4") then "linux-readline"
···
28
32
else if stdenv.hostPlatform.isBSD then "bsd"
29
33
else if stdenv.hostPlatform.isUnix then "posix"
30
34
else "generic";
35
35
+
in
31
36
32
32
-
self = stdenv.mkDerivation rec {
37
37
+
stdenv.mkDerivation rec {
33
38
pname = "lua";
34
39
version = "${luaversion}.${sourceVersion.patch}";
35
40
···
125
130
ln -s "$out/lib/pkgconfig/lua.pc" "$out/lib/pkgconfig/lua${lib.replaceStrings [ "." ] [ "" ] luaversion}.pc"
126
131
'';
127
132
128
128
-
passthru = rec {
129
129
-
inherit luaversion;
130
130
-
buildEnv = callPackage ./wrapper.nix {
131
131
-
lua = self;
132
132
-
inherit makeWrapper;
133
133
-
inherit (luaPackages) requiredLuaModules;
134
134
-
};
135
135
-
withPackages = import ./with-packages.nix { inherit buildEnv luaPackages;};
136
136
-
pkgs = luaPackages;
137
137
-
interpreter = "${self}/bin/lua";
133
133
+
# copied from python
134
134
+
passthru = let
135
135
+
# When we override the interpreter we also need to override the spliced versions of the interpreter
136
136
+
inputs' = lib.filterAttrs (n: v: ! lib.isDerivation v && n != "passthruFun") inputs;
137
137
+
override = attr: let lua = attr.override (inputs' // { self = lua; }); in lua;
138
138
+
in passthruFun rec {
139
139
+
inherit self luaversion packageOverrides luaAttr sourceVersion;
140
140
+
executable = "lua";
141
141
+
luaOnBuildForBuild = override pkgsBuildBuild.${luaAttr};
142
142
+
luaOnBuildForHost = override pkgsBuildHost.${luaAttr};
143
143
+
luaOnBuildForTarget = override pkgsBuildTarget.${luaAttr};
144
144
+
luaOnHostForHost = override pkgsHostHost.${luaAttr};
145
145
+
luaOnTargetForTarget = if lib.hasAttr luaAttr pkgsTargetTarget then (override pkgsTargetTarget.${luaAttr}) else {};
138
146
};
139
147
140
148
meta = {
···
151
159
license = lib.licenses.mit;
152
160
platforms = lib.platforms.unix;
153
161
};
154
154
-
};
155
155
-
in self
162
162
+
}
+3
-3
pkgs/development/interpreters/luajit/2.0.nix
···
1
1
-
{ self, callPackage, lib }:
1
1
+
{ self, callPackage, lib, passthruFun }:
2
2
callPackage ./default.nix {
3
3
-
inherit self;
4
4
-
packagesAttr = "luajit_2_0.pkgs";
3
3
+
sourceVersion = { major = "2"; minor = "0"; patch = "5"; };
4
4
+
inherit self passthruFun;
5
5
version = "2.0.5-2022-03-13";
6
6
rev = "93a65d3cc263aef2d2feb3d7ff2206aca3bee17e";
7
7
isStable = true;
+3
-3
pkgs/development/interpreters/luajit/2.1.nix
···
1
1
-
{ self, callPackage }:
1
1
+
{ self, callPackage, passthruFun }:
2
2
callPackage ./default.nix {
3
3
-
inherit self;
4
4
-
packagesAttr = "luajit_2_1.pkgs";
3
3
+
sourceVersion = { major = "2"; minor = "1"; patch = "0"; };
4
4
+
inherit self passthruFun;
5
5
version = "2.1.0-2022-04-05";
6
6
rev = "5e3c45c43bb0e0f1f2917d432e9d2dba12c42a6e";
7
7
isStable = false;
+26
-17
pkgs/development/interpreters/luajit/default.nix
···
2
2
, stdenv
3
3
, fetchFromGitHub
4
4
, buildPackages
5
5
-
, name ? "luajit-${version}"
6
5
, isStable
7
6
, hash
8
7
, rev
9
8
, version
10
10
-
, packagesAttr
11
9
, extraMeta ? { }
12
10
, callPackage
13
11
, self
14
12
, packageOverrides ? (final: prev: {})
13
13
+
, pkgsBuildBuild
14
14
+
, pkgsBuildHost
15
15
+
, pkgsBuildTarget
16
16
+
, pkgsHostHost
17
17
+
, pkgsTargetTarget
18
18
+
, sourceVersion
19
19
+
, passthruFun
15
20
, enableFFI ? true
16
21
, enableJIT ? true
17
22
, enableJITDebugModule ? enableJIT
···
23
28
, enableAPICheck ? false
24
29
, enableVMAssertions ? false
25
30
, useSystemMalloc ? false
26
26
-
}:
31
31
+
, luaAttr ? "luajit_${sourceVersion.major}_${sourceVersion.minor}"
32
32
+
} @ inputs:
27
33
assert enableJITDebugModule -> enableJIT;
28
34
assert enableGDBJITSupport -> enableJIT;
29
35
assert enableValgrindSupport -> valgrind != null;
30
36
let
31
31
-
luaPackages = callPackage ../../lua-modules {
32
32
-
lua = self;
33
33
-
overrides = packageOverrides;
34
34
-
inherit packagesAttr;
35
35
-
};
37
37
+
38
38
+
luaPackages = self.pkgs;
36
39
37
40
XCFLAGS = with lib;
38
41
optional (!enableFFI) "-DLUAJIT_DISABLE_FFI"
···
47
50
;
48
51
in
49
52
stdenv.mkDerivation rec {
50
50
-
inherit name version;
53
53
+
pname = "luajit";
54
54
+
inherit version;
51
55
src = fetchFromGitHub {
52
56
owner = "LuaJIT";
53
57
repo = "LuaJIT";
···
103
107
104
108
setupHook = luaPackages.lua-setup-hook luaPackages.luaLib.luaPathList luaPackages.luaLib.luaCPathList;
105
109
106
106
-
passthru = rec {
107
107
-
buildEnv = callPackage ../lua-5/wrapper.nix {
108
108
-
lua = self;
109
109
-
inherit (luaPackages) requiredLuaModules;
110
110
-
};
111
111
-
withPackages = import ../lua-5/with-packages.nix { inherit buildEnv luaPackages; };
112
112
-
pkgs = luaPackages;
113
113
-
interpreter = "${self}/bin/lua";
110
110
+
# copied from python
111
111
+
passthru = let
112
112
+
# When we override the interpreter we also need to override the spliced versions of the interpreter
113
113
+
inputs' = lib.filterAttrs (n: v: ! lib.isDerivation v && n != "passthruFun") inputs;
114
114
+
override = attr: let lua = attr.override (inputs' // { self = lua; }); in lua;
115
115
+
in passthruFun rec {
116
116
+
inherit self luaversion packageOverrides luaAttr sourceVersion;
117
117
+
executable = "lua";
118
118
+
luaOnBuildForBuild = override pkgsBuildBuild.${luaAttr};
119
119
+
luaOnBuildForHost = override pkgsBuildHost.${luaAttr};
120
120
+
luaOnBuildForTarget = override pkgsBuildTarget.${luaAttr};
121
121
+
luaOnHostForHost = override pkgsHostHost.${luaAttr};
122
122
+
luaOnTargetForTarget = if lib.hasAttr luaAttr pkgsTargetTarget then (override pkgsTargetTarget.${luaAttr}) else {};
114
123
};
115
124
116
125
meta = with lib; {
-43
pkgs/development/lua-modules/default.nix
···
1
1
-
# inspired by pkgs/development/haskell-modules/default.nix
2
2
-
{ pkgs, lib
3
3
-
, lua
4
4
-
, packagesAttr
5
5
-
, stdenv
6
6
-
, callPackage
7
7
-
, overrides ? (final: prev: {})
8
8
-
}:
9
9
-
10
10
-
let
11
11
-
12
12
-
inherit (lib) extends;
13
13
-
14
14
-
initialPackages = import ../../top-level/lua-packages.nix {
15
15
-
inherit lua pkgs lib stdenv;
16
16
-
};
17
17
-
18
18
-
overridenPackages = callPackage ./overrides.nix { };
19
19
-
20
20
-
generatedPackages = if (builtins.pathExists ./generated-packages.nix) then
21
21
-
(final: prev: callPackage ./generated-packages.nix { inherit (final) callPackage; } final prev) else (final: prev: {});
22
22
-
23
23
-
extensions = lib.composeManyExtensions [
24
24
-
generatedPackages
25
25
-
overridenPackages
26
26
-
overrides
27
27
-
];
28
28
-
29
29
-
otherSplices = let
30
30
-
packagesAttrFun = set: lib.getAttrFromPath (lib.splitString "." packagesAttr) set;
31
31
-
in {
32
32
-
selfBuildBuild = packagesAttrFun pkgs.pkgsBuildBuild;
33
33
-
selfBuildHost = packagesAttrFun pkgs.pkgsBuildHost;
34
34
-
selfBuildTarget = packagesAttrFun pkgs.pkgsBuildTarget;
35
35
-
selfHostHost = packagesAttrFun pkgs.pkgsHostHost;
36
36
-
selfTargetTarget = if pkgs.pkgsTargetTarget.__raw or false then {} else packagesAttrFun pkgs.pkgsTargetTarget; # might be missing;
37
37
-
};
38
38
-
keep = self: { };
39
39
-
extra = spliced0: { };
40
40
-
41
41
-
in
42
42
-
lib.makeScopeWithSplicing pkgs.splicePackages pkgs.newScope otherSplices keep extra
43
43
-
(lib.extends extensions initialPackages)
+4
-3
pkgs/top-level/lua-packages.nix
···
5
5
for each package in a separate file: the call to the function would
6
6
be almost as must code as the function itself. */
7
7
8
8
-
{ stdenv
8
8
+
{ pkgs
9
9
+
, stdenv
10
10
+
, lib
9
11
, lua
10
10
-
, pkgs
11
11
-
, lib
12
12
}:
13
13
+
13
14
14
15
self:
15
16