Skip to content

Dulwich 0.24.3 breaks git_repo source plugin

Yesterday my project build worked, today it failed. The reason, you ask ? A new Dulwich release, 0.24.3, was uploaded to PyPI.

Build failure can be seen here: https://github.com/endlessm/eos-build-meta/actions/runs/18491149783/job/52684862428?pr=160

[--:--:--][][   fetch:freedesktop-sdk.bst           ] START   Fetching from https://gitlab.gnome.org/Infrastructure/Mirrors/lorry-mirrors/gitlab_com/freedesktop-sdk/freedesktop-sdk.git
[00:00:00][][   fetch:freedesktop-sdk.bst           ] BUG     Fetch

    An unhandled exception occured:
    
    Traceback (most recent call last):
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/_scheduler/jobs/job.py", line 350, in child_action
        result = self.child_process()  # pylint: disable=assignment-from-no-return
                 ^^^^^^^^^^^^^^^^^^^^
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/_scheduler/jobs/elementjob.py", line 81, in child_process
        return self._action_cb(self._element)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/_scheduler/queues/fetchqueue.py", line 75, in _fetch_not_original
        element._fetch(fetch_original=False)
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/element.py", line 2278, in _fetch
        self.__sources.fetch()
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/_elementsources.py", line 221, in fetch
        self.fetch_sources()
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/_elementsources.py", line 250, in fetch_sources
        self._fetch_source(source)
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/_elementsources.py", line 431, in _fetch_source
        source._fetch()
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/source.py", line 1481, in _fetch
        self.__do_fetch()
      File "/home/runner/_work/eos-build-meta/eos-build-meta/venv/lib/python3.12/site-packages/buildstream/source.py", line 1957, in __do_fetch
        fetcher.fetch(mirror)
      File "/home/runner/_work/eos-build-meta/eos-build-meta/.bst/staged-junctions/plugins/buildstream-plugins-community.bst/6bb122fcbdfbcc5bccbdce11cb34706d43653addb32a281bd01c6c89e503a9ac/src/buildstream_plugins_community/sources/_git_utils.py", line 257, in fetch
        client, path = get_authenticated_transport_and_path(url)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/runner/_work/eos-build-meta/eos-build-meta/.bst/staged-junctions/plugins/buildstream-plugins-community.bst/6bb122fcbdfbcc5bccbdce11cb34706d43653addb32a281bd01c6c89e503a9ac/src/buildstream_plugins_community/sources/_git_utils.py", line 519, in get_authenticated_transport_and_path
        return get_transport_and_path(
               ^^^^^^^^^^^^^^^^^^^^^^^
    TypeError: get_transport_and_path() got an unexpected keyword argument 'pool_manager'

[00:00:00][][    main:core activity                 ] FAILURE Loading elements
[00:00:00][][    main:core activity                 ] FAILURE Build

In this case, the project includes a utils/requirements.txt file so we have worked around by pinning dulwich version to 0.24.2.

This kind of breakage is unfortunate as BuildStream builds should be repeatable. A few ideas to guard against such breakage:

  • Ship a requirements.txt file with specific, pinned versions of Python dependencies.
  • Bundle a known-good version of dulwich in the buildstream-plugins-community repo
  • Stop using dulwich in the git_repo plugin