diff options
author | 2025-01-04 08:01:49 -0800 | |
---|---|---|
committer | 2025-01-04 08:01:49 -0800 | |
commit | 5a18d1275205d7954a9a4e87fd1bc73a4328aea9 (patch) | |
tree | c592f82301727f23d0de88aed611104850754151 | |
parent | dev-perl/Net-SSLeay: drop 1.920.0-r1 (diff) | |
download | libressl-5a18d1275205d7954a9a4e87fd1bc73a4328aea9.tar.gz libressl-5a18d1275205d7954a9a4e87fd1bc73a4328aea9.tar.bz2 libressl-5a18d1275205d7954a9a4e87fd1bc73a4328aea9.zip |
dev-python/pypy: treeclean
Signed-off-by: orbea <orbea@riseup.net>
-rw-r--r-- | dev-python/pypy/Manifest | 2 | ||||
-rw-r--r-- | dev-python/pypy/files/pypy-7.3.16-libressl.patch | 285 | ||||
-rw-r--r-- | dev-python/pypy/metadata.xml | 19 | ||||
-rw-r--r-- | dev-python/pypy/pypy-7.3.17.ebuild | 307 |
4 files changed, 0 insertions, 613 deletions
diff --git a/dev-python/pypy/Manifest b/dev-python/pypy/Manifest deleted file mode 100644 index adfc767..0000000 --- a/dev-python/pypy/Manifest +++ /dev/null @@ -1,2 +0,0 @@ -DIST pypy2.7-gentoo-patches-7.3.17.tar.xz 5324 BLAKE2B 866f172a6df6f0e94a98c611b37ae58635623e33a47619a5e44658d3908337a3f9029ff7de6997f760c3f1679fc83bfc6ddfb66852c492a581b3336b5eec3ed2 SHA512 6ce5266d0748f3c18a5546aa2bd8479ecb45923eb7df8a140a195e7f7b44999b9167ffdd44f7fd789ddd3a62cd77cb917863b0144180a1127befce1f290e650a -DIST pypy2.7-v7.3.17-src.tar.bz2 19907140 BLAKE2B de62ebc4e8102867effdecddca64c19c40458b112a6a56ac0c95247047b9f5437a5da68dffb51c14c21bce463c2ca489c6e6a4f86e8cc597b57df2eca707081e SHA512 82b2b9dbf0ea32c405ddc53d98a3a7a153f494d286e8719a0c40960168aadc0f49c3b313416488338f7f51c8fdb58120de41b1d47a8c8eda7db6d4ec4273b4eb diff --git a/dev-python/pypy/files/pypy-7.3.16-libressl.patch b/dev-python/pypy/files/pypy-7.3.16-libressl.patch deleted file mode 100644 index 1a94c50..0000000 --- a/dev-python/pypy/files/pypy-7.3.16-libressl.patch +++ /dev/null @@ -1,285 +0,0 @@ -LibreSSL defines OPENSSL_NO_ENGINE yet provides some ENGINE symbols. -I am not sure about the value of Cryptography_HAS_ENGINE in this case but at least this prevents symbol collisions. - -diff -u a/lib_pypy/_cffi_ssl/_cffi_src/openssl/engine.py b/lib_pypy/_cffi_ssl/_cffi_src/openssl/engine.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/engine.py 2024-04-21 01:03:52.000000000 +0000 -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/engine.py 2024-07-17 07:40:07.395339433 +0000 -@@ -30,6 +30,7 @@ - CUSTOMIZATIONS = """ - #ifdef OPENSSL_NO_ENGINE - static const long Cryptography_HAS_ENGINE = 0; -+#ifndef CRYPTOGRAPHY_IS_LIBRESSL - - ENGINE *(*ENGINE_by_id)(const char *) = NULL; - int ENGINE_init(ENGINE *); -@@ -34,9 +34,11 @@ - ENGINE *(*ENGINE_by_id)(const char *) = NULL; - int (*ENGINE_init)(ENGINE *) = NULL; - int (*ENGINE_finish)(ENGINE *) = NULL; -+#endif - ENGINE *(*ENGINE_get_default_RAND)(void) = NULL; - int (*ENGINE_set_default_RAND)(ENGINE *) = NULL; - void (*ENGINE_unregister_RAND)(ENGINE *) = NULL; -+#ifndef CRYPTOGRAPHY_IS_LIBRESSL - int (*ENGINE_ctrl_cmd)(ENGINE *, const char *, long, void *, - void (*)(void), int) = NULL; - -@@ -47,6 +47,7 @@ - const char *(*ENGINE_get_id)(const ENGINE *) = NULL; - const char *(*ENGINE_get_name)(const ENGINE *) = NULL; - -+#endif - #else - static const long Cryptography_HAS_ENGINE = 1; - #endif -diff -ru pypy2.7-v7.3.16-src/lib_pypy/_cffi_ssl/_cffi_src/openssl/err.py b/lib_pypy/_cffi_ssl/_cffi_src/openssl/err.py ---- pypy2.7-v7.3.16-src/lib_pypy/_cffi_ssl/_cffi_src/openssl/err.py 2024-04-21 01:03:52.000000000 +0000 -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/err.py 2024-07-19 12:51:27.645284720 +0000 -@@ -232,5 +232,10 @@ - static const int ERR_LIB_OSSL_ENCODER = -42; - static const int ERR_LIB_PROP = -42; - static const int ERR_LIB_PROV = -42; -+#ifdef CRYPTOGRAPHY_IS_LIBRESSL -+static const int ERR_LIB_ASYNC = -42; -+static const int ERR_LIB_OSSL_STORE = -42; -+static const int ERR_LIB_SM2 = -42; -+#endif - #endif - """ -LibreSSL now provides OPENSSL_cleanup() - -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/crypto.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/crypto.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/crypto.py -@@ -92,9 +92,7 @@ static const long Cryptography_HAS_LOCKING_CALLBACKS = - #endif - - #if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 --static const long Cryptography_HAS_OPENSSL_CLEANUP = 0; -- --void (*OPENSSL_cleanup)(void) = NULL; -+static const long Cryptography_HAS_OPENSSL_CLEANUP = 1; - - /* This function has a significantly different signature pre-1.1.0. since it is - * for testing only, we don't bother to expose it on older OpenSSLs. -Adapt for Certificate Transparency support in LibreSSL 3.5 - -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/ct.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/ct.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/ct.py -@@ -5,7 +5,7 @@ - from __future__ import absolute_import, division, print_function - - INCLUDES = """ --#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER -+#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER || CRYPTOGRAPHY_IS_LIBRESSL - #include <openssl/ct.h> - - typedef STACK_OF(SCT) Cryptography_STACK_OF_SCT; -@@ -65,7 +65,7 @@ int SCT_set_log_entry_type(SCT *, ct_log_entry_type_t) - """ - - CUSTOMIZATIONS = """ --#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER -+#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER || CRYPTOGRAPHY_IS_LIBRESSL - static const long Cryptography_HAS_SCT = 1; - #else - static const long Cryptography_HAS_SCT = 0; -Do not redefine a constant available in LibreSSL's headers. - -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/dh.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/dh.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/dh.py -@@ -110,7 +110,7 @@ int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_ - } - #endif - --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 && !CRYPTOGRAPHY_LIBRESSL_27_OR_GREATER - #ifndef DH_CHECK_Q_NOT_PRIME - #define DH_CHECK_Q_NOT_PRIME 0x10 - #endif -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/evp.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/evp.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/evp.py -@@ -212,10 +212,11 @@ int (*EVP_PKEY_set1_tls_encodedpoint)(EVP_PKEY *, cons - #endif - - #if CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 --static const long Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY = 0; --static const long Cryptography_HAS_RAW_KEY = 0; - static const long Cryptography_HAS_EVP_DIGESTFINAL_XOF = 0; - int (*EVP_DigestFinalXOF)(EVP_MD_CTX *, unsigned char *, size_t) = NULL; -+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x3070000fL -+static const long Cryptography_HAS_RAW_KEY = 0; -+static const long Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY = 0; - int (*EVP_DigestSign)(EVP_MD_CTX *, unsigned char *, size_t *, - const unsigned char *tbs, size_t) = NULL; - int (*EVP_DigestVerify)(EVP_MD_CTX *, const unsigned char *, size_t, -@@ -228,6 +229,10 @@ int (*EVP_PKEY_get_raw_private_key)(const EVP_PKEY *, - size_t *) = NULL; - int (*EVP_PKEY_get_raw_public_key)(const EVP_PKEY *, unsigned char *, - size_t *) = NULL; -+#else -+static const long Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY = 1; -+static const long Cryptography_HAS_RAW_KEY = 1; -+#endif - #else - static const long Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY = 1; - static const long Cryptography_HAS_RAW_KEY = 1; -Fix build with opaque HMAC_CTX in LibreSSL 3.5. - -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/hmac.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/hmac.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/hmac.py -@@ -24,7 +24,7 @@ void Cryptography_HMAC_CTX_free(HMAC_CTX *ctx); - - CUSTOMIZATIONS = """ - HMAC_CTX *Cryptography_HMAC_CTX_new(void) { --#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER -+#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER || defined(LIBRESSL_VERSION_NUMBER) - return HMAC_CTX_new(); - #else - /* This uses OPENSSL_zalloc in 1.1.0, which is malloc + memset */ -@@ -36,7 +36,7 @@ HMAC_CTX *Cryptography_HMAC_CTX_new(void) { - - - void Cryptography_HMAC_CTX_free(HMAC_CTX *ctx) { --#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER -+#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER || defined(LIBRESSL_VERSION_NUMBER) - return HMAC_CTX_free(ctx); - #else - if (ctx != NULL) { -Fix build with opaque OCSP in LibreSSL 3.5. - -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/ocsp.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/ocsp.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/ocsp.py -@@ -109,7 +109,7 @@ struct ocsp_basic_response_st { - }; - #endif - --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 && LIBRESSL_VERSION_NUMBER < 0x3050000fL - /* These functions are all taken from ocsp_cl.c in OpenSSL 1.1.0 */ - const OCSP_CERTID *OCSP_SINGLERESP_get0_id(const OCSP_SINGLERESP *single) - { -@@ -148,7 +148,7 @@ const ASN1_OCTET_STRING *OCSP_resp_get0_signature(cons - } - #endif - --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110J -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110J && LIBRESSL_VERSION_NUMBER < 0x3050000fL - const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs) - { - #if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 -Fix build with opaque SSL_CTX and COMP_METHOD and do not redefine -DTLSv1.2 and TLSv1.3 related defined vailable in recent LibreSSL versions. - -+ SSL_CTX_*_min_proto_version -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py -@@ -552,7 +552,7 @@ int SSL_CTX_set_max_early_data(SSL_CTX *, uint32_t); - CUSTOMIZATIONS = """ - /* Added in 1.0.2 but we need it in all versions now due to the great - opaquing. */ --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 && !CRYPTOGRAPHY_IS_LIBRESSL - /* from ssl/ssl_lib.c */ - const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx) { - return ctx->method; -@@ -681,8 +681,8 @@ static const long Cryptography_HAS_SET_CERT_CB = 1; - - /* In OpenSSL 1.0.2i+ the handling of COMP_METHOD when OPENSSL_NO_COMP was - changed and we no longer need to typedef void */ --#if (defined(OPENSSL_NO_COMP) && CRYPTOGRAPHY_OPENSSL_LESS_THAN_102I) || \ -- CRYPTOGRAPHY_IS_LIBRESSL -+#if (defined(OPENSSL_NO_COMP) && CRYPTOGRAPHY_OPENSSL_LESS_THAN_102I) && \ -+ !CRYPTOGRAPHY_IS_LIBRESSL - static const long Cryptography_HAS_COMPRESSION = 0; - typedef void COMP_METHOD; - #else -@@ -729,8 +729,6 @@ const SSL_METHOD *(*DTLS_client_method)(void) = NULL; - static const long Cryptography_HAS_GENERIC_DTLS_METHOD = 1; - #endif - #if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 --static const long SSL_OP_NO_DTLSv1 = 0; --static const long SSL_OP_NO_DTLSv1_2 = 0; - long (*DTLS_set_link_mtu)(SSL *, long) = NULL; - long (*DTLS_get_link_min_mtu)(SSL *) = NULL; - #endif -@@ -836,7 +834,7 @@ static const long Cryptography_HAS_CIPHER_DETAILS = 0; - static const long Cryptography_HAS_CIPHER_DETAILS = 1; - #endif - --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_111 && !CRYPTOGRAPHY_IS_LIBRESSL - static const long Cryptography_HAS_TLSv1_3 = 0; - static const long SSL_OP_NO_TLSv1_3 = 0; - static const long SSL_VERIFY_POST_HANDSHAKE = 0; -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/x509name.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509name.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509name.py -@@ -75,7 +75,7 @@ Cryptography_STACK_OF_X509_NAME_ENTRY *sk_X509_NAME_EN - """ - - CUSTOMIZATIONS = """ --#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER -+#if CRYPTOGRAPHY_OPENSSL_110_OR_GREATER || defined(LIBRESSL_VERSION_NUMBER) - int Cryptography_X509_NAME_ENTRY_set(X509_NAME_ENTRY *ne) { - return X509_NAME_ENTRY_set(ne); - } -Index: lib_pypy/_cffi_ssl/_cffi_src/openssl/x509.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509.py -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509.py -@@ -282,7 +282,7 @@ int X509_get_signature_nid(const X509 *x) - - /* Added in 1.0.2 but we need it in all versions now due to the great - opaquing. */ --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 && !defined(LIBRESSL_VERSION_NUMBER) - /* from x509/x_x509.c */ - int i2d_re_X509_tbs(X509 *x, unsigned char **pp) - { -@@ -308,7 +308,7 @@ X509_REVOKED *Cryptography_X509_REVOKED_dup(X509_REVOK - - /* Added in 1.1.0 but we need it in all versions now due to the great - opaquing. */ --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 && !defined(LIBRESSL_VERSION_NUMBER) - int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp) - { - req->req_info->enc.modified = 1; -diff -ru a/lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py b/lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py 2024-07-19 10:38:37.482873478 +0000 -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py 2024-07-19 10:41:18.411921508 +0000 -@@ -577,7 +577,7 @@ - """ - - CUSTOMIZATIONS = """ --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_102 && !CRYPTOGRAPHY_IS_LIBRESSL - #error Python 3.7 requires OpenSSL >= 1.0.2 - #endif - -@@ -739,7 +739,7 @@ - int (*SSL_get_min_proto_version)(SSL *ssl) = NULL; - int (*SSL_get_max_proto_version)(SSL *ssl) = NULL; - #endif --#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 -+#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_110 && !CRYPTOGRAPHY_IS_LIBRESSL - int (*SSL_CTX_set_min_proto_version)(SSL_CTX *ctx, int version) = NULL; - int (*SSL_CTX_set_max_proto_version)(SSL_CTX *ctx, int version) = NULL; - int (*SSL_set_min_proto_version)(SSL *ssl, int version) = NULL; -diff -ru a/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509v3.py b/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509v3.py ---- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509v3.py 2024-04-21 01:03:52.000000000 +0000 -+++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509v3.py 2024-07-19 13:16:55.369740670 +0000 -@@ -320,4 +320,7 @@ - """ - - CUSTOMIZATIONS = """ -+#ifdef CRYPTOGRAPHY_IS_LIBRESSL -+int (*X509V3_EXT_add_alias)(int, int) = NULL; -+#endif - """ diff --git a/dev-python/pypy/metadata.xml b/dev-python/pypy/metadata.xml deleted file mode 100644 index cfd6192..0000000 --- a/dev-python/pypy/metadata.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> -<pkgmetadata> - <maintainer type="project"> - <email>python@gentoo.org</email> - <name>Python</name> - </maintainer> - <upstream> - <remote-id type="github">pypy/pypy</remote-id> - </upstream> - <use> - <flag name="full-stdlib"> - Install complete stdlib as necessary to use PyPy for general - purpose programs. By default, only a limited subset that is - used when building PyPy3 executables is installed. Note - that PyPy2.7's stdlib contains multiple known vulnerabilities. - </flag> - </use> -</pkgmetadata> diff --git a/dev-python/pypy/pypy-7.3.17.ebuild b/dev-python/pypy/pypy-7.3.17.ebuild deleted file mode 100644 index abe18ec..0000000 --- a/dev-python/pypy/pypy-7.3.17.ebuild +++ /dev/null @@ -1,307 +0,0 @@ -# Copyright 1999-2024 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit pax-utils - -PYPY_PV=${PV%_p*} -MY_P=pypy2.7-v${PYPY_PV/_} -PATCHSET="pypy2.7-gentoo-patches-${PV/_rc/rc}" - -DESCRIPTION="A fast, compliant alternative implementation of the Python language" -HOMEPAGE=" - https://pypy.org/ - https://github.com/pypy/pypy/ -" -SRC_URI=" - https://downloads.python.org/pypy/${MY_P}-src.tar.bz2 - https://buildbot.pypy.org/pypy/${MY_P}-src.tar.bz2 - https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz -" -S="${WORKDIR}/${MY_P}-src" - -LICENSE="MIT" -# pypy -c 'import sysconfig; print sysconfig.get_config_var("SOABI")' -SLOT="0/73" -KEYWORDS="amd64 ~arm64 ~ppc64 x86 ~amd64-linux ~x86-linux" -IUSE="bzip2 full-stdlib gdbm +jit ncurses sqlite tk" -RESTRICT="test" - -RDEPEND=" - || ( - >=dev-python/pypy-exe-bin-${PYPY_PV}:${PYPY_PV} - >=dev-python/pypy-exe-${PYPY_PV}:${PYPY_PV}[bzip2?,ncurses?] - ) - dev-libs/openssl:0= - gdbm? ( sys-libs/gdbm:0= ) - sqlite? ( dev-db/sqlite:3= ) - tk? ( - dev-lang/tk:0= - dev-tcltk/tix:0= - ) -" -DEPEND=" - ${RDEPEND} -" - -src_prepare() { - local PATCHES=( - "${WORKDIR}/${PATCHSET}" - "${FILESDIR}"/${PN}-7.3.16-libressl.patch - ) - default -} - -src_compile() { - # copy over to make sys.prefix happy - cp -p "${BROOT}"/usr/lib/pypy2.7/pypy-c-${PYPY_PV} pypy-c || die - cp -p "${BROOT}"/usr/lib/pypy2.7/include/${PYPY_PV}/* include/ || die - # (not installed by pypy) - rm pypy/module/cpyext/include/_numpypy/numpy/README || die - mv pypy/module/cpyext/include/* include/ || die - mv pypy/module/cpyext/parse/*.h include/ || die - pax-mark m pypy-c - - # verify the subslot - local soabi=$( - ./pypy-c - <<-EOF - import sysconfig - print sysconfig.get_config_var("SOABI") - EOF - ) - [[ ${soabi#pypy-} == ${SLOT#*/} ]] || die "update subslot to ${soabi}" - - einfo "Generating caches and CFFI modules ..." - - if use full-stdlib; then - # Generate Grammar and PatternGrammar pickles. - ./pypy-c - <<-EOF || die "Generation of Grammar and PatternGrammar pickles failed" - import lib2to3.pygram - import lib2to3.patcomp - lib2to3.patcomp.PatternCompiler() - EOF - - # Generate cffi modules - # Please keep in sync with pypy/tool/build_cffi_imports.py! - cffi_targets=( pypy_util ssl audioop syslog pwdgrp resource ) - use gdbm && cffi_targets+=( gdbm ) - use ncurses && cffi_targets+=( curses ) - use sqlite && cffi_targets+=( sqlite3 ) - use tk && cffi_targets+=( tkinter/tklib ) - - local t - # all modules except tkinter output to . - # tkinter outputs to the correct dir ... - cd lib_pypy || die - for t in "${cffi_targets[@]}"; do - # tkinter doesn't work via -m - ../pypy-c "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}" - done - - # Verify that CFFI module list is up-to-date - local expected_cksum=-7df4eab0 - local local_cksum=$( - ../pypy-c - <<-EOF - import binascii - import json - from pypy_tools.build_cffi_imports import cffi_build_scripts as x - print("%08x" % (binascii.crc32(json.dumps(x)),)) - EOF - ) - if [[ ${local_cksum} != ${expected_cksum} ]]; then - die "Please verify cffi_targets and update checksum to ${local_cksum}" - fi - - # Cleanup temporary objects - find -name "_cffi_*.[co]" -delete || die - find -type d -empty -delete || die - fi -} - -src_test() { - # (unset) - local -x PYTHONDONTWRITEBYTECODE= - local -x COLUMNS=80 - - local ignored_tests=( - # network - --ignore=lib-python/2.7/test/test_urllibnet.py - --ignore=lib-python/2.7/test/test_urllib2net.py - # lots of free space - --ignore=lib-python/2.7/test/test_zipfile64.py - - # broken by expat-2.4.5 - --ignore=lib-python/2.7/test/test_minidom.py - --ignore=lib-python/2.7/test/test_xml_etree.py - --ignore=lib-python/2.7/test/test_xml_etree_c.py - ) - - ./pypy-c ./pypy/test_all.py --pypy=./pypy-c -vv \ - "${ignored_tests[@]}" lib-python || die -} - -src_install() { - local dest=/usr/lib/pypy2.7 - einfo "Installing PyPy ..." - dosym pypy-c-${PYPY_PV} "${dest}/pypy-c" - insinto "${dest}" - # preserve mtimes to avoid obsoleting caches - insopts -p - if use full-stdlib; then - doins -r include lib_pypy lib-python - - # replace copied headers with symlinks - for x in "${BROOT}"/usr/lib/pypy2.7/include/${PYPY_PV}/*; do - dosym "${PYPY_PV}/${x##*/}" "${dest}/include/${x##*/}" - done - - if ! use gdbm; then - rm -r "${ED}${dest}"/lib_pypy/gdbm.py \ - "${ED}${dest}"/lib-python/*2.7/test/test_gdbm.py || die - fi - if ! use sqlite; then - rm -r "${ED}${dest}"/lib-python/*2.7/sqlite3 \ - "${ED}${dest}"/lib_pypy/_sqlite3.py \ - "${ED}${dest}"/lib-python/*2.7/test/test_sqlite.py || die - fi - if ! use tk; then - rm -r "${ED}${dest}"/lib-python/*2.7/{idlelib,lib-tk} \ - "${ED}${dest}"/lib_pypy/_tkinter \ - "${ED}${dest}"/lib-python/*2.7/test/test_{tcl,tk,ttk*}.py || die - fi - else - # install only the absolutely minimal subset of modules needed - # for pypy3 build - local lib_py_modules=( - # base modules needed to even start pypy (and import site) - codecs.py - copy_reg.py - encodings - genericpath.py - linecache.py - os.py - pkgutil.py - posixpath.py - re.py - runpy.py - site.py - sre_compile.py - sre_constants.py - sre_parse.py - stat.py - string.py - sysconfig.py - traceback.py - warnings.py - UserDict.py - - # needed for python_optimize - compileall.py - getopt.py - py_compile.py - struct.py - - # needed for rpython - argparse.py - atexit.py - base64.py - bdb.py - bisect.py - cmd.py - code.py - codeop.py - collections.py - colorsys.py - contextlib.py - copy.py - ctypes - dis.py - fnmatch.py - functools.py - gettext.py - hashlib.py - heapq.py - inspect.py - io.py - json - keyword.py - locale.py - logging - new.py - opcode.py - optparse.py - pdb.py - pickle.py - platform.py - pprint.py - random.py - repr.py - shlex.py - shutil.py - StringIO.py - subprocess.py - tempfile.py - textwrap.py - threading.py - tokenize.py - weakref.py - zipfile.py - ) - - local distutils_modules=( - # needed by site - __init__.py - errors.py - sysconfig.py - sysconfig_cpython.py - sysconfig_pypy.py - ) - - local lib_pypy_modules=( - # needed by site - _sysconfigdata.py - - # needed by rpython - cffi - _ctypes - _ffi.py - _functools.py - _sha.py - _sha256.py - _sha512.py - - # NB: we're deliberately skipping _hashlib to avoid some deps - ) - - cd lib-python/2.7 || die - insinto "${dest}/lib-python/2.7" - doins -r "${lib_py_modules[@]}" - cd - >/dev/null || die - - cd lib-python/2.7/distutils || die - insinto "${dest}/lib-python/2.7/distutils" - doins -r "${distutils_modules[@]}" - cd - >/dev/null || die - - cd lib_pypy || die - insinto "${dest}/lib_pypy" - doins -r "${lib_pypy_modules[@]}" - cd - >/dev/null || die - fi - - dosym ../lib/pypy2.7/pypy-c /usr/bin/pypy - dodoc README.rst - - local -x PYTHON=${ED}${dest}/pypy-c-${PYPY_PV} - # temporarily copy to build tree to facilitate module builds - cp -p "${BROOT}${dest}/pypy-c-${PYPY_PV}" "${PYTHON}" || die - - einfo "Byte-compiling Python standard library..." - "${PYTHON}" -m compileall \ - -x 'bad_coding|badsyntax|make_ssl_data|lib2to3/tests/data' \ - -q -f -d "${dest}" "${ED}/${dest}" || die - - # remove to avoid collisions - rm "${PYTHON}" || die -} |