* [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/pypy/, dev-lang/pypy/files/
@ 2024-12-02 16:12 orbea
0 siblings, 0 replies; only message in thread
From: orbea @ 2024-12-02 16:12 UTC (permalink / raw
To: gentoo-commits
commit: bb9ba31f6bc3115fc6bd570427917b542d0b7388
Author: orbea <orbea <AT> riseup <DOT> net>
AuthorDate: Mon Dec 2 16:11:36 2024 +0000
Commit: orbea <orbea <AT> riseup <DOT> net>
CommitDate: Mon Dec 2 16:11:36 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/libressl.git/commit/?id=bb9ba31f
dev-lang/pypy: new package, add 3.10.7.3.17_p2, 3.10.7.3.17_p3
Signed-off-by: orbea <orbea <AT> riseup.net>
dev-lang/pypy/Manifest | 3 +
.../pypy/files/pypy-3.10-7.3.17-libressl.patch | 264 +++++++++++++++++++++
dev-lang/pypy/metadata.xml | 32 +++
dev-lang/pypy/pypy-3.10.7.3.17_p2.ebuild | 239 +++++++++++++++++++
dev-lang/pypy/pypy-3.10.7.3.17_p3.ebuild | 239 +++++++++++++++++++
5 files changed, 777 insertions(+)
diff --git a/dev-lang/pypy/Manifest b/dev-lang/pypy/Manifest
new file mode 100644
index 0000000..570fa84
--- /dev/null
+++ b/dev-lang/pypy/Manifest
@@ -0,0 +1,3 @@
+DIST pypy3.10-gentoo-patches-7.3.17_p2.tar.xz 19304 BLAKE2B acc36ad6711eb474341836da94cab425a12720902f66a74432fa03b61618abe43bd3706cba9ed0a763cbda16364d7d6ae45a742047a35599c40759eee85ff90a SHA512 510a3dbcd44d2c261f620bbf6c92d6a96b7f826b9e714ac957b52df9ca91599cc00c1435489e02274f972970c31882ab21360b3fe58ef78966ba11cc7f2cdbc7
+DIST pypy3.10-gentoo-patches-7.3.17_p3.tar.xz 21064 BLAKE2B 474d27520854ff105cd12e1801d81e49f6f3c6cf28d74031f1f4cd7d65c581034f0a2ca3e2e4979dc5ce10572dd133e2b3c93318ec937bc7a869b6bbbc555e35 SHA512 0e6e20f16f7ffd4e592b2427e4018f47a3b880f6026bc875541c8ff920bea123266a8dfbdd3a028a698f3a54588b907be40508aa5bf6e524a8d1c4f3a7dbd8ab
+DIST pypy3.10-v7.3.17-src.tar.bz2 23350562 BLAKE2B 0a7a091976b352de61057f238fa386f767dd4d2fbcdcc0b4376066c20c2ad35d3818fa6e9e163ab5fd341856802e8ad1e2891decf5948c13cdb26726cd42019e SHA512 46e30845bbc73cf56f5033a24d3583253ce198522f3a28ae4e789884063ba167d401fc08ae7fc8c7769feed9cd942a8ab38961c8b8794d7fae8f9955479faa96
diff --git a/dev-lang/pypy/files/pypy-3.10-7.3.17-libressl.patch b/dev-lang/pypy/files/pypy-3.10-7.3.17-libressl.patch
new file mode 100644
index 0000000..1fac486
--- /dev/null
+++ b/dev-lang/pypy/files/pypy-3.10-7.3.17-libressl.patch
@@ -0,0 +1,264 @@
+--- 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/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;
+
+@@ -593,13 +588,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;
+@@ -726,7 +721,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. */
+@@ -739,7 +739,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;
+@@ -788,8 +788,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
+@@ -895,7 +893,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/metadata.xml b/dev-lang/pypy/metadata.xml
new file mode 100644
index 0000000..14995e7
--- /dev/null
+++ b/dev-lang/pypy/metadata.xml
@@ -0,0 +1,32 @@
+<?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="ensurepip">
+ Install the ensurepip module that uses bundled wheels
+ to bootstrap pip and setuptools (if disabled, it will
+ be only possible to use venv `--without-pip`)
+ </flag>
+ <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>
+ <flag name="symlink">
+ Install "pypy3" symlink, making this PyPy slot the default
+ PyPy3 implementation that is used for building Gentoo packages.
+ </flag>
+ <flag name="test-install">
+ Install the test suite packages, that are required to run
+ tests in a few reverse dependencies.
+ </flag>
+ </use>
+</pkgmetadata>
diff --git a/dev-lang/pypy/pypy-3.10.7.3.17_p2.ebuild b/dev-lang/pypy/pypy-3.10.7.3.17_p2.ebuild
new file mode 100644
index 0000000..b1390ec
--- /dev/null
+++ b/dev-lang/pypy/pypy-3.10.7.3.17_p2.ebuild
@@ -0,0 +1,239 @@
+# Copyright 1999-2024 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}/pypy310-pp73-384"
+KEYWORDS="amd64 ~arm64 ~ppc64 x86 ~amd64-linux ~x86-linux"
+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-python/pypy3_10-exe-${PYPY_PV}:${PYPY_PV}[bzip2(+),ncurses?]
+ >=dev-python/pypy3_10-exe-bin-${PYPY_PV}:${PYPY_PV}
+ )
+ dev-lang/python-exec[python_targets_pypy3(-)]
+ 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=
+ )
+ !dev-python/pypy3_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="pypy3"' > lib-python/3/epython.py || die
+
+ einfo "Generating caches and CFFI modules ..."
+
+ # 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
+
+ # 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
+}
+
+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,sqlite3,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_sqlite.py || 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=pypy3
+ 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.10.7.3.17_p3.ebuild b/dev-lang/pypy/pypy-3.10.7.3.17_p3.ebuild
new file mode 100644
index 0000000..0763ba1
--- /dev/null
+++ b/dev-lang/pypy/pypy-3.10.7.3.17_p3.ebuild
@@ -0,0 +1,239 @@
+# Copyright 1999-2024 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}/pypy310-pp73-384"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+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-python/pypy3_10-exe-${PYPY_PV}:${PYPY_PV}[bzip2(+),ncurses?]
+ >=dev-python/pypy3_10-exe-bin-${PYPY_PV}:${PYPY_PV}
+ )
+ dev-lang/python-exec[python_targets_pypy3(-)]
+ 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=
+ )
+ !dev-python/pypy3_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="pypy3"' > lib-python/3/epython.py || die
+
+ einfo "Generating caches and CFFI modules ..."
+
+ # 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
+
+ # 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
+}
+
+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,sqlite3,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_sqlite.py || 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=pypy3
+ local scriptdir=${D}$(python_get_scriptdir)
+ mkdir -p "${scriptdir}" || die
+ ln -s "../../../bin/pypy3" "${scriptdir}/python3" || die
+ ln -s python3 "${scriptdir}/python" || die
+ fi
+}
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2024-12-02 16:12 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-02 16:12 [gentoo-commits] repo/proj/libressl:master commit in: dev-lang/pypy/, dev-lang/pypy/files/ orbea
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox