diff options
| author | Robert Yang <liezhi.yang@windriver.com> | 2016-07-17 20:32:41 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-23 15:27:05 +0100 |
| commit | 642890f5d011768c76a065e1e83f2370b2141c9d (patch) | |
| tree | 185633ee92b0e8090f10cca24658c8565f6b78b3 | |
| parent | 5368cfee9e2c2a9bf0c6f9718f4c33105c3c6ac0 (diff) | |
| download | poky-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.patch | 64 | ||||
| -rw-r--r-- | meta/recipes-devtools/rpm/rpm_5.4.16.bb | 1 |
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 @@ | |||
| 1 | From d8fcc3cbeec4defb5babde5bd09ea294dd3fd08b Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Robert Yang <liezhi.yang@windriver.com> | ||
| 3 | Date: Sun, 3 Jul 2016 19:01:59 -0700 | ||
| 4 | Subject: [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 | |||
| 11 | Upstream-Status: Submitting [Sent email to rpm-devel@rpm5.org] | ||
| 12 | |||
| 13 | Signed-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 | |||
| 19 | diff --git a/lib/query.c b/lib/query.c | ||
| 20 | index 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? */ | ||
| 46 | diff --git a/system.h b/system.h | ||
| 47 | index 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 | -- | ||
| 63 | 2.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 |
