Source: python-svg.path Version: 6.3-1 Severity: serious Justification: FTBFS Tags: trixie sid ftbfs User: lu...@debian.org Usertags: ftbfs-20231212 ftbfs-trixie
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > debian/rules build > dh build --buildsystem=pybuild > dh_update_autotools_config -O--buildsystem=pybuild > dh_autoreconf -O--buildsystem=pybuild > dh_auto_configure -O--buildsystem=pybuild > I: pybuild base:310: python3.12 setup.py config > running config > I: pybuild base:310: python3.11 setup.py config > running config > dh_auto_build -O--buildsystem=pybuild > I: pybuild base:310: /usr/bin/python3.12 setup.py build > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_svg.path/build/svg > copying src/svg/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_svg.path/build/svg > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_svg.path/build/svg/path > copying src/svg/path/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_svg.path/build/svg/path > copying src/svg/path/path.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_svg.path/build/svg/path > copying src/svg/path/parser.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_svg.path/build/svg/path > running egg_info > creating src/svg.path.egg-info > writing src/svg.path.egg-info/PKG-INFO > writing dependency_links to src/svg.path.egg-info/dependency_links.txt > writing requirements to src/svg.path.egg-info/requires.txt > writing top-level names to src/svg.path.egg-info/top_level.txt > writing manifest file 'src/svg.path.egg-info/SOURCES.txt' > reading manifest file 'src/svg.path.egg-info/SOURCES.txt' > reading manifest template 'MANIFEST.in' > warning: no previously-included files found matching 'Makefile' > adding license file 'LICENSE.txt' > writing manifest file 'src/svg.path.egg-info/SOURCES.txt' > I: pybuild base:310: /usr/bin/python3 setup.py build > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_svg.path/build/svg > copying src/svg/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_svg.path/build/svg > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_svg.path/build/svg/path > copying src/svg/path/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_svg.path/build/svg/path > copying src/svg/path/path.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_svg.path/build/svg/path > copying src/svg/path/parser.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_svg.path/build/svg/path > running egg_info > writing src/svg.path.egg-info/PKG-INFO > writing dependency_links to src/svg.path.egg-info/dependency_links.txt > writing requirements to src/svg.path.egg-info/requires.txt > writing top-level names to src/svg.path.egg-info/top_level.txt > reading manifest file 'src/svg.path.egg-info/SOURCES.txt' > reading manifest template 'MANIFEST.in' > warning: no previously-included files found matching 'Makefile' > adding license file 'LICENSE.txt' > writing manifest file 'src/svg.path.egg-info/SOURCES.txt' > dh_auto_test -O--buildsystem=pybuild > I: pybuild base:310: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_svg.path/build; python3.12 -m pytest > tests > ============================= test session starts > ============================== > platform linux -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0 > rootdir: /<<PKGBUILDDIR>> > configfile: setup.cfg > plugins: cov-4.1.0 > collected 53 items > > tests/test_boundingbox_image.py F [ > 1%] > tests/test_doc.py . [ > 3%] > tests/test_generation.py . [ > 5%] > tests/test_image.py F [ > 7%] > tests/test_parsing.py ................. [ > 39%] > tests/test_paths.py .......................... [ > 88%] > tests/test_tokenizer.py ...... > [100%] > > =================================== FAILURES > =================================== > _______________________ BoundingBoxImageTest.test_image > ________________________ > > self = <tests.test_boundingbox_image.BoundingBoxImageTest > testMethod=test_image> > > @pytest.mark.skipif( > sys.platform != "linux", reason="Different platforms have different > fonts" > ) > def test_image(self): > self.draw.text((10, 10), "This is an SVG line:") > self.draw.text( > (10, 100), > "The red line is a bounding box.", > ) > > line1 = Line(40 + 60j, 200 + 80j) > self.draw_path(line1) > self.draw_boundingbox(line1) > > self.draw.text((10, 140), "These are Arc segments:") > arc1 = Arc(260 + 320j, 100 + 100j, 0, 1, 1, 260 + 319j) > self.draw_path(arc1) > self.draw_boundingbox(arc1) > > arc2 = Arc(450 + 320j, 40 + 80j, 50, 1, 1, 420 + 319j) > self.draw_path(arc2) > self.draw_boundingbox(arc2) > > arc3 = Arc(400 + 260j, 40 + 70j, 50, 0, 1, 340 + 260j) > self.draw_path(arc3) > self.draw_boundingbox(arc3) > > self.draw.text( > (10, 500), > "Next we have a quadratic bezier curve, with one tangent:", > ) > start = 30 + 600j > control = 400 + 540j > end = 260 + 650j > qbez1 = QuadraticBezier(start, control, end) > self.draw_path(qbez1) > self.draw.ellipse([c2t(control - DOT), c2t(control + DOT)], > fill=WHITE) > self.draw.line([c2t(start), c2t(control), c2t(end)], fill=CYAN) > self.draw_boundingbox(qbez1) > self.draw.text( > (10, 670), > "The white dot is the control point, and the cyan lines are ", > ) > self.draw.text((10, 690), "illustrating the how the control point > works.") > > self.draw.text( > (10, 730), > "Lastly is a cubic bezier, with 2 tangents, and 2 control > points:", > ) > > start = 200 + 800j > control1 = 350 + 750j > control2 = 50 + 900j > end = 190 + 980j > cbez1 = CubicBezier(start, control1, control2, end) > self.draw_path(cbez1) > self.draw.ellipse([c2t(control1 - DOT), c2t(control1 + DOT)], > fill=WHITE) > self.draw.ellipse([c2t(control2 - DOT), c2t(control2 + DOT)], > fill=WHITE) > self.draw.line( > [ > c2t(start), > c2t(control1), > ], > fill=CYAN, > ) > self.draw.line([c2t(control2), c2t(end)], fill=CYAN) > self.draw_boundingbox(cbez1) > > # self.image.show() # Useful when debugging > > filename = os.path.join( > os.path.split(__file__)[0], "test_boundingbox_image.png" > ) > > # If you have made intentional changes to the > test_boundingbox_image.png, > # save it by uncommenting these lines. Don't forget to comment them > out again, > # or the test will always pass > # with open(filename, "wb") as fp: > # self.image.save(fp, format="PNG") > > with open(filename, "rb") as fp: > test_image = Image.open(fp, mode="r") > diff = ImageChops.difference(test_image, self.image) > > self.assertFalse( > diff.getbbox(), > "The resulting image is different from > test_boundingbox_image.png", > ) > E AssertionError: (10, 12, 391, 742) is not false : The resulting > image is different from test_boundingbox_image.png > > tests/test_boundingbox_image.py:139: AssertionError > _____________________________ ImageTest.test_image > _____________________________ > > self = <tests.test_image.ImageTest testMethod=test_image> > > def test_image(self): > self.draw.text((10, 10), "This is an SVG line:") > self.draw.text( > (10, 100), > "The red line is a tangent, and the yellow is 90 degrees from > that.", > ) > > line1 = Line(40 + 60j, 200 + 80j) > self.draw_path(line1) > self.draw_tangents(line1, 1) > > self.draw.text((10, 140), "This is an Arc segment, almost a whole > circle:") > arc1 = Arc(260 + 320j, 100 + 100j, 0, 1, 1, 260 + 319j) > self.draw_path(arc1) > self.draw_tangents(arc1, 5) > self.draw.text((10, 460), "With five tangents.") > > self.draw.text( > (10, 500), > "Next we have a quadratic bezier curve, with one tangent:", > ) > start = 30 + 600j > control = 400 + 540j > end = 260 + 650j > qbez1 = QuadraticBezier(start, control, end) > self.draw_path(qbez1) > self.draw.ellipse([c2t(control - DOT), c2t(control + DOT)], > fill=WHITE) > self.draw.line([c2t(start), c2t(control), c2t(end)], fill=CYAN) > self.draw_tangents(qbez1, 1) > self.draw.text( > (10, 670), > "The white dot is the control point, and the cyan lines are ", > ) > self.draw.text((10, 690), "illustrating the how the control point > works.") > > self.draw.text( > (10, 730), > "Lastly is a cubic bezier, with 2 tangents, and 2 control > points:", > ) > > start = 30 + 800j > control1 = 400 + 780j > control2 = 50 + 900j > end = 300 + 980j > cbez1 = CubicBezier(start, control1, control2, end) > self.draw_path(cbez1) > self.draw.ellipse([c2t(control1 - DOT), c2t(control1 + DOT)], > fill=WHITE) > self.draw.ellipse([c2t(control2 - DOT), c2t(control2 + DOT)], > fill=WHITE) > self.draw.line( > [ > c2t(start), > c2t(control1), > ], > fill=CYAN, > ) > self.draw.line([c2t(control2), c2t(end)], fill=CYAN) > self.draw_tangents(cbez1, 2) > > # self.image.show() # Useful when debugging > > filename = os.path.join(os.path.split(__file__)[0], "test_image.png") > > # If you have made intentional changes to the test_image.png, save it > # by uncommenting these lines. Don't forget to comment them out again, > # or the test will always pass > # with open(filename, "wb") as fp: > # self.image.save(fp, format="PNG") > > with open(filename, "rb") as fp: > test_image = Image.open(fp, mode="r") > diff = ImageChops.difference(test_image, self.image) > > self.assertFalse( > diff.getbbox(), "The resulting image is different from > test_image.png" > ) > E AssertionError: (10, 12, 403, 742) is not false : The resulting > image is different from test_image.png > > tests/test_image.py:130: AssertionError > =========================== short test summary info > ============================ > FAILED tests/test_boundingbox_image.py::BoundingBoxImageTest::test_image - > As... > FAILED tests/test_image.py::ImageTest::test_image - AssertionError: (10, 12, > ... > ========================= 2 failed, 51 passed in 0.99s > ========================= > E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_svg.path/build; python3.12 -m pytest > tests > I: pybuild base:310: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_svg.path/build; python3.11 -m pytest > tests > ============================= test session starts > ============================== > platform linux -- Python 3.11.7, pytest-7.4.3, pluggy-1.3.0 > rootdir: /<<PKGBUILDDIR>> > configfile: setup.cfg > plugins: cov-4.1.0 > collected 53 items > > tests/test_boundingbox_image.py F [ > 1%] > tests/test_doc.py . [ > 3%] > tests/test_generation.py . [ > 5%] > tests/test_image.py F [ > 7%] > tests/test_parsing.py ................. [ > 39%] > tests/test_paths.py .......................... [ > 88%] > tests/test_tokenizer.py ...... > [100%] > > =================================== FAILURES > =================================== > _______________________ BoundingBoxImageTest.test_image > ________________________ > > self = <tests.test_boundingbox_image.BoundingBoxImageTest > testMethod=test_image> > > @pytest.mark.skipif( > sys.platform != "linux", reason="Different platforms have different > fonts" > ) > def test_image(self): > self.draw.text((10, 10), "This is an SVG line:") > self.draw.text( > (10, 100), > "The red line is a bounding box.", > ) > > line1 = Line(40 + 60j, 200 + 80j) > self.draw_path(line1) > self.draw_boundingbox(line1) > > self.draw.text((10, 140), "These are Arc segments:") > arc1 = Arc(260 + 320j, 100 + 100j, 0, 1, 1, 260 + 319j) > self.draw_path(arc1) > self.draw_boundingbox(arc1) > > arc2 = Arc(450 + 320j, 40 + 80j, 50, 1, 1, 420 + 319j) > self.draw_path(arc2) > self.draw_boundingbox(arc2) > > arc3 = Arc(400 + 260j, 40 + 70j, 50, 0, 1, 340 + 260j) > self.draw_path(arc3) > self.draw_boundingbox(arc3) > > self.draw.text( > (10, 500), > "Next we have a quadratic bezier curve, with one tangent:", > ) > start = 30 + 600j > control = 400 + 540j > end = 260 + 650j > qbez1 = QuadraticBezier(start, control, end) > self.draw_path(qbez1) > self.draw.ellipse([c2t(control - DOT), c2t(control + DOT)], > fill=WHITE) > self.draw.line([c2t(start), c2t(control), c2t(end)], fill=CYAN) > self.draw_boundingbox(qbez1) > self.draw.text( > (10, 670), > "The white dot is the control point, and the cyan lines are ", > ) > self.draw.text((10, 690), "illustrating the how the control point > works.") > > self.draw.text( > (10, 730), > "Lastly is a cubic bezier, with 2 tangents, and 2 control > points:", > ) > > start = 200 + 800j > control1 = 350 + 750j > control2 = 50 + 900j > end = 190 + 980j > cbez1 = CubicBezier(start, control1, control2, end) > self.draw_path(cbez1) > self.draw.ellipse([c2t(control1 - DOT), c2t(control1 + DOT)], > fill=WHITE) > self.draw.ellipse([c2t(control2 - DOT), c2t(control2 + DOT)], > fill=WHITE) > self.draw.line( > [ > c2t(start), > c2t(control1), > ], > fill=CYAN, > ) > self.draw.line([c2t(control2), c2t(end)], fill=CYAN) > self.draw_boundingbox(cbez1) > > # self.image.show() # Useful when debugging > > filename = os.path.join( > os.path.split(__file__)[0], "test_boundingbox_image.png" > ) > > # If you have made intentional changes to the > test_boundingbox_image.png, > # save it by uncommenting these lines. Don't forget to comment them > out again, > # or the test will always pass > # with open(filename, "wb") as fp: > # self.image.save(fp, format="PNG") > > with open(filename, "rb") as fp: > test_image = Image.open(fp, mode="r") > diff = ImageChops.difference(test_image, self.image) > > self.assertFalse( > diff.getbbox(), > "The resulting image is different from > test_boundingbox_image.png", > ) > E AssertionError: (10, 12, 391, 742) is not false : The resulting > image is different from test_boundingbox_image.png > > tests/test_boundingbox_image.py:139: AssertionError > _____________________________ ImageTest.test_image > _____________________________ > > self = <tests.test_image.ImageTest testMethod=test_image> > > def test_image(self): > self.draw.text((10, 10), "This is an SVG line:") > self.draw.text( > (10, 100), > "The red line is a tangent, and the yellow is 90 degrees from > that.", > ) > > line1 = Line(40 + 60j, 200 + 80j) > self.draw_path(line1) > self.draw_tangents(line1, 1) > > self.draw.text((10, 140), "This is an Arc segment, almost a whole > circle:") > arc1 = Arc(260 + 320j, 100 + 100j, 0, 1, 1, 260 + 319j) > self.draw_path(arc1) > self.draw_tangents(arc1, 5) > self.draw.text((10, 460), "With five tangents.") > > self.draw.text( > (10, 500), > "Next we have a quadratic bezier curve, with one tangent:", > ) > start = 30 + 600j > control = 400 + 540j > end = 260 + 650j > qbez1 = QuadraticBezier(start, control, end) > self.draw_path(qbez1) > self.draw.ellipse([c2t(control - DOT), c2t(control + DOT)], > fill=WHITE) > self.draw.line([c2t(start), c2t(control), c2t(end)], fill=CYAN) > self.draw_tangents(qbez1, 1) > self.draw.text( > (10, 670), > "The white dot is the control point, and the cyan lines are ", > ) > self.draw.text((10, 690), "illustrating the how the control point > works.") > > self.draw.text( > (10, 730), > "Lastly is a cubic bezier, with 2 tangents, and 2 control > points:", > ) > > start = 30 + 800j > control1 = 400 + 780j > control2 = 50 + 900j > end = 300 + 980j > cbez1 = CubicBezier(start, control1, control2, end) > self.draw_path(cbez1) > self.draw.ellipse([c2t(control1 - DOT), c2t(control1 + DOT)], > fill=WHITE) > self.draw.ellipse([c2t(control2 - DOT), c2t(control2 + DOT)], > fill=WHITE) > self.draw.line( > [ > c2t(start), > c2t(control1), > ], > fill=CYAN, > ) > self.draw.line([c2t(control2), c2t(end)], fill=CYAN) > self.draw_tangents(cbez1, 2) > > # self.image.show() # Useful when debugging > > filename = os.path.join(os.path.split(__file__)[0], "test_image.png") > > # If you have made intentional changes to the test_image.png, save it > # by uncommenting these lines. Don't forget to comment them out again, > # or the test will always pass > # with open(filename, "wb") as fp: > # self.image.save(fp, format="PNG") > > with open(filename, "rb") as fp: > test_image = Image.open(fp, mode="r") > diff = ImageChops.difference(test_image, self.image) > > self.assertFalse( > diff.getbbox(), "The resulting image is different from > test_image.png" > ) > E AssertionError: (10, 12, 403, 742) is not false : The resulting > image is different from test_image.png > > tests/test_image.py:130: AssertionError > =========================== short test summary info > ============================ > FAILED tests/test_boundingbox_image.py::BoundingBoxImageTest::test_image - > As... > FAILED tests/test_image.py::ImageTest::test_image - AssertionError: (10, 12, > ... > ========================= 2 failed, 51 passed in 1.08s > ========================= > E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_svg.path/build; python3.11 -m pytest > tests > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 > 3.11" returned exit code 13 The full build log is available from: http://qa-logs.debian.net/2023/12/12/python-svg.path_6.3-1_unstable.log All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20231212;users=lu...@debian.org or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20231212&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please mark it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.