summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
diff options
context:
space:
mode:
authorAlexander Kanavin <alexander.kanavin@linux.intel.com>2016-12-30 18:38:51 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-03-14 14:42:16 +0000
commitbbddf83f65f490c88130d794c53ff9e4c45d0693 (patch)
treebec599b6bbb2c0022f922c97601cb621e4b3f3b9 /meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
parent27d56eeebd8197e359aae0a7ccac74cb55ff794d (diff)
downloadpoky-bbddf83f65f490c88130d794c53ff9e4c45d0693.tar.gz
rpm: remove 5.x recipe
(From OE-Core rev: d0365f35303db3595688a6e5290677e02a72c54e) Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch')
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch159
1 files changed, 0 insertions, 159 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch b/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
deleted file mode 100644
index b55fe22c6a..0000000000
--- a/meta/recipes-devtools/rpm/rpm/rpm-scriptletexechelper.patch
+++ /dev/null
@@ -1,159 +0,0 @@
1Enable a cross-install scriptlet helper.
2
3The helper is called from outside of the chroot with the arguments:
4
5<root> <prog> <script> <arg1> [<arg2> ... <argN>]
6
7The helper script is used by oe-core to facilitate shell script actions that
8can not be run from within a chroot on a foreign target system during a
9cross install.
10
11Upstream-Status: Pending
12
13Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
14
15Index: rpm/lib/psm.c
16===================================================================
17--- rpm.orig/lib/psm.c
18+++ rpm/lib/psm.c
19@@ -846,6 +846,9 @@ static rpmRC runScript(rpmpsm psm, Heade
20 pid_t pid;
21 int xx;
22 int i;
23+#ifdef RPM_VENDOR_OE
24+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
25+#endif
26
27 #ifdef __clang__
28 #pragma clang diagnostic push
29@@ -923,14 +926,29 @@ assert(he->p.str != NULL);
30 (F_ISSET(psm, UNORDERED) ? "a" : ""));
31
32 if (Phe->p.argv == NULL) {
33- argv = (const char **) alloca(5 * sizeof(*argv));
34- argv[0] = "/bin/sh";
35- argc = 1;
36+ argv = (const char **) alloca(7 * sizeof(*argv));
37+ argc = 0;
38+ } else {
39+ argv = (const char **) alloca((Phe->c + 6) * sizeof(*argv));
40+ argc = 0;
41+ }
42+
43+#ifdef RPM_VENDOR_OE
44+ if (scriptletWrapper && *scriptletWrapper) {
45+ argv[argc++] = scriptletWrapper;
46+ argv[argc] = rpmtsRootDir(ts);
47+ if (!argv[argc] || !*argv[argc])
48+ argv[argc] = "/";
49+ argc++;
50+ }
51+#endif
52+
53+ if (Phe->p.argv == NULL) {
54+ argv[argc++] = "/bin/sh";
55 ldconfig_done = 0;
56 } else {
57- argv = (const char **) alloca((Phe->c + 4) * sizeof(*argv));
58- memcpy(argv, Phe->p.argv, Phe->c * sizeof(*argv));
59- argc = Phe->c;
60+ memcpy((argv + argc), Phe->p.argv, Phe->c * sizeof(*argv));
61+ argc += Phe->c;
62 ldconfig_done = (ldconfig_path && !strcmp(argv[0], ldconfig_path)
63 ? 1 : 0);
64 }
65@@ -981,7 +999,12 @@ assert(he->p.str != NULL);
66 goto exit;
67
68 if (rpmIsDebug() &&
69- (!strcmp(argv[0], "/bin/sh") || !strcmp(argv[0], "/bin/bash")))
70+ (!strcmp(argv[0], "/bin/sh") || !strcmp(argv[0], "/bin/bash"))
71+#ifdef RPM_VENDOR_OE
72+ || (scriptletWrapper && *scriptletWrapper && !strcmp(argv[1], "/bin/sh"))
73+ || (scriptletWrapper && *scriptletWrapper && !strcmp(argv[1], "/bin/bash"))
74+#endif
75+ )
76 {
77 static const char set_x[] = "set -x\n";
78 nw = Fwrite(set_x, sizeof(set_x[0]), sizeof(set_x)-1, fd);
79@@ -1116,12 +1139,22 @@ assert(he->p.str != NULL);
80
81 { const char * rootDir = rpmtsRootDir(ts);
82 if (!rpmtsChrootDone(ts) && rootDir != NULL &&
83+#ifdef RPM_VENDOR_OE
84+ !(scriptletWrapper && *scriptletWrapper) &&
85+#endif
86 !(rootDir[0] == '/' && rootDir[1] == '\0'))
87 {
88 /*@-modobserver@*/
89 xx = Chroot(rootDir);
90 /*@=modobserver@*/
91 }
92+#ifdef RPM_VENDOR_OE
93+ if (!rpmtsChrootDone(ts) && rootDir != NULL &&
94+ (scriptletWrapper && *scriptletWrapper) &&
95+ !(rootDir[0] == '/' && rootDir[1] == '\0'))
96+ xx = Chdir(rootDir);
97+ else
98+#endif
99 xx = Chdir("/");
100 rpmlog(RPMLOG_DEBUG, D_("%s: %s(%s)\texecv(%s) pid %d\n"),
101 psm->stepName, sln, NVRA,
102@@ -3052,6 +3085,13 @@ assert(psm->te != NULL);
103 case PSM_SCRIPT: /* Run current package scriptlets. */
104 /* XXX running %verifyscript/%sanitycheck doesn't have psm->te */
105 { rpmtxn _parent = (psm && psm->te ? psm->te->txn : NULL);
106+
107+#ifdef RPM_VENDOR_OE
108+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
109+ if (scriptletWrapper && *scriptletWrapper)
110+ rc = rpmpsmNext(psm, PSM_CHROOT_OUT);
111+#endif
112+
113 xx = rpmtxnBegin(rpmtsGetRdb(ts), _parent, NULL);
114 rc = runInstScript(psm);
115 if (rc)
116@@ -3059,11 +3099,24 @@ assert(psm->te != NULL);
117 else
118 xx = rpmtxnCommit(rpmtsGetRdb(ts)->db_txn);
119 rpmtsGetRdb(ts)->db_txn = NULL;
120+#ifdef RPM_VENDOR_OE
121+ if (scriptletWrapper && *scriptletWrapper)
122+ rc = rpmpsmNext(psm, PSM_CHROOT_IN);
123+#endif
124 } break;
125 case PSM_TRIGGERS:
126 /* Run triggers in other package(s) this package sets off. */
127 if (rpmtsFlags(ts) & RPMTRANS_FLAG_TEST) break;
128+#ifdef RPM_VENDOR_OE
129+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
130+ if (scriptletWrapper && *scriptletWrapper)
131+ rc = rpmpsmNext(psm, PSM_CHROOT_OUT);
132+#endif
133 rc = runTriggers(psm);
134+#ifdef RPM_VENDOR_OE
135+ if (scriptletWrapper && *scriptletWrapper)
136+ rc = rpmpsmNext(psm, PSM_CHROOT_IN);
137+#endif
138 break;
139 case PSM_IMMED_TRIGGERS:
140 /* Run triggers in this package other package(s) set off. */
141@@ -3073,7 +3126,18 @@ assert(psm->te != NULL);
142 F_SET(psm, GOTTRIGGERS);
143 }
144 if (psm->triggers != NULL)
145+#ifdef RPM_VENDOR_OE
146+ {
147+ const char * scriptletWrapper = rpmExpand("%{?_cross_scriptlet_wrapper}", NULL);
148+ if (scriptletWrapper && *scriptletWrapper)
149+ rc = rpmpsmNext(psm, PSM_CHROOT_OUT);
150+#endif
151 rc = runImmedTriggers(psm);
152+#ifdef RPM_VENDOR_OE
153+ if (scriptletWrapper && *scriptletWrapper)
154+ rc = rpmpsmNext(psm, PSM_CHROOT_IN);
155+ }
156+#endif
157 break;
158
159 case PSM_RPMIO_FLAGS: