Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python313 for openSUSE:Factory checked in at 2024-09-22 11:05:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python313 (Old) and /work/SRC/openSUSE:Factory/.python313.new.29891 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python313" Sun Sep 22 11:05:57 2024 rev:8 rq:1202221 version:3.13.0~rc2 Changes: -------- --- /work/SRC/openSUSE:Factory/python313/python313.changes 2024-09-09 14:44:12.818134229 +0200 +++ /work/SRC/openSUSE:Factory/.python313.new.29891/python313.changes 2024-09-22 11:06:14.433148345 +0200 @@ -1,0 +2,9 @@ +Thu Sep 12 12:05:43 UTC 2024 - Daniel Garcia <daniel.gar...@suse.com> + +- Make it build for SLE SP7 (jsc#PED-10075): + - Add CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch to build in + SLE-15-SP7. + - Add fix-test-recursion-limit-15.6.patch, gh#python/cpython#115083 + - Add gh-124040-fix-test-math-i586.patch, gh#python/cpython#124042 + +------------------------------------------------------------------- New: ---- CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch fix-test-recursion-limit-15.6.patch gh-124040-fix-test-math-i586.patch BETA DEBUG BEGIN: New:- Make it build for SLE SP7 (jsc#PED-10075): - Add CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch to build in SLE-15-SP7. New: SLE-15-SP7. - Add fix-test-recursion-limit-15.6.patch, gh#python/cpython#115083 - Add gh-124040-fix-test-math-i586.patch, gh#python/cpython#124042 New: - Add fix-test-recursion-limit-15.6.patch, gh#python/cpython#115083 - Add gh-124040-fix-test-math-i586.patch, gh#python/cpython#124042 BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python313.spec ++++++ --- /var/tmp/diff_new_pack.IKqji8/_old 2024-09-22 11:06:15.393187998 +0200 +++ /var/tmp/diff_new_pack.IKqji8/_new 2024-09-22 11:06:15.397188163 +0200 @@ -60,13 +60,18 @@ %bcond_with profileopt %endif +# No experimental_jit in SLES, there's no clang >=18 +%if 0%{?suse_version} <= 1600 +%bcond_with experimental_jit +%else # Currently supported architectures # https://peps.python.org/pep-0744/#support -%ifarch %{x86_64} aarch64 +%ifarch x86_64 %{x86_64} aarch64 %bcond_without experimental_jit %else %bcond_with experimental_jit %endif +%endif %define python_pkg_name python313 %if %{without GIL} @@ -201,6 +206,16 @@ # PATCH-FIX-SLE skip-test_pyobject_freed_is_freed.patch mc...@suse.com # skip a test failing on SLE-15 Patch09: skip-test_pyobject_freed_is_freed.patch +# PATCH-FIX-OPENSUSE CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch +# This problem on libexpat is patched on 15.6 without version +# update, this patch changes the tests to match the libexpat provided +# by SUSE +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 gh-124040-fix-test-math-i586.patch gh#python/cpython#124042 +Patch41: gh-124040-fix-test-math-i586.patch BuildRequires: autoconf-archive BuildRequires: automake BuildRequires: fdupes @@ -228,15 +243,25 @@ BuildRequires: mpdecimal-devel %endif %if %{with doc} + +%if 0%{?sle_version} >= 150700 && !0%{?is_opensuse} +BuildRequires: python311-Sphinx +BuildRequires: python311-python-docs-theme +%else BuildRequires: python3-Sphinx >= 4.0.0 %if 0%{?suse_version} >= 1500 BuildRequires: python3-python-docs-theme >= 2022.1 %endif + %endif +%endif +# end of {with doc} +%if %{with experimental_jit} # needed for experimental_jit BuildRequires: clang => 18 BuildRequires: llvm => 18 +%endif %if %{without GIL} ExcludeArch: aarch64 @@ -506,6 +531,9 @@ # sed -i -e '/^SPHINXERRORHANDLING/s/-W//' Doc/Makefile %build +export SUSE_VERSION="0%{?suse_version}" +export SLE_VERSION="0%{?sle_version}" + %if %{with doc} TODAY_DATE=`date -r %{SOURCE0} "+%%B %%d, %%Y"` # TODO use not date of tarball but date of latest patch @@ -564,7 +592,6 @@ # Objects/typeslots.inc \ # Python/opcode_targets.h \ # Include/opcode.h -%make_build %if %{with general} %make_build @@ -581,6 +608,8 @@ %endif %check +export SUSE_VERSION="0%{?suse_version}" +export SLE_VERSION="0%{?sle_version}" %if %{with general} # exclude test_gdb -- it doesn't run in buildservice anyway, and fails on missing debuginfos # when you install gdb into your test env @@ -709,7 +738,6 @@ ) # keep just idle3.X -ls -l %{buildroot}%{_bindir}/ rm %{buildroot}%{_bindir}/idle3 # mve idle binary to idle3.13t to avoid conflict ++++++ CVE-2023-52425-libexpat-2.6.0-backport-15.6.patch ++++++ --- Lib/test/test_pyexpat.py | 4 ++++ Lib/test/test_sax.py | 3 +++ Lib/test/test_xml_etree.py | 10 ++++++++++ 3 files changed, 17 insertions(+) --- a/Lib/test/test_pyexpat.py +++ b/Lib/test/test_pyexpat.py @@ -794,6 +794,10 @@ class ReparseDeferralTest(unittest.TestC self.assertEqual(started, ['doc']) def test_reparse_deferral_disabled(self): + if expat.version_info < (2, 6, 0): + self.skipTest(f'Expat {expat.version_info} does not ' + 'support reparse deferral') + started = [] def start_element(name, _): --- a/Lib/test/test_sax.py +++ b/Lib/test/test_sax.py @@ -1240,6 +1240,9 @@ class ExpatReaderTest(XmlTestBase): self.assertEqual(result.getvalue(), start + b"<doc></doc>") + @unittest.skipIf(pyexpat.version_info < (2, 6, 0), + f'Expat {pyexpat.version_info} does not ' + 'support reparse deferral') def test_flush_reparse_deferral_disabled(self): result = BytesIO() xmlgen = XMLGenerator(result) --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -121,6 +121,11 @@ ATTLIST_XML = """\ </foo> """ +IS_SLE_15_7 = os.environ.get("SLE_VERSION", "") == "0150700" +fails_with_expat_2_6_0 = (unittest.expectedFailure + # 2.4 version patched in SLE + if IS_SLE_15_7 and pyexpat.version_info >= (2, 4, 0) else + lambda test: test) def checkwarnings(*filters, quiet=False): def decorator(test): def newtest(*args, **kwargs): @@ -1424,9 +1429,11 @@ class XMLPullParserTest(unittest.TestCas self.assert_event_tags(parser, [('end', 'root')]) self.assertIsNone(parser.close()) + @fails_with_expat_2_6_0 def test_simple_xml_chunk_1(self): self.test_simple_xml(chunk_size=1, flush=True) + @fails_with_expat_2_6_0 def test_simple_xml_chunk_5(self): self.test_simple_xml(chunk_size=5, flush=True) @@ -1651,6 +1658,9 @@ class XMLPullParserTest(unittest.TestCas self.assert_event_tags(parser, [('end', 'doc')]) + @unittest.skipIf(pyexpat.version_info < (2, 6, 0), + f'Expat {pyexpat.version_info} does not ' + 'support reparse deferral') def test_flush_reparse_deferral_disabled(self): parser = ET.XMLPullParser(events=('start', 'end')) ++++++ fix-test-recursion-limit-15.6.patch ++++++ --- Lib/test/test_compile.py | 5 +++++ 1 file changed, 5 insertions(+) Index: Python-3.13.0rc2/Lib/test/test_compile.py =================================================================== --- Python-3.13.0rc2.orig/Lib/test/test_compile.py +++ Python-3.13.0rc2/Lib/test/test_compile.py @@ -20,6 +20,9 @@ from test.support import (script_helper, from test.support.bytecode_helper import instructions_with_positions from test.support.os_helper import FakePath +IS_SLE_15_6 = os.environ.get("SLE_VERSION", "") == "0150700" +IS_32bit = hasattr(os, "uname") and os.uname().machine in ["i386", "i486", "i586", "i686"] + class TestSpecifics(unittest.TestCase): def compile_single(self, source): @@ -116,6 +119,7 @@ class TestSpecifics(unittest.TestCase): self.assertEqual(d['z'], 12) @unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI") + @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586") def test_extended_arg(self): repeat = int(get_c_recursion_limit() * 0.9) longexpr = 'x = x or ' + '-x' * repeat @@ -687,6 +691,7 @@ class TestSpecifics(unittest.TestCase): @support.cpython_only @unittest.skipIf(support.is_wasi, "exhausts limited stack on WASI") + @unittest.skipIf(IS_SLE_15_6 and IS_32bit, "fails on 15.6 i586") def test_compiler_recursion_limit(self): # Expected limit is Py_C_RECURSION_LIMIT limit = get_c_recursion_limit() ++++++ gh-124040-fix-test-math-i586.patch ++++++ >From a4b73ddc0d395ec2e4d2e15637be8e1b51f35f22 Mon Sep 17 00:00:00 2001 From: Sergey B Kirpichev <skirpic...@gmail.com> Date: Fri, 13 Sep 2024 13:10:39 +0300 Subject: [PATCH 1/4] gh-124040: simplify two hypot tests One-argument form is enough to test L2636 and compare computed values exactly. --- Lib/test/test_math.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: Python-3.13.0rc2/Lib/test/test_math.py =================================================================== --- Python-3.13.0rc2.orig/Lib/test/test_math.py +++ Python-3.13.0rc2/Lib/test/test_math.py @@ -809,11 +809,13 @@ class MathTests(unittest.TestCase): # Test allowable types (those with __float__) self.assertEqual(hypot(12.0, 5.0), 13.0) self.assertEqual(hypot(12, 5), 13) - self.assertEqual(hypot(1, -1), math.sqrt(2)) - self.assertEqual(hypot(1, FloatLike(-1.)), math.sqrt(2)) + self.assertEqual(hypot(0.75, -1), 1.25) + self.assertEqual(hypot(-1, 0.75), 1.25) + self.assertEqual(hypot(0.75, FloatLike(-1.)), 1.25) + self.assertEqual(hypot(FloatLike(-1.), 0.75), 1.25) self.assertEqual(hypot(Decimal(12), Decimal(5)), 13) self.assertEqual(hypot(Fraction(12, 32), Fraction(5, 32)), Fraction(13, 32)) - self.assertEqual(hypot(bool(1), bool(0), bool(1), bool(1)), math.sqrt(3)) + self.assertEqual(hypot(True, False, True, True, True), 2.0) # Test corner cases self.assertEqual(hypot(0.0, 0.0), 0.0) # Max input is zero @@ -969,9 +971,9 @@ class MathTests(unittest.TestCase): self.assertEqual(dist((D(14), D(1)), (D(2), D(-4))), D(13)) self.assertEqual(dist((F(14, 32), F(1, 32)), (F(2, 32), F(-4, 32))), F(13, 32)) - self.assertEqual(dist((True, True, False, True, False), - (True, False, True, True, False)), - sqrt(2.0)) + self.assertEqual(dist((True, True, False, False, True, True), + (True, False, True, False, False, False)), + 2.0) # Test corner cases self.assertEqual(dist((13.25, 12.5, -3.25),