summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO2
-rw-r--r--PKGBUILD8
-rw-r--r--finish-lua52-support.patch117
3 files changed, 125 insertions, 2 deletions
diff --git a/.SRCINFO b/.SRCINFO
index a489563f6d7d..e00a0a7d2f38 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -21,8 +21,10 @@ pkgbase = rpm-org
options = !libtool
source = http://rpm.org/releases/rpm-4.11.x/rpm-4.11.0.1.tar.bz2
source = rpmextract.sh
+ source = finish-lua52-support.patch
md5sums = b35f5359e0d4494d7b11e8d0c1512a0d
md5sums = 1f7f4f3b3a93ff6d2f600c7751ae25ef
+ md5sums = a82a9372f2bca43049791c162a36c1e5
pkgname = rpm-org
diff --git a/PKGBUILD b/PKGBUILD
index 0224548225b6..235d4ac92c1a 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -17,13 +17,17 @@ conflicts=('rpm' 'rpmextract')
options=('!libtool')
provides=("rpm=${pkgver}" 'rpmextract=1.0-4')
source=(http://rpm.org/releases/rpm-4.11.x/rpm-${pkgver}.tar.bz2
- 'rpmextract.sh')
+ rpmextract.sh finish-lua52-support.patch)
md5sums=('b35f5359e0d4494d7b11e8d0c1512a0d'
- '1f7f4f3b3a93ff6d2f600c7751ae25ef')
+ '1f7f4f3b3a93ff6d2f600c7751ae25ef'
+ 'a82a9372f2bca43049791c162a36c1e5')
build() {
cd ${srcdir}/rpm-${pkgver}
+
+ patch -p1 < ../finish-lua52-support.patch
+
./configure \
--prefix=/usr \
--sysconfdir=/etc \
diff --git a/finish-lua52-support.patch b/finish-lua52-support.patch
new file mode 100644
index 000000000000..658e8bb43e1c
--- /dev/null
+++ b/finish-lua52-support.patch
@@ -0,0 +1,117 @@
+From 96807d2f3dcec583ca54b503e7fc70014115e308 Mon Sep 17 00:00:00 2001
+From: Johannes Dewender <rpm@JonnyJD.net>
+Date: Thu, 4 Apr 2013 17:23:43 +0200
+Subject: [PATCH] Finish lua 5.2 support, trac #865
+
+Lua52 support was started with ac959fed0082cb253d45c7a04866e8654e962442.
+
+Compilation tested with Lua 5.2.1 and Lua 5.1.5.
+
+The short typerror() snippet is taken from luaL_typerror in Lua 5.1.5
+(MIT license)
+
+Signed-off-by: Johannes Dewender <rpm@JonnyJD.net>
+---
+ luaext/lposix.c | 21 +++++++++++++++------
+ rpmio/rpmlua.c | 8 ++++++++
+ 2 files changed, 23 insertions(+), 6 deletions(-)
+
+diff --git a/luaext/lposix.c b/luaext/lposix.c
+index f3c787e..a59be3e 100644
+--- a/luaext/lposix.c
++++ b/luaext/lposix.c
+@@ -58,6 +58,15 @@ static const char *filetype(mode_t m)
+
+ typedef int (*Selector)(lua_State *L, int i, const void *data);
+
++/* implemented as luaL_typerror until lua 5.1, dropped in 5.2
++ * (C) 1994-2012 Lua.org, PUC-Rio. MIT license
++ */
++static int typerror (lua_State *L, int narg, const char *tname) {
++ const char *msg = lua_pushfstring(L, "%s expected, got %s",
++ tname, luaL_typename(L, narg));
++ return luaL_argerror(L, narg, msg);
++}
++
+ static int doselection(lua_State *L, int i, const char *const S[], Selector F, const void *data)
+ {
+ if (lua_isnone(L, i))
+@@ -139,7 +148,7 @@ static uid_t mygetuid(lua_State *L, int i)
+ return (p==NULL) ? -1 : p->pw_uid;
+ }
+ else
+- return luaL_typerror(L, i, "string or number");
++ return typerror(L, i, "string or number");
+ }
+
+ static gid_t mygetgid(lua_State *L, int i)
+@@ -154,7 +163,7 @@ static gid_t mygetgid(lua_State *L, int i)
+ return (g==NULL) ? -1 : g->gr_gid;
+ }
+ else
+- return luaL_typerror(L, i, "string or number");
++ return typerror(L, i, "string or number");
+ }
+
+
+@@ -573,7 +582,7 @@ static int Pgetpasswd(lua_State *L) /** getpasswd(name or id) */
+ else if (lua_isstring(L, 1))
+ p = getpwnam(lua_tostring(L, 1));
+ else
+- luaL_typerror(L, 1, "string or number");
++ typerror(L, 1, "string or number");
+ if (p==NULL)
+ lua_pushnil(L);
+ else
+@@ -590,7 +599,7 @@ static int Pgetgroup(lua_State *L) /** getgroup(name or id) */
+ else if (lua_isstring(L, 1))
+ g = getgrnam(lua_tostring(L, 1));
+ else
+- luaL_typerror(L, 1, "string or number");
++ typerror(L, 1, "string or number");
+ if (g==NULL)
+ lua_pushnil(L);
+ else
+@@ -709,10 +718,10 @@ static int Puname(lua_State *L) /** uname([string]) */
+ luaL_buffinit(L, &b);
+ for (s=luaL_optstring(L, 1, "%s %n %r %v %m"); *s; s++)
+ if (*s!='%')
+- luaL_putchar(&b, *s);
++ luaL_addchar(&b, *s);
+ else switch (*++s)
+ {
+- case '%': luaL_putchar(&b, *s); break;
++ case '%': luaL_addchar(&b, *s); break;
+ case 'm': luaL_addstring(&b,u.machine); break;
+ case 'n': luaL_addstring(&b,u.nodename); break;
+ case 'r': luaL_addstring(&b,u.release); break;
+diff --git a/rpmio/rpmlua.c b/rpmio/rpmlua.c
+index 86d0408..0576318 100644
+--- a/rpmio/rpmlua.c
++++ b/rpmio/rpmlua.c
+@@ -7,14 +7,22 @@
+ #include <lposix.h>
+ #include <lrexlib.h>
+
++/* replaced in 5.1 */
+ #ifndef lua_open
+ #define lua_open() luaL_newstate()
+ #endif
+
++/* defined as lua_objlen in 5.1 */
+ #ifndef lua_strlen
+ #define lua_strlen(L,i) lua_rawlen(L, (i))
+ #endif
+
++/* deprecated in 5.1, defined as lua_objlen in 5.1 */
++#ifndef luaL_getn
++#define luaL_getn(L,i) ((int)lua_rawlen(L, i))
++#endif
++
++/* define added in 5.2 */
+ #ifndef lua_pushglobaltable
+ #define lua_pushglobaltable(L) lua_pushvalue(L, LUA_GLOBALSINDEX)
+ #endif
+--
+1.8.1.3
+