nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at 22.05 430 lines 13 kB view raw
1{ pkgs }: 2final: prev: 3with prev; 4{ 5 ##########################################3 6 #### manual fixes for generated packages 7 ##########################################3 8 bit32 = prev.bit32.overrideAttrs(oa: { 9 # Small patch in order to no longer redefine a Lua 5.2 function that Luajit 10 # 2.1 also provides, see https://github.com/LuaJIT/LuaJIT/issues/325 for 11 # more 12 patches = [ 13 ./bit32.patch 14 ]; 15 }); 16 17 busted = prev.busted.overrideAttrs(oa: { 18 postConfigure = '' 19 substituteInPlace ''${rockspecFilename} \ 20 --replace "'lua_cliargs = 3.0-1'," "'lua_cliargs >= 3.0-1'," 21 ''; 22 postInstall = '' 23 install -D completions/zsh/_busted $out/share/zsh/site-functions/_busted 24 install -D completions/bash/busted.bash $out/share/bash-completion/completions/busted 25 ''; 26 }); 27 28 cqueues = (prev.lib.overrideLuarocks prev.cqueues (drv: { 29 nativeBuildInputs = [ 30 pkgs.gnum4 31 ]; 32 externalDeps = [ 33 { name = "CRYPTO"; dep = pkgs.openssl; } 34 { name = "OPENSSL"; dep = pkgs.openssl; } 35 ]; 36 disabled = luaOlder "5.1" || luaAtLeast "5.4"; 37 })).overrideAttrs(oa: rec { 38 # Parse out a version number without the Lua version inserted 39 version = with pkgs.lib; let 40 version' = prev.cqueues.version; 41 rel = splitVersion version'; 42 date = head rel; 43 rev = last (splitString "-" (last rel)); 44 in "${date}-${rev}"; 45 # Upstream rockspec is pointlessly broken into separate rockspecs, per Lua 46 # version, which doesn't work well for us, so modify it 47 postConfigure = let inherit (prev.cqueues) pname; in '' 48 # 'all' target auto-detects correct Lua version, which is fine for us as 49 # we only have the right one available :) 50 sed -Ei ''${rockspecFilename} \ 51 -e 's|lua == 5.[[:digit:]]|lua >= 5.1, <= 5.3|' \ 52 -e 's|build_target = "[^"]+"|build_target = "all"|' \ 53 -e 's|version = "[^"]+"|version = "${version}"|' 54 specDir=$(dirname ''${rockspecFilename}) 55 cp ''${rockspecFilename} "$specDir/${pname}-${version}.rockspec" 56 rockspecFilename="$specDir/${pname}-${version}.rockspec" 57 ''; 58 }); 59 60 cyrussasl = prev.lib.overrideLuarocks prev.cyrussasl (drv: { 61 externalDeps = [ 62 { name = "LIBSASL"; dep = pkgs.cyrus_sasl; } 63 ]; 64 }); 65 66 http = prev.http.overrideAttrs(oa: { 67 patches = [ 68 (pkgs.fetchpatch { 69 name = "invalid-state-progression.patch"; 70 url = "https://github.com/daurnimator/lua-http/commit/cb7b59474a.diff"; 71 sha256 = "1vmx039n3nqfx50faqhs3wgiw28ws416rhw6vh6srmh9i826dac7"; 72 }) 73 ]; 74 /* TODO: separate docs derivation? (pandoc is heavy) 75 nativeBuildInputs = [ pandoc ]; 76 makeFlags = [ "-C doc" "lua-http.html" "lua-http.3" ]; 77 */ 78 }); 79 80 ldbus = prev.lib.overrideLuarocks prev.ldbus (drv: { 81 extraVariables = { 82 DBUS_DIR="${pkgs.dbus.lib}"; 83 DBUS_ARCH_INCDIR="${pkgs.dbus.lib}/lib/dbus-1.0/include"; 84 DBUS_INCDIR="${pkgs.dbus.dev}/include/dbus-1.0"; 85 }; 86 buildInputs = with pkgs; [ 87 dbus 88 ]; 89 }); 90 91 ljsyscall = prev.lib.overrideLuarocks prev.ljsyscall (drv: rec { 92 version = "unstable-20180515"; 93 # package hasn't seen any release for a long time 94 src = pkgs.fetchFromGitHub { 95 owner = "justincormack"; 96 repo = "ljsyscall"; 97 rev = "e587f8c55aad3955dddab3a4fa6c1968037b5c6e"; 98 sha256 = "06v52agqyziwnbp2my3r7liv245ddmb217zmyqakh0ldjdsr8lz4"; 99 }; 100 knownRockspec = "rockspec/ljsyscall-scm-1.rockspec"; 101 # actually library works fine with lua 5.2 102 preConfigure = '' 103 sed -i 's/lua == 5.1/lua >= 5.1, < 5.3/' ${knownRockspec} 104 ''; 105 disabled = luaOlder "5.1" || luaAtLeast "5.3"; 106 107 propagatedBuildInputs = with pkgs.lib; optional (!isLuaJIT) luaffi; 108 }); 109 110 lgi = prev.lib.overrideLuarocks prev.lgi (drv: { 111 nativeBuildInputs = [ 112 pkgs.pkg-config 113 ]; 114 buildInputs = [ 115 pkgs.glib 116 pkgs.gobject-introspection 117 ]; 118 patches = [ 119 (pkgs.fetchpatch { 120 name = "lgi-find-cairo-through-typelib.patch"; 121 url = "https://github.com/psychon/lgi/commit/46a163d9925e7877faf8a4f73996a20d7cf9202a.patch"; 122 sha256 = "0gfvvbri9kyzhvq3bvdbj2l6mwvlz040dk4mrd5m9gz79f7w109c"; 123 }) 124 ]; 125 126 # there is only a rockspec.in in the repo, the actual rockspec must be generated 127 preConfigure = '' 128 make rock 129 ''; 130 }); 131 132 lmathx = prev.lib.overrideLuarocks prev.lmathx (drv: 133 if luaAtLeast "5.1" && luaOlder "5.2" then { 134 version = "20120430.51-1"; 135 knownRockspec = (pkgs.fetchurl { 136 url = "https://luarocks.org/lmathx-20120430.51-1.rockspec"; 137 sha256 = "148vbv2g3z5si2db7rqg5bdily7m4sjyh9w6r3jnx3csvfaxyhp0"; 138 }).outPath; 139 src = pkgs.fetchurl { 140 url = "https://web.tecgraf.puc-rio.br/~lhf/ftp/lua/5.1/lmathx.tar.gz"; 141 sha256 = "0sa553d0zlxhvpsmr4r7d841f16yq4wr3fg7i07ibxkz6yzxax51"; 142 }; 143 } else 144 if luaAtLeast "5.2" && luaOlder "5.3" then { 145 version = "20120430.52-1"; 146 knownRockspec = (pkgs.fetchurl { 147 url = "https://luarocks.org/lmathx-20120430.52-1.rockspec"; 148 sha256 = "14rd625sipakm72wg6xqsbbglaxyjba9nsajsfyvhg0sz8qjgdya"; 149 }).outPath; 150 src = pkgs.fetchurl { 151 url = "http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/5.2/lmathx.tar.gz"; 152 sha256 = "19dwa4z266l2njgi6fbq9rak4rmx2fsx1s0p9sl166ar3mnrdwz5"; 153 }; 154 } else 155 { 156 disabled = luaOlder "5.1" || luaAtLeast "5.5"; 157 # works fine with 5.4 as well 158 postConfigure = '' 159 substituteInPlace ''${rockspecFilename} \ 160 --replace 'lua ~> 5.3' 'lua >= 5.3, < 5.5' 161 ''; 162 }); 163 164 lmpfrlib = prev.lib.overrideLuarocks prev.lmpfrlib (drv: { 165 externalDeps = [ 166 { name = "GMP"; dep = pkgs.gmp; } 167 { name = "MPFR"; dep = pkgs.mpfr; } 168 ]; 169 unpackPhase = '' 170 cp $src $(stripHash $src) 171 ''; 172 }); 173 174 lrexlib-gnu = prev.lib.overrideLuarocks prev.lrexlib-gnu (drv: { 175 buildInputs = [ 176 pkgs.gnulib 177 ]; 178 }); 179 180 lrexlib-pcre = prev.lib.overrideLuarocks prev.lrexlib-pcre (drv: { 181 externalDeps = [ 182 { name = "PCRE"; dep = pkgs.pcre; } 183 ]; 184 }); 185 186 lrexlib-posix = prev.lib.overrideLuarocks prev.lrexlib-posix (drv: { 187 buildInputs = [ 188 pkgs.glibc.dev 189 ]; 190 }); 191 192 lua-iconv = prev.lib.overrideLuarocks prev.lua-iconv (drv: { 193 buildInputs = [ 194 pkgs.libiconv 195 ]; 196 }); 197 198 lua-lsp = prev.lua-lsp.overrideAttrs(oa: { 199 # until Alloyed/lua-lsp#28 200 postConfigure = '' 201 substituteInPlace ''${rockspecFilename} \ 202 --replace '"lpeglabel ~> 1.5",' '"lpeglabel >= 1.5",' 203 ''; 204 }); 205 206 lua-zlib = prev.lib.overrideLuarocks prev.lua-zlib (drv: { 207 buildInputs = [ 208 pkgs.zlib.dev 209 ]; 210 disabled = luaOlder "5.1" || luaAtLeast "5.4"; 211 }); 212 213 luadbi-mysql = prev.lib.overrideLuarocks prev.luadbi-mysql (drv: { 214 extraVariables = { 215 # Can't just be /include and /lib, unfortunately needs the trailing 'mysql' 216 MYSQL_INCDIR="${pkgs.libmysqlclient.dev}/include/mysql"; 217 MYSQL_LIBDIR="${pkgs.libmysqlclient}/lib/mysql"; 218 }; 219 buildInputs = [ 220 pkgs.mariadb.client 221 pkgs.libmysqlclient 222 ]; 223 }); 224 225 luadbi-postgresql = prev.lib.overrideLuarocks prev.luadbi-postgresql (drv: { 226 buildInputs = [ 227 pkgs.postgresql 228 ]; 229 }); 230 231 luadbi-sqlite3 = prev.lib.overrideLuarocks prev.luadbi-sqlite3 (drv: { 232 externalDeps = [ 233 { name = "SQLITE"; dep = pkgs.sqlite; } 234 ]; 235 }); 236 237 luaevent = prev.lib.overrideLuarocks prev.luaevent (drv: { 238 propagatedBuildInputs = [ 239 luasocket 240 ]; 241 externalDeps = [ 242 { name = "EVENT"; dep = pkgs.libevent; } 243 ]; 244 disabled = luaOlder "5.1" || luaAtLeast "5.4"; 245 }); 246 247 luaexpat = prev.lib.overrideLuarocks prev.luaexpat (drv: { 248 externalDeps = [ 249 { name = "EXPAT"; dep = pkgs.expat; } 250 ]; 251 }); 252 253 # TODO Somehow automatically amend buildInputs for things that need luaffi 254 # but are in luajitPackages? 255 luaffi = prev.lib.overrideLuarocks prev.luaffi (drv: { 256 # The packaged .src.rock version is pretty old, and doesn't work with Lua 5.3 257 src = pkgs.fetchFromGitHub { 258 owner = "facebook"; repo = "luaffifb"; 259 rev = "532c757e51c86f546a85730b71c9fef15ffa633d"; 260 sha256 = "1nwx6sh56zfq99rcs7sph0296jf6a9z72mxknn0ysw9fd7m1r8ig"; 261 }; 262 knownRockspec = with prev.luaffi; "${pname}-${version}.rockspec"; 263 disabled = luaOlder "5.1" || luaAtLeast "5.4" || isLuaJIT; 264 }); 265 266 luaossl = prev.lib.overrideLuarocks prev.luaossl (drv: { 267 externalDeps = [ 268 { name = "CRYPTO"; dep = pkgs.openssl; } 269 { name = "OPENSSL"; dep = pkgs.openssl; } 270 ]; 271 }); 272 273 luasec = prev.lib.overrideLuarocks prev.luasec (drv: { 274 externalDeps = [ 275 { name = "OPENSSL"; dep = pkgs.openssl; } 276 ]; 277 }); 278 279 luasql-sqlite3 = prev.lib.overrideLuarocks prev.luasql-sqlite3 (drv: { 280 externalDeps = [ 281 { name = "SQLITE"; dep = pkgs.sqlite; } 282 ]; 283 }); 284 285 luasystem = prev.lib.overrideLuarocks prev.luasystem (drv: pkgs.lib.optionalAttrs pkgs.stdenv.isLinux { 286 buildInputs = [ pkgs.glibc.out ]; 287 }); 288 289 luazip = prev.lib.overrideLuarocks prev.luazip (drv: { 290 buildInputs = [ 291 pkgs.zziplib 292 ]; 293 }); 294 295 lua-yajl = prev.lib.overrideLuarocks prev.lua-yajl (drv: { 296 buildInputs = [ 297 pkgs.yajl 298 ]; 299 }); 300 301 luaunbound = prev.lib.overrideLuarocks prev.luaunbound(drv: { 302 externalDeps = [ 303 { name = "libunbound"; dep = pkgs.unbound; } 304 ]; 305 }); 306 307 luuid = (prev.lib.overrideLuarocks prev.luuid (drv: { 308 externalDeps = [ 309 { name = "LIBUUID"; dep = pkgs.libuuid; } 310 ]; 311 disabled = luaOlder "5.1" || (luaAtLeast "5.4"); 312 })).overrideAttrs(oa: { 313 meta = oa.meta // { 314 platforms = pkgs.lib.platforms.linux; 315 }; 316 # Trivial patch to make it work in both 5.1 and 5.2. Basically just the 317 # tiny diff between the two upstream versions placed behind an #if. 318 # Upstreams: 319 # 5.1: http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/5.1/luuid.tar.gz 320 # 5.2: http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/5.2/luuid.tar.gz 321 patchFlags = [ "-p2" ]; 322 patches = [ 323 ./luuid.patch 324 ]; 325 postConfigure = let inherit (prev.luuid) version pname; in '' 326 sed -Ei ''${rockspecFilename} -e 's|lua >= 5.2|lua >= 5.1,|' 327 ''; 328 }); 329 330 331 # as advised in https://github.com/luarocks/luarocks/issues/1402#issuecomment-1080616570 332 # we shouldn't use luarocks machinery to build complex cmake components 333 libluv = pkgs.stdenv.mkDerivation { 334 335 inherit (prev.luv) pname version meta src; 336 337 cmakeFlags = [ 338 "-DBUILD_SHARED_LIBS=ON" 339 "-DBUILD_MODULE=OFF" 340 "-DWITH_SHARED_LIBUV=ON" 341 ]; 342 343 buildInputs = [ pkgs.libuv ]; 344 345 nativeBuildInputs = [ pkgs.pkg-config pkgs.cmake ] 346 ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.fixDarwinDylibNames ]; 347 }; 348 349 luv = prev.lib.overrideLuarocks prev.luv (drv: { 350 351 buildInputs = [ pkgs.pkg-config pkgs.libuv ]; 352 353 doInstallCheck = true; 354 355 # Use system libuv instead of building local and statically linking 356 extraVariables = { 357 "WITH_SHARED_LIBUV" = "ON"; 358 }; 359 360 # we unset the LUA_PATH since the hook erases the interpreter defaults (To fix) 361 installCheckPhase = '' 362 unset LUA_PATH 363 rm tests/test-{dns,thread}.lua 364 lua tests/run.lua 365 ''; 366 367 passthru.libluv = final.libluv; 368 369 }); 370 371 lyaml = prev.lib.overrideLuarocks prev.lyaml (oa: { 372 buildInputs = [ 373 pkgs.libyaml 374 ]; 375 }); 376 377 mpack = prev.lib.overrideLuarocks prev.mpack (drv: { 378 buildInputs = [ pkgs.libmpack ]; 379 # the rockspec doesn't use the makefile so you may need to export more flags 380 USE_SYSTEM_LUA = "yes"; 381 USE_SYSTEM_MPACK = "yes"; 382 }); 383 384 rapidjson = prev.rapidjson.overrideAttrs(oa: { 385 preBuild = '' 386 sed -i '/set(CMAKE_CXX_FLAGS/d' CMakeLists.txt 387 sed -i '/set(CMAKE_C_FLAGS/d' CMakeLists.txt 388 ''; 389 }); 390 391 readline = (prev.lib.overrideLuarocks prev.readline (drv: { 392 unpackCmd = '' 393 unzip "$curSrc" 394 tar xf *.tar.gz 395 ''; 396 propagatedBuildInputs = prev.readline.propagatedBuildInputs ++ [ pkgs.readline.out ]; 397 extraVariables = rec { 398 READLINE_INCDIR = "${pkgs.readline.dev}/include"; 399 HISTORY_INCDIR = READLINE_INCDIR; 400 }; 401 })).overrideAttrs (old: { 402 # Without this, source root is wrongly set to ./readline-2.6/doc 403 setSourceRoot = '' 404 sourceRoot=./readline-3.0 405 ''; 406 }); 407 408 std-_debug = prev.std-_debug.overrideAttrs(oa: { 409 # run make to generate lib/std/_debug/version.lua 410 preConfigure = '' 411 make all 412 ''; 413 }); 414 415 std-normalize = prev.std-normalize.overrideAttrs(oa: { 416 # run make to generate lib/std/_debug/version.lua 417 preConfigure = '' 418 make all 419 ''; 420 }); 421 422 # TODO just while testing, remove afterwards 423 # toVimPlugin should do it instead 424 gitsigns-nvim = prev.gitsigns-nvim.overrideAttrs(oa: { 425 nativeBuildInputs = oa.nativeBuildInputs or [] ++ [ pkgs.vimUtils.vimGenDocHook ]; 426 }); 427 428 # aliases 429 cjson = prev.lua-cjson; 430}