-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathflake.nix
123 lines (107 loc) · 3.82 KB
/
flake.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
{
description = "LuaJIT development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
flake-utils,
}:
flake-utils.lib.eachDefaultSystem (
system: let
pkgs = import nixpkgs {inherit system;};
luajit = pkgs.stdenv.mkDerivation {
name = "luajit";
src = pkgs.fetchgit {
url = "https://github.com/LuaJIT/LuaJIT.git";
rev = "e0a7ea8a924d8137e6950b97c3e36f17264f6c79";
sha256 = "sha256-rIRsFJtmtUPsmZPEIFA7pZtEcEMYjpC5Oaz8DPdZNDU=";
};
buildInputs = [pkgs.makeWrapper];
makeFlags = ["PREFIX=$(out)"];
installPhase = ''
make install PREFIX=$out
ln -sf $out/bin/luajit-2.1.ROLLING $out/bin/luajit
'';
};
luajit_openresty = pkgs.stdenv.mkDerivation {
name = "luajit-openresty";
src = pkgs.fetchgit {
url = "https://github.com/openresty/luajit2.git";
rev = "bee99fc60394fb85963c38af9106d3d144eb73e5";
sha256 = "sha256-JH9Iqmk8U0f4NxiTUC8wrR5KlxM4w/hXyrTSGYZHsQw=";
};
buildInputs = [pkgs.makeWrapper];
installPhase = ''
make install PREFIX=$out
ln -sf $out/bin/luajit-2.1.ROLLING $out/bin/luajit_openresty
'';
};
luajit_tarantool = pkgs.stdenv.mkDerivation {
name = "luajit-tarantool";
src = pkgs.fetchgit {
url = "https://github.com/tarantool/luajit.git";
rev = "577aa3211de01b1e0a7fcacb4f4efaa078f343cb";
sha256 = "sha256-Q9ChYstOw/YbkaI7DnxsIVKarlKj8J1l+qAIxtpqOlQ=";
};
nativeBuildInputs = with pkgs; [
cmake
git
pkg-config
];
# Patch CMakeLists.txt to remove test directory
preConfigure = ''
# Remove the test directory include from CMakeLists.txt
sed -i '/add_subdirectory(test)/d' CMakeLists.txt
# Also remove LUAJIT_USE_TEST code block
sed -i '/if(LUAJIT_USE_TEST)/,/endif()/d' CMakeLists.txt
'';
cmakeFlags = [
"-DCMAKE_BUILD_TYPE=Release"
"-DBUILDMODE=mixed"
"-DLUAJIT_NUMMODE="
""
"-DLUAJIT_DISABLE_FFI=OFF"
"-DLUAJIT_ENABLE_LUA52COMPAT=ON" # default OFF
"-DLUAJIT_DISABLE_JIT=OFF"
"-DLUAJIT_ENABLE_GC64=ON" # default oFF
"-DLUAJIT_ENABLE_CHECKHOOK=OFF"
"-DLUAJIT_DISABLE_UNWIND_JIT=OFF"
"-DLUAJIT_NO_UNWIND=OFF"
"-DLUAJIT_DISABLE_MEMPROF=OFF"
"-DLUAJIT_DISABLE_SYSPROF=OFF"
"-DLUAJIT_SMART_STRINGS=ON"
"-DLUAJIT_USE_SYSMALLOC=OFF"
"-DLUAJIT_USE_VALGRIND=OFF"
"-DLUAJIT_USE_GDBJIT=OFF"
"-DLUA_USE_APICHECK=OFF"
"-DLUA_USE_ASSERT=OFF"
"-DLUAJIT_USE_ASAN=OFF"
"-DLUAJIT_USE_UBSAN=OFF"
"-DLUAJIT_ENABLE_COVERAGE=OFF"
"-DLUAJIT_ENABLE_TABLE_BUMP=OFF"
#"-DLUAJIT_USE_TEST=OFF" # default OFF, have to patch out tests, see above
];
# Create the luajit_tarantool binary
postInstall = ''
mv $out/bin/luajit $out/bin/luajit_tarantool
'';
meta = with pkgs.lib; {
description = "Tarantool fork of LuaJIT";
homepage = "https://github.com/tarantool/luajit";
license = licenses.mit;
platforms = platforms.unix;
};
};
in {
packages = {
inherit luajit luajit_tarantool;
};
devShells.default = pkgs.mkShell {
buildInputs = [luajit luajit_tarantool luajit_openresty];
};
}
);
}