summaryrefslogtreecommitdiff
path: root/pkgs/development/interpreters/lua-5
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/interpreters/lua-5')
-rw-r--r--pkgs/development/interpreters/lua-5/5.4.darwin.patch48
-rw-r--r--pkgs/development/interpreters/lua-5/default.nix30
-rw-r--r--pkgs/development/interpreters/lua-5/interpreter.nix37
-rw-r--r--pkgs/development/interpreters/lua-5/liblua.so.patch60
-rw-r--r--pkgs/development/interpreters/lua-5/lua-dso.make (renamed from pkgs/development/interpreters/lua-5/lua-5.3-dso.make)6
5 files changed, 79 insertions, 102 deletions
diff --git a/pkgs/development/interpreters/lua-5/5.4.darwin.patch b/pkgs/development/interpreters/lua-5/5.4.darwin.patch
new file mode 100644
index 000000000000..eb16ed9c6897
--- /dev/null
+++ b/pkgs/development/interpreters/lua-5/5.4.darwin.patch
@@ -0,0 +1,48 @@
+--- a/Makefile 2021-05-14 22:39:14.407200562 +0300
++++ b/Makefile 2021-05-14 22:36:23.828513407 +0300
+@@ -41,7 +41,7 @@
+ # What to install.
+ TO_BIN= lua luac
+ TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp
+-TO_LIB= liblua.a
++TO_LIB= liblua.${version}.dylib
+ TO_MAN= lua.1 luac.1
+
+ # Lua version and release.
+@@ -60,6 +60,8 @@
+ cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
+ cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
+ cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)
++ ln -s -f liblua.${version}.dylib $(INSTALL_LIB)/liblua.${luaversion}.dylib
++ ln -s -f liblua.${luaversion}.dylib $(INSTALL_LIB)/liblua.dylib
+
+ uninstall:
+ cd src && cd $(INSTALL_BIN) && $(RM) $(TO_BIN)
+--- a/src/Makefile 2021-05-14 22:35:38.575051882 +0300
++++ b/src/Makefile 2021-05-14 22:35:33.584631206 +0300
+@@ -32,7 +32,7 @@
+
+ PLATS= guess aix bsd c89 freebsd generic linux linux-readline macosx mingw posix solaris
+
+-LUA_A= liblua.a
++LUA_A= liblua.${version}.dylib
+ CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o
+ LIB_O= lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o
+ BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS)
+@@ -57,11 +57,13 @@
+ a: $(ALL_A)
+
+ $(LUA_A): $(BASE_O)
+- $(AR) $@ $(BASE_O)
+- $(RANLIB) $@
++ $(CC) -dynamiclib -install_name $(out)/lib/liblua.${version}.dylib \
++ -compatibility_version ${version} -current_version ${version} \
++ -o liblua.${version}.dylib $^
+
+ $(LUA_T): $(LUA_O) $(LUA_A)
+- $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
++ $(CC) -fno-common $(MYLDFLAGS) \
++ -o $@ $(LUA_O) $(LUA_A) -L. -llua.${version} $(LIBS)
+
+ $(LUAC_T): $(LUAC_O) $(LUA_A)
+ $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)
diff --git a/pkgs/development/interpreters/lua-5/default.nix b/pkgs/development/interpreters/lua-5/default.nix
index 3a52d58ffaba..95b593fb5dbb 100644
--- a/pkgs/development/interpreters/lua-5/default.nix
+++ b/pkgs/development/interpreters/lua-5/default.nix
@@ -1,27 +1,12 @@
# similar to interpreters/python/default.nix
{ stdenv, lib, callPackage, fetchurl, fetchpatch }:
-let
- dsoPatch51 = fetchurl {
- url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/lua-arch.patch?h=packages/lua51";
- sha256 = "11fcyb4q55p4p7kdb8yp85xlw8imy14kzamp2khvcyxss4vw8ipw";
- name = "lua-arch.patch";
- };
-
- dsoPatch52 = fetchurl {
- url = "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/liblua.so.patch?h=packages/lua52";
- sha256 = "1by1dy4ql61f5c6njq9ibf9kaqm3y633g2q8j54iyjr4cxvqwqz9";
- name = "lua-arch.patch";
- };
-in rec {
+rec {
lua5_4 = callPackage ./interpreter.nix {
sourceVersion = { major = "5"; minor = "4"; patch = "2"; };
hash = "0ksj5zpj74n0jkamy3di1p6l10v4gjnd2zjnb453qc6px6bhsmqi";
- patches = [
- # build lua as a shared library as well, MIT-licensed from
- # https://github.com/archlinux/svntogit-packages/tree/packages/lua/trunk
- ./liblua.so.patch
- ];
+
+ patches = lib.optional stdenv.isDarwin ./5.4.darwin.patch;
};
lua5_4_compat = lua5_4.override({
@@ -35,11 +20,6 @@ in rec {
patches =
lib.optionals stdenv.isDarwin [ ./5.2.darwin.patch ];
- postConfigure = lib.optionalString (!stdenv.isDarwin) ''
- cat ${./lua-5.3-dso.make} >> src/Makefile
- sed -e 's/ALL_T *= */& $(LUA_SO)/' -i src/Makefile
- '';
-
postBuild = lib.optionalString (!stdenv.isDarwin) ''
( cd src; make $makeFlags "''${makeFlagsArray[@]}" liblua.so )
'';
@@ -53,7 +33,7 @@ in rec {
lua5_2 = callPackage ./interpreter.nix {
sourceVersion = { major = "5"; minor = "2"; patch = "4"; };
hash = "0jwznq0l8qg9wh5grwg07b5cy3lzngvl5m2nl1ikp6vqssmf9qmr";
- patches = if stdenv.isDarwin then [ ./5.2.darwin.patch ] else [ dsoPatch52 ];
+ patches = lib.optional stdenv.isDarwin ./5.2.darwin.patch;
};
lua5_2_compat = lua5_2.override({
@@ -64,7 +44,7 @@ in rec {
lua5_1 = callPackage ./interpreter.nix {
sourceVersion = { major = "5"; minor = "1"; patch = "5"; };
hash = "2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333";
- patches = (if stdenv.isDarwin then [ ./5.1.darwin.patch ] else [ dsoPatch51 ])
+ patches = (lib.optional stdenv.isDarwin ./5.1.darwin.patch)
++ [ ./CVE-2014-5461.patch ];
};
diff --git a/pkgs/development/interpreters/lua-5/interpreter.nix b/pkgs/development/interpreters/lua-5/interpreter.nix
index 35a074add097..fd8c47d751b3 100644
--- a/pkgs/development/interpreters/lua-5/interpreter.nix
+++ b/pkgs/development/interpreters/lua-5/interpreter.nix
@@ -11,6 +11,15 @@
let
luaPackages = callPackage ../../lua-modules {lua=self; overrides=packageOverrides;};
+plat = if stdenv.isLinux then "linux"
+ else if stdenv.isDarwin then "macosx"
+ else if stdenv.hostPlatform.isMinGW then "mingw"
+ else if stdenv.isFreeBSD then "freebsd"
+ else if stdenv.isSunOS then "solaris"
+ else if stdenv.hostPlatform.isBSD then "bsd"
+ else if stdenv.hostPlatform.isUnix then "posix"
+ else "generic";
+
self = stdenv.mkDerivation rec {
pname = "lua";
luaversion = with sourceVersion; "${major}.${minor}";
@@ -29,6 +38,14 @@ self = stdenv.mkDerivation rec {
inherit patches;
+ postPatch = lib.optionalString (!stdenv.isDarwin) ''
+ # Add a target for a shared library to the Makefile.
+ sed -e '1s/^/LUA_SO = liblua.so/' \
+ -e 's/ALL_T *= */&$(LUA_SO) /' \
+ -i src/Makefile
+ cat ${./lua-dso.make} >> src/Makefile
+ '';
+
# see configurePhase for additional flags (with space)
makeFlags = [
"INSTALL_TOP=${placeholder "out"}"
@@ -36,21 +53,17 @@ self = stdenv.mkDerivation rec {
"R=${version}"
"LDFLAGS=-fPIC"
"V=${luaversion}"
- ] ++ (if stdenv.isDarwin then [
- "PLAT=macosx"
- ] else [
- "PLAT=linux"
- ]) ++ (if stdenv.buildPlatform != stdenv.hostPlatform then [
- "CC=${stdenv.hostPlatform.config}-gcc"
- "RANLIB=${stdenv.hostPlatform.config}-ranlib"
- ] else [])
- ;
+ "PLAT=${plat}"
+ "CC=${stdenv.cc.targetPrefix}cc"
+ "RANLIB=${stdenv.cc.targetPrefix}ranlib"
+ ];
configurePhase = ''
runHook preConfigure
- makeFlagsArray+=(CFLAGS="-DLUA_USE_LINUX -O2 -fPIC${if compat then " -DLUA_COMPAT_ALL" else ""}" )
- makeFlagsArray+=(${lib.optionalString stdenv.isDarwin "CC=\"$CC\""}${lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) " 'AR=${stdenv.hostPlatform.config}-ar rcu'"})
+ makeFlagsArray+=(CFLAGS='-O2 -fPIC${lib.optionalString compat " -DLUA_COMPAT_ALL"} $(${
+ if lib.versionAtLeast luaversion "5.2" then "SYSCFLAGS" else "MYCFLAGS"})' )
+ 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 liblua.so liblua.so.${luaversion} liblua.so.${version}"}" )
@@ -80,7 +93,7 @@ self = stdenv.mkDerivation rec {
Description: An Extensible Extension Language
Version: ${version}
Requires:
- Libs: -L$out/lib -llua -lm
+ Libs: -L$out/lib -llua
Cflags: -I$out/include
EOF
ln -s "$out/lib/pkgconfig/lua.pc" "$out/lib/pkgconfig/lua-${luaversion}.pc"
diff --git a/pkgs/development/interpreters/lua-5/liblua.so.patch b/pkgs/development/interpreters/lua-5/liblua.so.patch
deleted file mode 100644
index 197832116c19..000000000000
--- a/pkgs/development/interpreters/lua-5/liblua.so.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-diff --git a/Makefile b/Makefile
-index 416f444..eeaff03 100644
---- a/Makefile
-+++ b/Makefile
-@@ -52,7 +52,7 @@ R= $V.0
- all: $(PLAT)
-
- $(PLATS) help test clean:
-- @cd src && $(MAKE) $@
-+ @cd src && $(MAKE) $@ V=$(V) R=$(R)
-
- install: dummy
- cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
-diff --git a/src/Makefile b/src/Makefile
-index 514593d..372a6dc 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -33,6 +33,7 @@ CMCFLAGS= -Os
- PLATS= guess aix bsd c89 freebsd generic linux linux-readline macosx mingw posix solaris
-
- LUA_A= liblua.a
-+LUA_SO= liblua.so
- CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o
- LIB_O= lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o
- BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS)
-@@ -44,7 +45,7 @@ LUAC_T= luac
- LUAC_O= luac.o
-
- ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
--ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
-+ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
- ALL_A= $(LUA_A)
-
- # Targets start here.
-@@ -60,6 +61,12 @@ $(LUA_A): $(BASE_O)
- $(AR) $@ $(BASE_O)
- $(RANLIB) $@
-
-+$(LUA_SO): $(CORE_O) $(LIB_O)
-+ $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
-+ ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
-+ ln -sf $(LUA_SO).$(R) $(LUA_SO)
-+
-+
- $(LUA_T): $(LUA_O) $(LUA_A)
- $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
-
-diff --git a/src/luaconf.h b/src/luaconf.h
-index bdf927e..7e15198 100644
---- a/src/luaconf.h
-+++ b/src/luaconf.h
-@@ -227,7 +227,7 @@
-
- #else /* }{ */
-
--#define LUA_ROOT "/usr/local/"
-+#define LUA_ROOT "/usr/"
- #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
- #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
-
diff --git a/pkgs/development/interpreters/lua-5/lua-5.3-dso.make b/pkgs/development/interpreters/lua-5/lua-dso.make
index c70dbc4f9cc2..19c57685677d 100644
--- a/pkgs/development/interpreters/lua-5/lua-5.3-dso.make
+++ b/pkgs/development/interpreters/lua-5/lua-dso.make
@@ -1,8 +1,4 @@
-
-LUA_SO=liblua.so
-
$(LUA_SO): $(CORE_O) $(LIB_O)
- $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
+ $(CC) -shared $(LIBS) -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? $(MYLDFLAGS)
ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
ln -sf $(LUA_SO).$(R) $(LUA_SO)
-