summaryrefslogtreecommitdiffstats
path: root/pkgs/development/interpreters/lua-5
diff options
context:
space:
mode:
authorAlexei Robyn <shados@shados.net>2019-08-21 23:03:11 +1000
committerFrederik Rietdijk <freddyrietdijk@fridh.nl>2019-09-01 17:42:20 +0200
commitc62337d9c7ff70e9bdfe317388c4fa5d6202142a (patch)
tree4d1a9169d2b04723184e18f3b68d9e8e9c319310 /pkgs/development/interpreters/lua-5
parent59d85b9910e8b76be9b2970bb268c6689bebc205 (diff)
lua*Packages: Consolidate separate setup hooks together
- Lua packages now consistently use LUA_PATH/LUA_CPATH rather than a mix of those and NIX_LUA_PATH/NIX_LUA_CPATH - Lua libraries are now consistently only added to the search path variables if: 1) The library actually has a corresponding directory to search 2) The library is not already present in the search path This should help prevent the search paths from growing overly large - Fixed bugs in some path helpers - Changed the affected shell script indentation to 2 spaces; nixpkgs shell scripts are inconsistently split between 2 and 4 space indentation, but 2 matches better with the Nix expressions, so IMO it makes more sense
Diffstat (limited to 'pkgs/development/interpreters/lua-5')
-rw-r--r--pkgs/development/interpreters/lua-5/setup-hook.sh60
-rw-r--r--pkgs/development/interpreters/lua-5/wrap.sh143
-rw-r--r--pkgs/development/interpreters/lua-5/wrapper.nix2
3 files changed, 102 insertions, 103 deletions
diff --git a/pkgs/development/interpreters/lua-5/setup-hook.sh b/pkgs/development/interpreters/lua-5/setup-hook.sh
index 3989bedffdb1..f7e56b62ac90 100644
--- a/pkgs/development/interpreters/lua-5/setup-hook.sh
+++ b/pkgs/development/interpreters/lua-5/setup-hook.sh
@@ -1,47 +1,47 @@
# set -e
nix_print() {
- if [ ${NIX_DEBUG:-0} -ge $1 ]; then
- echo "$2"
- fi
+ if [ ${NIX_DEBUG:-0} -ge $1 ]; then
+ echo "$2"
+ fi
}
nix_debug() {
- nix_print 3 "$1"
+ nix_print 3 "$1"
}
addToLuaSearchPathWithCustomDelimiter() {
- local varName="$1"
- local absPattern="$2"
- # delete longest match starting from the lua placeholder '?'
- local topDir="${absPattern%%\?*}"
+ local varName="$1"
+ local absPattern="$2"
+ # delete longest match starting from the lua placeholder '?'
+ local topDir="${absPattern%%\?*}"
- # export only if the folder exists else LUA_PATH grows too big
- if [ ! -d "$topDir" ]; then return; fi
+ # export only if the folder exists else LUA_PATH/LUA_CPATH grow too large
+ if [[ ! -d "$topDir" ]]; then return; fi
- export "${varName}=${!varName:+${!varName};}${absPattern}"
+ # export only if we haven't already got this dir in the search path
+ if [[ ${!varName} == *"$absPattern"* ]]; then return; fi
+
+ export "${varName}=${!varName:+${!varName};}${absPattern}"
}
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 NIX_LUA_PATH "$PWD/$pattern"
- done
-
- # LUA_CPATH
- for pattern in @luacpathsearchpaths@;
- do
- addToLuaSearchPathWithCustomDelimiter NIX_LUA_CPATH "$PWD/$pattern"
- done
- cd - >/dev/null
+ 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
}
addEnvHooks "$hostOffset" addToLuaPath
-
diff --git a/pkgs/development/interpreters/lua-5/wrap.sh b/pkgs/development/interpreters/lua-5/wrap.sh
index 545a0ae271c4..5941ff4a6b98 100644
--- a/pkgs/development/interpreters/lua-5/wrap.sh
+++ b/pkgs/development/interpreters/lua-5/wrap.sh
@@ -4,73 +4,72 @@
set -e
wrapLuaPrograms() {
- wrapLuaProgramsIn "$out/bin" "$out $luaPath"
+ wrapLuaProgramsIn "$out/bin" "$out $luaPath"
}
# Builds environment variables like LUA_PATH and PATH walking through closure
# of dependencies.
buildLuaPath() {
- local luaPath="$1"
- local path
-
- # Create an empty table of paths (see doc on loadFromPropagatedInputs
- # for how this is used). Build up the program_PATH and program_LUA_PATH
- # variables.
- declare -A luaPathsSeen=()
- program_PATH=
- luaPathsSeen["@lua@"]=1
- addToSearchPath program_PATH @lua@/bin
- for path in $luaPath; do
- addToLuaPath "$path"
- done
+ local luaPath="$1"
+ local path
+
+ # Create an empty table of paths (see doc on loadFromPropagatedInputs
+ # for how this is used). Build up the program_PATH and program_LUA_PATH
+ # variables.
+ declare -A luaPathsSeen=()
+ program_PATH=
+ luaPathsSeen["@lua@"]=1
+ addToSearchPath program_PATH @lua@/bin
+ for path in $luaPath; do
+ addToLuaPath "$path"
+ done
}
-
# with an executable shell script which will set some environment variables
# and then call into the original binary (which has been given a .wrapped suffix).
# luaPath is a list of directories
wrapLuaProgramsIn() {
- local dir="$1"
- local luaPath="$2"
- local f
-
- buildLuaPath "$luaPath"
-
- if [ ! -d "$dir" ]; then
- nix_debug "$dir not a directory"
- return
+ local dir="$1"
+ local luaPath="$2"
+ local f
+
+ buildLuaPath "$luaPath"
+
+ if [ ! -d "$dir" ]; then
+ nix_debug "$dir not a directory"
+ return
+ fi
+
+ nix_debug "wrapping programs in [$dir]"
+
+ # Find all regular files in the output directory that are executable.
+ find "$dir" -type f -perm -0100 -print0 | while read -d "" f; do
+ # Rewrite "#! .../env lua" to "#! /nix/store/.../lua".
+ # Strip suffix, like "3" or "2.7m" -- we don't have any choice on which
+ # Lua to use besides one with this hook anyway.
+ if head -n1 "$f" | grep -q '#!.*/env.*\(lua\)'; then
+ sed -i "$f" -e "1 s^.*/env[ ]*\(lua\)[^ ]*^#! @executable@^"
fi
- nix_debug "wrapping programs in [$dir]"
-
- # Find all regular files in the output directory that are executable.
- find "$dir" -type f -perm -0100 -print0 | while read -d "" f; do
- # Rewrite "#! .../env lua" to "#! /nix/store/.../lua".
- # Strip suffix, like "3" or "2.7m" -- we don't have any choice on which
- # Lua to use besides one with this hook anyway.
- if head -n1 "$f" | grep -q '#!.*/env.*\(lua\)'; then
- sed -i "$f" -e "1 s^.*/env[ ]*\(lua\)[^ ]*^#! @executable@^"
- fi
-
- # wrapProgram creates the executable shell script described
- # above. The script will set LUA_(C)PATH and PATH variables!
- # (see pkgs/build-support/setup-hooks/make-wrapper.sh)
- local -a wrap_args=("$f"
- --prefix PATH ':' "$program_PATH"
- --prefix LUA_PATH ';' "$NIX_LUA_PATH"
- --prefix LUA_CPATH ';' "$NIX_LUA_CPATH"
- )
-
- # Add any additional arguments provided by makeWrapperArgs
- # argument to buildLuaPackage.
- # makeWrapperArgs
- local -a user_args="($makeWrapperArgs)"
- local -a wrapProgramArgs=("${wrap_args[@]}" "${user_args[@]}")
-
- # see setup-hooks/make-wrapper.sh
- wrapProgram "${wrapProgramArgs[@]}"
-
- done
+ # wrapProgram creates the executable shell script described
+ # above. The script will set LUA_(C)PATH and PATH variables!
+ # (see pkgs/build-support/setup-hooks/make-wrapper.sh)
+ local -a wrap_args=("$f"
+ --prefix PATH ':' "$program_PATH"
+ --prefix LUA_PATH ';' "$LUA_PATH"
+ --prefix LUA_CPATH ';' "$LUA_CPATH"
+ )
+
+ # Add any additional arguments provided by makeWrapperArgs
+ # argument to buildLuaPackage.
+ # makeWrapperArgs
+ local -a user_args="($makeWrapperArgs)"
+ local -a wrapProgramArgs=("${wrap_args[@]}" "${user_args[@]}")
+
+ # see setup-hooks/make-wrapper.sh
+ wrapProgram "${wrapProgramArgs[@]}"
+
+ done
}
# Adds the lib and bin directories to the LUA_PATH and PATH variables,
@@ -78,22 +77,22 @@ wrapLuaProgramsIn() {
# `propagated-native-build-inputs`, while avoiding duplicating paths by
# flagging the directories it has visited in `luaPathsSeen`.
loadFromPropagatedInputs() {
- local dir="$1"
- # Stop if we've already visited here.
- if [ -n "${luaPathsSeen[$dir]}" ]; then
- return;
- fi
- luaPathsSeen[$dir]=1
-
- addToLuaPath "$dir"
- addToSearchPath program_PATH $dir/bin
-
- # Inspect the propagated inputs (if they exist) and recur on them.
- local prop="$dir/nix-support/propagated-native-build-inputs"
- if [ -e "$prop" ]; then
- local new_path
- for new_path in $(cat $prop); do
- loadFromPropagatedInputs "$new_path"
- done
- fi
+ local dir="$1"
+ # Stop if we've already visited here.
+ if [ -n "${luaPathsSeen[$dir]}" ]; then
+ return
+ fi
+ luaPathsSeen[$dir]=1
+
+ addToLuaPath "$dir"
+ addToSearchPath program_PATH $dir/bin
+
+ # Inspect the propagated inputs (if they exist) and recur on them.
+ local prop="$dir/nix-support/propagated-native-build-inputs"
+ if [ -e "$prop" ]; then
+ local new_path
+ for new_path in $(cat $prop); do
+ loadFromPropagatedInputs "$new_path"
+ done
+ fi
}
diff --git a/pkgs/development/interpreters/lua-5/wrapper.nix b/pkgs/development/interpreters/lua-5/wrapper.nix
index 14bd4a416468..816744e61cff 100644
--- a/pkgs/development/interpreters/lua-5/wrapper.nix
+++ b/pkgs/development/interpreters/lua-5/wrapper.nix
@@ -43,7 +43,7 @@ let
rm -f "$out/bin/$prg"
if [ -x "$prg" ]; then
nix_debug "Making wrapper $prg"
- makeWrapper "$path/bin/$prg" "$out/bin/$prg" --suffix LUA_PATH ';' "$NIX_LUA_PATH" --suffix LUA_CPATH ';' "$NIX_LUA_CPATH" ${stdenv.lib.concatStringsSep " " makeWrapperArgs}
+ makeWrapper "$path/bin/$prg" "$out/bin/$prg" --suffix LUA_PATH ';' "$LUA_PATH" --suffix LUA_CPATH ';' "$LUA_CPATH" ${stdenv.lib.concatStringsSep " " makeWrapperArgs}
fi
fi
done