public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/pypy3.11] f43: Update to 8.0.0
@ 2026-09-23 19:24 
  0 siblings, 0 replies; only message in thread
From:  @ 2026-09-23 19:24 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/pypy3.11
            Branch : f43
            Commit : dba52582dbf26a9237aef5a194949142df49f8cd
            Author : Miro Hrončok <miro@hroncok.cz>
            Date   : 2026-09-23T11:13:14+02:00
            Stats  : +8/-211 in 5 file(s)
            URL    : https://src.fedoraproject.org/rpms/pypy3.11/c/dba52582dbf26a9237aef5a194949142df49f8cd?branch=f43

            Log:
            Update to 8.0.0

- Fixes: rhbz#2537170

---
diff --git a/.gitignore b/.gitignore
index cb2aad6..0f91f7f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,4 @@
 /pypy3.11-v7.3.21-src.tar.bz2
 /pypy3.11-v7.3.22-src.tar.bz2
 /pypy3.11-v7.3.23-src.tar.bz2
+/pypy3.11-v8.0.0-src.tar.gz

diff --git a/9e483cf9.patch b/9e483cf9.patch
deleted file mode 100644
index e52e7ee..0000000
--- a/9e483cf9.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-From 9e483cf9e16b11aab0c3fe86e3ff93d963b9323b Mon Sep 17 00:00:00 2001
-From: mattip <matti.picus@gmail.com>
-Date: Thu, 9 Jul 2026 15:29:30 +0300
-Subject: [PATCH] lazily load locks to avoid 'seeing a prebuilt rthread.Lock
- instance' during annotation
-
----
- pypy/module/thread/os_lock.py | 81 +++++++++++++++++++++++++----------
- 1 file changed, 58 insertions(+), 23 deletions(-)
-
-diff --git a/pypy/module/thread/os_lock.py b/pypy/module/thread/os_lock.py
-index bf6295272a4..b474be6d34b 100644
---- a/pypy/module/thread/os_lock.py
-+++ b/pypy/module/thread/os_lock.py
-@@ -63,14 +63,25 @@ def acquire_timed(space, lock, microseconds):
- class Lock(W_Root):
-     "A wrappable box around an interp-level lock object."
- 
--    _immutable_fields_ = ["lock"]
-+    # allocated lazily by _get_lock(): a Lock that is only constructed but
-+    # never acquired holds no interp-level lock, so it can be created safely
-+    # at translation time (e.g. during the frozen importlib bootstrap) without
-+    # freezing a prebuilt rthread.Lock.
-+    _immutable_fields_ = ["lock?"]
- 
-     def __init__(self, space):
-         self.space = space
--        try:
--            self.lock = rthread.allocate_lock()
--        except rthread.error:
--            raise wrap_thread_error(space, "out of resources")
-+        self.lock = None
-+
-+    def _get_lock(self, space):
-+        lock = self.lock
-+        if lock is None:
-+            try:
-+                lock = rthread.allocate_lock()
-+            except rthread.error:
-+                raise wrap_thread_error(space, "out of resources")
-+            self.lock = lock
-+        return lock
- 
-     @unwrap_spec(blocking=int, timeout=float)
-     def descr_lock_acquire(self, space, blocking=1, timeout=-1.0):
-@@ -81,22 +92,28 @@ def descr_lock_acquire(self, space, blocking=1, timeout=-1.0):
- and the return value reflects whether the lock is acquired.
- The blocking operation is interruptible."""
-         microseconds = parse_acquire_args(space, blocking, timeout)
--        result = acquire_timed(space, self.lock, microseconds)
-+        result = acquire_timed(space, self._get_lock(space), microseconds)
-         return space.newbool(result == RPY_LOCK_ACQUIRED)
- 
-     def descr_lock_release(self, space):
-         """Release the lock, allowing another thread that is blocked waiting for
- the lock to acquire the lock.  The lock must be in the locked state,
- but it needn't be locked by the same thread that unlocks it."""
--        try:
--            self.lock.release()
--        except rthread.error:
--            raise oefmt(space.w_RuntimeError,
--                        "cannot release un-acquired lock")
-+        lock = self.lock
-+        if lock is not None:
-+            try:
-+                lock.release()
-+                return
-+            except rthread.error:
-+                pass
-+        raise oefmt(space.w_RuntimeError, "cannot release un-acquired lock")
- 
-     def _is_locked(self):
--        if self.lock.acquire(False):
--            self.lock.release()
-+        lock = self.lock
-+        if lock is None:
-+            return False
-+        if lock.acquire(False):
-+            lock.release()
-             return False
-         else:
-             return True
-@@ -181,13 +198,25 @@ def _set_sentinel(space):
-     return lock
- 
- class W_RLock(W_Root):
-+    # see the comment on Lock: allocate the interp-level lock lazily so an
-+    # RLock constructed but never acquired (e.g. a module lock created during
-+    # the frozen importlib bootstrap) does not freeze a prebuilt rthread.Lock.
-+    _immutable_fields_ = ["lock?"]
-+
-     def __init__(self, space):
-         self.rlock_count = 0
-         self.rlock_owner = 0
--        try:
--            self.lock = rthread.allocate_lock()
--        except rthread.error:
--            raise wrap_thread_error(space, "cannot allocate lock")
-+        self.lock = None
-+
-+    def _get_lock(self, space):
-+        lock = self.lock
-+        if lock is None:
-+            try:
-+                lock = rthread.allocate_lock()
-+            except rthread.error:
-+                raise wrap_thread_error(space, "cannot allocate lock")
-+            self.lock = lock
-+        return lock
- 
-     def descr__new__(space, w_subtype):
-         self = space.allocate_instance(W_RLock, w_subtype)
-@@ -227,11 +256,12 @@ def acquire_w(self, space, blocking=True, timeout=-1.0):
-                             "internal lock count overflowed")
-             return space.w_True
- 
-+        lock = self._get_lock(space)
-         r = True
--        if self.rlock_count > 0 or not self.lock.acquire(False):
-+        if self.rlock_count > 0 or not lock.acquire(False):
-             if not blocking:
-                 return space.w_False
--            r = acquire_timed(space, self.lock, microseconds)
-+            r = acquire_timed(space, lock, microseconds)
-             r = (r == RPY_LOCK_ACQUIRED)
-         if r:
-             assert self.rlock_count == 0
-@@ -256,7 +286,9 @@ def release_w(self, space):
-         self.rlock_count -= 1
-         if self.rlock_count == 0:
-             self.rlock_owner = 0
--            self.lock.release()
-+            lock = self.lock
-+            assert lock is not None   # held, so allocated
-+            lock.release()
- 
-     def recursion_count(self, space):
-         """_recursion_count() -> int
-@@ -282,9 +314,10 @@ def acquire_restore_w(self, space, w_saved_state):
-         w_count, w_owner = space.unpackiterable(w_saved_state, 2)
-         count = space.int_w(w_count)
-         owner = space.int_w(w_owner)
-+        lock = self._get_lock(space)
-         r = True
--        if not self.lock.acquire(False):
--            r = self.lock.acquire(True)
-+        if not lock.acquire(False):
-+            r = lock.acquire(True)
-         if not r:
-             raise wrap_thread_error(space, "could not acquire lock")
-         assert self.rlock_count == 0
-@@ -298,7 +331,9 @@ def release_save_w(self, space):
-                         "cannot release un-acquired lock")
-         count, self.rlock_count = self.rlock_count, 0
-         owner, self.rlock_owner = self.rlock_owner, 0
--        self.lock.release()
-+        lock = self.lock
-+        assert lock is not None   # held, so allocated
-+        lock.release()
-         return space.newtuple2(space.newint(count), space.newint(owner))
- 
-     def descr__enter__(self, space):

diff --git a/ea804f98.patch b/ea804f98.patch
deleted file mode 100644
index 3c1a7bd..0000000
--- a/ea804f98.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From ea804f98c62993fb4a34588bc27be5f6e29e0599 Mon Sep 17 00:00:00 2001
-From: mattip <matti.picus@gmail.com>
-Date: Fri, 10 Jul 2026 17:19:27 +0300
-Subject: [PATCH] add lock._cleanup_ for annotation
-
----
- pypy/module/thread/os_lock.py | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/pypy/module/thread/os_lock.py b/pypy/module/thread/os_lock.py
-index b474be6d34b..d1ac2254e3f 100644
---- a/pypy/module/thread/os_lock.py
-+++ b/pypy/module/thread/os_lock.py
-@@ -73,6 +73,12 @@ def __init__(self, space):
-         self.space = space
-         self.lock = None
- 
-+    def _cleanup_(self):
-+        # drop a lock that got allocated during a frozen bootstrap so the
-+        # annotator never sees a prebuilt rthread.Lock; _get_lock() re-creates
-+        # it lazily at runtime.
-+        self.lock = None
-+
-     def _get_lock(self, space):
-         lock = self.lock
-         if lock is None:
-@@ -208,6 +214,10 @@ def __init__(self, space):
-         self.rlock_owner = 0
-         self.lock = None
- 
-+    def _cleanup_(self):
-+        # see the comment on Lock._cleanup_
-+        self.lock = None
-+
-     def _get_lock(self, space):
-         lock = self.lock
-         if lock is None:

diff --git a/pypy3.11.spec b/pypy3.11.spec
index 9f44217..6ab62c1 100644
--- a/pypy3.11.spec
+++ b/pypy3.11.spec
@@ -1,5 +1,5 @@
-%global basever 7.3
-%global micro 23
+%global basever 8.0
+%global micro 0
 #global pre ...
 %global pyversion 3.11
 Name:           pypy%{pyversion}
@@ -77,7 +77,7 @@ ExcludeArch:    %{ix86}
 %bcond main_pypy3 %[0%{?fedora} >= 42]
 
 # Source and patches:
-Source0: https://downloads.python.org/pypy/pypy%{pyversion}-v%{version_}-src.tar.bz2
+Source0: https://downloads.python.org/pypy/pypy%{pyversion}-v%{version_}-src.tar.gz
 
 # Supply various useful RPM macros for building python modules against pypy:
 #  __pypy, pypy_sitelib, pypy_sitearch
@@ -104,11 +104,6 @@ Patch7: 007-remove-startup-message.patch
 # to be added to privent compilation error.
 # https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt
 Patch9: 009-add-libxcrypt-support.patch
-# Fix "seeing a prebuilt rpython.rlib.rthread.Lock instance" during translation
-# caused by 7.3.23's exception table changes exposing Lock objects as prebuilt constants
-# https://github.com/pypy/pypy/issues/5527
-Patch10: https://github.com/pypy/pypy/commit/9e483cf9.patch
-Patch11: https://github.com/pypy/pypy/commit/ea804f98.patch
 
 # Build-time requirements:
 
@@ -239,7 +234,7 @@ Requires: python-setuptools-wheel
 Requires: python-pip-wheel
 %else
 Provides: bundled(python3dist(pip)) = 24.0
-Provides: bundled(python3dist(setuptools)) = 65.5.0
+Provides: bundled(python3dist(setuptools)) = 79.0.1
 %endif
 
 # Provides for the bundled libmpdec
@@ -249,7 +244,7 @@ Provides: bundled(libmpdec) = %{libmpdec_version}
 }
 
 # Find the version in lib_pypy/cffi-XXX.dist-info/METADATA
-Provides: bundled(python3dist(cffi)) = 1.18.0
+Provides: bundled(python3dist(cffi)) = 2.1.0
 
 # Find the version in lib_pypy/cffi/_pycparser/__init__.py
 Provides: bundled(python3dist(pycparser)) = 3.00
@@ -761,7 +756,7 @@ CheckPyPy pypy%{pyversion}-c
 %doc README.rst
 %license %{pypylibdir}/LICENSE
 %license %{pypylibdir}/_cffi_ssl/LICENSE
-%license %{pypylibdir}/cffi-*.dist-info/LICENSE
+%license %{pypylibdir}/cffi-*.dist-info/licenses/LICENSE
 %license %{pypylibdir}/hpy-*.dist-info/LICENSE
 %{pypylibdir}/
 %if %{with rpmwheels}

diff --git a/sources b/sources
index b6dcd98..79b972c 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (pypy3.11-v7.3.23-src.tar.bz2) = 4351cf30227af06ece5d69fe86a17355eadf2dcdbddf8119c04a720a4f9f388c6ae45a3496feb623950fb4a4a9f70c1910502adb325a12b1b0e34a7ba35563c2
+SHA512 (pypy3.11-v8.0.0-src.tar.gz) = 3e29f2bc76dc2db6d2409d580299c16e54927c1d7f06d697c0550d55a6fec2570e41f283d72730a19ad9166121a01cc5e380c33858a86b96356d4fd9d1780ade

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-23 19:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-23 19:24 [rpms/pypy3.11] f43: Update to 8.0.0 

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox