diff options
author | Quentin Retornaz <gentoo@retornaz.com> | 2021-01-17 19:28:07 +0100 |
---|---|---|
committer | Quentin Retornaz <gentoo@retornaz.com> | 2021-01-26 01:21:41 +0100 |
commit | 15186714fd5ca20ee3cbc6b23aa35a6a42c9196c (patch) | |
tree | 13e90edaeb13456bed7989b9502c0ac2497dff04 /dev-python | |
parent | dev-libs/softhsm: new package (diff) | |
download | libressl-15186714fd5ca20ee3cbc6b23aa35a6a42c9196c.tar.gz libressl-15186714fd5ca20ee3cbc6b23aa35a6a42c9196c.tar.bz2 libressl-15186714fd5ca20ee3cbc6b23aa35a6a42c9196c.zip |
dev-python/m2crypto: new package
Package-Manager: Portage-3.0.12, Repoman-3.0.2
Signed-off-by: Quentin Retornaz <gentoo@retornaz.com>
Diffstat (limited to 'dev-python')
-rw-r--r-- | dev-python/m2crypto/Manifest | 3 | ||||
-rw-r--r-- | dev-python/m2crypto/files/m2crypto-libressl-0.31.0.patch | 222 | ||||
-rw-r--r-- | dev-python/m2crypto/m2crypto-0.35.2-r1.ebuild | 65 | ||||
-rw-r--r-- | dev-python/m2crypto/m2crypto-0.36.0-r1.ebuild | 72 | ||||
-rw-r--r-- | dev-python/m2crypto/m2crypto-0.37.1.ebuild | 69 | ||||
-rw-r--r-- | dev-python/m2crypto/metadata.xml | 12 |
6 files changed, 443 insertions, 0 deletions
diff --git a/dev-python/m2crypto/Manifest b/dev-python/m2crypto/Manifest new file mode 100644 index 0000000..549be47 --- /dev/null +++ b/dev-python/m2crypto/Manifest @@ -0,0 +1,3 @@ +DIST M2Crypto-0.35.2.tar.gz 1117706 BLAKE2B efa15e023be7755b94c642bb23eade912edcbbb76bcdfed3414d27937cd705ec4c83069ca620fe20e58e126549ba7f98e84f6f8330b78133a8a8b953d18f467b SHA512 3608b29a8e7d0732a2359e35fcaae191447aa7c0211ca3d057eed6cee7f0819f5c1121e7d41caca8cdea3c7911f8c447ee475b1b3d125e8dc3adde2718a59f36 +DIST M2Crypto-0.36.0.tar.gz 1127584 BLAKE2B 5cdbbb11ff67d4ddffb2853a72383f3c7f1e1aa53ab84166aeda4fbea1b0d7f506761bb07bf8cb5b36f94bdbeb2ea2b46e0693da8355f81b4bf5c4c1c1cc18b1 SHA512 5b7d6d10c943ff0e09e0e9748d5578e7e0f7659a73de4ba49481152bca05871aef2bfbb869e1636a7cebcf2dd8b9f67fb0d299a833d1d4ebd538031c35d7bca1 +DIST M2Crypto-0.37.1.tar.gz 1247031 BLAKE2B 3628150b8da15d7356298b6e52e0d8fa7875921a184a0eba3a97eff0588c9e0fee340c92fd486919057d900d6e3b2b711174dde9761fe247848f92ac6434df0a SHA512 9a5e0220704b4897a9ca7efa4b3b57447b9175c52e8039a85bff7bb1a43b709c69f3c8b5903df461f8de39d3f8a20f9bf494df6f5882771846adfe2c03fbea9e diff --git a/dev-python/m2crypto/files/m2crypto-libressl-0.31.0.patch b/dev-python/m2crypto/files/m2crypto-libressl-0.31.0.patch new file mode 100644 index 0000000..10ed142 --- /dev/null +++ b/dev-python/m2crypto/files/m2crypto-libressl-0.31.0.patch @@ -0,0 +1,222 @@ +From fa56170c7adf5f124a48cf1074390adfc697272c Mon Sep 17 00:00:00 2001 +From: Stefan Strogin <stefan.strogin@gmail.com> +Date: Wed, 9 Jan 2019 10:15:08 +0200 +Subject: [PATCH] Fix compilation with LibreSSL + +--- + SWIG/_bio.i | 8 +++++--- + SWIG/_evp.i | 2 +- + SWIG/_lib.i | 2 +- + SWIG/_lib11_compat.i | 5 ++++- + SWIG/_m2crypto_wrap.c | 11 ++++++++--- + SWIG/_ssl.i | 4 ++-- + SWIG/_threads.i | 10 +++++----- + 7 files changed, 26 insertions(+), 16 deletions(-) + +diff --git a/SWIG/_bio.i b/SWIG/_bio.i +index e85a275..8eada82 100644 +--- a/SWIG/_bio.i ++++ b/SWIG/_bio.i +@@ -293,7 +293,7 @@ int bio_should_write(BIO* a) { + } + + /* Macros for things not defined before 1.1.0 */ +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) + static BIO_METHOD * + BIO_meth_new( int type, const char *name ) + { +@@ -325,11 +325,13 @@ BIO_meth_free( BIO_METHOD *meth ) + #define BIO_set_shutdown(b, x) (b)->shutdown = x + #define BIO_get_shutdown(b) (b)->shutdown + #define BIO_set_init(b, x) b->init = x +-#define BIO_get_init(b) (b)->init + #define BIO_set_data(b, x) b->ptr = x + #define BIO_clear_flags(b, x) b->flags &= ~(x) + #define BIO_get_data(b) b->ptr + #endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++#define BIO_get_init(b) (b)->init ++#endif + + /* implment custom BIO_s_pyfd */ + +@@ -515,7 +517,7 @@ static long pyfd_ctrl(BIO *b, int cmd, long num, void *ptr) { + } + + void pyfd_init(void) { +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if (!defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL) + methods_fdp = BIO_meth_new( + BIO_get_new_index()|BIO_TYPE_DESCRIPTOR|BIO_TYPE_SOURCE_SINK, + "python file descriptor"); +diff --git a/SWIG/_evp.i b/SWIG/_evp.i +index d04e806..6fa9b38 100644 +--- a/SWIG/_evp.i ++++ b/SWIG/_evp.i +@@ -19,7 +19,7 @@ Copyright (c) 2009-2010 Heikki Toivonen. All rights reserved. + #include <openssl/rsa.h> + #include <openssl/opensslv.h> + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) + + HMAC_CTX *HMAC_CTX_new(void) { + HMAC_CTX *ret = PyMem_Malloc(sizeof(HMAC_CTX)); +diff --git a/SWIG/_lib.i b/SWIG/_lib.i +index c84b800..807d5f6 100644 +--- a/SWIG/_lib.i ++++ b/SWIG/_lib.i +@@ -512,7 +512,7 @@ int passphrase_callback(char *buf, int num, int v, void *arg) { + %inline %{ + + void lib_init() { +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) + SSLeay_add_all_algorithms(); + ERR_load_ERR_strings(); + #endif +diff --git a/SWIG/_lib11_compat.i b/SWIG/_lib11_compat.i +index 1ec42dd..4234004 100644 +--- a/SWIG/_lib11_compat.i ++++ b/SWIG/_lib11_compat.i +@@ -8,7 +8,7 @@ + */ + + %{ +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + + #include <string.h> + #include <openssl/engine.h> +@@ -24,6 +24,9 @@ static void *CRYPTO_zalloc(size_t num, const char *file, int line) + return ret; + } + ++#endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) ++ + #include <openssl/bn.h> + + #ifndef BN_F_BN_GENCB_NEW +diff --git a/SWIG/_m2crypto_wrap.c b/SWIG/_m2crypto_wrap.c +index 0f07702..f168822 100644 +--- a/SWIG/_m2crypto_wrap.c ++++ b/SWIG/_m2crypto_wrap.c +@@ -3838,7 +3838,7 @@ void threading_cleanup(void) { + #include <ceval.h> + + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + + #include <string.h> + #include <openssl/engine.h> +@@ -3854,6 +3854,9 @@ static void *CRYPTO_zalloc(size_t num, const char *file, int line) + return ret; + } + ++#endif ++#ifdef OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) ++ + #include <openssl/bn.h> + + #ifndef BN_F_BN_GENCB_NEW +@@ -5315,7 +5318,7 @@ int bio_should_write(BIO* a) { + } + + /* Macros for things not defined before 1.1.0 */ +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) + static BIO_METHOD * + BIO_meth_new( int type, const char *name ) + { +@@ -5347,11 +5350,13 @@ BIO_meth_free( BIO_METHOD *meth ) + #define BIO_set_shutdown(b, x) (b)->shutdown = x + #define BIO_get_shutdown(b) (b)->shutdown + #define BIO_set_init(b, x) b->init = x +-#define BIO_get_init(b) (b)->init + #define BIO_set_data(b, x) b->ptr = x + #define BIO_clear_flags(b, x) b->flags &= ~(x) + #define BIO_get_data(b) b->ptr + #endif ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++#define BIO_get_init(b) (b)->init ++#endif + + /* implment custom BIO_s_pyfd */ + +diff --git a/SWIG/_ssl.i b/SWIG/_ssl.i +index 7257656..40b0582 100644 +--- a/SWIG/_ssl.i ++++ b/SWIG/_ssl.i +@@ -27,7 +27,7 @@ typedef unsigned __int64 uint64_t; + #endif + %} + +-#if OPENSSL_VERSION_NUMBER >= 0x10100005L ++#if (!defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100005L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL) + %include <openssl/safestack.h> + #endif + +@@ -261,7 +261,7 @@ void ssl_init(PyObject *ssl_err, PyObject *ssl_timeout_err) { + } + + const SSL_METHOD *tlsv1_method(void) { +-#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++#if (!defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L) || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL) + PyErr_WarnEx(PyExc_DeprecationWarning, + "Function TLSv1_method has been deprecated.", 1); + #endif +diff --git a/SWIG/_threads.i b/SWIG/_threads.i +index 69adb9f..fd2285a 100644 +--- a/SWIG/_threads.i ++++ b/SWIG/_threads.i +@@ -5,7 +5,7 @@ + #include <pythread.h> + #include <openssl/crypto.h> + +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && (OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)) + #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) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)) + 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, const char *file, int line) + } + + unsigned long threading_id_callback(void) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && (OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)) + 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) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)) + int i; + if (!thread_mode) { + for (i=0; i<CRYPTO_num_locks(); i++) { +@@ -50,7 +50,7 @@ void threading_init(void) { + } + + void threading_cleanup(void) { +-#if defined(THREADING) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(THREADING) && (OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL)) + int i; + if (thread_mode) { + CRYPTO_set_locking_callback(NULL); +-- +2.20.1 + diff --git a/dev-python/m2crypto/m2crypto-0.35.2-r1.ebuild b/dev-python/m2crypto/m2crypto-0.35.2-r1.ebuild new file mode 100644 index 0000000..e1b3bfc --- /dev/null +++ b/dev-python/m2crypto/m2crypto-0.35.2-r1.ebuild @@ -0,0 +1,65 @@ +# Copyright 2018-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7,8}) +PYTHON_REQ_USE="threads(+)" + +inherit distutils-r1 toolchain-funcs + +MY_PN="M2Crypto" +DESCRIPTION="A Python crypto and SSL toolkit" +HOMEPAGE="https://gitlab.com/m2crypto/m2crypto https://pypi.org/project/M2Crypto/" +SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos" +IUSE="libressl" + +RDEPEND=" + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + $(python_gen_cond_dep ' + dev-python/typing[${PYTHON_USEDEP}] + ' -2) +" +DEPEND="${RDEPEND}" +BDEPEND=" + >=dev-lang/swig-2.0.9 + dev-python/setuptools[${PYTHON_USEDEP}] +" + +S="${WORKDIR}/${MY_PN}-${PV}" + +PATCHES=( + "${FILESDIR}/${PN}-libressl-0.31.0.patch" +) + +swig_define() { + local x + for x; do + if tc-cpp-is-true "defined(${x})"; then + SWIG_FEATURES+=" -D${x}" + fi + done +} + +python_compile() { + # setup.py looks at platform.machine() to determine swig options. + # For exotic ABIs, we need to give swig a hint. + local -x SWIG_FEATURES= + + # https://bugs.gentoo.org/617946 + swig_define __ILP32__ + + # https://bugs.gentoo.org/674112 + swig_define __ARM_PCS_VFP + + distutils-r1_python_compile --openssl="${ESYSROOT}"/usr +} + +python_test() { + esetup.py test +} diff --git a/dev-python/m2crypto/m2crypto-0.36.0-r1.ebuild b/dev-python/m2crypto/m2crypto-0.36.0-r1.ebuild new file mode 100644 index 0000000..0080455 --- /dev/null +++ b/dev-python/m2crypto/m2crypto-0.36.0-r1.ebuild @@ -0,0 +1,72 @@ +# Copyright 2018-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6..9} ) +PYTHON_REQ_USE="threads(+)" + +inherit distutils-r1 toolchain-funcs + +MY_PN="M2Crypto" +DESCRIPTION="A Python crypto and SSL toolkit" +HOMEPAGE="https://gitlab.com/m2crypto/m2crypto https://pypi.org/project/M2Crypto/" +SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos" +IUSE="libressl" + +RDEPEND=" + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + $(python_gen_cond_dep ' + dev-python/typing[${PYTHON_USEDEP}] + ' -2) +" +DEPEND="${RDEPEND}" +BDEPEND=" + >=dev-lang/swig-2.0.9 + dev-python/setuptools[${PYTHON_USEDEP}] +" + +S="${WORKDIR}/${MY_PN}-${PV}" + +PATCHES=( + "${FILESDIR}/${PN}-libressl-0.31.0.patch" +) + +swig_define() { + local x + for x; do + if tc-cpp-is-true "defined(${x})"; then + SWIG_FEATURES+=" -D${x}" + fi + done +} + +src_prepare() { + # TODO + sed -e 's:test_server_simple_timeouts:_&:' \ + -i tests/test_ssl.py || die + distutils-r1_src_prepare +} + +python_compile() { + # setup.py looks at platform.machine() to determine swig options. + # For exotic ABIs, we need to give swig a hint. + local -x SWIG_FEATURES= + + # https://bugs.gentoo.org/617946 + swig_define __ILP32__ + + # https://bugs.gentoo.org/674112 + swig_define __ARM_PCS_VFP + + distutils-r1_python_compile --openssl="${ESYSROOT}"/usr +} + +python_test() { + esetup.py test +} diff --git a/dev-python/m2crypto/m2crypto-0.37.1.ebuild b/dev-python/m2crypto/m2crypto-0.37.1.ebuild new file mode 100644 index 0000000..189fe20 --- /dev/null +++ b/dev-python/m2crypto/m2crypto-0.37.1.ebuild @@ -0,0 +1,69 @@ +# Copyright 2018-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6..9} ) +PYTHON_REQ_USE="threads(+)" + +inherit distutils-r1 toolchain-funcs + +MY_PN="M2Crypto" +DESCRIPTION="A Python crypto and SSL toolkit" +HOMEPAGE="https://gitlab.com/m2crypto/m2crypto https://pypi.org/project/M2Crypto/" +SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz" +S="${WORKDIR}/${MY_PN}-${PV}" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos" +IUSE="libressl test" +RESTRICT="!test? ( test )" + +BDEPEND=" + >=dev-lang/swig-2.0.9 + test? ( dev-python/parameterized[${PYTHON_USEDEP}] ) +" +RDEPEND=" + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}/${PN}-libressl-0.31.0.patch" +) + +swig_define() { + local x + for x; do + if tc-cpp-is-true "defined(${x})"; then + SWIG_FEATURES+=" -D${x}" + fi + done +} + +src_prepare() { + # TODO + sed -e 's:test_server_simple_timeouts:_&:' \ + -i tests/test_ssl.py || die + distutils-r1_src_prepare +} + +python_compile() { + # setup.py looks at platform.machine() to determine swig options. + # For exotic ABIs, we need to give swig a hint. + local -x SWIG_FEATURES= + + # https://bugs.gentoo.org/617946 + swig_define __ILP32__ + + # https://bugs.gentoo.org/674112 + swig_define __ARM_PCS_VFP + + distutils-r1_python_compile --openssl="${ESYSROOT}"/usr +} + +python_test() { + esetup.py test +} diff --git a/dev-python/m2crypto/metadata.xml b/dev-python/m2crypto/metadata.xml new file mode 100644 index 0000000..ed10818 --- /dev/null +++ b/dev-python/m2crypto/metadata.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>python@gentoo.org</email> + <name>Python</name> + </maintainer> + <upstream> + <remote-id type="pypi">M2Crypto</remote-id> + <remote-id type="gitlab">m2crypto/m2crypto</remote-id> + </upstream> +</pkgmetadata> |