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