aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/dpkg/dpkg/preinst.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/dpkg/dpkg/preinst.patch')
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/preinst.patch75
1 files changed, 41 insertions, 34 deletions
diff --git a/meta/recipes-devtools/dpkg/dpkg/preinst.patch b/meta/recipes-devtools/dpkg/dpkg/preinst.patch
index 06d2aacf3f..f9cb4089fb 100644
--- a/meta/recipes-devtools/dpkg/dpkg/preinst.patch
+++ b/meta/recipes-devtools/dpkg/dpkg/preinst.patch
@@ -6,41 +6,48 @@ Upstream-Status: Inappropriate [OE Specific]
RP 2011/12/07
-Index: dpkg-1.15.8.7/src/help.c
+Index: dpkg-1.16.8/src/script.c
===================================================================
---- dpkg-1.15.8.7.orig/src/help.c 2010-12-20 01:25:36.000000000 +0000
-+++ dpkg-1.15.8.7/src/help.c 2011-12-07 14:51:02.783461487 +0000
-@@ -181,30 +181,9 @@
- * FIXME: none of the stuff here will work if admindir isn't inside
- * instdir as expected.
- */
-- size_t instdirl;
+--- dpkg-1.16.8.orig/src/script.c
++++ dpkg-1.16.8/src/script.c
+@@ -102,38 +102,10 @@ setexecute(const char *path, struct stat
+ static const char *
+ preexecscript(struct command *cmd)
+ {
+- const char *admindir = dpkg_db_get_dir();
+- size_t instdirl = strlen(instdir);
-
-- if (*instdir) {
-- if (chroot(instdir)) ohshite(_("failed to chroot to `%.250s'"),instdir);
-- if (chdir("/"))
-- ohshite(_("failed to chdir to `%.255s'"), "/");
-- }
-- if (f_debug & dbg_scripts) {
-- struct varbuf args = VARBUF_INIT;
-- const char **argv = cmd->argv;
+ if (*instdir) {
+- if (strncmp(admindir, instdir, instdirl) != 0)
+- ohshit(_("admindir must be inside instdir for dpkg to work properly"));
+- if (setenv("DPKG_ADMINDIR", admindir + instdirl, 1) < 0)
+- ohshite(_("unable to setenv for subprocesses"));
-
-- while (*++argv) {
-- varbufaddc(&args, ' ');
-- varbufaddstr(&args, *argv);
-- }
-- varbufaddc(&args, '\0');
-- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, args.buf);
-- varbuf_destroy(&args);
-- }
-- instdirl= strlen(instdir);
-- if (!instdirl)
-- return cmd->filename;
-- assert(strlen(cmd->filename) >= instdirl);
-- return cmd->filename + instdirl;
-+ if (*instdir)
-+ setenv("D", instdir, 1);
-+ return cmd->filename;
- }
+- if (chroot(instdir))
+- ohshite(_("failed to chroot to `%.250s'"), instdir);
+- if (chdir("/"))
+- ohshite(_("failed to chdir to `%.255s'"), "/");
++ setenv("D", instdir, 1);
+ }
+- 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 (!instdirl)
+- return cmd->filename;
+-
+- assert(strlen(cmd->filename) >= instdirl);
+- return cmd->filename + instdirl;
++ return cmd->filename;
+ }
- void
+ static int