dpkg: Fix preinst execution
PATCH 1/1 dpkg: Fix preinst execution
Add a patch to fix exeuction of pre/post install scripts. See the patch header for more details.
Signed-off-by Richard Purdie <[email protected]>
---
(quoted diff) +0 -0
b/meta/recipes-devtools/dpkg/dpkg/preinst.patch
new file mode 100644
index 0000000..06d2aac
meta/recipes-devtools/dpkg/dpkg/preinst.patch renamed from dev/null +20 -0
@@ -0,0 +1,46 @@ +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 + +Index: dpkg-1.15.8.7/src/help.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; +- +- 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;
+-
+- 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;
+ } +
+ void
(quoted diff) +0 -0
b/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb
index f1a0eeb..f1030fa 100644
meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb +0 -0
@@ -4,10 +4,11 @@ LIC_FILES_CHKSUM =
"file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
SRC_URI += "file://noman.patch \
file://check_snprintf.patch \
file://check_version.patch \
- file://perllibdir.patch"
+ file://perllibdir.patch \
+ file://preinst.patch" SRC_URI[md5sum] = "d1731d4147c1ea3b537a4d094519a6dc" SRC_URI[sha256sum] =
"1ec1376471b04717a4497e5d7a27cd545248c92116898ce0c53ced8ea94267b5"
-PR = "${INC_PR}.1"
+PR = "${INC_PR}.3"