diff options
author | binarycat <binarycat@envs.net> | 2024-02-15 15:34:40 -0500 |
---|---|---|
committer | Matthieu Coudron <886074+teto@users.noreply.github.com> | 2024-02-21 23:43:11 +0100 |
commit | 90aaea8dfb3731c7b97b0f0d5d280124b5dc2f59 (patch) | |
tree | 224ac1f9719732c32bc8bfe83d8aafc0c4889892 /pkgs/development/interpreters | |
parent | 897e2da9daaaabfaf0bf2d3fbf6cba6529c159ef (diff) | |
download | nixlib-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.sh | 5 |
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}" } |