diff --git a/old-libexpat.patch b/old-libexpat.patch new file mode 100644 index 0000000..c5f0340 --- /dev/null +++ b/old-libexpat.patch @@ -0,0 +1,79 @@ +--- + Lib/test/test_sax.py | 10 +++++----- + Lib/test/test_xml_etree.py | 17 ++++++++--------- + 2 files changed, 13 insertions(+), 14 deletions(-) + +--- a/Lib/test/test_sax.py ++++ b/Lib/test/test_sax.py +@@ -1207,10 +1207,9 @@ class ExpatReaderTest(XmlTestBase): + + self.assertEqual(result.getvalue(), start + b"text") + ++ @unittest.skipIf(pyexpat.version_info < (2, 6, 0), ++ "Reparse deferral not defined for libexpat < 2.6.0") + def test_flush_reparse_deferral_enabled(self): +- if pyexpat.version_info < (2, 6, 0): +- self.skipTest(f'Expat {pyexpat.version_info} does not support reparse deferral') +- + result = BytesIO() + xmlgen = XMLGenerator(result) + parser = create_parser() +@@ -1232,6 +1231,8 @@ class ExpatReaderTest(XmlTestBase): + + self.assertEqual(result.getvalue(), start + b"") + ++ @unittest.skipIf(pyexpat.version_info < (2, 6, 0), ++ "Reparse deferral not defined for libexpat < 2.6.0") + def test_flush_reparse_deferral_disabled(self): + result = BytesIO() + xmlgen = XMLGenerator(result) +@@ -1241,8 +1242,7 @@ class ExpatReaderTest(XmlTestBase): + for chunk in (""): + parser.feed(chunk) + +- if pyexpat.version_info >= (2, 6, 0): +- parser._parser.SetReparseDeferralEnabled(False) ++ parser._parser.SetReparseDeferralEnabled(False) + + self.assertEqual(result.getvalue(), start) # i.e. no elements started + self.assertFalse(parser._parser.GetReparseDeferralEnabled()) +--- a/Lib/test/test_xml_etree.py ++++ b/Lib/test/test_xml_etree.py +@@ -1494,11 +1494,9 @@ class XMLPullParserTest(unittest.TestCas + with self.assertRaises(ValueError): + ET.XMLPullParser(events=('start', 'end', 'bogus')) + ++ @unittest.skipIf(pyexpat.version_info < (2, 6, 0), ++ "Reparse deferral not defined for libexpat < 2.6.0") + def test_flush_reparse_deferral_enabled(self): +- if pyexpat.version_info < (2, 6, 0): +- self.skipTest(f'Expat {pyexpat.version_info} does not ' +- 'support reparse deferral') +- + parser = ET.XMLPullParser(events=('start', 'end')) + + for chunk in (""): +@@ -1519,17 +1517,18 @@ class XMLPullParserTest(unittest.TestCas + + self.assert_event_tags(parser, [('end', 'doc')]) + ++ @unittest.skipIf(pyexpat.version_info < (2, 6, 0), ++ "Reparse deferral not defined for libexpat < 2.6.0") + def test_flush_reparse_deferral_disabled(self): + parser = ET.XMLPullParser(events=('start', 'end')) + + for chunk in (""): + parser.feed(chunk) + +- if pyexpat.version_info >= (2, 6, 0): +- if not ET is pyET: +- self.skipTest(f'XMLParser.(Get|Set)ReparseDeferralEnabled ' +- 'methods not available in C') +- parser._parser._parser.SetReparseDeferralEnabled(False) ++ if not ET is pyET: ++ self.skipTest(f'XMLParser.(Get|Set)ReparseDeferralEnabled ' ++ 'methods not available in C') ++ parser._parser._parser.SetReparseDeferralEnabled(False) + + self.assert_event_tags(parser, []) # i.e. no elements started + if ET is pyET: diff --git a/python38.changes b/python38.changes index 44e238b..002313d 100644 --- a/python38.changes +++ b/python38.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Sun Mar 24 00:43:14 UTC 2024 - Matej Cepl + +- Add old-libexpat.patch making the test suite work with + libexpat < 2.6.0 (gh#python/cpython#117187). + ------------------------------------------------------------------- Thu Mar 21 20:29:12 UTC 2024 - Matej Cepl diff --git a/python38.spec b/python38.spec index 061a1d0..9b98207 100644 --- a/python38.spec +++ b/python38.spec @@ -183,6 +183,9 @@ Patch41: 99366-patch.dict-can-decorate-async.patch # Detect email address parsing errors and return empty tuple to # indicate the parsing error (old API), from gh#python/cpython!105127 Patch42: CVE-2023-27043-email-parsing-errors.patch +# PATCH-FIX-UPSTREAM old-libexpat.patch gh#python/cpython#117187 mcepl@suse.com +# Make the test suite work with libexpat < 2.6.0 +Patch43: old-libexpat.patch BuildRequires: autoconf-archive BuildRequires: automake BuildRequires: fdupes @@ -455,6 +458,7 @@ other applications. %patch -P 38 -p1 %patch -P 41 -p1 %patch -P 42 -p1 +%patch -P 43 -p1 # drop Autoconf version requirement sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac