From 0efcb0be5f1aa834f6dcfcaba1d3a1ce487a6982 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Mon, 7 Dec 2020 11:40:20 -0500 Subject: pkgconfig: Respect variable ordering when passed as list This fix a regression introduced in Meson 0.56.0 when using python 3.5. Also mention in documentation that using a meson dict does not guarantee ordering. Fixes: #8074. --- docs/markdown/Pkgconfig-module.md | 3 ++- mesonbuild/interpreter.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/markdown/Pkgconfig-module.md b/docs/markdown/Pkgconfig-module.md index e9aa4a226..53c23fa1b 100644 --- a/docs/markdown/Pkgconfig-module.md +++ b/docs/markdown/Pkgconfig-module.md @@ -50,7 +50,8 @@ keyword arguments. reference other pkgconfig variables, e.g. `datadir=${prefix}/share`. The names `prefix`, `libdir` and `includedir` are reserved and may not be used. *Since 0.56.0* it can also be a - dictionary. + dictionary but ordering of Meson dictionaries are not guaranteed, which could + cause issues when some variables reference other variables. - `version` a string describing the version of this library, used to set the `Version:` field. (*since 0.46.0*) Defaults to the project version if unspecified. - `d_module_versions` a list of module version flags used when compiling diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 83acc01ac..59e29be1c 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2708,7 +2708,7 @@ class Interpreter(InterpreterBase): varlist = mesonlib.stringlistify(variables) if list_new: FeatureNew.single_use('variables as list of strings', '0.56.0', self.subproject) - variables = {} + variables = collections.OrderedDict() for v in varlist: try: (key, value) = v.split('=', 1) -- cgit v1.2.3