commit: c16ff6913b3d0a4d4ea0f6ee811ece541865bd8f Author: Raul E Rangel <rrangel <AT> chromium <DOT> org> AuthorDate: Wed Oct 11 18:42:34 2023 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Fri Oct 13 10:19:01 2023 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=c16ff691
config: Sort USE_EXPAND variables Without the sort, we end up extending the USE_EXPAND variables with a non deterministic ordering. This makes binary package creation non hermetic. i.e., ``` -declare -x PYTHON_TARGETS="python3_8 python3_7 python3_6 python3_10 python3_9" +declare -x PYTHON_TARGETS="python3_8 python3_9 python3_10 python3_7 python3_6" ``` Assuming `PYTHON_TARGETS=python3_8` in make.conf, after this change we get: ``` declare -x PYTHON_TARGETS="python3_8 python3_10 python3_6 python3_7 python3_9" ``` Ideally we would completely sort the USE_EXPAND variables, but the LINGUAS variable appears to need a very specific ordering. Bug: https://bugs.gentoo.org/914441 Signed-off-by: Raul E Rangel <rrangel <AT> chromium.org> Closes: https://github.com/gentoo/portage/pull/1098 Signed-off-by: Sam James <sam <AT> gentoo.org> lib/portage/package/ebuild/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/portage/package/ebuild/config.py b/lib/portage/package/ebuild/config.py index 3ee7fd65ed..049c5fa169 100644 --- a/lib/portage/package/ebuild/config.py +++ b/lib/portage/package/ebuild/config.py @@ -1746,7 +1746,7 @@ class config: # Preserve the order of var_split because it can matter for things # like LINGUAS. var_split = [x for x in var_split if x in expand_flags] - var_split.extend(expand_flags.difference(var_split)) + var_split.extend(sorted(expand_flags.difference(var_split))) has_wildcard = "*" in expand_flags if has_wildcard: var_split = [x for x in var_split if x != "*"]
