Skip to content

Commit 1da1533

Browse files
committed
_loader: Use the sort algorithm from Python 3.12 for dependencies
The comparison function used to sort dependencies does not impose a total ordering. This means that the order of the sorted list depends on the order of inputs and implementation details of the sort algorithm. Python 3.13 changes the sort algorithm in a way that may affect the sorting of dependencies. This in turn affects the staging order and cache keys of elements. This commit embeds the list sort algorithm from Python 3.12.9 in BuildStream and uses that to sort dependencies. This restores cache key compatibility across Python versions despite the flaw of the comparison function. The comparison function is not modified at this point to prevent changes in staging order and cache keys on Python <= 3.12. Fixes #1988.
1 parent e99e6bb commit 1da1533

File tree

3 files changed

+1309
-1
lines changed

3 files changed

+1309
-1
lines changed

NOTICE

+5
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,8 @@ Software deriving from third parties:
3737

3838
This directory contains software developed by the BuildGrid authors:
3939
https://gitlab.com/BuildGrid/buildgrid
40+
41+
* src/buildstream/_loader/listsort.c
42+
43+
This file is derived from Python and licensed under the
44+
Python Software Foundation License Version 2.

0 commit comments

Comments
 (0)