| Brad Bishop | d5ae7d9 | 2018-06-14 09:52:03 -0700 | [diff] [blame] | 1 | From a89daa75ac970d8e247edc762d1181e9a5b0c5d0 Mon Sep 17 00:00:00 2001 | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | 
|  | 3 | Date: Tue, 17 Jan 2017 14:07:17 +0200 | 
|  | 4 | Subject: [PATCH] When cross-installing, execute package scriptlets without | 
|  | 5 | chrooting into destination rootfs | 
|  | 6 |  | 
|  | 7 | This is triggered only when RPM_NO_CHROOT_FOR_SCRIPTS environment variable is defined. | 
|  | 8 | Otherwise they will trigger an explosion of failures, obviously. | 
|  | 9 |  | 
| Brad Bishop | d5ae7d9 | 2018-06-14 09:52:03 -0700 | [diff] [blame] | 10 | Amended 2018-07-03 by Olof Johansson <olofjn@axis.com>: | 
|  | 11 |  | 
|  | 12 | Remove leaking temporary scriptlet files | 
|  | 13 |  | 
|  | 14 | Since we tell dnf to run rpm with debug output, this will result in rpm not | 
|  | 15 | cleaning up written temporary scriptlet files (same flag controls both | 
|  | 16 | behaviors). This wouldn't have been a problem since we normally would use the | 
|  | 17 | target sysroot also for temporary files, but we need to chroot out to be able | 
|  | 18 | to actually run the rpm scriptlets (purpose of this patch), so the temporary | 
|  | 19 | files are written to the host's /var/tmp/ directory, causing a gradual | 
|  | 20 | resource leakage on the host system for every RPM based do_rootfs task | 
|  | 21 | executed. | 
|  | 22 |  | 
|  | 23 | Signed-off-by: Olof Johansson <olofjn@axis.com> | 
|  | 24 |  | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 25 | Upstream-Status: Inappropriate [oe-core specific] | 
|  | 26 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | 
|  | 27 | --- | 
| Brad Bishop | d5ae7d9 | 2018-06-14 09:52:03 -0700 | [diff] [blame] | 28 | lib/rpmscript.c | 11 ++++++++--- | 
|  | 29 | 1 file changed, 8 insertions(+), 3 deletions(-) | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 30 |  | 
|  | 31 | diff --git a/lib/rpmscript.c b/lib/rpmscript.c | 
| Brad Bishop | d5ae7d9 | 2018-06-14 09:52:03 -0700 | [diff] [blame] | 32 | index cc98c4885..f8bd3df04 100644 | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 33 | --- a/lib/rpmscript.c | 
|  | 34 | +++ b/lib/rpmscript.c | 
| Brad Bishop | d5ae7d9 | 2018-06-14 09:52:03 -0700 | [diff] [blame] | 35 | @@ -394,8 +394,7 @@ exit: | 
|  | 36 | Fclose(out);	/* XXX dup'd STDOUT_FILENO */ | 
|  | 37 |  | 
|  | 38 | if (fn) { | 
|  | 39 | -	if (!rpmIsDebug()) | 
|  | 40 | -	    unlink(fn); | 
|  | 41 | +	unlink(fn); | 
|  | 42 | free(fn); | 
|  | 43 | } | 
|  | 44 | free(mline); | 
|  | 45 | @@ -428,7 +427,13 @@ rpmRC rpmScriptRun(rpmScript script, int arg1, int arg2, FD_t scriptFd, | 
| Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 46 |  | 
|  | 47 | if (rc != RPMRC_FAIL) { | 
|  | 48 | if (script_type & RPMSCRIPTLET_EXEC) { | 
|  | 49 | -	    rc = runExtScript(plugins, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, &script->nextFileFunc); | 
|  | 50 | +	    if (getenv("RPM_NO_CHROOT_FOR_SCRIPTS") != NULL) { | 
|  | 51 | +		rpmChrootOut(); | 
|  | 52 | +		rc = runExtScript(plugins, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, &script->nextFileFunc); | 
|  | 53 | +		rpmChrootIn(); | 
|  | 54 | +	    } else { | 
|  | 55 | +		rc = runExtScript(plugins, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, &script->nextFileFunc); | 
|  | 56 | +	    } | 
|  | 57 | } else { | 
|  | 58 | rc = runLuaScript(plugins, prefixes, script->descr, lvl, scriptFd, &args, script->body, arg1, arg2, &script->nextFileFunc); | 
|  | 59 | } | 
|  | 60 | -- | 
|  | 61 | 2.11.0 | 
|  | 62 |  |