forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-02-17 557c24d082b6ecb9bfe5407b77ae43fa7650a5dc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
From dd11ed66640f79143e42d778b58fdd5a61fb5836 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/script.c | 53 +++-------------------------------------------------
 1 file changed, 3 insertions(+), 50 deletions(-)
 
diff --git a/src/script.c b/src/script.c
index abe65b6f7..621ff9b27 100644
--- a/src/script.c
+++ b/src/script.c
@@ -96,58 +96,11 @@ setexecute(const char *path, struct stat *stab)
 static const char *
 maintscript_pre_exec(struct command *cmd)
 {
-    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);
+    if (*instdir) {
+        setenv("D", instdir, 1);
     }
-    /* 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 (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;
 }
 
 /**
-- 
2.17.1