diff options
author | Matthieu C. <886074+teto@users.noreply.github.com> | 2024-04-24 00:30:33 +0200 |
---|---|---|
committer | Matthieu C. <886074+teto@users.noreply.github.com> | 2024-05-01 00:18:44 +0200 |
commit | 6427d04c2364b79e07d59c0853f86be65e4b7fd0 (patch) | |
tree | 8b341b5d19ef4a1cba8b857e96f359317c2b9669 /pkgs/development/interpreters/lua-5 | |
parent | 80011bef3cc3e5b2d860660bd5e3c04e30739fc7 (diff) |
lua:: reworked setup-hook to source utils.sh
which contains lua shell utilities that can be reused during the creation of an environment. Makes sense because the generation of LUA_PATH is a bit different than other ecosystems.
Diffstat (limited to 'pkgs/development/interpreters/lua-5')
8 files changed, 70 insertions, 73 deletions
diff --git a/pkgs/development/interpreters/lua-5/build-luarocks-package.nix b/pkgs/development/interpreters/lua-5/build-luarocks-package.nix index cb1b9825e14e8..b4eec6d8ff2dd 100644 --- a/pkgs/development/interpreters/lua-5/build-luarocks-package.nix +++ b/pkgs/development/interpreters/lua-5/build-luarocks-package.nix @@ -168,6 +168,7 @@ let buildPhase = '' runHook preBuild + source ${lua}/nix-support/utils.sh nix_debug "Using LUAROCKS_CONFIG=$LUAROCKS_CONFIG" LUAROCKS_EXTRA_ARGS="" diff --git a/pkgs/development/interpreters/lua-5/hooks/default.nix b/pkgs/development/interpreters/lua-5/hooks/default.nix index ca9c15e8a3b1e..02716568acfd5 100644 --- a/pkgs/development/interpreters/lua-5/hooks/default.nix +++ b/pkgs/development/interpreters/lua-5/hooks/default.nix @@ -10,19 +10,6 @@ let callPackage = lua.pkgs.callPackage; in { - lua-setup-hook = LuaPathSearchPaths: LuaCPathSearchPaths: - let - hook = ./setup-hook.sh; - in runCommand "lua-setup-hook.sh" { - # hum doesn't seem to like caps !! BUG ? - luapathsearchpaths=lib.escapeShellArgs LuaPathSearchPaths; - luacpathsearchpaths=lib.escapeShellArgs LuaCPathSearchPaths; - } '' - cp ${hook} hook.sh - substituteAllInPlace hook.sh - mv hook.sh $out - ''; - luarocksCheckHook = callPackage ({ luarocks }: makeSetupHook { name = "luarocks-check-hook"; diff --git a/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh b/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh index 3027021661393..0e9aa689706e7 100644 --- a/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh +++ b/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh @@ -1,56 +1,4 @@ # set -e -nix_print() { - if [ ${NIX_DEBUG:-0} -ge $1 ]; then - echo "$2" - fi -} - -nix_debug() { - nix_print 3 "$1" -} - -addToLuaSearchPathWithCustomDelimiter() { - local varName="$1" - local absPattern="$2" - - # export only if we haven't already got this dir in the search path - if [[ ${!varName-} == *"$absPattern"* ]]; then return; fi - - # if the path variable has not yet been set, initialize it to ";;" - # this is a magic value that will be replaced by the default, - # allowing relative modules to be used even when there are system modules. - if [[ ! -v "${varName}" ]]; then export "${varName}=;;"; fi - - # export only if the folder contains lua files - shopt -s globstar - - local adjustedPattern="${absPattern/\?/\*\*\/\*}" - for _file in $adjustedPattern; do - export "${varName}=${!varName:+${!varName};}${absPattern}" - shopt -u globstar - return; - done - shopt -u globstar -} - -addToLuaPath() { - local dir="$1" - - if [[ ! -d "$dir" ]]; then - nix_debug "$dir not a directory abort" - return 0 - fi - cd "$dir" - for pattern in @luapathsearchpaths@; do - addToLuaSearchPathWithCustomDelimiter LUA_PATH "$PWD/$pattern" - done - - # LUA_CPATH - for pattern in @luacpathsearchpaths@; do - addToLuaSearchPathWithCustomDelimiter LUA_CPATH "$PWD/$pattern" - done - cd - >/dev/null -} - +source ./utils.sh addEnvHooks "$hostOffset" addToLuaPath diff --git a/pkgs/development/interpreters/lua-5/interpreter.nix b/pkgs/development/interpreters/lua-5/interpreter.nix index 2856951d9fbdf..7775fa5c84939 100644 --- a/pkgs/development/interpreters/lua-5/interpreter.nix +++ b/pkgs/development/interpreters/lua-5/interpreter.nix @@ -3,6 +3,7 @@ , makeWrapper , self , packageOverrides ? (final: prev: {}) +, substituteAll , pkgsBuildBuild , pkgsBuildHost , pkgsBuildTarget @@ -51,9 +52,10 @@ stdenv.mkDerivation (finalAttrs: LuaPathSearchPaths = luaPackages.luaLib.luaPathList; LuaCPathSearchPaths = luaPackages.luaLib.luaCPathList; - setupHook = luaPackages.lua-setup-hook - finalAttrs.LuaPathSearchPaths - finalAttrs.LuaCPathSearchPaths; + setupHook = builtins.toFile "lua-setup-hook" '' + source @out@/nix-support/utils.sh + addEnvHooks "$hostOffset" addToLuaPath + ''; nativeBuildInputs = [ makeWrapper ]; buildInputs = [ readline ]; @@ -107,7 +109,12 @@ stdenv.mkDerivation (finalAttrs: inherit postBuild; postInstall = '' - mkdir -p "$out/share/doc/lua" "$out/lib/pkgconfig" + mkdir -p "$out/nix-support" "$out/share/doc/lua" "$out/lib/pkgconfig" + cp ${substituteAll { + src = ./utils.sh; + luapathsearchpaths=lib.escapeShellArgs finalAttrs.LuaPathSearchPaths; + luacpathsearchpaths=lib.escapeShellArgs finalAttrs.LuaCPathSearchPaths; + }} $out/nix-support/utils.sh mv "doc/"*.{gif,png,css,html} "$out/share/doc/lua/" rmdir $out/{share,lib}/lua/${luaversion} $out/{share,lib}/lua mkdir -p "$out/lib/pkgconfig" diff --git a/pkgs/development/interpreters/lua-5/utils.sh b/pkgs/development/interpreters/lua-5/utils.sh new file mode 100644 index 0000000000000..5491f8f7ad2d5 --- /dev/null +++ b/pkgs/development/interpreters/lua-5/utils.sh @@ -0,0 +1,54 @@ +#!/bin/sh +nix_print() { + if [ ${NIX_DEBUG:-0} -ge $1 ]; then + echo "$2" + fi +} + +nix_debug() { + nix_print 3 "$1" +} + +addToLuaSearchPathWithCustomDelimiter() { + local varName="$1" + local absPattern="$2" + + # export only if we haven't already got this dir in the search path + if [[ ${!varName-} == *"$absPattern"* ]]; then return; fi + + # if the path variable has not yet been set, initialize it to ";;" + # this is a magic value that will be replaced by the default, + # allowing relative modules to be used even when there are system modules. + if [[ ! -v "${varName}" ]]; then export "${varName}=;;"; fi + + # export only if the folder contains lua files + shopt -s globstar + + local adjustedPattern="${absPattern/\?/\*\*\/\*}" + for _file in $adjustedPattern; do + export "${varName}=${!varName:+${!varName};}${absPattern}" + shopt -u globstar + return; + done + shopt -u globstar +} + +addToLuaPath() { + local dir="$1" + + if [[ ! -d "$dir" ]]; then + nix_debug "$dir not a directory abort" + return 0 + fi + cd "$dir" + for pattern in @luapathsearchpaths@; do + addToLuaSearchPathWithCustomDelimiter LUA_PATH "$PWD/$pattern" + done + + # LUA_CPATH + for pattern in @luacpathsearchpaths@; do + addToLuaSearchPathWithCustomDelimiter LUA_CPATH "$PWD/$pattern" + done + cd - >/dev/null +} + diff --git a/pkgs/development/interpreters/lua-5/wrap-lua.nix b/pkgs/development/interpreters/lua-5/wrap-lua.nix index b6e24a44ee656..c5e7c806cd179 100644 --- a/pkgs/development/interpreters/lua-5/wrap-lua.nix +++ b/pkgs/development/interpreters/lua-5/wrap-lua.nix @@ -11,6 +11,4 @@ makeSetupHook { propagatedBuildInputs = [ makeWrapper ]; substitutions.executable = lua.interpreter; substitutions.lua = lua; - substitutions.LuaPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths; - substitutions.LuaCPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths; } ./wrap.sh diff --git a/pkgs/development/interpreters/lua-5/wrap.sh b/pkgs/development/interpreters/lua-5/wrap.sh index 5941ff4a6b985..7d59cf6095775 100644 --- a/pkgs/development/interpreters/lua-5/wrap.sh +++ b/pkgs/development/interpreters/lua-5/wrap.sh @@ -3,6 +3,8 @@ # variable is passed in from the buildLuarocksPackage function. set -e +source @lua@/nix-support/utils.sh + wrapLuaPrograms() { wrapLuaProgramsIn "$out/bin" "$out $luaPath" } diff --git a/pkgs/development/interpreters/lua-5/wrapper.nix b/pkgs/development/interpreters/lua-5/wrapper.nix index b5166739351eb..07ea75605c0f9 100644 --- a/pkgs/development/interpreters/lua-5/wrapper.nix +++ b/pkgs/development/interpreters/lua-5/wrapper.nix @@ -20,11 +20,11 @@ let nativeBuildInputs = [ makeWrapper - (lua.pkgs.lua-setup-hook lua.LuaPathSearchPaths lua.LuaCPathSearchPaths) ]; # we create wrapper for the binaries in the different packages postBuild = '' + source ${lua}/nix-support/utils.sh if [ -L "$out/bin" ]; then unlink "$out/bin" fi |