summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2016-07-17 20:32:41 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-23 15:27:05 +0100
commit642890f5d011768c76a065e1e83f2370b2141c9d (patch)
tree185633ee92b0e8090f10cca24658c8565f6b78b3
parent5368cfee9e2c2a9bf0c6f9718f4c33105c3c6ac0 (diff)
downloadpoky-642890f5d011768c76a065e1e83f2370b2141c9d.tar.gz
rpm: make --nosignature work
OE-core uses rpm's --nosignature, but it never worked: self._invoke_smart('config --set rpm-check-signatures=false') Now fix it with: * Define SUPPORT_NOSIGNATURES to 1 in system.h * !QVA_ISSET(qva->qva_flags, SIGNATURE) -> QVA_ISSET(qva->qva_flags, SIGNATURE), otherwise, when use --nosignature would read database and verify signature, this is not expected. This can fix some race issues, for example, when more than one process are querying rpm file with "rpm -qp --nosignature", they may hang up because of race issues (the processes are trying to get RW/RD lock on the database, but they shouldn't read the database at all since -qp and --nosignature are used). (From OE-Core rev: 038c09d6ab9581030efdc16aa1b96972970eeaab) (From OE-Core rev: 6a09190c7b7b316c9988b7e5e279bd124f331b17) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/rpm/rpm/0001-system.h-query.c-support-nosignature.patch64
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4.16.bb1
2 files changed, 65 insertions, 0 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/0001-system.h-query.c-support-nosignature.patch b/meta/recipes-devtools/rpm/rpm/0001-system.h-query.c-support-nosignature.patch
new file mode 100644
index 0000000000..410ae78c1b
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/0001-system.h-query.c-support-nosignature.patch
@@ -0,0 +1,64 @@
1From d8fcc3cbeec4defb5babde5bd09ea294dd3fd08b Mon Sep 17 00:00:00 2001
2From: Robert Yang <liezhi.yang@windriver.com>
3Date: Sun, 3 Jul 2016 19:01:59 -0700
4Subject: [PATCH] system.h/query.c: support nosignature
5
6* Define SUPPORT_NOSIGNATURES to 1 in system.h
7* !QVA_ISSET(qva->qva_flags, SIGNATURE) -> QVA_ISSET(qva->qva_flags, SIGNATURE),
8 otherwise, when use --nosignature would read database and verify
9 signature, this is not expected.
10
11Upstream-Status: Submitting [Sent email to rpm-devel@rpm5.org]
12
13Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
14---
15 lib/query.c | 6 +++---
16 system.h | 4 ++--
17 2 files changed, 5 insertions(+), 5 deletions(-)
18
19diff --git a/lib/query.c b/lib/query.c
20index 50a7453..b761d76 100644
21--- a/lib/query.c
22+++ b/lib/query.c
23@@ -954,19 +954,19 @@ JBJDEBUG((stderr, "--> %s(%p,%p,%p)\n", __FUNCTION__, ts, qva, argv));
24 vsflags = (rpmVSFlags) rpmExpandNumeric("%{?_vsflags_query}");
25 vsflags = (rpmVSFlags) 0; /* XXX FIXME: ignore default disablers. */
26 #if defined(SUPPORT_NOSIGNATURES)
27- if (!QVA_ISSET(qva->qva_flags, DIGEST)) {
28+ if (QVA_ISSET(qva->qva_flags, DIGEST)) {
29 VSF_SET(vsflags, NOSHA1HEADER);
30 VSF_SET(vsflags, NOMD5HEADER);
31 VSF_SET(vsflags, NOSHA1);
32 VSF_SET(vsflags, NOMD5);
33 }
34- if (!QVA_ISSET(qva->qva_flags, SIGNATURE)) {
35+ if (QVA_ISSET(qva->qva_flags, SIGNATURE)) {
36 VSF_SET(vsflags, NODSAHEADER);
37 VSF_SET(vsflags, NORSAHEADER);
38 VSF_SET(vsflags, NODSA);
39 VSF_SET(vsflags, NORSA);
40 }
41- if (!QVA_ISSET(qva->qva_flags, HDRCHK)) {
42+ if (QVA_ISSET(qva->qva_flags, HDRCHK)) {
43 VSF_SET(vsflags, NOHDRCHK);
44 }
45 VSF_CLR(vsflags, NEEDPAYLOAD); /* XXX needed? */
46diff --git a/system.h b/system.h
47index 2ff8906..ad4619a 100644
48--- a/system.h
49+++ b/system.h
50@@ -787,9 +787,9 @@ static inline const char *rcsid(const char *p) { \
51 #define SUPPORT_I18NSTRING_TYPE 1
52
53 /**
54- * Eliminate signature/digest disablers.
55+ * Signature/digest disablers.
56 */
57-#undef SUPPORT_NOSIGNATURES
58+#define SUPPORT_NOSIGNATURES 1
59
60 /**
61 * Permit ar(1) payloads. Disabled while rpmio/iosm.c is under development.
62--
632.9.0
64
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.16.bb b/meta/recipes-devtools/rpm/rpm_5.4.16.bb
index 7ebd5e9359..b737b9c107 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.16.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.16.bb
@@ -117,6 +117,7 @@ SRC_URI += " \
117 file://rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch \ 117 file://rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch \
118 file://0001-Disable-__sync_add_and_fetch_8-on-nios2.patch \ 118 file://0001-Disable-__sync_add_and_fetch_8-on-nios2.patch \
119 file://gcc6-stdlib.patch \ 119 file://gcc6-stdlib.patch \
120 file://0001-system.h-query.c-support-nosignature.patch \
120" 121"
121 122
122# OE specific changes 123# OE specific changes