NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.46k stars 13.66k forks source link

Build failure: python312Packages.blockdiag #343318

Closed sarahec closed 3 hours ago

sarahec commented 7 hours ago

Steps To Reproduce

Steps to reproduce the behavior:

  1. nix-build -A python312Packages.blockdiag from scratch (e.g. on Darwin)

Build log

From the check phase:

Running phase: pytestCheckPhase
Executing pytestCheckPhase
============================= test session starts ==============================
platform darwin -- Python 3.12.5, pytest-8.3.2, pluggy-1.5.0
rootdir: /private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source
collected 710 items / 1 deselected / 709 selected

src/blockdiag/tests/rst/test_base_directives.py ........                 [  1%]
src/blockdiag/tests/rst/test_blockdiag_directives.py ................... [  3%]
...........................                                              [  7%]
src/blockdiag/tests/test_boot_params.py ............................     [ 11%]
src/blockdiag/tests/test_builder.py ......................               [ 14%]
src/blockdiag/tests/test_builder_edge.py ...................             [ 17%]
src/blockdiag/tests/test_builder_errors.py ....................          [ 20%]
src/blockdiag/tests/test_builder_group.py .............................. [ 24%]
....                                                                     [ 24%]
src/blockdiag/tests/test_builder_node.py ................                [ 27%]
src/blockdiag/tests/test_builder_separate.py ..                          [ 27%]
src/blockdiag/tests/test_command.py .                                    [ 27%]
src/blockdiag/tests/test_generate_diagram.py ........................... [ 31%]
........................................................................ [ 41%]
........................................................................ [ 51%]
........................................................................ [ 61%]
.....................................F.................................. [ 72%]
........................................................................ [ 82%]
........................................................................ [ 92%]
.............                                                            [ 94%]
src/blockdiag/tests/test_imagedraw_textfolder.py ...                     [ 94%]
src/blockdiag/tests/test_imagedraw_utils.py .....                        [ 95%]
src/blockdiag/tests/test_parser.py ........                              [ 96%]
src/blockdiag/tests/test_utils.py ...                                    [ 96%]
src/blockdiag/tests/test_utils_fontmap.py ......................         [100%]

=================================== FAILURES ===================================
_ test_generate_with_separate[/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/tests/diagrams/node_shape_background.diag-svg-options272] _

source = '/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/tests/diagrams/node_shape_background.diag'
file_type = 'svg', options = []

    @pytest.mark.parametrize("source,file_type,options", generate_testdata)
    def test_generate_with_separate(source, file_type, options):
>       generate(source, file_type, options)

src/blockdiag/tests/test_generate_diagram.py:72:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/tests/diagrams/node_shape_background.diag', 'svg', [])
kwargs = {}
stderr = <_io.TextIOWrapper name="<_io.FileIO name=8 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>

    def wrap(*args, **kwargs):
        try:
            stderr = sys.stderr
            sys.stderr = StringIO()

            func(*args, **kwargs)

            if re.search('(ERROR|Traceback)', sys.stderr.getvalue()):
>               raise AssertionError('Caught error')
E               AssertionError: Caught error

src/blockdiag/tests/utils.py:78: AssertionError
----------------------------- Captured stdout call -----------------------------
---[ stderr ] ---
Traceback (most recent call last):
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/utils/bootstrap.py", line 54, in run
    return self.build_diagram(parsed)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/command.py", line 43, in build_diagram
    return super(BlockdiagApp, self).build_diagram(tree)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/utils/bootstrap.py", line 108, in build_diagram
    drawer.save()
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/drawer.py", line 188, in save
    return self.drawer.save(self.filename, size, self.format)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/filters/linejump.py", line 182, in save
    self._run()
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/filters/linejump.py", line 109, in _run
    method(self.target, *args, **kwargs)
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/svg.py", line 150, in textarea
    self.textarea(box, string, _font, **kwargs)
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/svg.py", line 150, in textarea
    self.textarea(box, string, _font, **kwargs)
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/svg.py", line 150, in textarea
    self.textarea(box, string, _font, **kwargs)
  [Previous line repeated 4 more times]
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/svg.py", line 136, in textarea
    lines = self.textfolder(box, string, font, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/textfolder.py", line 66, in get
    return HorizontalTextFolder(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/textfolder.py", line 208, in __init__
    self._result = self._lines()
                   ^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/textfolder.py", line 285, in _lines
    for folded in splittext(self, line, maxwidth, measure):
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/textfolder.py", line 41, in splittext
    textsize = metrics.textsize(text[0:i])
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/textfolder.py", line 212, in textsize
    textsize = self.drawer.textlinesize(text, self.font)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/utils/__init__.py", line 65, in func
    fn.cache[key] = fn(*args, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/svg.py", line 116, in textlinesize
    return self._pil_drawer.textlinesize(string, font)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/utils/__init__.py", line 65, in func
    fn.cache[key] = fn(*args, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/png.py", line 289, in textlinesize
    ttfont = ttfont_for(font)
             ^^^^^^^^^^^^^^^^
  File "/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/imagedraw/png.py", line 123, in ttfont_for
    ttfont = ImageFont.truetype(path, font.size)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/y94dchrmgl2j5zqwxg7mc96zwk2smxg5-python3.12-pillow-10.4.0/lib/python3.12/site-packages/PIL/ImageFont.py", line 834, in truetype
    return freetype(font)
           ^^^^^^^^^^^^^^
  File "/nix/store/y94dchrmgl2j5zqwxg7mc96zwk2smxg5-python3.12-pillow-10.4.0/lib/python3.12/site-packages/PIL/ImageFont.py", line 831, in freetype
    return FreeTypeFont(font, size, index, encoding, layout_engine)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/nix/store/y94dchrmgl2j5zqwxg7mc96zwk2smxg5-python3.12-pillow-10.4.0/lib/python3.12/site-packages/PIL/ImageFont.py", line 219, in __init__
    raise ValueError(msg)
ValueError: font size must be greater than 0

=============================== warnings summary ===============================
src/blockdiag/noderenderer/__init__.py:18
  /private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/noderenderer/__init__.py:18: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    import pkg_resources

src/blockdiag/tests/rst/test_blockdiag_directives.py::TestRstDirectives::test_align_option1
  /nix/store/r891z8fxwrgmrg6hqy8dvcx6izhqmnw6-python3.12-reportlab-4.2.2/lib/python3.12/site-packages/reportlab/lib/rl_safe_eval.py:12: DeprecationWarning: ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant instead
    haveNameConstant = hasattr(ast,'NameConstant')

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED src/blockdiag/tests/test_generate_diagram.py::test_generate_with_separate[/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/tests/diagrams/node_shape_background.diag-svg-options272] - AssertionError: Caught error
=========== 1 failed, 708 passed, 1 deselected, 2 warnings in 2.41s ============
error: builder for '/nix/store/hjrcmdnmvz3giqpgyilxq3y7bzcrqfa7-python3.12-blockdiag-3.0.0.drv' failed with exit code 1;
       last 10 log lines:
       >     import pkg_resources
       >
       > src/blockdiag/tests/rst/test_blockdiag_directives.py::TestRstDirectives::test_align_option1
       >   /nix/store/r891z8fxwrgmrg6hqy8dvcx6izhqmnw6-python3.12-reportlab-4.2.2/lib/python3.12/site-packages/reportlab/lib/rl_safe_eval.py:12: DeprecationWarning: ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant instead
       >     haveNameConstant = hasattr(ast,'NameConstant')
       >
       > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
       > =========================== short test summary info ============================
       > FAILED src/blockdiag/tests/test_generate_diagram.py::test_generate_with_separate[/private/tmp/nix-build-python3.12-blockdiag-3.0.0.drv-0/source/src/blockdiag/tests/diagrams/node_shape_background.diag-svg-options272] - AssertionError: Caught error
       > =========== 1 failed, 708 passed, 1 deselected, 2 warnings in 2.41s ============

Additional context

It looks like the error came in with python3Packages.reportlab @ 4.2.2.

Notify maintainers

@bjornfor

Metadata

Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.

[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"aarch64-darwin"`
 - host os: `Darwin 24.0.0, macOS 15.0`
 - multi-user?: `yes`
 - sandbox: `no`
 - version: `nix-env (Nix) 2.18.5`
 - channels(root): `"nixpkgs"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixpkgs`

Add a :+1: reaction to issues you find important.