summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-lua-fix-print.patch104
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4.14.bb1
2 files changed, 105 insertions, 0 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-lua-fix-print.patch b/meta/recipes-devtools/rpm/rpm/rpm-lua-fix-print.patch
new file mode 100644
index 0000000000..7ab49e97e2
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-lua-fix-print.patch
@@ -0,0 +1,104 @@
+Lua 'print' statement is not working properly inside of RPM 5
+
+The print statement should capture the output and send it to the script
+processing engine, and not display it directly to the screen.
+
+This patch is from: http://rpm5.org/cvs/patchset?cn=17671
+
+Upstream-Status: backport (patchset 17671 from rpm5.org)
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+
+Index: rpm-5.4.14/CHANGES
+===================================================================
+--- rpm-5.4.14.orig/CHANGES
++++ rpm-5.4.14/CHANGES
+@@ -1,3 +1,4 @@
++ - jbj: lua: fix: resurrect output capture with lua-5.2.
+ - jbj: verify: fix: broken logic for %ghost avoidance (Mark Hatle).
+
+ 5.4.13 -> 5.4.14:
+Index: rpm-5.4.14/rpmio/rpmlua.c
+===================================================================
+--- rpm-5.4.14.orig/rpmio/rpmlua.c
++++ rpm-5.4.14/rpmio/rpmlua.c
+@@ -175,7 +175,7 @@ rpmlua rpmluaNew(void)
+ };
+ /*@=readonlytrans =nullassign @*/
+ /*@observer@*/ /*@unchecked@*/
+- const luaL_Reg *lib = lualibs;
++ const luaL_Reg *lib;
+ char *path_buf;
+ char *path_next;
+ char *path;
+@@ -190,31 +190,34 @@ rpmlua rpmluaNew(void)
+
+ luaL_openlibs(L);
+
+- for (; lib->name; lib++) {
++ for (lib = lualibs; lib->name; lib++) {
+ luaL_requiref(L, lib->name, lib->func, 1);
++ lua_pop(L, 1);
+ }
+
+ { const char * _lua_path = rpmGetPath(rpmluaPath, NULL);
+ if (_lua_path != NULL) {
++#if defined(LUA_GLOBALSINDEX)
+ lua_pushliteral(L, "LUA_PATH");
+ lua_pushstring(L, _lua_path);
++ lua_rawset(L, LUA_GLOBALSINDEX);
++#else
++ lua_pushstring(L, _lua_path);
++ lua_setglobal(L, "LUA_PATH");
++#endif
+ _lua_path = _free(_lua_path);
+ }
+ }
+
+ #if defined(LUA_GLOBALSINDEX)
+- lua_rawset(L, LUA_GLOBALSINDEX);
+-#else
+- lua_pushglobaltable(L);
+-#endif
+ lua_pushliteral(L, "print");
+ lua_pushcfunction(L, rpm_print);
+-
+-#if defined(LUA_GLOBALSINDEX)
+ lua_rawset(L, LUA_GLOBALSINDEX);
+ #else
+- lua_pushglobaltable(L);
++ lua_pushcfunction(L, rpm_print);
++ lua_setglobal(L, "print");
+ #endif
++
+ rpmluaSetData(lua, "lua", lua);
+
+ /* load all standard RPM Lua script files */
+@@ -351,6 +354,9 @@ void rpmluaSetVar(rpmlua _lua, rpmluav v
+ #if defined(LUA_GLOBALSINDEX)
+ if (lua->pushsize == 0)
+ lua_pushvalue(L, LUA_GLOBALSINDEX);
++#else
++ if (lua->pushsize == 0)
++ lua_pushglobaltable(L);
+ #endif
+ if (pushvar(L, var->keyType, &var->key) != -1) {
+ if (pushvar(L, var->valueType, &var->value) != -1)
+@@ -1039,14 +1045,15 @@ static int rpm_print (lua_State *L)
+ lua_getglobal(L, "tostring");
+ for (i = 1; i <= n; i++) {
+ const char *s;
++ size_t l;
+ lua_pushvalue(L, -1); /* function to be called */
+ lua_pushvalue(L, i); /* value to print */
+ lua_call(L, 1, 1);
+- s = lua_tostring(L, -1); /* get result */
++ s = lua_tolstring(L, -1, &l); /* get result */
+ if (s == NULL)
+ return luaL_error(L, "`tostring' must return a string to `print'");
+ if (lua->storeprint) {
+- size_t sl = lua_rawlen(L, -1);
++ size_t sl = l;
+ if ((size_t)(lua->printbufused+sl+1) > lua->printbufsize) {
+ lua->printbufsize += sl+512;
+ lua->printbuf = (char *) xrealloc(lua->printbuf, lua->printbufsize);
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.14.bb b/meta/recipes-devtools/rpm/rpm_5.4.14.bb
index 75b1ae22cc..eac3b8f455 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.14.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.14.bb
@@ -92,6 +92,7 @@ SRC_URI = "http://www.rpm5.org/files/rpm/rpm-5.4/rpm-5.4.14-0.20131024.src.rpm;e
file://rpm-realpath.patch \
file://0001-using-poptParseArgvString-to-parse-the-_gpg_check_pa.patch \
file://no-ldflags-in-pkgconfig.patch \
+ file://rpm-lua-fix-print.patch \
"
# Uncomment the following line to enable platform score debugging