luaPackages: copy passthruFun from python

Artturin 39571bd6 bdb8ca17

+150 -95
+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 - , 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 - , namePrefix ? if lua.pkgs.isLuaJIT 18 - then lua.name + "-" 19 - else "lua" + lua.luaversion + "-" 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 + 5 + let 6 + 7 + # Common passthru for all lua interpreters. 8 + # copied from python 9 + passthruFun = 10 + { executable 11 + , sourceVersion 12 + , luaversion 13 + , packageOverrides 14 + , luaOnBuildForBuild 15 + , luaOnBuildForHost 16 + , luaOnBuildForTarget 17 + , luaOnHostForHost 18 + , luaOnTargetForTarget 19 + , luaAttr ? null 20 + , self # is luaOnHostForTarget 21 + }: let 22 + luaPackages = callPackage 23 + # Function that when called 24 + # - imports lua-packages.nix 25 + # - adds spliced package sets to the package set 26 + # - applies overrides from `packageOverrides` 27 + ({ lua, overrides, callPackage, splicePackages, newScope }: let 28 + luaPackagesFun = callPackage ../../../top-level/lua-packages.nix { 29 + lua = self; 30 + }; 31 + generatedPackages = if (builtins.pathExists ../../lua-modules/generated-packages.nix) then 32 + (final: prev: callPackage ../../lua-modules/generated-packages.nix { inherit (final) callPackage; } final prev) 33 + else (final: prev: {}); 34 + overridenPackages = callPackage ../../lua-modules/overrides.nix { }; 35 + 36 + otherSplices = { 37 + selfBuildBuild = luaOnBuildForBuild.pkgs; 38 + selfBuildHost = luaOnBuildForHost.pkgs; 39 + selfBuildTarget = luaOnBuildForTarget.pkgs; 40 + selfHostHost = luaOnHostForHost.pkgs; 41 + selfTargetTarget = luaOnTargetForTarget.pkgs or {}; 42 + }; 43 + keep = self: { }; 44 + extra = spliced0: {}; 45 + extensions = lib.composeManyExtensions [ 46 + generatedPackages 47 + overridenPackages 48 + overrides 49 + ]; 50 + in lib.makeScopeWithSplicing 51 + splicePackages 52 + newScope 53 + otherSplices 54 + keep 55 + extra 56 + (lib.extends extensions luaPackagesFun)) 57 + { 58 + overrides = packageOverrides; 59 + lua = self; 60 + }; 61 + in rec { 62 + buildEnv = callPackage ./wrapper.nix { 63 + lua = self; 64 + inherit (luaPackages) requiredLuaModules; 65 + }; 66 + withPackages = import ./with-packages.nix { inherit buildEnv luaPackages;}; 67 + pkgs = luaPackages; 68 + interpreter = "${self}/bin/${executable}"; 69 + inherit executable luaversion sourceVersion; 70 + luaOnBuild = luaOnBuildForHost.override { inherit packageOverrides; self = luaOnBuild; }; 71 + 72 + inherit luaAttr; 73 + }; 74 + 75 + in 76 + 4 77 rec { 5 78 lua5_4 = callPackage ./interpreter.nix { 79 + self = lua5_4; 6 80 sourceVersion = { major = "5"; minor = "4"; patch = "3"; }; 7 81 hash = "1yxvjvnbg4nyrdv10bq42gz6dr66pyan28lgzfygqfwy2rv24qgq"; 8 82 makeWrapper = makeBinaryWrapper; 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 + self = lua5_4_compat; 31 107 compat = true; 32 108 }); 33 109 34 110 lua5_3 = callPackage ./interpreter.nix { 111 + self = lua5_3; 35 112 sourceVersion = { major = "5"; minor = "3"; patch = "6"; }; 36 113 hash = "0q3d8qhd7p0b7a4mh9g7fxqksqfs6mr1nav74vq26qvkp2dxcpzw"; 37 114 makeWrapper = makeBinaryWrapper; 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 + self = lua5_3_compat; 44 123 compat = true; 45 124 }); 46 125 47 126 48 127 lua5_2 = callPackage ./interpreter.nix { 128 + self = lua5_2; 49 129 sourceVersion = { major = "5"; minor = "2"; patch = "4"; }; 50 130 hash = "0jwznq0l8qg9wh5grwg07b5cy3lzngvl5m2nl1ikp6vqssmf9qmr"; 51 131 makeWrapper = makeBinaryWrapper; 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 + self = lua5_2_compat; 58 140 compat = true; 59 141 }); 60 142 61 143 62 144 lua5_1 = callPackage ./interpreter.nix { 145 + self = lua5_1; 63 146 sourceVersion = { major = "5"; minor = "1"; patch = "5"; }; 64 147 hash = "2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333"; 65 148 makeWrapper = makeBinaryWrapper; 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 - inherit callPackage lib; 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 - inherit callPackage; 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 + , self 5 6 , packageOverrides ? (final: prev: {}) 7 + , pkgsBuildBuild 8 + , pkgsBuildHost 9 + , pkgsBuildTarget 10 + , pkgsHostHost 11 + , pkgsTargetTarget 6 12 , sourceVersion 7 13 , hash 14 + , passthruFun 8 15 , patches ? [] 9 16 , postConfigure ? null 10 17 , postBuild ? null 11 18 , staticOnly ? stdenv.hostPlatform.isStatic 12 - }: 19 + , luaAttr ? "lua${sourceVersion.major}_${sourceVersion.minor}" 20 + } @ inputs: 13 21 let 14 - luaversion = with sourceVersion; "${major}.${minor}"; 22 + luaPackages = self.pkgs; 15 23 16 - luaPackages = callPackage ../../lua-modules { 17 - lua = self; 18 - overrides = packageOverrides; 19 - packagesAttr = "lua${lib.replaceChars ["."] ["_"] luaversion}.pkgs"; 20 - }; 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 + in 31 36 32 - self = stdenv.mkDerivation rec { 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 - passthru = rec { 129 - inherit luaversion; 130 - buildEnv = callPackage ./wrapper.nix { 131 - lua = self; 132 - inherit makeWrapper; 133 - inherit (luaPackages) requiredLuaModules; 134 - }; 135 - withPackages = import ./with-packages.nix { inherit buildEnv luaPackages;}; 136 - pkgs = luaPackages; 137 - interpreter = "${self}/bin/lua"; 133 + # copied from python 134 + passthru = let 135 + # When we override the interpreter we also need to override the spliced versions of the interpreter 136 + inputs' = lib.filterAttrs (n: v: ! lib.isDerivation v && n != "passthruFun") inputs; 137 + override = attr: let lua = attr.override (inputs' // { self = lua; }); in lua; 138 + in passthruFun rec { 139 + inherit self luaversion packageOverrides luaAttr sourceVersion; 140 + executable = "lua"; 141 + luaOnBuildForBuild = override pkgsBuildBuild.${luaAttr}; 142 + luaOnBuildForHost = override pkgsBuildHost.${luaAttr}; 143 + luaOnBuildForTarget = override pkgsBuildTarget.${luaAttr}; 144 + luaOnHostForHost = override pkgsHostHost.${luaAttr}; 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 - }; 155 - in self 162 + }
+3 -3
pkgs/development/interpreters/luajit/2.0.nix
··· 1 - { self, callPackage, lib }: 1 + { self, callPackage, lib, passthruFun }: 2 2 callPackage ./default.nix { 3 - inherit self; 4 - packagesAttr = "luajit_2_0.pkgs"; 3 + sourceVersion = { major = "2"; minor = "0"; patch = "5"; }; 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 - { self, callPackage }: 1 + { self, callPackage, passthruFun }: 2 2 callPackage ./default.nix { 3 - inherit self; 4 - packagesAttr = "luajit_2_1.pkgs"; 3 + sourceVersion = { major = "2"; minor = "1"; patch = "0"; }; 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 - , name ? "luajit-${version}" 6 5 , isStable 7 6 , hash 8 7 , rev 9 8 , version 10 - , packagesAttr 11 9 , extraMeta ? { } 12 10 , callPackage 13 11 , self 14 12 , packageOverrides ? (final: prev: {}) 13 + , pkgsBuildBuild 14 + , pkgsBuildHost 15 + , pkgsBuildTarget 16 + , pkgsHostHost 17 + , pkgsTargetTarget 18 + , sourceVersion 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 - }: 31 + , luaAttr ? "luajit_${sourceVersion.major}_${sourceVersion.minor}" 32 + } @ inputs: 27 33 assert enableJITDebugModule -> enableJIT; 28 34 assert enableGDBJITSupport -> enableJIT; 29 35 assert enableValgrindSupport -> valgrind != null; 30 36 let 31 - luaPackages = callPackage ../../lua-modules { 32 - lua = self; 33 - overrides = packageOverrides; 34 - inherit packagesAttr; 35 - }; 37 + 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 - inherit name version; 53 + pname = "luajit"; 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 - passthru = rec { 107 - buildEnv = callPackage ../lua-5/wrapper.nix { 108 - lua = self; 109 - inherit (luaPackages) requiredLuaModules; 110 - }; 111 - withPackages = import ../lua-5/with-packages.nix { inherit buildEnv luaPackages; }; 112 - pkgs = luaPackages; 113 - interpreter = "${self}/bin/lua"; 110 + # copied from python 111 + passthru = let 112 + # When we override the interpreter we also need to override the spliced versions of the interpreter 113 + inputs' = lib.filterAttrs (n: v: ! lib.isDerivation v && n != "passthruFun") inputs; 114 + override = attr: let lua = attr.override (inputs' // { self = lua; }); in lua; 115 + in passthruFun rec { 116 + inherit self luaversion packageOverrides luaAttr sourceVersion; 117 + executable = "lua"; 118 + luaOnBuildForBuild = override pkgsBuildBuild.${luaAttr}; 119 + luaOnBuildForHost = override pkgsBuildHost.${luaAttr}; 120 + luaOnBuildForTarget = override pkgsBuildTarget.${luaAttr}; 121 + luaOnHostForHost = override pkgsHostHost.${luaAttr}; 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 - # inspired by pkgs/development/haskell-modules/default.nix 2 - { pkgs, lib 3 - , lua 4 - , packagesAttr 5 - , stdenv 6 - , callPackage 7 - , overrides ? (final: prev: {}) 8 - }: 9 - 10 - let 11 - 12 - inherit (lib) extends; 13 - 14 - initialPackages = import ../../top-level/lua-packages.nix { 15 - inherit lua pkgs lib stdenv; 16 - }; 17 - 18 - overridenPackages = callPackage ./overrides.nix { }; 19 - 20 - generatedPackages = if (builtins.pathExists ./generated-packages.nix) then 21 - (final: prev: callPackage ./generated-packages.nix { inherit (final) callPackage; } final prev) else (final: prev: {}); 22 - 23 - extensions = lib.composeManyExtensions [ 24 - generatedPackages 25 - overridenPackages 26 - overrides 27 - ]; 28 - 29 - otherSplices = let 30 - packagesAttrFun = set: lib.getAttrFromPath (lib.splitString "." packagesAttr) set; 31 - in { 32 - selfBuildBuild = packagesAttrFun pkgs.pkgsBuildBuild; 33 - selfBuildHost = packagesAttrFun pkgs.pkgsBuildHost; 34 - selfBuildTarget = packagesAttrFun pkgs.pkgsBuildTarget; 35 - selfHostHost = packagesAttrFun pkgs.pkgsHostHost; 36 - selfTargetTarget = if pkgs.pkgsTargetTarget.__raw or false then {} else packagesAttrFun pkgs.pkgsTargetTarget; # might be missing; 37 - }; 38 - keep = self: { }; 39 - extra = spliced0: { }; 40 - 41 - in 42 - lib.makeScopeWithSplicing pkgs.splicePackages pkgs.newScope otherSplices keep extra 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 - { stdenv 8 + { pkgs 9 + , stdenv 10 + , lib 9 11 , lua 10 - , pkgs 11 - , lib 12 12 }: 13 + 13 14 14 15 self: 15 16