From 1d6061732e2e680b9399ec168e8a99b3438d5339 Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Thu, 19 Oct 2017 19:52:42 +0200 Subject: [PATCH] python-M2Crypto: fix build with libressl Closes #8168. --- .../python-M2Crypto/patches/libressl.patch | 148 ++++++++++++++++++ srcpkgs/python-M2Crypto/template | 2 +- 2 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/python-M2Crypto/patches/libressl.patch diff --git a/srcpkgs/python-M2Crypto/patches/libressl.patch b/srcpkgs/python-M2Crypto/patches/libressl.patch new file mode 100644 index 00000000000..54620a6afb3 --- /dev/null +++ b/srcpkgs/python-M2Crypto/patches/libressl.patch @@ -0,0 +1,148 @@ +--- SWIG/_bio.i.orig ++++ SWIG/_bio.i +@@ -63,14 +63,14 @@ extern BIO *BIO_pop(BIO *); + static PyObject *_bio_err; + + +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + void pyfd_init(void); + #endif + + void bio_init(PyObject *bio_err) { + Py_INCREF(bio_err); + _bio_err = bio_err; +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + pyfd_init(); + #endif + } +@@ -299,7 +299,7 @@ int bio_should_write(BIO* a) { + return BIO_should_write(a); + } + +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* implment custom BIO_s_pyfd */ + + #ifdef WIN32 +--- SWIG/_evp.i.orig ++++ SWIG/_evp.i +@@ -19,7 +19,7 @@ Copyright (c) 2009-2010 Heikki Toivonen. All rights re + #include + #include + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + + HMAC_CTX *HMAC_CTX_new(void) { + HMAC_CTX *ret = PyMem_Malloc(sizeof(HMAC_CTX)); +--- SWIG/_lib11_compat.i.orig ++++ SWIG/_lib11_compat.i +@@ -8,7 +8,7 @@ + */ + + %{ +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + + #include + #include +--- SWIG/_lib.i.orig ++++ SWIG/_lib.i +@@ -18,7 +18,7 @@ + + %{ + /* OpenSSL 1.0.2 copmatbility shim */ +-#if OPENSSL_VERSION_NUMBER < 0x10002000L ++#if OPENSSL_VERSION_NUMBER < 0x10002000L || defined(LIBRESSL_VERSION_NUMBER) + typedef void (*OPENSSL_sk_freefunc)(void *); + typedef void *(*OPENSSL_sk_copyfunc)(const void *); + typedef struct stack_st OPENSSL_STACK; +@@ -501,7 +501,7 @@ int passphrase_callback(char *buf, int num, int v, voi + %inline %{ + + void lib_init() { +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + SSLeay_add_all_algorithms(); + ERR_load_ERR_strings(); + #endif +--- SWIG/_ssl.i.orig ++++ SWIG/_ssl.i +@@ -268,7 +268,7 @@ void ssl_init(PyObject *ssl_err, PyObject *ssl_timeout + + #ifndef OPENSSL_NO_SSL3 + const SSL_METHOD *sslv3_method(void) { +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + PyErr_WarnEx(PyExc_DeprecationWarning, + "Function SSLv3_method has been deprecated.", 1); + #endif +@@ -277,7 +277,7 @@ const SSL_METHOD *sslv3_method(void) { + #endif + + const SSL_METHOD *tlsv1_method(void) { +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + PyErr_WarnEx(PyExc_DeprecationWarning, + "Function TLSv1_method has been deprecated.", 1); + #endif +--- SWIG/_threads.i.orig ++++ SWIG/_threads.i +@@ -5,7 +5,7 @@ + #include + #include + +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + #define CRYPTO_num_locks() (CRYPTO_NUM_LOCKS) + static PyThread_type_lock lock_cs[CRYPTO_num_locks()]; + static long lock_count[CRYPTO_num_locks()]; +@@ -13,7 +13,7 @@ static int thread_mode = 0; + #endif + + void threading_locking_callback(int mode, int type, const char *file, int line) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + if (mode & CRYPTO_LOCK) { + PyThread_acquire_lock(lock_cs[type], WAIT_LOCK); + lock_count[type]++; +@@ -25,7 +25,7 @@ void threading_locking_callback(int mode, int type, co + } + + unsigned long threading_id_callback(void) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + return (unsigned long)PyThread_get_thread_ident(); + #else + return (unsigned long)0; +@@ -35,7 +35,7 @@ unsigned long threading_id_callback(void) { + + %inline %{ + void threading_init(void) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + int i; + if (!thread_mode) { + for (i=0; i + #include diff --git a/srcpkgs/python-M2Crypto/template b/srcpkgs/python-M2Crypto/template index 702a3f0ba9e..0555d7537c7 100644 --- a/srcpkgs/python-M2Crypto/template +++ b/srcpkgs/python-M2Crypto/template @@ -1,7 +1,7 @@ # Template file for 'python-M2Crypto' pkgname=python-M2Crypto version=0.27.0 -revision=1 +revision=2 wrksrc="M2Crypto-${version}" build_style=python2-module pycompile_module="M2Crypto"