diff options
Diffstat (limited to 'meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch')
-rw-r--r-- | meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch b/meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch new file mode 100644 index 0000000000..bd3314a90f --- /dev/null +++ b/meta/recipes-devtools/rpm/files/0001-When-cross-installing-execute-package-scriptlets-wit.patch @@ -0,0 +1,68 @@ +From a89daa75ac970d8e247edc762d1181e9a5b0c5d0 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Tue, 17 Jan 2017 14:07:17 +0200 +Subject: [PATCH] When cross-installing, execute package scriptlets without + chrooting into destination rootfs + +This is triggered only when RPM_NO_CHROOT_FOR_SCRIPTS environment variable is defined. +Otherwise they will trigger an explosion of failures, obviously. + +Amended 2018-07-03 by Olof Johansson <olofjn@axis.com>: + + Remove leaking temporary scriptlet files + + Since we tell dnf to run rpm with debug output, this will result in rpm not + cleaning up written temporary scriptlet files (same flag controls both + behaviors). This wouldn't have been a problem since we normally would use the + target sysroot also for temporary files, but we need to chroot out to be able + to actually run the rpm scriptlets (purpose of this patch), so the temporary + files are written to the host's /var/tmp/ directory, causing a gradual + resource leakage on the host system for every RPM based do_rootfs task + executed. + + Signed-off-by: Olof Johansson <olofjn@axis.com> + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> +--- + lib/rpmscript.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +Index: git/lib/rpmscript.c +=================================================================== +--- git.orig/lib/rpmscript.c ++++ git/lib/rpmscript.c +@@ -18,7 +18,7 @@ + #include "rpmio/rpmio_internal.h" + + #include "lib/rpmplugins.h" /* rpm plugins hooks */ +- ++#include "lib/rpmchroot.h" /* rpmChrootOut */ + #include "debug.h" + + struct scriptNextFileFunc_s { +@@ -427,8 +427,7 @@ exit: + Fclose(out); /* XXX dup'd STDOUT_FILENO */ + + if (fn) { +- if (!rpmIsDebug()) +- unlink(fn); ++ unlink(fn); + free(fn); + } + free(mline); +@@ -462,7 +461,13 @@ rpmRC rpmScriptRun(rpmScript script, int + + if (rc != RPMRC_FAIL) { + if (script_type & RPMSCRIPTLET_EXEC) { +- rc = runExtScript(plugins, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, script->nextFileFunc); ++ if (getenv("RPM_NO_CHROOT_FOR_SCRIPTS") != NULL) { ++ rpmChrootOut(); ++ rc = runExtScript(plugins, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, script->nextFileFunc); ++ rpmChrootIn(); ++ } else { ++ rc = runExtScript(plugins, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, script->nextFileFunc); ++ } + } else { + rc = runLuaScript(plugins, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, script->nextFileFunc); + } |