Gentoo Archives: gentoo-commits

From: Sam James <sam@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-libs/libgcrypt/files/, dev-libs/libgcrypt/
Date: Fri, 29 Jan 2021 20:46:00
Message-Id: 1611953150.c31ae3b3a3df3277b878f88de17d508bde370aee.sam@gentoo
1 commit: c31ae3b3a3df3277b878f88de17d508bde370aee
2 Author: Sam James <sam <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jan 29 20:43:14 2021 +0000
4 Commit: Sam James <sam <AT> gentoo <DOT> org>
5 CommitDate: Fri Jan 29 20:45:50 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c31ae3b3
7
8 dev-libs/libgcrypt: fix USE=-asm build
9
10 Closes: https://bugs.gentoo.org/767859
11 Package-Manager: Portage-3.0.14, Repoman-3.0.2
12 Signed-off-by: Sam James <sam <AT> gentoo.org>
13
14 .../libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch | 141 +++++++++++++++++++++
15 ...rypt-1.9.1.ebuild => libgcrypt-1.9.1-r1.ebuild} | 1 +
16 2 files changed, 142 insertions(+)
17
18 diff --git a/dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch b/dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch
19 new file mode 100644
20 index 00000000000..875c2237008
21 --- /dev/null
22 +++ b/dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch
23 @@ -0,0 +1,141 @@
24 +Broken in https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commitdiff;h=8d404a629167d67ed56e45de3e65d1e0b7cdeb24;hp=3b34bd6e178614d6021ee7d1140646f7c8ed7519
25 +https://dev.gnupg.org/T5277
26 +https://bugs.gentoo.org/767859
27 +
28 +This is a revert of that commit, as suggested by upstream in the linked bug.
29 +diff --git a/random/rand-internal.h b/random/rand-internal.h
30 +index 34221569..d99c6671 100644
31 +--- a/random/rand-internal.h
32 ++++ b/random/rand-internal.h
33 +@@ -141,7 +141,7 @@ void _gcry_rndhw_poll_fast (void (*add)(const void*, size_t,
34 + enum random_origins origin);
35 + size_t _gcry_rndhw_poll_slow (void (*add)(const void*, size_t,
36 + enum random_origins),
37 +- enum random_origins origin, size_t req_length);
38 ++ enum random_origins origin);
39 +
40 +
41 +
42 +diff --git a/random/rndhw.c b/random/rndhw.c
43 +index 3cf9acc3..2829382c 100644
44 +--- a/random/rndhw.c
45 ++++ b/random/rndhw.c
46 +@@ -198,33 +198,24 @@ _gcry_rndhw_poll_fast (void (*add)(const void*, size_t, enum random_origins),
47 +
48 +
49 + /* Read 64 bytes from a hardware RNG and return the number of bytes
50 +- actually read. However hardware source is let account only
51 +- for up to 50% (or 25% for RDRAND) of the requested bytes. */
52 ++ actually read. */
53 + size_t
54 + _gcry_rndhw_poll_slow (void (*add)(const void*, size_t, enum random_origins),
55 +- enum random_origins origin, size_t req_length)
56 ++ enum random_origins origin)
57 + {
58 + size_t nbytes = 0;
59 +
60 + (void)add;
61 + (void)origin;
62 +
63 +- req_length /= 2; /* Up to 50%. */
64 +-
65 + #ifdef USE_DRNG
66 + if ((_gcry_get_hw_features () & HWF_INTEL_RDRAND))
67 +- {
68 +- req_length /= 2; /* Up to 25%. */
69 +- nbytes += poll_drng (add, origin, 0);
70 +- }
71 ++ nbytes += poll_drng (add, origin, 0);
72 + #endif
73 + #ifdef USE_PADLOCK
74 + if ((_gcry_get_hw_features () & HWF_PADLOCK_RNG))
75 + nbytes += poll_padlock (add, origin, 0);
76 + #endif
77 +
78 +- if (nbytes > req_length)
79 +- nbytes = req_length;
80 +-
81 + return nbytes;
82 + }
83 +diff --git a/random/rndlinux.c b/random/rndlinux.c
84 +index a22db177..f378a549 100644
85 +--- a/random/rndlinux.c
86 ++++ b/random/rndlinux.c
87 +@@ -190,10 +190,19 @@ _gcry_rndlinux_gather_random (void (*add)(const void*, size_t,
88 + }
89 +
90 +
91 +- /* First read from a hardware source. Note that _gcry_rndhw_poll_slow lets
92 +- it account only for up to 50% (or 25% for RDRAND) of the requested
93 +- bytes. */
94 +- n_hw = _gcry_rndhw_poll_slow (add, origin, length);
95 ++ /* First read from a hardware source. However let it account only
96 ++ for up to 50% (or 25% for RDRAND) of the requested bytes. */
97 ++ n_hw = _gcry_rndhw_poll_slow (add, origin);
98 ++ if ((_gcry_get_hw_features () & HWF_INTEL_RDRAND))
99 ++ {
100 ++ if (n_hw > length/4)
101 ++ n_hw = length/4;
102 ++ }
103 ++ else
104 ++ {
105 ++ if (n_hw > length/2)
106 ++ n_hw = length/2;
107 ++ }
108 + if (length > 1)
109 + length -= n_hw;
110 +
111 +diff --git a/src/g10lib.h b/src/g10lib.h
112 +index 243997eb..cba2e237 100644
113 +--- a/src/g10lib.h
114 ++++ b/src/g10lib.h
115 +@@ -217,8 +217,6 @@ char **_gcry_strtokenize (const char *string, const char *delim);
116 +
117 +
118 + /*-- src/hwfeatures.c --*/
119 +-#if defined(HAVE_CPU_ARCH_X86)
120 +-
121 + #define HWF_PADLOCK_RNG (1 << 0)
122 + #define HWF_PADLOCK_AES (1 << 1)
123 + #define HWF_PADLOCK_SHA (1 << 2)
124 +@@ -238,28 +236,20 @@ char **_gcry_strtokenize (const char *string, const char *delim);
125 + #define HWF_INTEL_RDTSC (1 << 15)
126 + #define HWF_INTEL_SHAEXT (1 << 16)
127 +
128 +-#elif defined(HAVE_CPU_ARCH_ARM)
129 +-
130 +-#define HWF_ARM_NEON (1 << 0)
131 +-#define HWF_ARM_AES (1 << 1)
132 +-#define HWF_ARM_SHA1 (1 << 2)
133 +-#define HWF_ARM_SHA2 (1 << 3)
134 +-#define HWF_ARM_PMULL (1 << 4)
135 +-
136 +-#elif defined(HAVE_CPU_ARCH_PPC)
137 ++#define HWF_ARM_NEON (1 << 17)
138 ++#define HWF_ARM_AES (1 << 18)
139 ++#define HWF_ARM_SHA1 (1 << 19)
140 ++#define HWF_ARM_SHA2 (1 << 20)
141 ++#define HWF_ARM_PMULL (1 << 21)
142 +
143 +-#define HWF_PPC_VCRYPTO (1 << 0)
144 +-#define HWF_PPC_ARCH_3_00 (1 << 1)
145 +-#define HWF_PPC_ARCH_2_07 (1 << 2)
146 ++#define HWF_PPC_VCRYPTO (1 << 22)
147 ++#define HWF_PPC_ARCH_3_00 (1 << 23)
148 ++#define HWF_PPC_ARCH_2_07 (1 << 24)
149 +
150 +-#elif defined(HAVE_CPU_ARCH_S390X)
151 +-
152 +-#define HWF_S390X_MSA (1 << 0)
153 +-#define HWF_S390X_MSA_4 (1 << 1)
154 +-#define HWF_S390X_MSA_8 (1 << 2)
155 +-#define HWF_S390X_VX (1 << 3)
156 +-
157 +-#endif
158 ++#define HWF_S390X_MSA (1 << 25)
159 ++#define HWF_S390X_MSA_4 (1 << 26)
160 ++#define HWF_S390X_MSA_8 (1 << 27)
161 ++#define HWF_S390X_VX (1 << 28)
162 +
163 + gpg_err_code_t _gcry_disable_hw_feature (const char *name);
164 + void _gcry_detect_hw_features (void);
165
166 diff --git a/dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild b/dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild
167 similarity index 98%
168 rename from dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild
169 rename to dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild
170 index a40209631d4..952a5816824 100644
171 --- a/dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild
172 +++ b/dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild
173 @@ -21,6 +21,7 @@ BDEPEND="doc? ( virtual/texi2dvi )"
174 PATCHES=(
175 "${FILESDIR}"/${PN}-1.6.1-uscore.patch
176 "${FILESDIR}"/${PN}-multilib-syspath.patch
177 + "${FILESDIR}"/${PN}-1.9.1-fix-no-asm-on-amd64-x86.patch
178 )
179
180 MULTILIB_CHOST_TOOLS=(