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.

Reply via email to