about summary refs log tree commit diff
path: root/pkgs/development/interpreters
diff options
context:
space:
mode:
authorbinarycat <binarycat@envs.net>2024-02-15 15:34:40 -0500
committerMatthieu Coudron <886074+teto@users.noreply.github.com>2024-02-21 23:43:11 +0100
commit90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59 (patch)
tree224ac1f9719732c32bc8bfe83d8aafc0c4889892 /pkgs/development/interpreters
parent897e2da9daaaabfaf0bf2d3fbf6cba6529c159ef (diff)
downloadnixlib-90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59.tar
nixlib-90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59.tar.gz
nixlib-90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59.tar.bz2
nixlib-90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59.tar.lz
nixlib-90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59.tar.xz
nixlib-90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59.tar.zst
nixlib-90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59.zip
lua*: support relative modules even when there are system modules
previously, when the lua setup hook found a system lua module,
it would simply add that library to LUA_PATH, meaning the default
path would no longer be used.

for luajit, this bug would always occur, due to it having
several inbuilt libraries such as luabitop.

lua5 still passed unit tests, simply because the test
environment doesn't include any system lua libaries,
but the bug would still occur if lua5 was used in a derivation with
a buildInput from luaPackages, since that package would be found by
the envHook and overwrite the default path.

now, the setup hook will use any system module paths in addition to
the default path, instead of overriding it.
Diffstat (limited to 'pkgs/development/interpreters')
-rw-r--r--pkgs/development/interpreters/lua-5/hooks/setup-hook.sh5
1 files changed, 5 insertions, 0 deletions
diff --git a/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh b/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh
index 1c445b82afde..f5843d888247 100644
--- a/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh
+++ b/pkgs/development/interpreters/lua-5/hooks/setup-hook.sh
@@ -22,6 +22,11 @@ addToLuaSearchPathWithCustomDelimiter() {
   # 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 "${varName}=${!varName:+${!varName};}${absPattern}"
 }