Skip to content

Commit

Permalink
lua*: support relative modules even when there are system modules
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
lolbinarycat authored and teto committed Feb 21, 2024
1 parent 897e2da commit 90aaea8
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions pkgs/development/interpreters/lua-5/hooks/setup-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
}

Expand Down

0 comments on commit 90aaea8

Please sign in to comment.