From 552455fb672c36f48f7072c107091c7d32f09841 Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Tue, 30 Nov 2021 17:05:02 +0100 Subject: [PATCH] dev-lang/python-oem: Copy ebuild of python 3.9.8 from gentoo This is the latest stable version at the moment. --- .../dev-lang/python-oem/Manifest | 4 +- .../dev-lang/python-oem/README.md | 65 ---- .../python-oem/files/3.6.5-disable-nis.patch | 11 - .../files/python-3.5-distutils-OO-build.patch | 80 ---- .../files/python-3.6.5-hash-unaligned.patch | 42 --- .../python-3.6.5-libressl-compatibility.patch | 114 ------ .../python-oem/python-oem-3.6.5.ebuild | 161 -------- .../python-oem/python-oem-3.9.8.ebuild | 349 ++++++++++++++++++ 8 files changed, 351 insertions(+), 475 deletions(-) delete mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/README.md delete mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/3.6.5-disable-nis.patch delete mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.5-distutils-OO-build.patch delete mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.6.5-hash-unaligned.patch delete mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.6.5-libressl-compatibility.patch delete mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/python-oem-3.6.5.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/python-oem-3.9.8.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/Manifest b/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/Manifest index 3bc5a5ee34..4e3c4098c0 100644 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/Manifest +++ b/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/Manifest @@ -1,2 +1,2 @@ -DIST Python-3.6.5.tar.xz 17049912 BLAKE2B f393e9563a18a46c457afcd2e174d9eacda20fe2b0ae5461e11c582fa4d27b85c01bbe7b602f45511b6b44f635c6330205b12fb3e8325ffd07e87b78a8258889 SHA512 6b26fcd296b9bd8e67861eff10d14db7507711ddba947288d16d6def53135c39326b7f969c04bb2b2993f924d9e7ad3f5c5282a3915760bc0885cf0a8ea5eb51 -DIST python-gentoo-patches-3.6.4.tar.xz 12888 BLAKE2B 7cf49ae22df53e855f2e99df51686b5d4bd0da82ef4c22836e24726ea9ed561808352c0305a5659b052d38b843f1ff61b6466a7bc3673b7e5cfb4d81d22fa4bc SHA512 90a1b685f2539872ffd67f96581f70145b7afaf18af19f4a7f4a61214103d2a10bf0069c1769dac229ae011fceaf8538f041082b33c1671905246d018d184dd7 +DIST Python-3.9.8.tar.xz 19149464 BLAKE2B 739eb22bae8b44cf5be9a24ca6ecacb80eaca65684abf1fef18b7adcac9adede2eff60e8a9ac5db2672511d180d6079c39e2ff2901ab454c0876ae8e1bfe96cc SHA512 5d5b46a242525b2e6a7f9c69c63c6d7cd985e1443a7d9b716107e75f14fef7b5c9c2e5e8a90adbbbf5f7a8b90a483d01e18c1732470e6e54b611b5aba9f99fe1 +DIST python-gentoo-patches-3.9.8.tar.xz 13192 BLAKE2B 995bead7e87b1d2eb9984012065c0f752d51e5a78dd9019270e071f83660cdab71c39e5be0104919f5af9089dede71d9c918a521f76e67c6ef1aeab5ffb58991 SHA512 80dfa3766bb5546924a5fccf4f469ce409cb8a4b0873c3d2fb737b3eb27b7c2b29337e0179624bbe077273b8e475f7921d6479ca7eb8e31ba423d0cea2f3d1cf diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/README.md b/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/README.md deleted file mode 100644 index b8b8890aef..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/README.md +++ /dev/null @@ -1,65 +0,0 @@ -Modifications made: - -- Drop python updater and eselect python stuff (so the pkg_ functions). - -- Drop src_test and the test use flag. - -- Rename one patch in PATCHES variable, so I don't need to rename the - file (the name in ebuild was using `${PN}`, which in - `dev-lang/python` expands to `python`, whereas in - `dev-lang/python-oem` it would expand to `python-oem`). - -- Drop the following use flags and simplify the ebuild assuming that - they were disabled: examples, gdbm, libressl, ncurses, sqlite, ssl, - tk, wininst. - -- Drop the following use flags and simplify the ebuild assuming that - they were enabled: build, ipv6, threads. - -- Drop xml use flag, but keep the internal copies of expat, do not - disable _elementtree and pyexpat modules and tell the configure - script to use the internal stuff. - -- Keep using internal libffi, instead of depending on system-provided - libffi. - -- Move RDEPEND to DEPEND, so RDEPEND remains empty. OEM packages are - installed after prod images are pruned of the previously installed - package database. - -- Make the following changes in configure flags: - - - Add --prefix=/usr/share/oem/python to the myeconfargs variable. - - - Change --enable-shared to --disable-shared. - - - Set --mandir, --infodir and --includedir to some subdirectory of - /discard, so during installation this could be easily removed. - -- Export some configure variables for the cross-compilation: - ac_cv_file__dev_ptc and ac_cv_file__dev_ptmx. If not done, build - will fail with a message saying that these should be set to either - yes or no. - -- Simplify src_install: - - - Replace the hardcoded ${ED}/usr/bin with bindir variable set to - ${ED}/usr/share/oem/python/bin. - - - Create versionless links (python and python3) to python executable. - - - Drop sed stuff mucking with LDFLAGS. - - - Drop collision fixes. - - - Drop ABIFLAGS hack. - - - Do not install ACKS, HISTORY and NEWS files. - - - Drop gdb autoload stuff. - - - Drop pydoc.{conf,init} stuff. - - - Drop python-exec stuff. - - - Remove installed stuff in /discard. diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/3.6.5-disable-nis.patch b/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/3.6.5-disable-nis.patch deleted file mode 100644 index 3937c6fe79..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/3.6.5-disable-nis.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/setup.py -+++ b/setup.py -@@ -1364,7 +1364,7 @@ class PyBuildExt(build_ext): - else: - missing.extend(['resource', 'termios']) - -- nis = self._detect_nis(inc_dirs, lib_dirs) -+ nis = None - if nis is not None: - exts.append(nis) - else: diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.5-distutils-OO-build.patch b/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.5-distutils-OO-build.patch deleted file mode 100644 index 8af8c30c76..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.5-distutils-OO-build.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 90507018442f9adabb586fd3d0a0206b9c2f2f50 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= -Date: Sun, 5 Jun 2016 08:18:01 +0200 -Subject: [PATCH] distutils: make -OO enable both opt-1 and opt-2 optimization - -Bug: http://bugs.python.org/issue27226 -Bug: https://bugs.gentoo.org/585060 ---- - Lib/distutils/command/build_py.py | 8 ++++---- - Lib/distutils/command/install_lib.py | 12 ++++++------ - 2 files changed, 10 insertions(+), 10 deletions(-) - -diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py -index cf0ca57..838d4e4 100644 ---- a/Lib/distutils/command/build_py.py -+++ b/Lib/distutils/command/build_py.py -@@ -315,9 +315,9 @@ class build_py (Command): - if self.compile: - outputs.append(importlib.util.cache_from_source( - filename, optimization='')) -- if self.optimize > 0: -+ for opt in range(1, self.optimize + 1): - outputs.append(importlib.util.cache_from_source( -- filename, optimization=self.optimize)) -+ filename, optimization=opt)) - - outputs += [ - os.path.join(build_dir, filename) -@@ -387,8 +387,8 @@ class build_py (Command): - if self.compile: - byte_compile(files, optimize=0, - force=self.force, prefix=prefix, dry_run=self.dry_run) -- if self.optimize > 0: -- byte_compile(files, optimize=self.optimize, -+ for opt in range(1, self.optimize + 1): -+ byte_compile(files, optimize=opt, - force=self.force, prefix=prefix, dry_run=self.dry_run) - - class build_py_2to3(build_py, Mixin2to3): -diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py -index 6154cf0..049b662 100644 ---- a/Lib/distutils/command/install_lib.py -+++ b/Lib/distutils/command/install_lib.py -@@ -24,8 +24,8 @@ class install_lib(Command): - # 2) compile .pyc only (--compile --no-optimize; default) - # 3) compile .pyc and "opt-1" .pyc (--compile --optimize) - # 4) compile "opt-1" .pyc only (--no-compile --optimize) -- # 5) compile .pyc and "opt-2" .pyc (--compile --optimize-more) -- # 6) compile "opt-2" .pyc only (--no-compile --optimize-more) -+ # 5) compile .pyc, "opt-1" and "opt-2" .pyc (--compile --optimize-more) -+ # 6) compile "opt-1" and "opt-2" .pyc (--no-compile --optimize-more) - # - # The UI for this is two options, 'compile' and 'optimize'. - # 'compile' is strictly boolean, and only decides whether to -@@ -132,8 +132,8 @@ class install_lib(Command): - byte_compile(files, optimize=0, - force=self.force, prefix=install_root, - dry_run=self.dry_run) -- if self.optimize > 0: -- byte_compile(files, optimize=self.optimize, -+ for opt in range(1, self.optimize + 1): -+ byte_compile(files, optimize=opt, - force=self.force, prefix=install_root, - verbose=self.verbose, dry_run=self.dry_run) - -@@ -167,9 +167,9 @@ class install_lib(Command): - if self.compile: - bytecode_files.append(importlib.util.cache_from_source( - py_file, optimization='')) -- if self.optimize > 0: -+ for opt in range(1, self.optimize + 1): - bytecode_files.append(importlib.util.cache_from_source( -- py_file, optimization=self.optimize)) -+ py_file, optimization=opt)) - - return bytecode_files - --- -2.8.3 - diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.6.5-hash-unaligned.patch b/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.6.5-hash-unaligned.patch deleted file mode 100644 index d096887cbf..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.6.5-hash-unaligned.patch +++ /dev/null @@ -1,42 +0,0 @@ -The hash implementation casts the input pointer to uint64_t* and directly reads -from this, which may cause unaligned accesses. Use memcpy() instead so this code -will not crash with SIGBUS on sparc. - ---- a/Python/pyhash.c 2017-11-29 10:21:20.283094068 +0100 -+++ b/Python/pyhash.c 2017-11-29 10:24:26.733087813 +0100 -@@ -369,7 +369,7 @@ - uint64_t k0 = _le64toh(_Py_HashSecret.siphash.k0); - uint64_t k1 = _le64toh(_Py_HashSecret.siphash.k1); - uint64_t b = (uint64_t)src_sz << 56; -- const uint64_t *in = (uint64_t*)src; -+ const uint8_t *in = (uint8_t*)src; - - uint64_t v0 = k0 ^ 0x736f6d6570736575ULL; - uint64_t v1 = k1 ^ 0x646f72616e646f6dULL; -@@ -378,11 +378,13 @@ - - uint64_t t; - uint8_t *pt; -- uint8_t *m; -+ const uint8_t *m; - - while (src_sz >= 8) { -- uint64_t mi = _le64toh(*in); -- in += 1; -- src_sz -= 8; -+ uint64_t mi; -+ memcpy(&mi, in, sizeof(mi)); -+ mi = _le64toh(mi); -+ in += sizeof(mi); -+ src_sz -= sizeof(mi); - v3 ^= mi; - DOUBLE_ROUND(v0,v1,v2,v3); -@@ -391,7 +393,7 @@ - - t = 0; - pt = (uint8_t *)&t; -- m = (uint8_t *)in; -+ m = in; - switch (src_sz) { - case 7: pt[6] = m[6]; /* fall through */ - case 6: pt[5] = m[5]; /* fall through */ diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.6.5-libressl-compatibility.patch b/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.6.5-libressl-compatibility.patch deleted file mode 100644 index 2f9e6a2bef..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/files/python-3.6.5-libressl-compatibility.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 8d89a385b71a2e4cce0fba0cfc8d91b63485edc5 Mon Sep 17 00:00:00 2001 -From: Christian Heimes -Date: Sat, 24 Mar 2018 18:38:14 +0100 -Subject: [PATCH] [3.6] bpo-33127: Compatibility patch for LibreSSL 2.7.0 - (GH-6210) (GH-6214) - -LibreSSL 2.7 introduced OpenSSL 1.1.0 API. The ssl module now detects -LibreSSL 2.7 and only provides API shims for OpenSSL < 1.1.0 and -LibreSSL < 2.7. - -Documentation updates and fixes for failing tests will be provided in -another patch set. - -Signed-off-by: Christian Heimes . -(cherry picked from commit 4ca0739c9d97ac7cd45499e0d31be68dc659d0e1) - -Co-authored-by: Christian Heimes ---- - Lib/test/test_ssl.py | 1 + - .../2018-03-24-15-08-24.bpo-33127.olJmHv.rst | 1 + - Modules/_ssl.c | 24 ++++++++++++------- - Tools/ssl/multissltests.py | 3 ++- - 4 files changed, 20 insertions(+), 9 deletions(-) - create mode 100644 Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst - -diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py -index 8dd3b41450..9785a59a7e 100644 ---- a/Lib/test/test_ssl.py -+++ b/Lib/test/test_ssl.py -@@ -1687,6 +1687,7 @@ class SimpleBackgroundTests(unittest.TestCase): - self.assertEqual(len(ctx.get_ca_certs()), 1) - - @needs_sni -+ @unittest.skipUnless(hasattr(ssl, "PROTOCOL_TLSv1_2"), "needs TLS 1.2") - def test_context_setget(self): - # Check that the context of a connected socket can be replaced. - ctx1 = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) -diff --git a/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst b/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst -new file mode 100644 -index 0000000000..635aabbde0 ---- /dev/null -+++ b/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst -@@ -0,0 +1 @@ -+The ssl module now compiles with LibreSSL 2.7.1. -diff --git a/Modules/_ssl.c b/Modules/_ssl.c -index c54e43c2b4..5e007da858 100644 ---- a/Modules/_ssl.c -+++ b/Modules/_ssl.c -@@ -106,6 +106,12 @@ struct py_ssl_library_code { - - #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER) - # define OPENSSL_VERSION_1_1 1 -+# define PY_OPENSSL_1_1_API 1 -+#endif -+ -+/* LibreSSL 2.7.0 provides necessary OpenSSL 1.1.0 APIs */ -+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL -+# define PY_OPENSSL_1_1_API 1 - #endif - - /* Openssl comes with TLSv1.1 and TLSv1.2 between 1.0.0h and 1.0.1 -@@ -152,16 +158,18 @@ struct py_ssl_library_code { - #define INVALID_SOCKET (-1) - #endif - --#ifdef OPENSSL_VERSION_1_1 --/* OpenSSL 1.1.0+ */ --#ifndef OPENSSL_NO_SSL2 --#define OPENSSL_NO_SSL2 --#endif --#else /* OpenSSL < 1.1.0 */ --#if defined(WITH_THREAD) -+/* OpenSSL 1.0.2 and LibreSSL needs extra code for locking */ -+#if !defined(OPENSSL_VERSION_1_1) && defined(WITH_THREAD) - #define HAVE_OPENSSL_CRYPTO_LOCK - #endif - -+#if defined(OPENSSL_VERSION_1_1) && !defined(OPENSSL_NO_SSL2) -+#define OPENSSL_NO_SSL2 -+#endif -+ -+#ifndef PY_OPENSSL_1_1_API -+/* OpenSSL 1.1 API shims for OpenSSL < 1.1.0 and LibreSSL < 2.7.0 */ -+ - #define TLS_method SSLv23_method - #define TLS_client_method SSLv23_client_method - #define TLS_server_method SSLv23_server_method -@@ -227,7 +235,7 @@ SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s) - return s->tlsext_tick_lifetime_hint; - } - --#endif /* OpenSSL < 1.1.0 or LibreSSL */ -+#endif /* OpenSSL < 1.1.0 or LibreSSL < 2.7.0 */ - - - enum py_ssl_error { -diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py -index ce5bbd8530..ba4529ae06 100755 ---- a/Tools/ssl/multissltests.py -+++ b/Tools/ssl/multissltests.py -@@ -57,8 +57,9 @@ LIBRESSL_OLD_VERSIONS = [ - ] - - LIBRESSL_RECENT_VERSIONS = [ -- "2.5.3", - "2.5.5", -+ "2.6.4", -+ "2.7.1", - ] - - # store files in ../multissl --- -2.17.0 - diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/python-oem-3.6.5.ebuild b/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/python-oem-3.6.5.ebuild deleted file mode 100644 index cfeef9768e..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/python-oem/python-oem-3.6.5.ebuild +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright 1999-2018 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI="6" -WANT_LIBTOOL="none" - -inherit autotools flag-o-matic pax-utils python-utils-r1 toolchain-funcs - -MY_P="Python-${PV}" -PATCHSET_VERSION="3.6.4" - -DESCRIPTION="An interpreted, interactive, object-oriented programming language" -HOMEPAGE="https://www.python.org/" -SRC_URI="https://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz - https://dev.gentoo.org/~floppym/python/python-gentoo-patches-${PATCHSET_VERSION}.tar.xz" - -LICENSE="PSF-2" -SLOT="3.6/3.6m" -KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd" -IUSE="hardened" - -# Do not add a dependency on dev-lang/python to this ebuild. -# If you need to apply a patch which requires python for bootstrapping, please -# run the bootstrap code on your dev box and include the results in the -# patchset. See bug 447752. - -RDEPEND="" -DEPEND="app-arch/bzip2:0= - app-arch/xz-utils:0= - >=sys-libs/zlib-1.1.3:0= - virtual/libintl - !!/dev/null) + newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py + + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER} + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER} + sed \ + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \ + -e "s:@PYDOC@:pydoc${PYVER}:" \ + -i "${ED}/etc/conf.d/pydoc-${PYVER}" \ + "${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed" + + local -x EPYTHON=python${PYVER} + # if not using a cross-compiler, use the fresh binary + if ! tc-is-cross-compiler; then + local -x PYTHON=./python + local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}${PWD} + else + local -x PYTHON=${EPREFIX}/usr/bin/${EPYTHON} + fi + + echo "EPYTHON='${EPYTHON}'" > epython.py || die + python_domodule epython.py + + # python-exec wrapping support + local pymajor=${PYVER%.*} + local scriptdir=${D}$(python_get_scriptdir) + mkdir -p "${scriptdir}" || die + # python and pythonX + ln -s "../../../bin/${abiver}" \ + "${scriptdir}/python${pymajor}" || die + ln -s "python${pymajor}" "${scriptdir}/python" || die + # python-config and pythonX-config + # note: we need to create a wrapper rather than symlinking it due + # to some random dirname(argv[0]) magic performed by python-config + cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die + #!/bin/sh + exec "${abiver}-config" "\${@}" + EOF + chmod +x "${scriptdir}/python${pymajor}-config" || die + ln -s "python${pymajor}-config" \ + "${scriptdir}/python-config" || die + # 2to3, pydoc + ln -s "../../../bin/2to3-${PYVER}" \ + "${scriptdir}/2to3" || die + ln -s "../../../bin/pydoc${PYVER}" \ + "${scriptdir}/pydoc" || die + # idle + if use tk; then + ln -s "../../../bin/idle${PYVER}" \ + "${scriptdir}/idle" || die + fi +}