summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2016-03-21 02:25:49 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-03-25 10:29:14 +0000
commit05d7e0db5d1de2643284edf7fccaf47616145bd6 (patch)
tree388e20e55a61ca1bc6cb36fb759fec2ea8420c95
parent13a31b15ec2467120a2efb30a9486ce789516b21 (diff)
downloadpoky-05d7e0db5d1de2643284edf7fccaf47616145bd6.tar.gz
rpm: check _gpg_passphrase before ask for input
rpm always asked for pass phrasae when add signature, which made it can't work non-interactively, this patch fix the problem. It will work non-interactively if _gpg_passphrase is defined, and work as before if not. (From OE-Core rev: 3cd4f96e94d8756d332b13215ce3ac2e1eaddee7) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/rpm/rpm/rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch70
-rw-r--r--meta/recipes-devtools/rpm/rpm_5.4.16.bb1
2 files changed, 71 insertions, 0 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch b/meta/recipes-devtools/rpm/rpm/rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch
new file mode 100644
index 0000000000..c68681c1ed
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch
@@ -0,0 +1,70 @@
1From bb48dbc88a58bc05a43d71a3375fb05358119ec5 Mon Sep 17 00:00:00 2001
2From: Robert Yang <liezhi.yang@windriver.com>
3Date: Sun, 20 Mar 2016 20:20:16 -0700
4Subject: [PATCH] rpmqv.c: check _gpg_passphrase before ask for input
5
6rpm always asked for pass phrasae when add signature, which made it
7can't work non-interactively, this patch fix the problem. It will work
8non-interactively if _gpg_passphrase is defined, and work as before if
9not.
10
11Upstream-Status: Pending
12
13Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
14---
15 macros/macros.in | 7 +++++--
16 rpmqv.c | 17 ++++++++++-------
17 2 files changed, 15 insertions(+), 9 deletions(-)
18
19diff --git a/macros/macros.in b/macros/macros.in
20index 2e5b07d..01b3aad 100644
21--- a/macros/macros.in
22+++ b/macros/macros.in
23@@ -520,15 +520,18 @@ $_arbitrary_tags_tests Foo:Bar
24 # Macro(s) to hold the arguments passed to GPG/PGP for package
25 # signing and verification.
26 #
27+
28+%_gpg_passphrase_way %{?_gpg_passphrase:--passphrase "%{_gpg_passphrase}"}%{!?_gpg_passphrase:--passphrase-fd 3}
29+
30 %__gpg_check_password_cmd %{__gpg} \
31- gpg --batch --no-verbose --passphrase-fd 3 -u "%{_gpg_name}" -so -
32+ gpg --batch --no-verbose %{_gpg_passphrase_way} -u "%{_gpg_name}" -so -
33 #%__pgp_check_password_cmd %{__pgp} \
34 # pgp +batchmode=on +verbose=0 "%{_pgp_name}" -sf
35 #%__pgp5_check_password_cmd %{__pgp} \
36 # pgps +batchmode=on +verbose=0 +armor=off "%{_pgp_name}" -f
37
38 %__gpg_sign_cmd %{__gpg} \
39- gpg --batch --no-verbose --no-armor --passphrase-fd 3 --no-secmem-warning \
40+ gpg --batch --no-verbose --no-armor %{_gpg_passphrase_way} --no-secmem-warning \
41 -u "%{_gpg_name}" -sbo %{__signature_filename} %{__plaintext_filename}
42 #%__pgp_sign_cmd %{__pgp} \
43 # pgp +batchmode=on +verbose=0 +armor=off \
44diff --git a/rpmqv.c b/rpmqv.c
45index b306486..7604396 100644
46--- a/rpmqv.c
47+++ b/rpmqv.c
48@@ -831,13 +831,16 @@ int main(int argc, const char ** argv)
49 #endif
50 )
51 {
52- passPhrase = Getpass(_("Enter pass phrase: "));
53- if (rpmCheckPassPhrase(passPhrase)) {
54- fprintf(stderr, _("Pass phrase check failed\n"));
55- ec = EXIT_FAILURE;
56- goto exit;
57+ passPhrase = rpmExpand("%{?_gpg_passphrase}", NULL);
58+ if (passPhrase == NULL || passPhrase[0] == '\0') {
59+ passPhrase = Getpass(_("Enter pass phrase: "));
60+ if (rpmCheckPassPhrase(passPhrase)) {
61+ fprintf(stderr, _("Pass phrase check failed\n"));
62+ ec = EXIT_FAILURE;
63+ goto exit;
64+ }
65+ fprintf(stderr, _("Pass phrase is good.\n"));
66 }
67- fprintf(stderr, _("Pass phrase is good.\n"));
68 /* XXX Getpass() should realloc instead. */
69 passPhrase = xstrdup(passPhrase);
70 }
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.16.bb b/meta/recipes-devtools/rpm/rpm_5.4.16.bb
index eba043e3af..7621f8ffaa 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.16.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.16.bb
@@ -114,6 +114,7 @@ SRC_URI += " \
114 file://rpm-python-AddErase.patch \ 114 file://rpm-python-AddErase.patch \
115 file://rpm-rpmpgp-popt.patch \ 115 file://rpm-rpmpgp-popt.patch \
116 file://rpm-fix-lua-tests-compilation-failure.patch \ 116 file://rpm-fix-lua-tests-compilation-failure.patch \
117 file://rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch \
117" 118"
118 119
119# OE specific changes 120# OE specific changes