From 706600f67e59395d1e554437d51763450b2fb830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Wed, 2 Aug 2023 00:41:55 +0200 Subject: [PATCH] Initial PyPy 3.10 package --- .gitignore | 1 + 189-use-rpm-wheels.patch | 61 ------------------------- pypy3.9.rpmlintrc => pypy3.10.rpmlintrc | 0 pypy3.9.spec => pypy3.10.spec | 22 ++++----- sources | 2 +- tests/tests.yml | 6 +-- 6 files changed, 13 insertions(+), 79 deletions(-) delete mode 100644 189-use-rpm-wheels.patch rename pypy3.9.rpmlintrc => pypy3.10.rpmlintrc (100%) rename pypy3.9.spec => pypy3.10.spec (98%) diff --git a/.gitignore b/.gitignore index 0fa084a..6fd1795 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ /pypy3.9-v7.3.9-src.tar.bz2 /pypy3.9-v7.3.11-src.tar.bz2 /pypy3.9-v7.3.12-src.tar.bz2 +/pypy3.10-v7.3.12-src.tar.bz2 diff --git a/189-use-rpm-wheels.patch b/189-use-rpm-wheels.patch deleted file mode 100644 index e6e85f8..0000000 --- a/189-use-rpm-wheels.patch +++ /dev/null @@ -1,61 +0,0 @@ -diff --git a/lib-python/3/ensurepip/__init__.py b/lib-python/3/ensurepip/__init__.py -index e510cc7..8b736b8 100644 ---- a/lib-python/3/ensurepip/__init__.py -+++ b/lib-python/3/ensurepip/__init__.py -@@ -1,3 +1,5 @@ -+import distutils.version -+import glob - import os - import os.path - import sys -@@ -6,13 +8,28 @@ import tempfile - import subprocess - from importlib import resources - --from . import _bundled - -+__all__ = ["version", "bootstrap"] - -+_WHEEL_DIR = "/usr/share/python-wheels/" -+ -+_wheels = {} -+ -+def _get_most_recent_wheel_version(pkg): -+ prefix = os.path.join(_WHEEL_DIR, "{}-".format(pkg)) -+ _wheels[pkg] = {} -+ for suffix in "-py2.py3-none-any.whl", "-py3-none-any.whl": -+ pattern = "{}*{}".format(prefix, suffix) -+ for path in glob.glob(pattern): -+ version_str = path[len(prefix):-len(suffix)] -+ _wheels[pkg][version_str] = os.path.basename(path) -+ return str(max(_wheels[pkg], key=distutils.version.LooseVersion)) -+ -+ -+_SETUPTOOLS_VERSION = _get_most_recent_wheel_version("setuptools") -+ -+_PIP_VERSION = _get_most_recent_wheel_version("pip") - --__all__ = ["version", "bootstrap"] --_SETUPTOOLS_VERSION = "58.1.0" --_PIP_VERSION = "23.0.1" - _PROJECTS = [ - ("setuptools", _SETUPTOOLS_VERSION, "py3"), - ("pip", _PIP_VERSION, "py3"), -@@ -101,13 +118,10 @@ def _bootstrap(*, root=None, upgrade=False, user=False, - # additional paths that need added to sys.path - additional_paths = [] - for project, version, py_tag in _PROJECTS: -- wheel_name = "{}-{}-{}-none-any.whl".format(project, version, py_tag) -- whl = resources.read_binary( -- _bundled, -- wheel_name, -- ) -- with open(os.path.join(tmpdir, wheel_name), "wb") as fp: -- fp.write(whl) -+ wheel_name = _wheels[project][version] -+ with open(os.path.join(_WHEEL_DIR, wheel_name), "rb") as sfp: -+ with open(os.path.join(tmpdir, wheel_name), "wb") as fp: -+ fp.write(sfp.read()) - - additional_paths.append(os.path.join(tmpdir, wheel_name)) - diff --git a/pypy3.9.rpmlintrc b/pypy3.10.rpmlintrc similarity index 100% rename from pypy3.9.rpmlintrc rename to pypy3.10.rpmlintrc diff --git a/pypy3.9.spec b/pypy3.10.spec similarity index 98% rename from pypy3.9.spec rename to pypy3.10.spec index f20596d..24dbe1c 100644 --- a/pypy3.9.spec +++ b/pypy3.10.spec @@ -1,7 +1,7 @@ %global basever 7.3 %global micro 12 #global pre ... -%global pyversion 3.9 +%global pyversion 3.10 Name: pypy%{pyversion} Version: %{basever}.%{micro}%{?pre:~%{pre}} %global version_ %{basever}.%{micro}%{?pre} @@ -74,7 +74,7 @@ ExcludeArch: %{ix86} # 2. inside the python-classroom group locate pypy3.N-devel # 3. change the package name to match the new version # 4. submit changes as a pull request and make sure somebody merges it -%bcond_without main_pypy3 +%bcond_with main_pypy3 %ifarch %{ix86} x86_64 %{arm} %global _package_note_linker gold @@ -109,11 +109,6 @@ Patch7: 007-remove-startup-message.patch # https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt Patch9: 009-add-libxcrypt-support.patch -# Instead of bundled wheels, use our RPM packaged wheels from -# /usr/share/python-wheels -# We conditionally apply this, but we use autosetup, so we use Source here -Source189: 189-use-rpm-wheels.patch - # Build-time requirements: # pypy's can be rebuilt using pypy2, rather than with CPython 2; doing so @@ -315,12 +310,11 @@ Header files for building C extension modules against PyPy%{pyversion}. %prep %autosetup -n pypy%{pyversion}-v%{version_}-src -p1 -S git -# Temporary workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1954999 -%{?!apply_patch:%define apply_patch(qp:m:) {%__apply_patch %**}} - %if %{with rpmwheels} -%apply_patch -m %(basename %{SOURCE189}) %{SOURCE189} +# Instead of bundled wheels, use our RPM packaged wheels from /usr/share/python-wheels rm lib-python/3/ensurepip/_bundled/*.whl +# This append to _sysconfigdata.py is a hacked equivalent to CPython's configure --with-wheel-pkg-dir +echo "build_time_vars['WHEEL_PKG_DIR'] = '%{python_wheel_dir}'" >> lib_pypy/_sysconfigdata.py %endif @@ -356,9 +350,6 @@ rm lib-python/3/idlelib/idle.bat ln -s lib_pypy/cffi/_pycparser pycparser %endif -# Remove windows executable binaries -rm lib-python/3/distutils/command/*.exe - %build # Top memory usage is about 4.5GB on arm7hf free @@ -836,6 +827,9 @@ CheckPyPy pypy%{pyversion}-c %changelog +* Wed Jul 26 2023 Miro Hrončok - 7.3.12-1.3.10 +- Initial PyPy 3.10 package + * Wed Jul 26 2023 Miro Hrončok - 7.3.12-1.3.9 - Update to 7.3.12 - Fixes: rhbz#2203423 diff --git a/sources b/sources index 4c6c210..4166c4d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pypy3.9-v7.3.12-src.tar.bz2) = 8e819a1ec3f3ce7fc5f901fb554660288a57e2a4834a3da35c1a57faf88ef4129240628a58334d2e0c2b1dda412da5d85ec943abe8046c0ce5d0cd0a0f7fc42a +SHA512 (pypy3.10-v7.3.12-src.tar.bz2) = 080520c7de267e17a2823f06cd0a15c108a2c32fc296d6e24782050eb546fa74852d948ede2c381dba110774121b20efc3a07b553acd0ac0db4a844dfc09069e diff --git a/tests/tests.yml b/tests/tests.yml index 8001a5f..b0ef529 100644 --- a/tests/tests.yml +++ b/tests/tests.yml @@ -20,13 +20,13 @@ tests: - smoke: dir: python/smoke - run: runuser testuser -c 'PYTHON=pypy3.9 VERSION=3.9 ./venv.sh' + run: runuser testuser -c 'PYTHON=pypy3.10 VERSION=3.10 ./venv.sh' - smoke_virtualenv: dir: python/smoke - run: runuser testuser -c 'PYTHON=pypy3.9 VERSION=3.9 METHOD=virtualenv TOX=false ./venv.sh' + run: runuser testuser -c 'PYTHON=pypy3.10 VERSION=3.10 METHOD=virtualenv TOX=false ./venv.sh' required_packages: - util-linux - gcc - python3-tox - python3-virtualenv - - pypy3.9-devel + - pypy3.10-devel