Description of problem: Package python-ufo2ft fails to build from source in Fedora Rawhide. Due to reasons described in https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/XO5QGOXBWHFG7AOGDQBG23AQDS2MDTWI/ a rebuild of python-ufo2ft is needed in Fedora Rawhide (44) and Fedora 43. Version-Release number of selected component (if applicable): 3.6.0-1.fc43 Steps to Reproduce: fedpkg build Additional info: This package is tracked by Koschei. See: https://koschei.fedoraproject.org/package/python-ufo2ft =================================== FAILURES =================================== _______________ IntegrationTest.test_compileVariableTTFs[defcon] _______________ self = <tests.integration_test.IntegrationTest object at 0x3ffba03fb60> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x3ffbb3c7cb0> def test_compileVariableTTFs(self, designspace_v5): fonts = compileVariableTTFs(designspace_v5) # NOTE: Test dumps were generated like this: # for k, font in fonts.items(): # font.recalcTimestamp = False # font["head"].created, font["head"].modified = 3570196637, 3601822698 # font["head"].checkSumAdjustment = 0x12345678 # font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx") assert set(fonts.keys()) == { "MutatorSansVariable_Weight_Width", "MutatorSansVariable_Weight", "MutatorSansVariable_Width", "MutatorSerifVariable_Width", } # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2 > expectTTX( fonts["MutatorSansVariable_Weight_Width"], "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx", ) tests/integration_test.py:395: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ font = <fontTools.ttLib.ttFont.TTFont object at 0x3ffb99b4590> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None def expectTTX(font, expectedTTX, tables=None): with open(getpath(expectedTTX), encoding="utf-8") as f: expected = readLines(f) font.recalcTimestamp = False font["head"].created, font["head"].modified = 3570196637, 3601822698 font["head"].checkSumAdjustment = 0x12345678 f = io.StringIO() font.saveXML(f, tables=tables) actual = readLines(f) if actual != expected: for line in difflib.unified_diff( expected, actual, fromfile=expectedTTX, tofile="<generated>" ): sys.stderr.write(line) > pytest.fail("TTX output is different from expected") E Failed: TTX output is different from expected tests/integration_test.py:73: Failed ----------------------------- Captured stderr call ----------------------------- --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx +++ <generated> @@ -121,7 +121,7 @@ <sCapHeight value="700"/> <usDefaultChar value="0"/> <usBreakChar value="32"/> - <usMaxContext value="0"/> + <usMaxContext value="1"/> </OS_2> <hmtx> ______________ IntegrationTest.test_compileVariableCFF2s[defcon] _______________ self = <tests.integration_test.IntegrationTest object at 0x3ffba03fca0> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x3ffb999d630> def test_compileVariableCFF2s(self, designspace_v5): fonts = compileVariableCFF2s(designspace_v5) # NOTE: Test dumps were generated like this: # for k, font in fonts.items(): # font.recalcTimestamp = False # font["head"].created, font["head"].modified = 3570196637, 3601822698 # font["head"].checkSumAdjustment = 0x12345678 # font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx") assert set(fonts.keys()) == { "MutatorSansVariable_Weight_Width", "MutatorSansVariable_Weight", "MutatorSansVariable_Width", "MutatorSerifVariable_Width", } # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2 > expectTTX( fonts["MutatorSansVariable_Weight_Width"], "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx", ) tests/integration_test.py:432: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ font = <fontTools.ttLib.ttFont.TTFont object at 0x3ffb93c5b70> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None def expectTTX(font, expectedTTX, tables=None): with open(getpath(expectedTTX), encoding="utf-8") as f: expected = readLines(f) font.recalcTimestamp = False font["head"].created, font["head"].modified = 3570196637, 3601822698 font["head"].checkSumAdjustment = 0x12345678 f = io.StringIO() font.saveXML(f, tables=tables) actual = readLines(f) if actual != expected: for line in difflib.unified_diff( expected, actual, fromfile=expectedTTX, tofile="<generated>" ): sys.stderr.write(line) > pytest.fail("TTX output is different from expected") E Failed: TTX output is different from expected tests/integration_test.py:73: Failed ----------------------------- Captured stderr call ----------------------------- --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx +++ <generated> @@ -107,7 +107,7 @@ <sCapHeight value="700"/> <usDefaultChar value="0"/> <usBreakChar value="32"/> - <usMaxContext value="0"/> + <usMaxContext value="1"/> </OS_2> <hmtx> ______________ IntegrationTest.test_compileVariableTTFs[ufoLib2] _______________ self = <tests.integration_test.IntegrationTest object at 0x3ffba03fc00> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x3ffb9cf6350> def test_compileVariableTTFs(self, designspace_v5): fonts = compileVariableTTFs(designspace_v5) # NOTE: Test dumps were generated like this: # for k, font in fonts.items(): # font.recalcTimestamp = False # font["head"].created, font["head"].modified = 3570196637, 3601822698 # font["head"].checkSumAdjustment = 0x12345678 # font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx") assert set(fonts.keys()) == { "MutatorSansVariable_Weight_Width", "MutatorSansVariable_Weight", "MutatorSansVariable_Width", "MutatorSerifVariable_Width", } # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2 > expectTTX( fonts["MutatorSansVariable_Weight_Width"], "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx", ) tests/integration_test.py:395: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ font = <fontTools.ttLib.ttFont.TTFont object at 0x3ffb9a4a350> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None def expectTTX(font, expectedTTX, tables=None): with open(getpath(expectedTTX), encoding="utf-8") as f: expected = readLines(f) font.recalcTimestamp = False font["head"].created, font["head"].modified = 3570196637, 3601822698 font["head"].checkSumAdjustment = 0x12345678 f = io.StringIO() font.saveXML(f, tables=tables) actual = readLines(f) if actual != expected: for line in difflib.unified_diff( expected, actual, fromfile=expectedTTX, tofile="<generated>" ): sys.stderr.write(line) > pytest.fail("TTX output is different from expected") E Failed: TTX output is different from expected tests/integration_test.py:73: Failed ----------------------------- Captured stderr call ----------------------------- --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx +++ <generated> @@ -121,7 +121,7 @@ <sCapHeight value="700"/> <usDefaultChar value="0"/> <usBreakChar value="32"/> - <usMaxContext value="0"/> + <usMaxContext value="1"/> </OS_2> <hmtx> ______________ IntegrationTest.test_compileVariableCFF2s[ufoLib2] ______________ self = <tests.integration_test.IntegrationTest object at 0x3ffba03fd40> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x3ffba198d70> def test_compileVariableCFF2s(self, designspace_v5): fonts = compileVariableCFF2s(designspace_v5) # NOTE: Test dumps were generated like this: # for k, font in fonts.items(): # font.recalcTimestamp = False # font["head"].created, font["head"].modified = 3570196637, 3601822698 # font["head"].checkSumAdjustment = 0x12345678 # font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx") assert set(fonts.keys()) == { "MutatorSansVariable_Weight_Width", "MutatorSansVariable_Weight", "MutatorSansVariable_Width", "MutatorSerifVariable_Width", } # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2 > expectTTX( fonts["MutatorSansVariable_Weight_Width"], "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx", ) tests/integration_test.py:432: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ font = <fontTools.ttLib.ttFont.TTFont object at 0x3ffb97c5fd0> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None def expectTTX(font, expectedTTX, tables=None): with open(getpath(expectedTTX), encoding="utf-8") as f: expected = readLines(f) font.recalcTimestamp = False font["head"].created, font["head"].modified = 3570196637, 3601822698 font["head"].checkSumAdjustment = 0x12345678 f = io.StringIO() font.saveXML(f, tables=tables) actual = readLines(f) if actual != expected: for line in difflib.unified_diff( expected, actual, fromfile=expectedTTX, tofile="<generated>" ): sys.stderr.write(line) > pytest.fail("TTX output is different from expected") E Failed: TTX output is different from expected tests/integration_test.py:73: Failed ----------------------------- Captured stderr call ----------------------------- --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx +++ <generated> @@ -107,7 +107,7 @@ <sCapHeight value="700"/> <usDefaultChar value="0"/> <usBreakChar value="32"/> - <usMaxContext value="0"/> + <usMaxContext value="1"/> </OS_2> <hmtx> =============================== warnings summary =============================== tests/filters/dottedCircle_test.py::test_empty_font_deprecated[defcon] /builddir/build/BUILD/python-ufo2ft-3.6.0-build/BUILDROOT/usr/lib/python3.14/site-packages/ufo2ft/filters/dottedCircleFilter.py:8: UserWarning: The dottedCircleFilter module is deprecated, please import dottedCircle instead. warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html --------------------------- snapshot report summary ---------------------------- 40 snapshots passed. =========================== short test summary info ============================ FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[defcon] FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[defcon] FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[ufoLib2] FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[ufoLib2]