Mic92 / nixpkgs-review

Review pull-requests on https://github.com/NixOS/nixpkgs
MIT License
356 stars 59 forks source link

Issues building packages depending on Pycairo #262

Closed WolfangAukang closed 2 years ago

WolfangAukang commented 2 years ago

Recently I have been reviewing two Python packages that have pycairo as a dependency. When running the main application that depends on those libs, I got the following issues:

gaphor (From https://github.com/NixOS/nixpkgs/pull/163839):

Traceback (most recent call last):
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/ui/greeter.py", line 179, in _on_template_activated
    session = self.application.new_session(template=translated_model)
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/application.py", line 93, in new_session
    return self._new_session(
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/application.py", line 99, in _new_session
    session = Session(services=services)
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/application.py", line 185, in __init__
    services_by_name: dict[str, Service] = initialize("gaphor.services", services)
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/entrypoint.py", line 13, in initialize
    return init_entry_points(load_entry_points(scope, services), **known_services)
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/entrypoint.py", line 29, in load_entry_points
    cls = ep.load()
  File "/nix/store/afi0ysqw20yiiw2gr2d28dx40bc4ddf8-python3-3.9.10/lib/python3.9/importlib/metadata.py", line 77, in load
    module = import_module(match.group('module'))
  File "/nix/store/afi0ysqw20yiiw2gr2d28dx40bc4ddf8-python3-3.9.10/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/plugins/console/consolewindow.py", line 12, in <module>
    from gaphor.services.properties import get_config_dir
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/services/properties.py", line 17, in <module>
    from gaphor.core.modeling.event import ModelFlushed
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/core/modeling/__init__.py", line 1, in <module>
    from gaphor.core.modeling.coremodel import Comment
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/core/modeling/coremodel.py", line 24, in <module>
    from gaphor.core.modeling.diagram import Diagram
  File "/nix/store/3w7sg3g96jgv5pzflb2ymr6pxvqqjz3w-gaphor-2.8.2/lib/python3.9/site-packages/gaphor/core/modeling/diagram.py", line 22, in <module>
    import gaphas
  File "/nix/store/jpajy0c10zmryw3d8m0va9rvicmj5lhy-python3.10-gaphas-3.5.1/lib/python3.10/site-packages/gaphas/__init__.py", line 38, in <module>
    from gaphas.canvas import Canvas
  File "/nix/store/jpajy0c10zmryw3d8m0va9rvicmj5lhy-python3.10-gaphas-3.5.1/lib/python3.10/site-packages/gaphas/canvas.py", line 33, in <module>
    import cairo
  File "/nix/store/3qf7r0lcqglrlnqychaq75gkmham0hcg-python3.10-pycairo-1.20.1/lib/python3.10/site-packages/cairo/__init__.py", line 1, in <module>
    from ._cairo import *  # noqa: F401,F403
ModuleNotFoundError: No module named 'cairo._cairo'

protonvpn-gui (From https://github.com/NixOS/nixpkgs/pull/164518):

[nix-shell:~/.cache/nixpkgs-review/pr-164518]$ ./results/protonvpn-gui/bin/protonvpn
Traceback (most recent call last):
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/bin/..protonvpn-wrapped-wrapped", line 6, in <module>
    from protonvpn_gui.main import main
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/lib/python3.9/site-packages/protonvpn_gui/main.py", line 23, in <module>
    from .view.dashboard import DashboardView
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/lib/python3.9/site-packages/protonvpn_gui/view/dashboard.py", line 32, in <module>
    from .server_list import ServerListView
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/lib/python3.9/site-packages/protonvpn_gui/view/server_list.py", line 4, in <module>
    from .server_list_components.non_secure_core_server_list_view import NoneSecureCoreListView
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/lib/python3.9/site-packages/protonvpn_gui/view/server_list_components/non_secure_core_server_list_view.py", line 2, in <module>
    from .country_row import CountryRow
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/lib/python3.9/site-packages/protonvpn_gui/view/server_list_components/country_row.py", line 7, in <module>
    from .revealer import ServerListRevealer
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/lib/python3.9/site-packages/protonvpn_gui/view/server_list_components/revealer.py", line 2, in <module>
    from .server_row import ServerRow
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/lib/python3.9/site-packages/protonvpn_gui/view/server_list_components/server_row.py", line 7, in <module>
    from .server_load import ServerLoad
  File "/nix/store/rq43vys13p9vysxi6gcmnfn4xsvwll1q-protonvpn-linux-gui-1.7.0/lib/python3.9/site-packages/protonvpn_gui/view/server_list_components/server_load.py", line 4, in <module>
    import cairo
  File "/nix/store/frscimplwg6b4dfplh2gnlrhadg1pd83-python3.10-pycairo-1.20.1/lib/python3.10/site-packages/cairo/__init__.py", line 1, in <module>
    from ._cairo import *  # noqa: F401,F403
ModuleNotFoundError: No module named 'cairo._cairo'

If building them through nix-build, the error is not shown.

Mic92 commented 2 years ago

if you unset PYTHONPATH in the review shell, does it fix the issue?

WolfangAukang commented 2 years ago

Sorry for the delay on the response. In the end, I haven't been able to replicate the issue, so I'd rather close it until I can replicate it again, so I can try your recommendation.