about summary refs log tree commit diff
path: root/pkgs/development/interpreters/lua-5
diff options
context:
space:
mode:
authorMatthieu Coudron <886074+teto@users.noreply.github.com>2024-03-06 22:01:08 +0100
committerMatthieu Coudron <886074+teto@users.noreply.github.com>2024-03-16 14:37:09 +0100
commit640cdcb814ce7476d002a306816ed9d88baaf4f3 (patch)
treede786392fdbe331fd011065b4df87edd03801aa6 /pkgs/development/interpreters/lua-5
parentb00700a4e41499fe4141d83c2a43ad6b1b91162c (diff)
lua: smarter/more correct patching
In order to have the 'reset' LUA_PATH (aka `;;`) work, and for purity
reasons(removing /usr paths) we(I) decided to patch the lua interpreters default LUA_PATH.
Turns out the interpreters have different defaults and the patch was too
coarse.
There is smarter patching that can be done via LUA_ROOT.

Also luajit doesn't need patching at all since LUA_ROOT is set via the
build system.
Diffstat (limited to 'pkgs/development/interpreters/lua-5')
-rw-r--r--pkgs/development/interpreters/lua-5/hooks/default.nix1
-rw-r--r--pkgs/development/interpreters/lua-5/interpreter.nix25
2 files changed, 10 insertions, 16 deletions
diff --git a/pkgs/development/interpreters/lua-5/hooks/default.nix b/pkgs/development/interpreters/lua-5/hooks/default.nix
index 6c303f770decc..ca9c15e8a3b1e 100644
--- a/pkgs/development/interpreters/lua-5/hooks/default.nix
+++ b/pkgs/development/interpreters/lua-5/hooks/default.nix
@@ -8,7 +8,6 @@
 
 let
   callPackage = lua.pkgs.callPackage;
-  luaInterpreter = lua.interpreter;
 in {
 
   lua-setup-hook = LuaPathSearchPaths: LuaCPathSearchPaths:
diff --git a/pkgs/development/interpreters/lua-5/interpreter.nix b/pkgs/development/interpreters/lua-5/interpreter.nix
index 4091fdd49e0e4..2856951d9fbdf 100644
--- a/pkgs/development/interpreters/lua-5/interpreter.nix
+++ b/pkgs/development/interpreters/lua-5/interpreter.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation (finalAttrs:
   let
     luaPackages = self.pkgs;
 
-    luaversion = lib.versions.majorMinor version;
+    luaversion = lib.versions.majorMinor finalAttrs.version;
 
     plat = if (stdenv.isLinux && lib.versionOlder self.luaversion "5.4") then "linux"
           else if (stdenv.isLinux && lib.versionAtLeast self.luaversion "5.4") then "linux-readline"
@@ -45,7 +45,7 @@ stdenv.mkDerivation (finalAttrs:
   outputs = [ "out" "doc" ];
 
   src = fetchurl {
-    url = "https://www.lua.org/ftp/${finalAttrs.pname}-${finalAttrs.version}.tar.gz";
+    url = "https://www.lua.org/ftp/lua-${finalAttrs.version}.tar.gz";
     sha256 = hash;
   };
 
@@ -60,16 +60,11 @@ stdenv.mkDerivation (finalAttrs:
 
   inherit patches;
 
-  # we can't pass flags to the lua makefile because for portability, everything is hardcoded
   postPatch = ''
-    {
-      echo -e '
-        #undef  LUA_PATH_DEFAULT
-        #define LUA_PATH_DEFAULT "./share/lua/${luaversion}/?.lua;./?.lua;./?/init.lua"
-        #undef  LUA_CPATH_DEFAULT
-        #define LUA_CPATH_DEFAULT "./lib/lua/${luaversion}/?.so;./?.so;./lib/lua/${luaversion}/loadall.so"
-      '
-    } >> src/luaconf.h
+      sed -i "s@#define LUA_ROOT[[:space:]]*\"/usr/local/\"@#define LUA_ROOT  \"$out/\"@g" src/luaconf.h
+
+      # abort if patching didn't work
+      grep $out src/luaconf.h
   '' + lib.optionalString (!stdenv.isDarwin && !staticOnly) ''
     # Add a target for a shared library to the Makefile.
     sed -e '1s/^/LUA_SO = liblua.so/' \
@@ -102,8 +97,8 @@ stdenv.mkDerivation (finalAttrs:
     makeFlagsArray+=(${lib.optionalString stdenv.isDarwin "CC=\"$CC\""}${lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) " 'AR=${stdenv.cc.targetPrefix}ar rcu'"})
 
     installFlagsArray=( TO_BIN="lua luac" INSTALL_DATA='cp -d' \
-      TO_LIB="${if stdenv.isDarwin then "liblua.${version}.dylib"
-                else ("liblua.a" + lib.optionalString (!staticOnly) " liblua.so liblua.so.${luaversion} liblua.so.${version}" )}" )
+      TO_LIB="${if stdenv.isDarwin then "liblua.${finalAttrs.version}.dylib"
+                else ("liblua.a" + lib.optionalString (!staticOnly) " liblua.so liblua.so.${luaversion} liblua.so.${finalAttrs.version}" )}" )
 
     runHook postConfigure
   '';
@@ -128,7 +123,7 @@ stdenv.mkDerivation (finalAttrs:
 
     Name: Lua
     Description: An Extensible Extension Language
-    Version: ${version}
+    Version: ${finalAttrs.version}
     Requires:
     Libs: -L$out/lib -llua
     Cflags: -I$out/include
@@ -138,7 +133,7 @@ stdenv.mkDerivation (finalAttrs:
     ln -s "$out/lib/pkgconfig/lua.pc" "$out/lib/pkgconfig/lua${lib.replaceStrings [ "." ] [ "" ] luaversion}.pc"
 
     # Make documentation outputs of different versions co-installable.
-    mv $out/share/doc/lua $out/share/doc/lua-${version}
+    mv $out/share/doc/lua $out/share/doc/lua-${finalAttrs.version}
   '';
 
   # copied from python