diff --git a/bsc1243155-sphinx-non-determinism.patch b/bsc1243155-sphinx-non-determinism.patch new file mode 100644 index 0000000..6dc78a0 --- /dev/null +++ b/bsc1243155-sphinx-non-determinism.patch @@ -0,0 +1,45 @@ +From 906a590df191f66f4f0c4a70e3edb6fd82c156ef Mon Sep 17 00:00:00 2001 +From: Daniel Garcia Moreno +Date: Tue, 1 Jul 2025 12:13:28 +0200 +Subject: [PATCH] Doc: Generate ids for audit_events using docname + +This patch generates ids for audit_events using the docname so the id is +not global but depend on the source file. This make the doc build +reproducible with multiple cores because it doesn't which file is parsed +first, the id for audit_events will always be consistent independently +of what file is parsed first. + +https://github.com/python/cpython/issues/130979 +--- + Doc/tools/extensions/audit_events.py | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +Index: Python-3.14.0b3/Doc/tools/extensions/audit_events.py +=================================================================== +--- Python-3.14.0b3.orig/Doc/tools/extensions/audit_events.py 2025-06-17 17:40:54.000000000 +0200 ++++ Python-3.14.0b3/Doc/tools/extensions/audit_events.py 2025-07-02 15:06:57.802539821 +0200 +@@ -68,8 +68,13 @@ + logger.warning(msg) + return + +- def id_for(self, name) -> str: +- source_count = len(self.sources.get(name, set())) ++ def _source_count(self, name, docname) -> int: ++ """Count the event name in the same source""" ++ sources = self.sources.get(name, set()) ++ return len([s for s, t in sources if s == docname]) ++ ++ def id_for(self, name, docname) -> str: ++ source_count = self._source_count(name, docname) + name_clean = re.sub(r"\W", "_", name) + return f"audit_event_{name_clean}_{source_count}" + +@@ -142,7 +147,7 @@ + except (IndexError, TypeError): + target = None + if not target: +- target = self.env.audit_events.id_for(name) ++ target = self.env.audit_events.id_for(name, self.env.docname) + ids.append(target) + self.env.audit_events.add_event(name, args, (self.env.docname, target)) + diff --git a/python314.changes b/python314.changes index b6a555a..6fb4f13 100644 --- a/python314.changes +++ b/python314.changes @@ -1,3 +1,17 @@ +------------------------------------------------------------------- +Wed Jul 2 13:14:28 UTC 2025 - Matej Cepl + +- Add bsc1243155-sphinx-non-determinism.patch (bsc#1243155) to + generate ids for audit_events using docname (reproducible + builds). + +------------------------------------------------------------------- +Tue Jul 1 08:24:53 UTC 2025 - Daniel Garcia + +- Use one core to build doc. This will make sphinx doc build + reproducible. + bsc#1243155 + ------------------------------------------------------------------- Sat Jun 21 22:30:08 UTC 2025 - Matej Cepl diff --git a/python314.spec b/python314.spec index 406a793..5bfe7de 100644 --- a/python314.spec +++ b/python314.spec @@ -219,6 +219,9 @@ Patch39: CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch # PATCH-FIX-OPENSUSE fix-test-recursion-limit-15.6.patch gh#python/cpython#115083 # Skip some failing tests in test_compile for i586 arch in 15.6. Patch40: fix-test-recursion-limit-15.6.patch +# PATCH-FIX-UPSTREAM bsc1243155-sphinx-non-determinism.patch bsc#1243155 mcepl@suse.com +# Doc: Generate ids for audit_events using docname +Patch41: bsc1243155-sphinx-non-determinism.patch #### Python 3.14 DEVELOPMENT PATCHES BuildRequires: autoconf-archive BuildRequires: automake @@ -550,7 +553,7 @@ TODAY_DATE=`date -r %{SOURCE0} "+%%B %%d, %%Y"` cd Doc sed -i "s/^today = .*/today = '$TODAY_DATE'/" conf.py -%make_build -j1 html +%make_build -j1 JOBS=1 html # Build also devhelp files sphinx-build -a -b devhelp . build/devhelp