diff --git a/packages/liblua51/Makefile.patch b/packages/liblua51/Makefile.patch new file mode 100644 index 000000000..7f831360e --- /dev/null +++ b/packages/liblua51/Makefile.patch @@ -0,0 +1,20 @@ +--- a/Makefile ++++ b/Makefile +@@ -9,7 +9,7 @@ + + # Where to install. The installation starts in the src and doc directories, + # so take care if INSTALL_TOP is not an absolute path. +-INSTALL_TOP= /usr/local ++INSTALL_TOP= @TERMUX_PREFIX@ + INSTALL_BIN= $(INSTALL_TOP)/bin + INSTALL_INC= $(INSTALL_TOP)/include + INSTALL_LIB= $(INSTALL_TOP)/lib +@@ -53,7 +53,7 @@ + all: $(PLAT) + + $(PLATS) clean: +- cd src && $(MAKE) $@ ++ cd src && $(MAKE) $@ V=$(V) R=$(R) + + test: dummy + src/lua test/hello.lua diff --git a/packages/liblua51/build.sh b/packages/liblua51/build.sh new file mode 100644 index 000000000..ecdb91778 --- /dev/null +++ b/packages/liblua51/build.sh @@ -0,0 +1,43 @@ +TERMUX_PKG_HOMEPAGE=https://www.lua.org +TERMUX_PKG_DESCRIPTION="Shared library for the Lua interpreter (v5.1.x)" +TERMUX_PKG_LICENSE="MIT" +TERMUX_PKG_MAINTAINER="@termux" +TERMUX_PKG_VERSION=5.1.5 +TERMUX_PKG_SRCURL=https://www.lua.org/ftp/lua-$TERMUX_PKG_VERSION.tar.gz +TERMUX_PKG_SHA256=2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333 +TERMUX_PKG_BUILD_DEPENDS="readline" +TERMUX_PKG_BUILD_IN_SRC=true + +termux_step_pre_configure() { + CFLAGS+=" -fPIC" +} + +termux_step_configure() { + sed -e "s/%VER%/${TERMUX_PKG_VERSION%.*}/g;s/%REL%/${TERMUX_PKG_VERSION}/g" \ + -e "s|@TERMUX_PREFIX@|$TERMUX_PREFIX|" \ + "$TERMUX_PKG_BUILDER_DIR"/lua.pc.in > lua.pc +} + +termux_step_make() { + make -j $TERMUX_MAKE_PROCESSES \ + MYCFLAGS="$CFLAGS" \ + MYLDFLAGS="$LDFLAGS" \ + CC="$CC" \ + CXX="$CXX" \ + linux +} + +termux_step_make_install() { + make \ + TO_BIN="lua5.1 luac5.1" \ + TO_LIB="liblua5.1.so liblua5.1.so.5.1 liblua5.1.so.${TERMUX_PKG_VERSION} liblua5.1.a" \ + INSTALL_DATA="cp -d" \ + INSTALL_TOP="$TERMUX_PREFIX" \ + INSTALL_INC="$TERMUX_PREFIX/include/lua5.1" \ + INSTALL_MAN="$TERMUX_PREFIX/share/man/man1" \ + install + install -Dm600 lua.pc "$TERMUX_PREFIX"/lib/pkgconfig/lua51.pc + + mv -f "$TERMUX_PREFIX"/share/man/man1/lua.1 "$TERMUX_PREFIX"/share/man/man1/lua5.1.1 + mv -f "$TERMUX_PREFIX"/share/man/man1/luac.1 "$TERMUX_PREFIX"/share/man/man1/luac5.1.1 +} diff --git a/packages/liblua51/lua-5.1.5-CVE-2014-5461.patch b/packages/liblua51/lua-5.1.5-CVE-2014-5461.patch new file mode 100644 index 000000000..14cfd5b1c --- /dev/null +++ b/packages/liblua51/lua-5.1.5-CVE-2014-5461.patch @@ -0,0 +1,14 @@ +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5461 +https://www.lua.org/bugs.html#5.2.2-1 + +--- a/src/ldo.c ++++ b/src/ldo.c +@@ -274,7 +274,7 @@ + CallInfo *ci; + StkId st, base; + Proto *p = cl->p; +- luaD_checkstack(L, p->maxstacksize); ++ luaD_checkstack(L, p->maxstacksize + p->numparams); + func = restorestack(L, funcr); + if (!p->is_vararg) { /* no varargs? */ + base = func + 1; diff --git a/packages/liblua51/lua.pc.in b/packages/liblua51/lua.pc.in new file mode 100644 index 000000000..73f18b784 --- /dev/null +++ b/packages/liblua51/lua.pc.in @@ -0,0 +1,20 @@ +V=%VER% +R=%REL% + +prefix=@TERMUX_PREFIX@ +INSTALL_BIN=${prefix}/bin +INSTALL_INC=${prefix}/include/lua${V} +INSTALL_LIB=${prefix}/lib +INSTALL_MAN=${prefix}/man/man1 +INSTALL_LMOD=${prefix}/share/lua/${V} +INSTALL_CMOD=${prefix}/lib/lua/${V} +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include/lua${V} + +Name: Lua +Description: An Extensible Extension Language +Version: ${R} +Requires: +Libs: -L${libdir} -llua${V} -lm +Cflags: -I${includedir} diff --git a/packages/liblua51/lua51.subpackage.sh b/packages/liblua51/lua51.subpackage.sh new file mode 100644 index 000000000..c5ae32caa --- /dev/null +++ b/packages/liblua51/lua51.subpackage.sh @@ -0,0 +1,27 @@ +TERMUX_SUBPKG_DESCRIPTION="Simple, extensible, embeddable programming language" +TERMUX_SUBPKG_DEPENDS="readline" +TERMUX_SUBPKG_INCLUDE="bin/ share/man/man1/" + +termux_step_create_subpkg_debscripts() { + cat <<- EOF > ./postinst + #!$TERMUX_PREFIX/bin/sh + if [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ] || [ "\$1" = "configure" ] || [ "\$1" = "abort-upgrade" ]; then + if [ -x "$TERMUX_PREFIX/bin/update-alternatives" ]; then + update-alternatives --install \ + $TERMUX_PREFIX/bin/lua lua $TERMUX_PREFIX/bin/lua5.1 110 + update-alternatives --install \ + $TERMUX_PREFIX/bin/luac luac $TERMUX_PREFIX/bin/luac5.1 110 + fi + fi + EOF + + cat <<- EOF > ./prerm + #!$TERMUX_PREFIX/bin/sh + if [ "$TERMUX_PACKAGE_FORMAT" = "pacman" ] || [ "\$1" != "upgrade" ]; then + if [ -x "$TERMUX_PREFIX/bin/update-alternatives" ]; then + update-alternatives --remove lua $TERMUX_PREFIX/bin/lua + update-alternatives --remove luac $TERMUX_PREFIX/bin/luac + fi + fi + EOF +} diff --git a/packages/liblua51/src-Makefile.patch b/packages/liblua51/src-Makefile.patch new file mode 100644 index 000000000..e420c4162 --- /dev/null +++ b/packages/liblua51/src-Makefile.patch @@ -0,0 +1,50 @@ +--- a/src/Makefile ++++ b/src/Makefile +@@ -22,21 +22,22 @@ + + PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris + +-LUA_A= liblua.a ++LUA_A= liblua5.1.a ++LUA_SO= liblua5.1.so + CORE_O= lapi.o lcode.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 ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \ + lstrlib.o loadlib.o linit.o + +-LUA_T= lua ++LUA_T= lua5.1 + LUA_O= lua.o + +-LUAC_T= luac ++LUAC_T= luac5.1 + LUAC_O= luac.o print.o + + ALL_O= $(CORE_O) $(LIB_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) + + default: $(PLAT) +@@ -51,6 +52,11 @@ + $(AR) $@ $(CORE_O) $(LIB_O) # DLL needs all object files + $(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 $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) + +@@ -96,7 +102,7 @@ + $(MAKE) all MYCFLAGS= + + linux: +- $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses" ++ $(MAKE) all MYCFLAGS="-DLUA_USE_LINUX $(MYCFLAGS)" MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses" + + macosx: + $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-lreadline" diff --git a/packages/liblua51/src-luaconf.h.patch b/packages/liblua51/src-luaconf.h.patch new file mode 100644 index 000000000..517e1d27b --- /dev/null +++ b/packages/liblua51/src-luaconf.h.patch @@ -0,0 +1,23 @@ +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -94,7 +94,7 @@ + ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll" + + #else +-#define LUA_ROOT "/usr/local/" ++#define LUA_ROOT "@TERMUX_PREFIX@/" + #define LUA_LDIR LUA_ROOT "share/lua/5.1/" + #define LUA_CDIR LUA_ROOT "lib/lua/5.1/" + #define LUA_PATH_DEFAULT \ +@@ -645,9 +645,9 @@ + + #if defined(LUA_USE_MKSTEMP) + #include +-#define LUA_TMPNAMBUFSIZE 32 ++#define LUA_TMPNAMBUFSIZE 256 + #define lua_tmpnam(b,e) { \ +- strcpy(b, "/tmp/lua_XXXXXX"); \ ++ strcpy(b, "@TERMUX_PREFIX@/tmp/lua_XXXXXX"); \ + e = mkstemp(b); \ + if (e != -1) close(e); \ + e = (e == -1); }