From ff325b35639a797edd92b373fbebf7b8b9f3f0c3 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 26 Aug 2015 16:25:45 +0300
Subject: [PATCH] Our pre/postinsts expect $D to be set when running in a
 sysroot and don't expect a chroot. This matches up our system expectations
 with what dpkg does.

Upstream-Status: Inappropriate [OE Specific]

RP 2011/12/07
ALIMON 2016/05/26
ALIMON 2017/02/21
KKang 2019/02/20

---
 src/main/script.c | 53 +++--------------------------------------------
 1 file changed, 3 insertions(+), 50 deletions(-)

diff --git a/src/main/script.c b/src/main/script.c
index ecce4d842..16f4e6ff5 100644
--- a/src/main/script.c
+++ b/src/main/script.c
@@ -97,58 +97,11 @@ static const char *
 maintscript_pre_exec(struct command *cmd)
 {
 	const char *instdir = dpkg_fsys_get_dir();
-	const char *admindir = dpkg_db_get_dir();
-	const char *changedir;
-	size_t instdirlen = strlen(instdir);
 
-	if (instdirlen > 0 && in_force(FORCE_SCRIPT_CHROOTLESS))
-		changedir = instdir;
-	else
-		changedir = "/";
-
-	if (instdirlen > 0 && !in_force(FORCE_SCRIPT_CHROOTLESS)) {
-		int rc;
-
-		if (strncmp(admindir, instdir, instdirlen) != 0)
-			ohshit(_("admindir must be inside instdir for dpkg to work properly"));
-		if (setenv("DPKG_ADMINDIR", admindir + instdirlen, 1) < 0)
-			ohshite(_("unable to setenv for subprocesses"));
-		if (setenv("DPKG_ROOT", "", 1) < 0)
-			ohshite(_("unable to setenv for subprocesses"));
-
-		rc = chroot(instdir);
-		if (rc && in_force(FORCE_NON_ROOT) && errno == EPERM)
-			ohshit(_("not enough privileges to change root "
-			         "directory with --force-not-root, consider "
-			         "using --force-script-chrootless?"));
-		else if (rc)
-			ohshite(_("failed to chroot to '%.250s'"), instdir);
-	}
-	/* Switch to a known good directory to give the maintainer script
-	 * a saner environment, also needed after the chroot(). */
-	if (chdir(changedir))
-		ohshite(_("failed to chdir to '%.255s'"), changedir);
-	if (debug_has_flag(dbg_scripts)) {
-		struct varbuf args = VARBUF_INIT;
-		const char **argv = cmd->argv;
-
-		while (*++argv) {
-			varbuf_add_char(&args, ' ');
-			varbuf_add_str(&args, *argv);
-		}
-		varbuf_end_str(&args);
-		debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename,
-		      args.buf);
-		varbuf_destroy(&args);
+        if (*instdir) {
+                setenv("D", instdir, 1);
 	}
-	if (instdirlen == 0 || in_force(FORCE_SCRIPT_CHROOTLESS))
-		return cmd->filename;
-
-	if (strlen(cmd->filename) < instdirlen)
-		internerr("maintscript name '%s' length < instdir length %zd",
-		          cmd->filename, instdirlen);
-
-	return cmd->filename + instdirlen;
+	return cmd->filename;
 }
 
 /**
