From e955d5042a41380e4371f27e2a9e53455dfe6be3 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Aug 17 2021 18:51:00 +0000 Subject: Backport PR #9027 to fix a bug that broke some test suites (#1994006) --- diff --git a/0001-interpreter-Fix-list-contains-for-Holders-fixes-9020.patch b/0001-interpreter-Fix-list-contains-for-Holders-fixes-9020.patch new file mode 100644 index 0000000..e981784 --- /dev/null +++ b/0001-interpreter-Fix-list-contains-for-Holders-fixes-9020.patch @@ -0,0 +1,99 @@ +From 5c87167a34c6ed703444af180fffd8a45a7928ee Mon Sep 17 00:00:00 2001 +From: Daniel Mensinger +Date: Sat, 31 Jul 2021 17:51:05 +0200 +Subject: [PATCH] interpreter: Fix list contains for Holders (fixes #9020 + #9047) + +--- + mesonbuild/interpreterbase/interpreterbase.py | 4 ++-- + test cases/common/56 array methods/a.txt | 0 + test cases/common/56 array methods/b.txt | 0 + test cases/common/56 array methods/c.txt | 0 + .../common/56 array methods/meson.build | 24 +++++++++++++++++++ + 5 files changed, 26 insertions(+), 2 deletions(-) + create mode 100644 test cases/common/56 array methods/a.txt + create mode 100644 test cases/common/56 array methods/b.txt + create mode 100644 test cases/common/56 array methods/c.txt + +diff --git a/mesonbuild/interpreterbase/interpreterbase.py b/mesonbuild/interpreterbase/interpreterbase.py +index b8a6d1a0c..115e24be0 100644 +--- a/mesonbuild/interpreterbase/interpreterbase.py ++++ b/mesonbuild/interpreterbase/interpreterbase.py +@@ -783,7 +783,7 @@ The result of this is undefined and will become a hard error in a future Meson r + posargs: T.List[TYPE_var], + kwargs: TYPE_kwargs) -> T.Union[TYPE_var, InterpreterObject]: + if method_name == 'contains': +- def check_contains(el: list) -> bool: ++ def check_contains(el: T.List[TYPE_var]) -> bool: + if len(posargs) != 1: + raise InterpreterException('Contains method takes exactly one argument.') + item = posargs[0] +@@ -795,7 +795,7 @@ The result of this is undefined and will become a hard error in a future Meson r + if element == item: + return True + return False +- return check_contains(obj) ++ return check_contains([_unholder(x) for x in obj]) + elif method_name == 'length': + return len(obj) + elif method_name == 'get': +diff --git a/test cases/common/56 array methods/a.txt b/test cases/common/56 array methods/a.txt +new file mode 100644 +index 000000000..e69de29bb +--- /dev/null ++++ b/test cases/common/56 array methods/a.txt +diff --git a/test cases/common/56 array methods/b.txt b/test cases/common/56 array methods/b.txt +new file mode 100644 +index 000000000..e69de29bb +--- /dev/null ++++ b/test cases/common/56 array methods/b.txt +diff --git a/test cases/common/56 array methods/c.txt b/test cases/common/56 array methods/c.txt +new file mode 100644 +index 000000000..e69de29bb +--- /dev/null ++++ b/test cases/common/56 array methods/c.txt +diff --git a/test cases/common/56 array methods/meson.build b/test cases/common/56 array methods/meson.build +index cdda41dbf..99855bce0 100644 +--- a/test cases/common/56 array methods/meson.build ++++ b/test cases/common/56 array methods/meson.build +@@ -5,6 +5,22 @@ one = ['abc'] + two = ['def', 'ghi'] + combined = [empty, one, two] + ++file_list = files('a.txt', 'b.txt') ++file_a = files('a.txt') ++file_c = files('c.txt') ++ ++if file_a[0] != file_list[0] ++ error('Files are not equal') ++endif ++ ++if not file_list.contains(file_a[0]) ++ error('Contains with ObjectHolder lists does not work') ++endif ++ ++if file_list.contains(file_c[0]) ++ error('Contains with ObjectHolder lists found non existant object') ++endif ++ + if empty.contains('abc') + error('Empty is not empty.') + endif +@@ -41,6 +57,14 @@ if not combined.contains('abc') + error('Combined claims not to contain abc.') + endif + ++if not combined.contains(one) ++ error('Combined claims not to contain [abc].') ++endif ++ ++if not combined.contains(two) ++ error('Combined claims not to contain [def, ghi].') ++endif ++ + if not combined.contains('ghi') + error('Combined claims not to contain ghi.') + endif +-- +2.32.0 + diff --git a/meson.spec b/meson.spec index 2efa113..e2a6a6e 100644 --- a/meson.spec +++ b/meson.spec @@ -7,12 +7,16 @@ Name: meson Version: 0.59.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: High productivity build system License: ASL 2.0 URL: https://mesonbuild.com/ Source: https://github.com/mesonbuild/meson/releases/download/%{version_no_tilde .}/meson-%{version_no_tilde %{quote:}}.tar.gz +# interperter: Fix list contains for Holders (fixes bolt test suite) +# https://github.com/mesonbuild/meson/pull/9027 +# https://bugzilla.redhat.com/show_bug.cgi?id=1994006 +Patch0: 0001-interpreter-Fix-list-contains-for-Holders-fixes-9020.patch BuildArch: noarch @@ -112,6 +116,9 @@ export MESON_PRINT_TEST_OUTPUT=1 %{_datadir}/polkit-1/actions/com.mesonbuild.install.policy %changelog +* Tue Aug 17 2021 Adam Williamson - 0.59.0-2 +- Backport PR #9027 to fix a bug that broke some test suites (#1994006) + * Fri Jul 23 2021 Marc-André Lureau - 0.59.0-1 - new version