Public bug reported: fonttools 4.34.4-1 causes an autopkgtest regression in glyphslib, see log excerpt below and the linked Debian bug.
=================================== FAILURES =================================== _________ test_designspace_generation_regular_same_family_name[defcon] _________ tmpdir = local('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_re0') ufo_module = <module 'defcon' from '/usr/lib/python3/dist-packages/defcon/__init__.py'> def test_designspace_generation_regular_same_family_name(tmpdir, ufo_module): ufo_Lt = ufo_module.Font() ufo_Lt.info.familyName = "CoolFoundry Examplary Serif" ufo_Lt.info.styleName = "Light" ufo_Lt.info.openTypeOS2WeightClass = 300 ufo_Rg = ufo_module.Font() ufo_Rg.info.familyName = "CoolFoundry Examplary Serif" ufo_Rg.info.styleName = "Regular" ufo_Rg.info.openTypeOS2WeightClass = 400 ufo_Md = ufo_module.Font() ufo_Md.info.familyName = "CoolFoundry Examplary Serif" ufo_Md.info.styleName = "Medium" ufo_Md.info.openTypeOS2WeightClass = 500 ufo_Bd = ufo_module.Font() ufo_Bd.info.familyName = "CoolFoundry Examplary Serif" ufo_Bd.info.styleName = "Bold" ufo_Bd.info.openTypeOS2WeightClass = 700 ufo_ExBd = ufo_module.Font() ufo_ExBd.info.familyName = "CoolFoundry Examplary Serif" ufo_ExBd.info.styleName = "XBold" ufo_ExBd.info.openTypeOS2WeightClass = 800 font = to_glyphs([ufo_Lt, ufo_Rg, ufo_Md, ufo_Bd, ufo_ExBd]) designspace = to_designspace(font, ufo_module=ufo_module) path = os.path.join(str(tmpdir), "actual.designspace") designspace.write(path) expected_path = os.path.join( os.path.dirname(__file__), "..", "data", "DesignspaceGenTestRegular.designspace" ) > assert ( len(main.diff_files(path, expected_path, formatter=formatting.DiffFormatter())) == 0 ) E assert 50 == 0 E + where 50 = len('[update-attribute, /designspace[1], format, "4.1"]') E + where '[update-attribute, /designspace[1], format, "4.1"]' = <function diff_files at 0x7f6f7dccf640>('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_re0/actual.designspace', '/tmp/autopkgtest.jwpGVo/build.fFi/src/tests/builder/../data/DesignspaceGenTestRegular.designspace', formatter=<xmldiff.formatting.DiffFormatter object at 0x7f6f7d78cf10>) E + where <function diff_files at 0x7f6f7dccf640> = main.diff_files E + and <xmldiff.formatting.DiffFormatter object at 0x7f6f7d78cf10> = <class 'xmldiff.formatting.DiffFormatter'>() E + where <class 'xmldiff.formatting.DiffFormatter'> = formatting.DiffFormatter tests/builder/designspace_gen_test.py:69: AssertionError _________ test_designspace_generation_italic_same_family_name[defcon] __________ tmpdir = local('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_it0') ufo_module = <module 'defcon' from '/usr/lib/python3/dist-packages/defcon/__init__.py'> def test_designspace_generation_italic_same_family_name(tmpdir, ufo_module): ufo_Lt = ufo_module.Font() ufo_Lt.info.familyName = "CoolFoundry Examplary Serif" ufo_Lt.info.styleName = "Light Italic" ufo_Lt.info.openTypeOS2WeightClass = 300 ufo_Lt.info.italicAngle = -11 ufo_Rg = ufo_module.Font() ufo_Rg.info.familyName = "CoolFoundry Examplary Serif" ufo_Rg.info.styleName = "Regular Italic" ufo_Rg.info.openTypeOS2WeightClass = 400 ufo_Rg.info.italicAngle = -11 ufo_Md = ufo_module.Font() ufo_Md.info.familyName = "CoolFoundry Examplary Serif" ufo_Md.info.styleName = "Medium Italic" ufo_Md.info.openTypeOS2WeightClass = 500 ufo_Md.info.italicAngle = -11 ufo_Bd = ufo_module.Font() ufo_Bd.info.familyName = "CoolFoundry Examplary Serif" ufo_Bd.info.styleName = "Bold Italic" ufo_Bd.info.openTypeOS2WeightClass = 700 ufo_Bd.info.italicAngle = -11 ufo_ExBd = ufo_module.Font() ufo_ExBd.info.familyName = "CoolFoundry Examplary Serif" ufo_ExBd.info.styleName = "XBold Italic" ufo_ExBd.info.openTypeOS2WeightClass = 800 ufo_ExBd.info.italicAngle = -11 font = to_glyphs([ufo_Lt, ufo_Rg, ufo_Md, ufo_Bd, ufo_ExBd]) designspace = to_designspace(font, ufo_module=ufo_module) path = os.path.join(str(tmpdir), "actual.designspace") designspace.write(path) expected_path = os.path.join( os.path.dirname(__file__), "..", "data", "DesignspaceGenTestItalic.designspace" ) > assert ( len(main.diff_files(path, expected_path, formatter=formatting.DiffFormatter())) == 0 ) E assert 50 == 0 E + where 50 = len('[update-attribute, /designspace[1], format, "4.1"]') E + where '[update-attribute, /designspace[1], format, "4.1"]' = <function diff_files at 0x7f6f7dccf640>('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_it0/actual.designspace', '/tmp/autopkgtest.jwpGVo/build.fFi/src/tests/builder/../data/DesignspaceGenTestItalic.designspace', formatter=<xmldiff.formatting.DiffFormatter object at 0x7f6f7d35c910>) E + where <function diff_files at 0x7f6f7dccf640> = main.diff_files E + and <xmldiff.formatting.DiffFormatter object at 0x7f6f7d35c910> = <class 'xmldiff.formatting.DiffFormatter'>() E + where <class 'xmldiff.formatting.DiffFormatter'> = formatting.DiffFormatter tests/builder/designspace_gen_test.py:116: AssertionError ________ test_designspace_generation_regular_same_family_name[ufoLib2] _________ tmpdir = local('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_re2') ufo_module = <module 'ufoLib2' from '/usr/lib/python3/dist-packages/ufoLib2/__init__.py'> def test_designspace_generation_regular_same_family_name(tmpdir, ufo_module): ufo_Lt = ufo_module.Font() ufo_Lt.info.familyName = "CoolFoundry Examplary Serif" ufo_Lt.info.styleName = "Light" ufo_Lt.info.openTypeOS2WeightClass = 300 ufo_Rg = ufo_module.Font() ufo_Rg.info.familyName = "CoolFoundry Examplary Serif" ufo_Rg.info.styleName = "Regular" ufo_Rg.info.openTypeOS2WeightClass = 400 ufo_Md = ufo_module.Font() ufo_Md.info.familyName = "CoolFoundry Examplary Serif" ufo_Md.info.styleName = "Medium" ufo_Md.info.openTypeOS2WeightClass = 500 ufo_Bd = ufo_module.Font() ufo_Bd.info.familyName = "CoolFoundry Examplary Serif" ufo_Bd.info.styleName = "Bold" ufo_Bd.info.openTypeOS2WeightClass = 700 ufo_ExBd = ufo_module.Font() ufo_ExBd.info.familyName = "CoolFoundry Examplary Serif" ufo_ExBd.info.styleName = "XBold" ufo_ExBd.info.openTypeOS2WeightClass = 800 font = to_glyphs([ufo_Lt, ufo_Rg, ufo_Md, ufo_Bd, ufo_ExBd]) designspace = to_designspace(font, ufo_module=ufo_module) path = os.path.join(str(tmpdir), "actual.designspace") designspace.write(path) expected_path = os.path.join( os.path.dirname(__file__), "..", "data", "DesignspaceGenTestRegular.designspace" ) > assert ( len(main.diff_files(path, expected_path, formatter=formatting.DiffFormatter())) == 0 ) E assert 50 == 0 E + where 50 = len('[update-attribute, /designspace[1], format, "4.1"]') E + where '[update-attribute, /designspace[1], format, "4.1"]' = <function diff_files at 0x7f6f7dccf640>('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_re2/actual.designspace', '/tmp/autopkgtest.jwpGVo/build.fFi/src/tests/builder/../data/DesignspaceGenTestRegular.designspace', formatter=<xmldiff.formatting.DiffFormatter object at 0x7f6f7dd523e0>) E + where <function diff_files at 0x7f6f7dccf640> = main.diff_files E + and <xmldiff.formatting.DiffFormatter object at 0x7f6f7dd523e0> = <class 'xmldiff.formatting.DiffFormatter'>() E + where <class 'xmldiff.formatting.DiffFormatter'> = formatting.DiffFormatter tests/builder/designspace_gen_test.py:69: AssertionError _________ test_designspace_generation_italic_same_family_name[ufoLib2] _________ tmpdir = local('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_it1') ufo_module = <module 'ufoLib2' from '/usr/lib/python3/dist-packages/ufoLib2/__init__.py'> def test_designspace_generation_italic_same_family_name(tmpdir, ufo_module): ufo_Lt = ufo_module.Font() ufo_Lt.info.familyName = "CoolFoundry Examplary Serif" ufo_Lt.info.styleName = "Light Italic" ufo_Lt.info.openTypeOS2WeightClass = 300 ufo_Lt.info.italicAngle = -11 ufo_Rg = ufo_module.Font() ufo_Rg.info.familyName = "CoolFoundry Examplary Serif" ufo_Rg.info.styleName = "Regular Italic" ufo_Rg.info.openTypeOS2WeightClass = 400 ufo_Rg.info.italicAngle = -11 ufo_Md = ufo_module.Font() ufo_Md.info.familyName = "CoolFoundry Examplary Serif" ufo_Md.info.styleName = "Medium Italic" ufo_Md.info.openTypeOS2WeightClass = 500 ufo_Md.info.italicAngle = -11 ufo_Bd = ufo_module.Font() ufo_Bd.info.familyName = "CoolFoundry Examplary Serif" ufo_Bd.info.styleName = "Bold Italic" ufo_Bd.info.openTypeOS2WeightClass = 700 ufo_Bd.info.italicAngle = -11 ufo_ExBd = ufo_module.Font() ufo_ExBd.info.familyName = "CoolFoundry Examplary Serif" ufo_ExBd.info.styleName = "XBold Italic" ufo_ExBd.info.openTypeOS2WeightClass = 800 ufo_ExBd.info.italicAngle = -11 font = to_glyphs([ufo_Lt, ufo_Rg, ufo_Md, ufo_Bd, ufo_ExBd]) designspace = to_designspace(font, ufo_module=ufo_module) path = os.path.join(str(tmpdir), "actual.designspace") designspace.write(path) expected_path = os.path.join( os.path.dirname(__file__), "..", "data", "DesignspaceGenTestItalic.designspace" ) > assert ( len(main.diff_files(path, expected_path, formatter=formatting.DiffFormatter())) == 0 ) E assert 50 == 0 E + where 50 = len('[update-attribute, /designspace[1], format, "4.1"]') E + where '[update-attribute, /designspace[1], format, "4.1"]' = <function diff_files at 0x7f6f7dccf640>('/tmp/pytest-of-ubuntu/pytest-0/test_designspace_generation_it1/actual.designspace', '/tmp/autopkgtest.jwpGVo/build.fFi/src/tests/builder/../data/DesignspaceGenTestItalic.designspace', formatter=<xmldiff.formatting.DiffFormatter object at 0x7f6f7df70d00>) E + where <function diff_files at 0x7f6f7dccf640> = main.diff_files E + and <xmldiff.formatting.DiffFormatter object at 0x7f6f7df70d00> = <class 'xmldiff.formatting.DiffFormatter'>() E + where <class 'xmldiff.formatting.DiffFormatter'> = formatting.DiffFormatter tests/builder/designspace_gen_test.py:116: AssertionError __________________________ DesignspaceTest.test_basic __________________________ self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_basic> def test_basic(self): masters, instances = makeFamily() font = makeFont(masters, instances, "DesignspaceTest Basic") doc = to_designspace(font, instance_dir="out") > self.expect_designspace(doc, "DesignspaceTestBasic.designspace") tests/builder/interpolation_test.py:179: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/builder/interpolation_test.py:155: in expect_designspace return self._expect_designspace(doc, expected_path) tests/builder/interpolation_test.py:167: in _expect_designspace self.fail("*.designspace file is different from expected") E AssertionError: *.designspace file is different from expected ----------------------------- Captured stderr call ----------------------------- DesignspaceTestBasic.designspace discrepancies (per xmldiff): [update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2] [insert, /designspace/instances/instance[3], kerning, 1] [insert, /designspace/instances/instance[3], info, 2] [insert, /designspace/instances/instance[4], kerning, 1] [insert, /designspace/instances/instance[4], info, 2] _______________________ DesignspaceTest.test_familyName ________________________ self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_familyName> def test_familyName(self): masters, _ = makeFamily() customFamily = makeInstance("Regular", weight=("Bold", 600, 151)) customFamily.customParameters["familyName"] = "Custom Family" instances = [makeInstance("Regular", weight=("Regular", 400, 90)), customFamily] font = makeFont(masters, instances, "DesignspaceTest FamilyName") doc = to_designspace(font, instance_dir="out") > self.expect_designspace(doc, "DesignspaceTestFamilyName.designspace") tests/builder/interpolation_test.py:206: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/builder/interpolation_test.py:155: in expect_designspace return self._expect_designspace(doc, expected_path) tests/builder/interpolation_test.py:167: in _expect_designspace self.fail("*.designspace file is different from expected") E AssertionError: *.designspace file is different from expected ----------------------------- Captured stderr call ----------------------------- DesignspaceTestFamilyName.designspace discrepancies (per xmldiff): [update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2] ________________________ DesignspaceTest.test_fileName _________________________ self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_fileName> def test_fileName(self): masters, _ = makeFamily() customFileName = makeInstance("Regular", weight=("Bold", 600, 151)) customFileName.customParameters["fileName"] = "Custom FileName" instances = [ makeInstance("Regular", weight=("Regular", 400, 90)), customFileName, ] font = makeFont(masters, instances, "DesignspaceTest FamilyName") doc = to_designspace(font, instance_dir="out") > self.expect_designspace(doc, "DesignspaceTestFileName.designspace") tests/builder/interpolation_test.py:219: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/builder/interpolation_test.py:155: in expect_designspace return self._expect_designspace(doc, expected_path) tests/builder/interpolation_test.py:167: in _expect_designspace self.fail("*.designspace file is different from expected") E AssertionError: *.designspace file is different from expected ----------------------------- Captured stderr call ----------------------------- DesignspaceTestFileName.designspace discrepancies (per xmldiff): [update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2] __________________ DesignspaceTest.test_inactive_from_exports __________________ self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_inactive_from_exports> def test_inactive_from_exports(self): # Glyphs.app recognizes exports=0 as a flag for inactive instances. # https://github.com/googlefonts/glyphsLib/issues/129 masters, instances = makeFamily() for inst in instances: if inst.name != "Semibold": inst.exports = False font = makeFont(masters, instances, "DesignspaceTest Inactive") doc = to_designspace(font, instance_dir="out") > self.expect_designspace(doc, "DesignspaceTestInactive.designspace") tests/builder/interpolation_test.py:191: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/builder/interpolation_test.py:155: in expect_designspace return self._expect_designspace(doc, expected_path) tests/builder/interpolation_test.py:167: in _expect_designspace self.fail("*.designspace file is different from expected") E AssertionError: *.designspace file is different from expected ----------------------------- Captured stderr call ----------------------------- DesignspaceTestInactive.designspace discrepancies (per xmldiff): [update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] ______________________ DesignspaceTest.test_instanceOrder ______________________ self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_instanceOrder> def test_instanceOrder(self): # The generated *.designspace file should place instances # in the same order as they appear in the original source. # https://github.com/googlefonts/glyphsLib/issues/113 masters, _ = makeFamily() instances = [ makeInstance("Black", weight=("Black", 900, 190)), makeInstance("Regular", weight=("Regular", 400, 90)), makeInstance("Bold", weight=("Bold", 700, 151), is_bold=True), ] font = makeFont(masters, instances, "DesignspaceTest InstanceOrder") doc = to_designspace(font, instance_dir="out") > self.expect_designspace(doc, "DesignspaceTestInstanceOrder.designspace") tests/builder/interpolation_test.py:274: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/builder/interpolation_test.py:155: in expect_designspace return self._expect_designspace(doc, expected_path) tests/builder/interpolation_test.py:167: in _expect_designspace self.fail("*.designspace file is different from expected") E AssertionError: *.designspace file is different from expected ----------------------------- Captured stderr call ----------------------------- DesignspaceTestInstanceOrder.designspace discrepancies (per xmldiff): [update-attribute, /designspace[1], format, "4.1"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2] [insert, /designspace/instances/instance[3], kerning, 1] [insert, /designspace/instances/instance[3], info, 2] _________________________ DesignspaceTest.test_twoAxes _________________________ self = <tests.builder.interpolation_test.DesignspaceTest testMethod=test_twoAxes> def test_twoAxes(self): # In NotoSansArabic-MM.glyphs, the regular width only contains # parameters for the weight axis. For the width axis, glyphsLib # should use 100 as default value (just like Glyphs.app does). familyName = "DesignspaceTest TwoAxes" masters = [ makeMaster("Regular", weight=90), makeMaster("Black", weight=190), makeMaster("Thin", weight=26), makeMaster("ExtraCond", weight=90, width=70), makeMaster("ExtraCond Black", weight=190, width=70), makeMaster("ExtraCond Thin", weight=26, width=70), ] instances = [ makeInstance("Thin", weight=("Thin", 100, 26)), makeInstance("Regular", weight=("Regular", 400, 90)), makeInstance("Semibold", weight=("SemiBold", 600, 128)), makeInstance("Black", weight=("Black", 900, 190)), makeInstance( "ExtraCondensed Thin", weight=("Thin", 100, 26), width=("Extra Condensed", 2, 70), ), makeInstance( "ExtraCondensed", weight=("Regular", 400, 90), width=("Extra Condensed", 2, 70), ), makeInstance( "ExtraCondensed Black", weight=("Black", 900, 190), width=("Extra Condensed", 2, 70), ), ] font = makeFont(masters, instances, familyName) doc = to_designspace(font, instance_dir="out") > self.expect_designspace(doc, "DesignspaceTestTwoAxes.designspace") tests/builder/interpolation_test.py:313: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/builder/interpolation_test.py:155: in expect_designspace return self._expect_designspace(doc, expected_path) tests/builder/interpolation_test.py:167: in _expect_designspace self.fail("*.designspace file is different from expected") E AssertionError: *.designspace file is different from expected ----------------------------- Captured stderr call ----------------------------- DesignspaceTestTwoAxes.designspace discrepancies (per xmldiff): [update-attribute, /designspace[1], format, "4.1"] [update-attribute, /designspace/axes/axis[2], minimum, "62.500000"] [update-attribute, /designspace/axes/axis[2]/map[1], input, "62.500000"] [insert, /designspace/instances/instance[1], kerning, 1] [insert, /designspace/instances/instance[1], info, 2] [insert, /designspace/instances/instance[2], kerning, 1] [insert, /designspace/instances/instance[2], info, 2] [insert, /designspace/instances/instance[3], kerning, 1] [insert, /designspace/instances/instance[3], info, 2] [insert, /designspace/instances/instance[4], kerning, 1] [insert, /designspace/instances/instance[4], info, 2] [insert, /designspace/instances/instance[5], kerning, 1] [insert, /designspace/instances/instance[5], info, 2] [insert, /designspace/instances/instance[6], kerning, 1] [insert, /designspace/instances/instance[6], info, 2] [insert, /designspace/instances/instance[7], kerning, 1] [insert, /designspace/instances/instance[7], info, 2] =========================== short test summary info ============================ FAILED tests/builder/designspace_gen_test.py::test_designspace_generation_regular_same_family_name[defcon] FAILED tests/builder/designspace_gen_test.py::test_designspace_generation_italic_same_family_name[defcon] FAILED tests/builder/designspace_gen_test.py::test_designspace_generation_regular_same_family_name[ufoLib2] FAILED tests/builder/designspace_gen_test.py::test_designspace_generation_italic_same_family_name[ufoLib2] FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_basic - Ass... FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_familyName FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_fileName - ... FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_inactive_from_exports FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_instanceOrder FAILED tests/builder/interpolation_test.py::DesignspaceTest::test_twoAxes - A... ================= 10 failed, 578 passed, 12 skipped in 14.94s ================== ** Affects: fonttools (Ubuntu) Importance: Undecided Status: New ** Affects: fonttools (Debian) Importance: Unknown Status: Unknown ** Tags: update-excuse ** Bug watch added: Debian Bug tracker #1013363 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1013363 ** Also affects: fonttools (Debian) via https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1013363 Importance: Unknown Status: Unknown ** Tags added: update-excuse -- You received this bug notification because you are a member of Ubuntu Desktop Bugs, which is subscribed to fonttools in Ubuntu. https://bugs.launchpad.net/bugs/1981989 Title: fonttools breaks glyphslib autopkgtest: AssertionError: *.designspace file is different from expected To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/fonttools/+bug/1981989/+subscriptions -- desktop-bugs mailing list desktop-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/desktop-bugs