commit: de2a950576faf7d7ef416b60563d3c2119d4d46f Author: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq <DOT> in> AuthorDate: Wed Jun 18 11:16:38 2025 +0000 Commit: orbea <orbea <AT> riseup <DOT> net> CommitDate: Thu Jun 19 15:16:09 2025 +0000 URL: https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=de2a9505
dev-lang/pypy:3.11: add 7.3.19_p11, drop old Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo <AT> sysrq.in> Part-of: https://github.com/gentoo/libressl/pull/597 Closes: https://github.com/gentoo/libressl/pull/597 Signed-off-by: orbea <orbea <AT> riseup.net> dev-lang/pypy/Manifest | 4 +- .../pypy/files/pypy-3.10-7.3.19-libressl.patch | 291 +++++++++++++++++++++ ....3.19_p7.ebuild => pypy-3.11.7.3.19_p11.ebuild} | 2 +- dev-lang/pypy/pypy-3.11.7.3.19_p6-r1.ebuild | 240 ----------------- dev-lang/pypy/pypy-3.11.7.3.19_p8.ebuild | 240 ----------------- 5 files changed, 293 insertions(+), 484 deletions(-) diff --git a/dev-lang/pypy/Manifest b/dev-lang/pypy/Manifest index 25b91e3..ba32dca 100644 --- a/dev-lang/pypy/Manifest +++ b/dev-lang/pypy/Manifest @@ -1,6 +1,4 @@ DIST pypy3.10-gentoo-patches-7.3.19_p3.tar.xz 11288 BLAKE2B d087ef35dc6298f89df537c04b0833fb107638d47036faa892f9fae8de6ac820d0b45618f32364bf83238b8f38b371167c3061ac299792301dabe924360bdd20 SHA512 091dee8401d4a3f1c703066768a57d08fdf24aadb13f6754d8f696e395bc9e4cfe0038d93b883e8f03c8655f1dcdff1fa4c81dc45f918d82cc82461bf92a4fa7 DIST pypy3.10-v7.3.19-src.tar.bz2 24547353 BLAKE2B 975de34c7e01117c74e184693b6659ba0e3d8d488d724c03737dbd64533452c954e045e45058e1e77b9bee68e01060e74e30d7898d29f1adce417ce4b46579b8 SHA512 8fa24d3556bcf9cd0e2facd697827a5001fcfae9bf7874957843e4751b259f85a8b36166921282d71f39bb468d1706bb669373aebbc52486b683fcc824fb30ad -DIST pypy3.11-gentoo-patches-7.3.19_p6.tar.xz 12188 BLAKE2B 3830bf3dfe32a1def314f2a12c45d7651c361ecf5ef4df05155ce39328ce63569ded5211c09d88383d928645cd1021b96d4ebb5bc0c474da764849c74a46e472 SHA512 a85c515eb0ce285460bbcbd4db9147ae7a1f30bb806fc7a52ea43f7603fdbbbd7504cbbff9c6c6a79e604118eb2957c6ac48fdebd998aa3937c3faed675be874 -DIST pypy3.11-gentoo-patches-7.3.19_p7.tar.xz 12812 BLAKE2B 54520af50cb5ca1bd35efea5c0db18b02601443900a14a7c30a06e77bc5a12b8cf6aa63dabeeab87f24623051de028416988e75f041c95831d72df79ee4ca7a5 SHA512 25c950e22d8828daed09b0b40629b0b359731c394b91d9d857edbe89dbdac1dbd70485560cc019ba4a36de11113fabc910764d584a4066f3bbe3449f65510b31 -DIST pypy3.11-gentoo-patches-7.3.19_p8.tar.xz 13004 BLAKE2B 92fae649d7c4dd1f56d0096960ef8d049c71fe86da119c3305b87e609b1f44c1a09726e2ecbd26e54508450ba3c48d28b1bd6e8bff900c360831d275cec10872 SHA512 a4a922706aa8fde94ecb86688b656fb66c0f806fc523f5b931a2f190d5d562277e458b69d588bca8219cac8e5891a5b6ac2ac7cfa7d256df157d4b4f6e50237f +DIST pypy3.11-gentoo-patches-7.3.19_p11.tar.xz 29804 BLAKE2B 23a6a82f0ab21540d24bf23771161616f2e10022ecb3d6948ca837705410e930c1ea9b83f233145a55fe2091149dbc4d5d63a8970e5f9e32d1486f28f41f533a SHA512 cde1fb6df55f5c24ec41e7a02204fa5e520f14f52cf1224557b22b1fe6448e7eca22568424ed23da9bffb81c1dae85cefc1aecdf2c8c33b4c38c32342ff03666 DIST pypy3.11-v7.3.19-src.tar.bz2 24916380 BLAKE2B febc61b3a1c5055b5ab92e7f3af2c307605c8510131437b12df27b58a13b29f6fd0a4bf82d101f7f8f441ca93b20cf70dbd540af11578be297ea871d59304ea3 SHA512 ab078e81e5eefe16823350bdc9adcc444e0ef6835ff2234197f9e5cb0903c5208deb6df60722e99aa529ffff703c5dcbc08eaa7f753c2e5c1185afea6358395a diff --git a/dev-lang/pypy/files/pypy-3.10-7.3.19-libressl.patch b/dev-lang/pypy/files/pypy-3.10-7.3.19-libressl.patch new file mode 100644 index 0000000..85039c0 --- /dev/null +++ b/dev-lang/pypy/files/pypy-3.10-7.3.19-libressl.patch @@ -0,0 +1,291 @@ +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/crypto.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/crypto.py +@@ -94,9 +94,7 @@ static const long Cryptography_HAS_LOCKING_CALLBACKS = 0; + #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. +--- 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; +--- 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_key) + } + #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 +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/ec.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/ec.py +@@ -18,7 +18,6 @@ static const int OPENSSL_EC_NAMED_CURVE; + typedef ... EC_KEY; + typedef ... EC_GROUP; + typedef ... EC_POINT; +-typedef ... EC_METHOD; + typedef struct { + int nid; + const char *comment; +@@ -37,7 +36,6 @@ EC_GROUP *EC_GROUP_new_by_curve_name(int); + + int EC_GROUP_get_degree(const EC_GROUP *); + +-const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *); + const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *); + int EC_GROUP_get_curve_name(const EC_GROUP *); + +@@ -102,8 +100,6 @@ int EC_POINT_cmp( + int EC_POINT_mul(const EC_GROUP *, EC_POINT *, const BIGNUM *, + const EC_POINT *, const BIGNUM *, BN_CTX *); + +-int EC_METHOD_get_field_type(const EC_METHOD *); +- + const char *EC_curve_nid2nist(int); + """ + +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/engine.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/engine.py +@@ -31,18 +31,22 @@ 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 *) = 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; + + int (*ENGINE_free)(ENGINE *) = NULL; + 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; +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/err.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/err.py +@@ -231,6 +231,11 @@ static const int ERR_LIB_OSSL_DECODER = -42; + 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 + + /* SSL_R_UNEXPECTED_EOF_WHILE_READING is needed for pyOpenSSL +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/evp.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/evp.py +@@ -209,10 +209,11 @@ int (*EVP_PKEY_set1_tls_encodedpoint)(EVP_PKEY *, const unsigned char *, + #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_public_key)(const EVP_PKEY *, unsigned char *, + #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; + static const long Cryptography_HAS_EVP_DIGESTFINAL_XOF = 1; + #endif + +--- 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(const OCSP_BASICRESP *bs) + } + #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 +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/ssl.py +@@ -152,11 +152,6 @@ static const long SSL3_RT_ALERT; + static const long SSL3_RT_HANDSHAKE; + static const long SSL3_RT_APPLICATION_DATA; + +-static const long SSL3_RT_HEADER; +-static const long SSL3_RT_INNER_CONTENT_TYPE; +- +-static const long SSL3_MT_CHANGE_CIPHER_SPEC; +- + typedef ... SSL_METHOD; + typedef ... SSL_CTX; + +@@ -596,13 +591,13 @@ void SSL_set_msg_callback(SSL *ssl, + """ + + 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 + + /* 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; +@@ -729,7 +724,12 @@ static const long Cryptography_HAS_SET_CERT_CB = 0; + static const long Cryptography_HAS_SET_CERT_CB = 1; + #endif + ++#if CRYPTOGRAPHY_IS_LIBRESSL && (LIBRESSL_VERSION_NUMBER >= 0x4000000fL) ++static const long Cryptography_HAS_COMPRESSION = 0; ++typedef void COMP_METHOD; ++#else + static const long Cryptography_HAS_COMPRESSION = 1; ++#endif + + /* The setter functions were added in OpenSSL 1.1.0. The getter functions were + added in OpenSSL 1.1.1. */ +@@ -742,7 +742,7 @@ int (*SSL_CTX_get_max_proto_version)(SSL_CTX *ctx) = NULL; + 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; +@@ -791,8 +791,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 +@@ -898,7 +896,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; +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509.py +@@ -281,7 +281,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) + { +@@ -307,7 +307,7 @@ X509_REVOKED *Cryptography_X509_REVOKED_dup(X509_REVOKED *rev) { + + /* 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; +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509_vfy.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509_vfy.py +@@ -347,7 +347,7 @@ void (*X509_STORE_set_get_issuer)(X509_STORE *, + static const long Cryptography_HAS_X509_STORE_CTX_GET_ISSUER = 1; + #endif + +-#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_330 ++#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_330 && !CRYPTOGRAPHY_IS_LIBRESSL + static X509_OBJECT *x509_object_dup(const X509_OBJECT *obj) + { + int ok; +--- 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_ENTRY_dup( + """ + + 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); + } +--- a/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509v3.py ++++ b/lib_pypy/_cffi_ssl/_cffi_src/openssl/x509v3.py +@@ -320,4 +320,7 @@ void AUTHORITY_INFO_ACCESS_free(AUTHORITY_INFO_ACCESS *); + """ + + CUSTOMIZATIONS = """ ++#ifdef CRYPTOGRAPHY_IS_LIBRESSL ++int (*X509V3_EXT_add_alias)(int, int) = NULL; ++#endif + """ +--- a/lib_pypy/cffi/recompiler.py ++++ b/lib_pypy/cffi/recompiler.py +@@ -890,9 +890,6 @@ class Recompiler: + and (ftype.length is None or ftype.length == '...')): + ftype = ftype.item + fname = fname + '[0]' +- prnt(' { %s = &p->%s; (void)tmp; }' % ( +- ftype.get_c_name('*tmp', 'field %r'%fname, quals=fqual), +- fname)) + except VerificationError as e: + prnt(' /* %s */' % str(e)) # cannot verify it, ignore + prnt('}') diff --git a/dev-lang/pypy/pypy-3.11.7.3.19_p7.ebuild b/dev-lang/pypy/pypy-3.11.7.3.19_p11.ebuild similarity index 99% rename from dev-lang/pypy/pypy-3.11.7.3.19_p7.ebuild rename to dev-lang/pypy/pypy-3.11.7.3.19_p11.ebuild index 2538fdb..16aa1e3 100644 --- a/dev-lang/pypy/pypy-3.11.7.3.19_p7.ebuild +++ b/dev-lang/pypy/pypy-3.11.7.3.19_p11.ebuild @@ -61,7 +61,7 @@ DEPEND=" src_prepare() { local PATCHES=( "${WORKDIR}/${PATCHSET}" - "${FILESDIR}"/${PN}-3.10-7.3.17-libressl.patch + "${FILESDIR}"/${PN}-3.10-7.3.19-libressl.patch ) default diff --git a/dev-lang/pypy/pypy-3.11.7.3.19_p6-r1.ebuild b/dev-lang/pypy/pypy-3.11.7.3.19_p6-r1.ebuild deleted file mode 100644 index 1b6dc77..0000000 --- a/dev-lang/pypy/pypy-3.11.7.3.19_p6-r1.ebuild +++ /dev/null @@ -1,240 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs - -PYVER=$(ver_cut 1-2) -PATCHSET_PV=$(ver_cut 3-) -PYPY_PV=${PATCHSET_PV%_p*} - -MY_P="pypy${PYVER}-v${PYPY_PV/_}" -PATCHSET="pypy${PYVER}-gentoo-patches-${PATCHSET_PV/_rc/rc}" - -DESCRIPTION="A fast, compliant alternative implementation of the Python (${PYVER}) 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" -# pypy3 -c 'import sysconfig; print(sysconfig.get_config_var("SOABI"))' -# also check pypy/interpreter/pycode.py -> pypy_incremental_magic -SLOT="${PYVER}/pypy311-pp73-416" -KEYWORDS="amd64 ~arm64 ~ppc64 x86" -IUSE="+ensurepip gdbm +jit ncurses sqlite symlink +test-install tk" -# many tests are failing upstream -# see https://buildbot.pypy.org/summary?branch=py${PYVER} -RESTRICT="test" - -RDEPEND=" - || ( - dev-lang/pypy3-exe:${PV%_p*}[bzip2(+),ncurses?] - dev-lang/pypy3-exe-bin:${PV%_p*} - ) - dev-lang/python-exec[python_targets_pypy${PYVER/./_}(-)] - dev-libs/openssl:0= - dev-python/gentoo-common - ensurepip? ( dev-python/ensurepip-wheels ) - gdbm? ( sys-libs/gdbm:0= ) - sqlite? ( dev-db/sqlite:3= ) - tk? ( - dev-lang/tk:0= - dev-tcltk/tix:0= - ) - symlink? ( - !dev-lang/pypy:3.10[symlink(-)] - !<dev-python/pypy3-7.3.17-r100 - ) -" -DEPEND=" - ${RDEPEND} -" - -src_prepare() { - local PATCHES=( - "${WORKDIR}/${PATCHSET}" - "${FILESDIR}"/${PN}-3.10-7.3.17-libressl.patch - ) - - default -} - -src_configure() { - tc-export CC -} - -src_compile() { - mkdir bin || die - # switch to the layout expected for cffi module builds - mkdir "include/pypy${PYVER}" || die - # copy over to make sys.prefix happy - cp -p "${BROOT}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" pypy${PYVER}-c || die - cp -p "${BROOT}/usr/include/pypy${PYVER}/${PYPY_PV}"/* include/pypy${PYVER}/ || die - # (not installed by pypy-exe) - rm pypy/module/cpyext/include/_numpypy/numpy/README || die - mv pypy/module/cpyext/include/* "include/pypy${PYVER}/" || die - mv pypy/module/cpyext/parse/*.h "include/pypy${PYVER}/" || die - pax-mark m "pypy${PYVER}-c" - - # verify the subslot - local soabi=$( - "./pypy${PYVER}-c" - <<-EOF - import importlib.util - import sysconfig - soabi = sysconfig.get_config_var("SOABI") - magic = importlib.util._RAW_MAGIC_NUMBER & 0xffff - print(f"{soabi}-{magic}") - EOF - ) - [[ ${soabi} == ${SLOT#*/} ]] || die "update subslot to ${soabi}" - - # Add epython.py to the distribution - echo "EPYTHON=\"pypy${PYVER}\"" > lib-python/3/epython.py || die - - einfo "Generating caches and CFFI modules ..." - - # Generate Grammar and PatternGrammar pickles. - "./pypy${PYVER}-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 lib_pypy/pypy_tools/build_cffi_imports.py! - # (NB: we build CFFI modules first to avoid error log when importing - # build_cffi_imports). - cffi_targets=( - pypy_util blake2/_blake2 sha3/_sha3 ssl - audioop syslog pwdgrp resource lzma posixshmem - ctypes_test testmultiphase - ) - 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${PYVER}-c" "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}" - done - # testcapi does not have a "build" script - "../pypy${PYVER}-c" -c "import _testcapi" || die - - # Verify that CFFI module list is up-to-date - local expected_cksum=a4138e48 - local local_cksum=$( - "../pypy${PYVER}-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).encode()),)) - 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.c" -o -name '*.o' \) -delete || die - find -type d -empty -delete || die - cd .. || die - - # Generate sysconfig data - local host_gnu_type=$(sh pypy/tool/release/config.guess) - local overrides=( - HOST_GNU_TYPE "${host_gnu_type:-unknown}" - INCLUDEPY "${EPREFIX}/usr/include/pypy${PYVER}" - LIBDIR "${EPREFIX}/usr/$(get_libdir)" - TZPATH "${EPREFIX}/usr/share/zoneinfo" - WHEEL_PKG_DIR "${EPREFIX}/usr/lib/python/ensurepip" - ) - "./pypy${PYVER}-c" -m sysconfig --generate-posix-vars "${overrides[@]}" || die - local outdir - outdir=$(<pybuilddir.txt) || die - cp "${outdir}"/_sysconfigdata__*.py lib-python/3/ || die -} - -src_install() { - local dest="/usr/lib/pypy${PYVER}" - einfo "Installing PyPy ..." - dodir /usr/bin - dosym "pypy${PYVER}-c-${PYPY_PV}" "/usr/bin/pypy${PYVER}" - insinto "${dest}" - # preserve mtimes to avoid obsoleting caches - insopts -p - doins -r lib-python/3/. lib_pypy/. - insinto /usr/include - doins -r "include/pypy${PYVER}" - - # replace copied headers with symlinks - for x in "${BROOT}/usr/include/pypy${PYVER}/${PYPY_PV}"/*; do - dosym "${PYPY_PV}/${x##*/}" "/usr/include/pypy${PYVER}/${x##*/}" - done - - dodoc README.rst - - rm -r "${ED}${dest}"/ensurepip/_bundled || die - if ! use ensurepip; then - rm -r "${ED}${dest}"/ensurepip || die - fi - if ! use gdbm; then - rm -r "${ED}${dest}"/_gdbm* || die - fi - if ! use test-install; then - rm -r "${ED}${dest}"/{ctypes,tkinter,unittest}/test \ - "${ED}${dest}"/{distutils,lib2to3}/tests \ - "${ED}${dest}"/idlelib/idle_test || die - fi - if ! use sqlite; then - rm -r "${ED}${dest}"/sqlite3 \ - "${ED}${dest}"/_sqlite3* \ - "${ED}${dest}"/test/test_sqlite3 || die - fi - if ! use tk; then - rm -r "${ED}${dest}"/{idlelib,tkinter} \ - "${ED}${dest}"/_tkinter \ - "${ED}${dest}"/test/test_{tcl,tk,ttk*}.py || die - fi - # remove test last since we have some file removals above - if ! use test-install; then - rm -r "${ED}${dest}"/test || die - fi - dosym ../python/EXTERNALLY-MANAGED "${dest}/EXTERNALLY-MANAGED" - - local -x PYTHON="${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" - # temporarily copy to build tree to facilitate module builds - cp -p "${BROOT}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" "${PYTHON}" || die - - einfo "Byte-compiling Python standard library..." - # exclude list from CPython Makefile.pre.in - "${PYTHON}" -m compileall -j "$(makeopts_jobs)" -o 0 -o 1 -o 2 \ - -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ - --hardlink-dupes -q -f -d "${dest}" "${ED}${dest}" || die - - # remove to avoid collisions - rm "${PYTHON}" || die - - if use symlink; then - dosym pypy${PYVER} /usr/bin/pypy3 - - # install symlinks for python-exec - local EPYTHON=pypy${PYVER} - local scriptdir=${D}$(python_get_scriptdir) - mkdir -p "${scriptdir}" || die - ln -s "../../../bin/pypy3" "${scriptdir}/python3" || die - ln -s python3 "${scriptdir}/python" || die - fi -} diff --git a/dev-lang/pypy/pypy-3.11.7.3.19_p8.ebuild b/dev-lang/pypy/pypy-3.11.7.3.19_p8.ebuild deleted file mode 100644 index 2538fdb..0000000 --- a/dev-lang/pypy/pypy-3.11.7.3.19_p8.ebuild +++ /dev/null @@ -1,240 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit multiprocessing pax-utils python-utils-r1 toolchain-funcs - -PYVER=$(ver_cut 1-2) -PATCHSET_PV=$(ver_cut 3-) -PYPY_PV=${PATCHSET_PV%_p*} - -MY_P="pypy${PYVER}-v${PYPY_PV/_}" -PATCHSET="pypy${PYVER}-gentoo-patches-${PATCHSET_PV/_rc/rc}" - -DESCRIPTION="A fast, compliant alternative implementation of the Python (${PYVER}) 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" -# pypy3 -c 'import sysconfig; print(sysconfig.get_config_var("SOABI"))' -# also check pypy/interpreter/pycode.py -> pypy_incremental_magic -SLOT="${PYVER}/pypy311-pp73-416" -KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86" -IUSE="+ensurepip gdbm +jit ncurses sqlite symlink +test-install tk" -# many tests are failing upstream -# see https://buildbot.pypy.org/summary?branch=py${PYVER} -RESTRICT="test" - -RDEPEND=" - || ( - dev-lang/pypy3-exe:${PV%_p*}[bzip2(+),ncurses?] - dev-lang/pypy3-exe-bin:${PV%_p*} - ) - dev-lang/python-exec[python_targets_pypy${PYVER/./_}(-)] - dev-libs/openssl:0= - dev-python/gentoo-common - ensurepip? ( dev-python/ensurepip-wheels ) - gdbm? ( sys-libs/gdbm:0= ) - sqlite? ( dev-db/sqlite:3= ) - tk? ( - dev-lang/tk:0= - dev-tcltk/tix:0= - ) - symlink? ( - !dev-lang/pypy:3.10[symlink(-)] - !<dev-python/pypy3-7.3.17-r100 - ) -" -DEPEND=" - ${RDEPEND} -" - -src_prepare() { - local PATCHES=( - "${WORKDIR}/${PATCHSET}" - "${FILESDIR}"/${PN}-3.10-7.3.17-libressl.patch - ) - - default -} - -src_configure() { - tc-export CC -} - -src_compile() { - mkdir bin || die - # switch to the layout expected for cffi module builds - mkdir "include/pypy${PYVER}" || die - # copy over to make sys.prefix happy - cp -p "${BROOT}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" pypy${PYVER}-c || die - cp -p "${BROOT}/usr/include/pypy${PYVER}/${PYPY_PV}"/* include/pypy${PYVER}/ || die - # (not installed by pypy-exe) - rm pypy/module/cpyext/include/_numpypy/numpy/README || die - mv pypy/module/cpyext/include/* "include/pypy${PYVER}/" || die - mv pypy/module/cpyext/parse/*.h "include/pypy${PYVER}/" || die - pax-mark m "pypy${PYVER}-c" - - # verify the subslot - local soabi=$( - "./pypy${PYVER}-c" - <<-EOF - import importlib.util - import sysconfig - soabi = sysconfig.get_config_var("SOABI") - magic = importlib.util._RAW_MAGIC_NUMBER & 0xffff - print(f"{soabi}-{magic}") - EOF - ) - [[ ${soabi} == ${SLOT#*/} ]] || die "update subslot to ${soabi}" - - # Add epython.py to the distribution - echo "EPYTHON=\"pypy${PYVER}\"" > lib-python/3/epython.py || die - - einfo "Generating caches and CFFI modules ..." - - # Generate Grammar and PatternGrammar pickles. - "./pypy${PYVER}-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 lib_pypy/pypy_tools/build_cffi_imports.py! - # (NB: we build CFFI modules first to avoid error log when importing - # build_cffi_imports). - cffi_targets=( - pypy_util blake2/_blake2 sha3/_sha3 ssl - audioop syslog pwdgrp resource lzma posixshmem - ctypes_test testmultiphase - ) - 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${PYVER}-c" "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}" - done - # testcapi does not have a "build" script - "../pypy${PYVER}-c" -c "import _testcapi" || die - - # Verify that CFFI module list is up-to-date - local expected_cksum=a4138e48 - local local_cksum=$( - "../pypy${PYVER}-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).encode()),)) - 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.c" -o -name '*.o' \) -delete || die - find -type d -empty -delete || die - cd .. || die - - # Generate sysconfig data - local host_gnu_type=$(sh pypy/tool/release/config.guess) - local overrides=( - HOST_GNU_TYPE "${host_gnu_type:-unknown}" - INCLUDEPY "${EPREFIX}/usr/include/pypy${PYVER}" - LIBDIR "${EPREFIX}/usr/$(get_libdir)" - TZPATH "${EPREFIX}/usr/share/zoneinfo" - WHEEL_PKG_DIR "${EPREFIX}/usr/lib/python/ensurepip" - ) - "./pypy${PYVER}-c" -m sysconfig --generate-posix-vars "${overrides[@]}" || die - local outdir - outdir=$(<pybuilddir.txt) || die - cp "${outdir}"/_sysconfigdata__*.py lib-python/3/ || die -} - -src_install() { - local dest="/usr/lib/pypy${PYVER}" - einfo "Installing PyPy ..." - dodir /usr/bin - dosym "pypy${PYVER}-c-${PYPY_PV}" "/usr/bin/pypy${PYVER}" - insinto "${dest}" - # preserve mtimes to avoid obsoleting caches - insopts -p - doins -r lib-python/3/. lib_pypy/. - insinto /usr/include - doins -r "include/pypy${PYVER}" - - # replace copied headers with symlinks - for x in "${BROOT}/usr/include/pypy${PYVER}/${PYPY_PV}"/*; do - dosym "${PYPY_PV}/${x##*/}" "/usr/include/pypy${PYVER}/${x##*/}" - done - - dodoc README.rst - - rm -r "${ED}${dest}"/ensurepip/_bundled || die - if ! use ensurepip; then - rm -r "${ED}${dest}"/ensurepip || die - fi - if ! use gdbm; then - rm -r "${ED}${dest}"/_gdbm* || die - fi - if ! use test-install; then - rm -r "${ED}${dest}"/{ctypes,tkinter,unittest}/test \ - "${ED}${dest}"/{distutils,lib2to3}/tests \ - "${ED}${dest}"/idlelib/idle_test || die - fi - if ! use sqlite; then - rm -r "${ED}${dest}"/sqlite3 \ - "${ED}${dest}"/_sqlite3* \ - "${ED}${dest}"/test/test_sqlite3 || die - fi - if ! use tk; then - rm -r "${ED}${dest}"/{idlelib,tkinter} \ - "${ED}${dest}"/_tkinter \ - "${ED}${dest}"/test/test_{tcl,tk,ttk*}.py || die - fi - # remove test last since we have some file removals above - if ! use test-install; then - rm -r "${ED}${dest}"/test || die - fi - dosym ../python/EXTERNALLY-MANAGED "${dest}/EXTERNALLY-MANAGED" - - local -x PYTHON="${ED}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" - # temporarily copy to build tree to facilitate module builds - cp -p "${BROOT}/usr/bin/pypy${PYVER}-c-${PYPY_PV}" "${PYTHON}" || die - - einfo "Byte-compiling Python standard library..." - # exclude list from CPython Makefile.pre.in - "${PYTHON}" -m compileall -j "$(makeopts_jobs)" -o 0 -o 1 -o 2 \ - -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ - --hardlink-dupes -q -f -d "${dest}" "${ED}${dest}" || die - - # remove to avoid collisions - rm "${PYTHON}" || die - - if use symlink; then - dosym pypy${PYVER} /usr/bin/pypy3 - - # install symlinks for python-exec - local EPYTHON=pypy${PYVER} - local scriptdir=${D}$(python_get_scriptdir) - mkdir -p "${scriptdir}" || die - ln -s "../../../bin/pypy3" "${scriptdir}/python3" || die - ln -s python3 "${scriptdir}/python" || die - fi -}
