[Rpm-maint] [rpm-software-management/rpm] Isolate module state to enable running in multiple subinterpreters (PR #3808)
Karolina Surma
notifications at github.com
Thu Jun 12 16:32:24 UTC 2025
The request to enable running rpm in multiple subinterpreters was raised in: https://bugzilla.redhat.com/show_bug.cgi?id=2327289
This PR bumps the minimum Python version to 3.10 -- hopefully not too new (Python 3.9 will be soon EOL).
We aimed to keep individual changes separated, it's best to review by commits.
You can view, comment on, or merge this pull request online at:
https://github.com/rpm-software-management/rpm/pull/3808
-- Commit Summary --
* Switch the Python wrapper to multi-phase initialization
* Python module isolation: Remove statically stored types
* Python module isolation: Remove static pointer to pyrpmError
* Python module isolation: Rewrite usage of moved objects
* Define and initialize the modstate struct
* Update comments
* Python module isolation: Add GC callbacks for the modstate struct
* Python module isolation: Add runtime Python version
* Python module isolation: Convert to GC objects
* python rpmfile: Use the type allocation function
* Python: Remove `md_dict` from all rpmfoo_Type's
* Python module isolation: Visit PyObject* members in tp_visit hooks
* Fix error return value
* Python module isolation: Use module state
* Add modstate declaration to individual files, making a TODO list
* Bump minimum Python version to 3.10
* Python module isolation: Associate the module with the types
* Python module isolation: Add accessors for the module state
* Python module isolation: Get the state in header-py.c
* Python module isolation: Remove TODO where it's not needed
* Python module isolation: Get the state in rpmds-py.c
* Python module isolation: Get the state in rpmfd-py.c & rpmfiles-py.c
* Python module isolation: Get the state in rpmkeyring-py.c
* Python module isolation: Get the state in rpmmacro-py.c
* Python module isolation: Get the state in rpmps-py.c
* Python module isolation: Get the state in rpmstrpool-py.c
* Python module isolation: Get the state in rpmte-py.c
* Python module isolation: Get the state in rpmts-py.c
* Python module isolation: Get the state in rpmver-py.c
* Python module isolation: Get the state in spec-py.c
* Remove unused Check macros
* Python module isolation: Remove global state.
-- File Changes --
M CMakeLists.txt (2)
M INSTALL (2)
M python/CMakeLists.txt (2)
M python/header-py.c (86)
M python/header-py.h (13)
M python/rpmarchive-py.c (50)
M python/rpmarchive-py.h (4)
M python/rpmds-py.c (71)
M python/rpmds-py.h (4)
M python/rpmfd-py.c (25)
M python/rpmfd-py.h (13)
M python/rpmfiles-py.c (83)
M python/rpmfiles-py.h (24)
M python/rpmii-py.c (20)
M python/rpmii-py.h (4)
M python/rpmkeyring-py.c (48)
M python/rpmkeyring-py.h (5)
M python/rpmmacro-py.c (8)
M python/rpmmi-py.c (26)
M python/rpmmi-py.h (4)
M python/rpmmodule.c (270)
M python/rpmps-py.c (23)
M python/rpmps-py.h (6)
M python/rpmstrpool-py.c (23)
M python/rpmstrpool-py.h (4)
M python/rpmsystem-py.h (32)
M python/rpmte-py.c (38)
M python/rpmte-py.h (4)
M python/rpmts-py.c (94)
M python/rpmts-py.h (11)
M python/rpmver-py.c (21)
M python/rpmver-py.h (11)
M python/spec-py.c (58)
M python/spec-py.h (6)
-- Patch Links --
https://github.com/rpm-software-management/rpm/pull/3808.patch
https://github.com/rpm-software-management/rpm/pull/3808.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/3808
You are receiving this because you are subscribed to this thread.
Message ID: <rpm-software-management/rpm/pull/3808 at github.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-maint/attachments/20250612/5c848ca6/attachment-0001.htm>
More information about the Rpm-maint
mailing list