From 08e3bf88a3a986f23661b2ee331a565254c9d1eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 13 Jun 2026 12:16:03 +0200 Subject: [PATCH 1/2] ansible: fix filter plugin for Ansible >=12 Closes: https://github.com/nodejs/build/issues/4157 --- ansible/plugins/filter/filters.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/ansible/plugins/filter/filters.py b/ansible/plugins/filter/filters.py index 26222e1b4..0f65a0f90 100644 --- a/ansible/plugins/filter/filters.py +++ b/ansible/plugins/filter/filters.py @@ -29,13 +29,11 @@ def match_key(value, dictionary, raise_error=True, feedback_name='os'): for key, val in dictionary.items(): - # yes, yes; we can lambda this but my old self in - # two years will cry having to understand - if type(val) is list: - for list_key in val: - if value.startswith(list_key): - return key - elif value.startswith(val): + if isinstance(val, str) and value.startswith(val): + return key + # `val` can be a simple list in Ansible <=11, + # or a `_AnsibleLazyTemplateList` in Ansible >=12. + if not isinstance(val, str) and value.startswith(tuple(val)): return key if raise_error: raise AnsibleFilterError( From 48a92e710c310c164b3c91c882acc6a62de355b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 13 Jun 2026 14:23:39 +0200 Subject: [PATCH 2/2] ansible: fix Jinja templates for ansible-core 2.19 Refs: https://docs.ansible.com/projects/ansible/latest/porting_guides/porting_guide_core_2.19.html#id22 --- ansible/roles/baselayout/tasks/main.yml | 16 ++++++++-------- ansible/roles/docker/tasks/main.yml | 6 +++--- ansible/roles/gn/tasks/partials/rhel8.yml | 6 +++--- .../roles/ninja-build/tasks/partials/rhel8.yml | 6 +++--- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/ansible/roles/baselayout/tasks/main.yml b/ansible/roles/baselayout/tasks/main.yml index 08f1d558f..30908fb9c 100644 --- a/ansible/roles/baselayout/tasks/main.yml +++ b/ansible/roles/baselayout/tasks/main.yml @@ -69,10 +69,10 @@ notify: package updated with_items: # ansible doesn't like empty lists - - "{{ packages[os+'_'+arch]|default('[]') }}" - - "{{ packages[os]|default('[]') }}" - - "{{ packages[os|stripversion]|default('[]') }}" - - "{{ common_packages|default('[]') }}" + - "{{ packages[os+'_'+arch]|default([]) }}" + - "{{ packages[os]|default([]) }}" + - "{{ packages[os|stripversion]|default([]) }}" + - "{{ common_packages|default([]) }}" # Currently does not work on the DTK for 11.0 - The unsupported warnings cause the task to fail - name: install packages (macos) @@ -83,10 +83,10 @@ loop_var: package with_items: # ansible doesn't like empty lists - - "{{ packages[os+'_'+arch]|default('[]') }}" - - "{{ packages[os]|default('[]') }}" - - "{{ packages[os|stripversion]|default('[]') }}" - - "{{ common_packages|default('[]') }}" + - "{{ packages[os+'_'+arch]|default([]) }}" + - "{{ packages[os]|default([]) }}" + - "{{ packages[os|stripversion]|default([]) }}" + - "{{ common_packages|default([]) }}" - name: ubuntu1604 | update package alternatives when: os == "ubuntu1604" diff --git a/ansible/roles/docker/tasks/main.yml b/ansible/roles/docker/tasks/main.yml index 071793131..c9992bd3a 100644 --- a/ansible/roles/docker/tasks/main.yml +++ b/ansible/roles/docker/tasks/main.yml @@ -36,9 +36,9 @@ loop_var: package with_items: # ansible doesn't like empty lists - - "{{ packages[os]|default('[]') }}" - - "{{ packages[os|stripversion]|default('[]') }}" - - "{{ common_packages|default('[]') }}" + - "{{ packages[os]|default([]) }}" + - "{{ packages[os|stripversion]|default([]) }}" + - "{{ common_packages|default([]) }}" - name: remove fortune from login shells when: os|stripversion == 'freebsd' diff --git a/ansible/roles/gn/tasks/partials/rhel8.yml b/ansible/roles/gn/tasks/partials/rhel8.yml index 5363dc5e6..990363fa0 100644 --- a/ansible/roles/gn/tasks/partials/rhel8.yml +++ b/ansible/roles/gn/tasks/partials/rhel8.yml @@ -11,6 +11,6 @@ notify: package updated with_items: # ansible doesn't like empty lists - - "{{ packages[os+'_'+arch]|default('[]') }}" - - "{{ packages[os]|default('[]') }}" - - "{{ packages[os|stripversion]|default('[]') }}" \ No newline at end of file + - "{{ packages[os+'_'+arch]|default([]) }}" + - "{{ packages[os]|default([]) }}" + - "{{ packages[os|stripversion]|default([]) }}" \ No newline at end of file diff --git a/ansible/roles/ninja-build/tasks/partials/rhel8.yml b/ansible/roles/ninja-build/tasks/partials/rhel8.yml index c3856bc66..ff808e4d9 100644 --- a/ansible/roles/ninja-build/tasks/partials/rhel8.yml +++ b/ansible/roles/ninja-build/tasks/partials/rhel8.yml @@ -11,6 +11,6 @@ notify: package updated with_items: # ansible doesn't like empty lists - - "{{ packages[os+'_'+arch]|default('[]') }}" - - "{{ packages[os]|default('[]') }}" - - "{{ packages[os|stripversion]|default('[]') }}" + - "{{ packages[os+'_'+arch]|default([]) }}" + - "{{ packages[os]|default([]) }}" + - "{{ packages[os|stripversion]|default([]) }}"