Gentoo Archives: gentoo-commits

From: Aaron Bauman <bman@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/m2crypto/files/, dev-python/m2crypto/
Date: Sat, 16 Feb 2019 18:28:45
Message-Id: 1550341702.e0cd10c7a66e1387dfc9ea020e3a749e714eb811.bman@gentoo
1 commit: e0cd10c7a66e1387dfc9ea020e3a749e714eb811
2 Author: Stefan Strogin <stefan.strogin <AT> gmail <DOT> com>
3 AuthorDate: Wed Jan 9 08:26:28 2019 +0000
4 Commit: Aaron Bauman <bman <AT> gentoo <DOT> org>
5 CommitDate: Sat Feb 16 18:28:22 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e0cd10c7
7
8 dev-python/m2crypto: add LibreSSL support
9
10 Closes: https://bugs.gentoo.org/674942
11 Package-Manager: Portage-2.3.54, Repoman-2.3.12
12 Signed-off-by: Stefan Strogin <stefan.strogin <AT> gmail.com>
13 Closes: https://github.com/gentoo/gentoo/pull/10781
14 Signed-off-by: Aaron Bauman <bman <AT> gentoo.org>
15
16 .../m2crypto/files/m2crypto-libressl-0.31.0.patch | 222 +++++++++++++++++++++
17 ...pto-0.31.0.ebuild => m2crypto-0.31.0-r1.ebuild} | 12 +-
18 2 files changed, 230 insertions(+), 4 deletions(-)
19
20 diff --git a/dev-python/m2crypto/files/m2crypto-libressl-0.31.0.patch b/dev-python/m2crypto/files/m2crypto-libressl-0.31.0.patch
21 new file mode 100644
22 index 00000000000..10ed142b33e
23 --- /dev/null
24 +++ b/dev-python/m2crypto/files/m2crypto-libressl-0.31.0.patch
25 @@ -0,0 +1,222 @@
26 +From fa56170c7adf5f124a48cf1074390adfc697272c Mon Sep 17 00:00:00 2001
27 +From: Stefan Strogin <stefan.strogin@×××××.com>
28 +Date: Wed, 9 Jan 2019 10:15:08 +0200
29 +Subject: [PATCH] Fix compilation with LibreSSL
30 +
31 +---
32 + SWIG/_bio.i | 8 +++++---
33 + SWIG/_evp.i | 2 +-
34 + SWIG/_lib.i | 2 +-
35 + SWIG/_lib11_compat.i | 5 ++++-
36 + SWIG/_m2crypto_wrap.c | 11 ++++++++---
37 + SWIG/_ssl.i | 4 ++--
38 + SWIG/_threads.i | 10 +++++-----
39 + 7 files changed, 26 insertions(+), 16 deletions(-)
40 +
41 +diff --git a/SWIG/_bio.i b/SWIG/_bio.i
42 +index e85a275..8eada82 100644
43 +--- a/SWIG/_bio.i
44 ++++ b/SWIG/_bio.i
45 +@@ -293,7 +293,7 @@ int bio_should_write(BIO* a) {
46 + }
47 +
48 + /* Macros for things not defined before 1.1.0 */
49 +-#if OPENSSL_VERSION_NUMBER < 0x10100000L
50 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)
51 + static BIO_METHOD *
52 + BIO_meth_new( int type, const char *name )
53 + {
54 +@@ -325,11 +325,13 @@ BIO_meth_free( BIO_METHOD *meth )
55 + #define BIO_set_shutdown(b, x) (b)->shutdown = x
56 + #define BIO_get_shutdown(b) (b)->shutdown
57 + #define BIO_set_init(b, x) b->init = x
58 +-#define BIO_get_init(b) (b)->init
59 + #define BIO_set_data(b, x) b->ptr = x
60 + #define BIO_clear_flags(b, x) b->flags &= ~(x)
61 + #define BIO_get_data(b) b->ptr
62 + #endif
63 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
64 ++#define BIO_get_init(b) (b)->init
65 ++#endif
66 +
67 + /* implment custom BIO_s_pyfd */
68 +
69 +@@ -515,7 +517,7 @@ static long pyfd_ctrl(BIO *b, int cmd, long num, void *ptr) {
70 + }
71 +
72 + void pyfd_init(void) {
73 +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
74 ++#if (!defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL)
75 + methods_fdp = BIO_meth_new(
76 + BIO_get_new_index()|BIO_TYPE_DESCRIPTOR|BIO_TYPE_SOURCE_SINK,
77 + "python file descriptor");
78 +diff --git a/SWIG/_evp.i b/SWIG/_evp.i
79 +index d04e806..6fa9b38 100644
80 +--- a/SWIG/_evp.i
81 ++++ b/SWIG/_evp.i
82 +@@ -19,7 +19,7 @@ Copyright (c) 2009-2010 Heikki Toivonen. All rights reserved.
83 + #include <openssl/rsa.h>
84 + #include <openssl/opensslv.h>
85 +
86 +-#if OPENSSL_VERSION_NUMBER < 0x10100000L
87 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)
88 +
89 + HMAC_CTX *HMAC_CTX_new(void) {
90 + HMAC_CTX *ret = PyMem_Malloc(sizeof(HMAC_CTX));
91 +diff --git a/SWIG/_lib.i b/SWIG/_lib.i
92 +index c84b800..807d5f6 100644
93 +--- a/SWIG/_lib.i
94 ++++ b/SWIG/_lib.i
95 +@@ -512,7 +512,7 @@ int passphrase_callback(char *buf, int num, int v, void *arg) {
96 + %inline %{
97 +
98 + void lib_init() {
99 +-#if OPENSSL_VERSION_NUMBER < 0x10100000L
100 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)
101 + SSLeay_add_all_algorithms();
102 + ERR_load_ERR_strings();
103 + #endif
104 +diff --git a/SWIG/_lib11_compat.i b/SWIG/_lib11_compat.i
105 +index 1ec42dd..4234004 100644
106 +--- a/SWIG/_lib11_compat.i
107 ++++ b/SWIG/_lib11_compat.i
108 +@@ -8,7 +8,7 @@
109 + */
110 +
111 + %{
112 +-#if OPENSSL_VERSION_NUMBER < 0x10100000L
113 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
114 +
115 + #include <string.h>
116 + #include <openssl/engine.h>
117 +@@ -24,6 +24,9 @@ static void *CRYPTO_zalloc(size_t num, const char *file, int line)
118 + return ret;
119 + }
120 +
121 ++#endif
122 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)
123 ++
124 + #include <openssl/bn.h>
125 +
126 + #ifndef BN_F_BN_GENCB_NEW
127 +diff --git a/SWIG/_m2crypto_wrap.c b/SWIG/_m2crypto_wrap.c
128 +index 0f07702..f168822 100644
129 +--- a/SWIG/_m2crypto_wrap.c
130 ++++ b/SWIG/_m2crypto_wrap.c
131 +@@ -3838,7 +3838,7 @@ void threading_cleanup(void) {
132 + #include <ceval.h>
133 +
134 +
135 +-#if OPENSSL_VERSION_NUMBER < 0x10100000L
136 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
137 +
138 + #include <string.h>
139 + #include <openssl/engine.h>
140 +@@ -3854,6 +3854,9 @@ static void *CRYPTO_zalloc(size_t num, const char *file, int line)
141 + return ret;
142 + }
143 +
144 ++#endif
145 ++#ifdef OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)
146 ++
147 + #include <openssl/bn.h>
148 +
149 + #ifndef BN_F_BN_GENCB_NEW
150 +@@ -5315,7 +5318,7 @@ int bio_should_write(BIO* a) {
151 + }
152 +
153 + /* Macros for things not defined before 1.1.0 */
154 +-#if OPENSSL_VERSION_NUMBER < 0x10100000L
155 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)
156 + static BIO_METHOD *
157 + BIO_meth_new( int type, const char *name )
158 + {
159 +@@ -5347,11 +5350,13 @@ BIO_meth_free( BIO_METHOD *meth )
160 + #define BIO_set_shutdown(b, x) (b)->shutdown = x
161 + #define BIO_get_shutdown(b) (b)->shutdown
162 + #define BIO_set_init(b, x) b->init = x
163 +-#define BIO_get_init(b) (b)->init
164 + #define BIO_set_data(b, x) b->ptr = x
165 + #define BIO_clear_flags(b, x) b->flags &= ~(x)
166 + #define BIO_get_data(b) b->ptr
167 + #endif
168 ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
169 ++#define BIO_get_init(b) (b)->init
170 ++#endif
171 +
172 + /* implment custom BIO_s_pyfd */
173 +
174 +diff --git a/SWIG/_ssl.i b/SWIG/_ssl.i
175 +index 7257656..40b0582 100644
176 +--- a/SWIG/_ssl.i
177 ++++ b/SWIG/_ssl.i
178 +@@ -27,7 +27,7 @@ typedef unsigned __int64 uint64_t;
179 + #endif
180 + %}
181 +
182 +-#if OPENSSL_VERSION_NUMBER >= 0x10100005L
183 ++#if (!defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100005L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL)
184 + %include <openssl/safestack.h>
185 + #endif
186 +
187 +@@ -261,7 +261,7 @@ void ssl_init(PyObject *ssl_err, PyObject *ssl_timeout_err) {
188 + }
189 +
190 + const SSL_METHOD *tlsv1_method(void) {
191 +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
192 ++#if (!defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL)
193 + PyErr_WarnEx(PyExc_DeprecationWarning,
194 + "Function TLSv1_method has been deprecated.", 1);
195 + #endif
196 +diff --git a/SWIG/_threads.i b/SWIG/_threads.i
197 +index 69adb9f..fd2285a 100644
198 +--- a/SWIG/_threads.i
199 ++++ b/SWIG/_threads.i
200 +@@ -5,7 +5,7 @@
201 + #include <pythread.h>
202 + #include <openssl/crypto.h>
203 +
204 +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L
205 ++#if defined(THREADING) && (OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL))
206 + #define CRYPTO_num_locks() (CRYPTO_NUM_LOCKS)
207 + static PyThread_type_lock lock_cs[CRYPTO_num_locks()];
208 + static long lock_count[CRYPTO_num_locks()];
209 +@@ -13,7 +13,7 @@ static int thread_mode = 0;
210 + #endif
211 +
212 + void threading_locking_callback(int mode, int type, const char *file, int line) {
213 +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L
214 ++#if defined(THREADING) && (OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL))
215 + if (mode & CRYPTO_LOCK) {
216 + PyThread_acquire_lock(lock_cs[type], WAIT_LOCK);
217 + lock_count[type]++;
218 +@@ -25,7 +25,7 @@ void threading_locking_callback(int mode, int type, const char *file, int line)
219 + }
220 +
221 + unsigned long threading_id_callback(void) {
222 +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L
223 ++#if defined(THREADING) && (OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL))
224 + return (unsigned long)PyThread_get_thread_ident();
225 + #else
226 + return (unsigned long)0;
227 +@@ -35,7 +35,7 @@ unsigned long threading_id_callback(void) {
228 +
229 + %inline %{
230 + void threading_init(void) {
231 +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L
232 ++#if defined(THREADING) && (OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL))
233 + int i;
234 + if (!thread_mode) {
235 + for (i=0; i<CRYPTO_num_locks(); i++) {
236 +@@ -50,7 +50,7 @@ void threading_init(void) {
237 + }
238 +
239 + void threading_cleanup(void) {
240 +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L
241 ++#if defined(THREADING) && (OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL))
242 + int i;
243 + if (thread_mode) {
244 + CRYPTO_set_locking_callback(NULL);
245 +--
246 +2.20.1
247 +
248
249 diff --git a/dev-python/m2crypto/m2crypto-0.31.0.ebuild b/dev-python/m2crypto/m2crypto-0.31.0-r1.ebuild
250 similarity index 85%
251 rename from dev-python/m2crypto/m2crypto-0.31.0.ebuild
252 rename to dev-python/m2crypto/m2crypto-0.31.0-r1.ebuild
253 index 89114bf03d7..d39f59a5d40 100644
254 --- a/dev-python/m2crypto/m2crypto-0.31.0.ebuild
255 +++ b/dev-python/m2crypto/m2crypto-0.31.0-r1.ebuild
256 @@ -1,4 +1,4 @@
257 -# Copyright 2018 Gentoo Authors
258 +# Copyright 2018-2019 Gentoo Authors
259 # Distributed under the terms of the GNU General Public License v2
260
261 EAPI=7
262 @@ -18,11 +18,11 @@ LICENSE="MIT"
263 SLOT="0"
264 KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos"
265
266 -# NOTE: Apparently nobody cares about libressl support, dropping support
267 -# IUSE="libressl"
268 +IUSE="libressl"
269
270 RDEPEND="
271 - dev-libs/openssl:0=[-bindist(-)]
272 + !libressl? ( dev-libs/openssl:0=[-bindist(-)] )
273 + libressl? ( dev-libs/libressl:0= )
274 virtual/python-typing[${PYTHON_USEDEP}]
275 "
276 DEPEND="${RDEPEND}
277 @@ -35,6 +35,10 @@ S="${WORKDIR}/${MY_PN}-${PV}"
278 # Tests access network, and fail randomly. Bug #431458.
279 RESTRICT=test
280
281 +PATCHES=(
282 + "${FILESDIR}/${PN}-libressl-${PV}.patch"
283 +)
284 +
285 python_compile() {
286 # setup.py looks at platform.machine() to determine swig options.
287 # For exotic ABIs, we need to give swig a hint.