From: Bruce Ashfield <bruce.ashfield@gmail.com>
To: narpat.mali@windriver.com
Cc: meta-virtualization@lists.yoctoproject.org
Subject: Re: [meta-virtualization][kirkstone][PATCH 1/2] python3-ansible: Upgrade to 2.14.11
Date: Tue, 7 Nov 2023 01:47:07 +0000 [thread overview]
Message-ID: <ZUmXG4YZ38b/mxfE@gmail.com> (raw)
In-Reply-To: <20231106145106.2671320-2-narpat.mali@windriver.com> <20231106145106.2671320-1-narpat.mali@windriver.com>
merged.
Bruce
In message: [meta-virtualization][kirkstone][PATCH 1/2] python3-ansible: Upgrade to 2.14.11
on 06/11/2023 Narpat Mali via lists.yoctoproject.org wrote:
> From: Narpat Mali <narpat.mali@windriver.com>
>
> This upgrade incorporates the CVE-2023-5115 fix and other bug fixes.
> Release Notes:
> https://github.com/ansible/ansible/blob/v2.14.11/changelogs/CHANGELOG-v2.14.rst#v2-14-11
>
> Rebase the patch python3-ensure-py-scripts-use-py3-for-shebang.patch to new version.
> Reference upstream master commit:
> https://git.yoctoproject.org/meta-cloud-services/commit/?id=7ecb54163f6252cfbecfd9f7f363536c88dbb58a
>
> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
> Signed-off-by: Narpat Mali <narpat.mali@windriver.com>
> ---
> recipes-devtools/python/python-ansible.inc | 8 +-
> ...nsure-py-scripts-use-py3-for-shebang.patch | 1427 ++++++-----------
> ..._2.3.1.0.bb => python3-ansible_2.14.11.bb} | 0
> 3 files changed, 482 insertions(+), 953 deletions(-)
> rename recipes-devtools/python/{python3-ansible_2.3.1.0.bb => python3-ansible_2.14.11.bb} (100%)
>
> diff --git a/recipes-devtools/python/python-ansible.inc b/recipes-devtools/python/python-ansible.inc
> index 0bb663ae..c31d10ed 100644
> --- a/recipes-devtools/python/python-ansible.inc
> +++ b/recipes-devtools/python/python-ansible.inc
> @@ -6,13 +6,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
>
> SRCNAME = "ansible"
>
> -SRC_URI = "http://releases.ansible.com/ansible/${SRCNAME}-${PV}.tar.gz"
> +SRC_URI = "git://github.com/ansible/ansible.git;protocol=https;branch=stable-2.14"
>
> -SRC_URI[md5sum] = "b1be8f05864a07c06b8a767dcd48ba1b"
> -SRC_URI[sha256sum] = "cd4b8f53720fcd0c351156b840fdd15ecfbec22c951b5406ec503de49d40b9f5"
> +SRCREV = "dcdb718f7a4c03f174030db425eee2a551ab2698"
>
> -
> -S = "${WORKDIR}/${SRCNAME}-${PV}"
> +S = "${WORKDIR}/git"
>
> ANSIBLE_WHITELIST_MODULES ?= "commands files system network/ovs __pycache__ service"
>
> diff --git a/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch b/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch
> index e98eb46c..67142fc0 100644
> --- a/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch
> +++ b/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch
> @@ -1,799 +1,581 @@
> -From 66b824da2fadfd5760040be244f89fa8320df55b Mon Sep 17 00:00:00 2001
> +From 5f7c3d72eec080b2e1c34565babfd53528fc4770 Mon Sep 17 00:00:00 2001
> From: Mark Asselstine <mark.asselstine@windriver.com>
> -Date: Thu, 13 Jul 2017 14:11:46 -0400
> +Date: Thu, 11 May 2023 17:05:54 +0800
> Subject: [PATCH] python3: ensure py scripts use py3 for shebang
>
> +Upstream-Status: Pending
> +
> Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
> +
> +Rebase to 2.14.11
> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> +Signed-off-by: Narpat Mali <narpat.mali@windriver.com>
> ---
> - bin/ansible | 2 +-
> - bin/ansible-connection | 2 +-
> - bin/ansible-console | 2 +-
> - bin/ansible-doc | 2 +-
> - bin/ansible-galaxy | 2 +-
> - bin/ansible-playbook | 2 +-
> - bin/ansible-pull | 2 +-
> - bin/ansible-vault | 2 +-
> - contrib/inventory/abiquo.py | 2 +-
> - contrib/inventory/apache-libcloud.py | 2 +-
> - contrib/inventory/apstra_aos.py | 2 +-
> - contrib/inventory/azure_rm.py | 2 +-
> - contrib/inventory/brook.py | 2 +-
> - contrib/inventory/cloudforms.py | 2 +-
> - contrib/inventory/cloudstack.py | 2 +-
> - contrib/inventory/cobbler.py | 2 +-
> - contrib/inventory/collins.py | 2 +-
> - contrib/inventory/consul_io.py | 2 +-
> - contrib/inventory/digital_ocean.py | 2 +-
> - contrib/inventory/docker.py | 2 +-
> - contrib/inventory/ec2.py | 2 +-
> - contrib/inventory/fleet.py | 2 +-
> - contrib/inventory/foreman.py | 2 +-
> - contrib/inventory/freeipa.py | 2 +-
> - contrib/inventory/gce.py | 2 +-
> - contrib/inventory/jail.py | 2 +-
> - contrib/inventory/landscape.py | 2 +-
> - contrib/inventory/libvirt_lxc.py | 2 +-
> - contrib/inventory/linode.py | 2 +-
> - contrib/inventory/lxc_inventory.py | 2 +-
> - contrib/inventory/mdt_dynamic_inventory.py | 2 +-
> - contrib/inventory/nagios_livestatus.py | 2 +-
> - contrib/inventory/nagios_ndo.py | 2 +-
> - contrib/inventory/nova.py | 2 +-
> - contrib/inventory/nsot.py | 2 +-
> - contrib/inventory/openshift.py | 2 +-
> - contrib/inventory/openstack.py | 2 +-
> - contrib/inventory/openvz.py | 2 +-
> - contrib/inventory/ovirt.py | 2 +-
> - contrib/inventory/ovirt4.py | 2 +-
> - contrib/inventory/packet_net.py | 2 +-
> - contrib/inventory/proxmox.py | 2 +-
> - contrib/inventory/rackhd.py | 2 +-
> - contrib/inventory/rax.py | 2 +-
> - contrib/inventory/rhv.py | 2 +-
> - contrib/inventory/rudder.py | 2 +-
> - contrib/inventory/serf.py | 2 +-
> - contrib/inventory/softlayer.py | 2 +-
> - contrib/inventory/spacewalk.py | 2 +-
> - contrib/inventory/ssh_config.py | 2 +-
> - contrib/inventory/stacki.py | 2 +-
> - contrib/inventory/vagrant.py | 2 +-
> - contrib/inventory/vbox.py | 2 +-
> - contrib/inventory/vmware.py | 2 +-
> - contrib/inventory/vmware_inventory.py | 2 +-
> - contrib/inventory/windows_azure.py | 2 +-
> - contrib/inventory/zabbix.py | 2 +-
> - contrib/inventory/zone.py | 2 +-
> - docs/docsite/rst/dev_guide/developing_api.rst | 2 +-
> - hacking/dump_playbook_attributes.py | 2 +-
> - hacking/module_formatter.py | 2 +-
> - lib/ansible/modules/web_infrastructure/django_manage.py | 2 +-
> - lib/ansible/modules/windows/win_file_version.py | 2 +-
> - lib/ansible/modules/windows/win_firewall_rule.py | 2 +-
> - test/compile/compile.py | 2 +-
> - test/integration/cleanup_rax.py | 2 +-
> - .../targets/embedded_module/library/test_integration_module | 2 +-
> - test/integration/targets/module_utils/module_utils/foo.py | 2 +-
> - test/integration/targets/module_utils/module_utils/sub/bam.py | 2 +-
> - test/integration/targets/module_utils/module_utils/sub/bam/bam.py | 2 +-
> - test/integration/targets/module_utils/module_utils/sub/bar/bam.py | 2 +-
> - test/integration/targets/module_utils/module_utils/sub/bar/bar.py | 2 +-
> - test/integration/targets/service/files/ansible_test_service | 2 +-
> - test/runner/ansible-test | 2 +-
> - test/runner/injector/ansible | 2 +-
> - test/runner/injector/ansible-console | 2 +-
> - test/runner/injector/ansible-doc | 2 +-
> - test/runner/injector/ansible-galaxy | 2 +-
> - test/runner/injector/ansible-playbook | 2 +-
> - test/runner/injector/ansible-pull | 2 +-
> - test/runner/injector/ansible-vault | 2 +-
> - test/runner/injector/cover | 2 +-
> - test/runner/injector/cover2 | 2 +-
> - test/runner/injector/cover2.4 | 2 +-
> - test/runner/injector/cover2.6 | 2 +-
> - test/runner/injector/cover2.7 | 2 +-
> - test/runner/injector/cover3 | 2 +-
> - test/runner/injector/cover3.5 | 2 +-
> - test/runner/injector/cover3.6 | 2 +-
> - test/runner/injector/injector.py | 2 +-
> - test/runner/injector/pytest | 2 +-
> - test/runner/injector/runner | 2 +-
> - test/runner/injector/runner2 | 2 +-
> - test/runner/injector/runner2.4 | 2 +-
> - test/runner/injector/runner2.6 | 2 +-
> - test/runner/injector/runner2.7 | 2 +-
> - test/runner/injector/runner3 | 2 +-
> - test/runner/injector/runner3.5 | 2 +-
> - test/runner/injector/runner3.6 | 2 +-
> - test/runner/retry.py | 2 +-
> - test/runner/test.py | 2 +-
> - test/sanity/code-smell/ansible-var-precedence-check.py | 2 +-
> - test/sanity/code-smell/integration-aliases.py | 2 +-
> - test/sanity/code-smell/shebang.sh | 4 ++--
> - test/sanity/validate-modules/test_validate_modules_regex.py | 2 +-
> - test/sanity/validate-modules/validate-modules | 2 +-
> - test/units/executor/module_common/test_module_common.py | 4 ++--
> - test/units/modules/network/nxos/test_nxos_config.py | 2 +-
> - test/utils/shippable/ansible-core-ci | 2 +-
> - test/utils/shippable/download.py | 2 +-
> - 121 files changed, 123 insertions(+), 123 deletions(-)
> + .azure-pipelines/scripts/combine-coverage.py | 2 +-
> + .azure-pipelines/scripts/publish-codecov.py | 2 +-
> + .azure-pipelines/scripts/time-command.py | 2 +-
> + hacking/ansible-profile | 2 +-
> + hacking/azp/download.py | 2 +-
> + hacking/azp/get_recent_coverage_runs.py | 2 +-
> + hacking/azp/incidental.py | 2 +-
> + hacking/azp/run.py | 2 +-
> + hacking/backport/backport_of_line_adder.py | 2 +-
> + hacking/create_deprecation_bug_reports.py | 2 +-
> + hacking/fix_test_syntax.py | 2 +-
> + hacking/get_library.py | 2 +-
> + hacking/report.py | 2 +-
> + hacking/return_skeleton_generator.py | 2 +-
> + hacking/test-module.py | 2 +-
> + hacking/tests/gen_distribution_version_testcase.py | 2 +-
> + hacking/update-sanity-requirements.py | 2 +-
> + lib/ansible/cli/adhoc.py | 2 +-
> + lib/ansible/cli/config.py | 2 +-
> + lib/ansible/cli/console.py | 2 +-
> + lib/ansible/cli/doc.py | 2 +-
> + lib/ansible/cli/galaxy.py | 2 +-
> + lib/ansible/cli/inventory.py | 2 +-
> + lib/ansible/cli/playbook.py | 2 +-
> + lib/ansible/cli/pull.py | 2 +-
> + lib/ansible/cli/scripts/ansible_connection_cli_stub.py | 2 +-
> + lib/ansible/cli/vault.py | 2 +-
> + packaging/cli-doc/build.py | 2 +-
> + packaging/release.py | 2 +-
> + .../targets/ansible-galaxy-collection/files/build_bad_tar.py | 2 +-
> + .../targets/ansible-galaxy-role/files/create-role-archive.py | 2 +-
> + test/integration/targets/ansible-test-container/runme.py | 2 +-
> + .../targets/ansible-test-integration-targets/test.py | 2 +-
> + .../ansible_collections/ns/col/run-with-pty.py | 2 +-
> + .../ns/col/tests/integration/targets/no-tty/assert-no-tty.py | 2 +-
> + .../ansible_collections/ns/col/scripts/env_python.py | 2 +-
> + .../ns/col/tests/integration/targets/valid/env_python.py | 2 +-
> + test/integration/targets/ansible-test/venv-pythons.py | 2 +-
> + test/integration/targets/ansible-vault/faux-editor.py | 2 +-
> + test/integration/targets/ansible-vault/password-script.py | 2 +-
> + test/integration/targets/ansible-vault/test-vault-client.py | 2 +-
> + .../targets/builtin_vars_prompt/test-vars_prompt.py | 2 +-
> + test/integration/targets/cli/test-cli.py | 2 +-
> + test/integration/targets/cli/test_k_and_K.py | 2 +-
> + test/integration/targets/collection/update-ignore.py | 2 +-
> + test/integration/targets/debugger/test_run_once.py | 2 +-
> + test/integration/targets/fork_safe_stdio/run-with-pty.py | 2 +-
> + test/integration/targets/gathering/uuid.fact | 2 +-
> + test/integration/targets/gathering_facts/uuid.fact | 2 +-
> + test/integration/targets/group/files/gidget.py | 2 +-
> + test/integration/targets/module_utils/module_utils/foo.py | 2 +-
> + test/integration/targets/module_utils/module_utils/sub/bam.py | 2 +-
> + .../targets/module_utils/module_utils/sub/bam/bam.py | 2 +-
> + .../targets/module_utils/module_utils/sub/bar/bam.py | 2 +-
> + .../targets/module_utils/module_utils/sub/bar/bar.py | 2 +-
> + test/integration/targets/packaging_cli-doc/verify.py | 2 +-
> + test/integration/targets/pause/test-pause.py | 2 +-
> + test/integration/targets/pip/files/setup.py | 2 +-
> + .../integration/targets/service/files/ansible_test_service.py | 2 +-
> + .../targets/service_facts/files/ansible_test_service.py | 2 +-
> + .../targets/template/role_filter/filter_plugins/myplugin.py | 2 +-
> + test/integration/targets/throttle/test_throttle.py | 2 +-
> + .../targets/var_precedence/ansible-var-precedence-check.py | 2 +-
> + test/lib/ansible_test/_internal/util_common.py | 2 +-
> + .../_util/controller/sanity/code-smell/shebang.py | 4 ++--
> + .../ansible_test/_util/target/cli/ansible_test_cli_stub.py | 2 +-
> + test/units/executor/module_common/test_module_common.py | 4 ++--
> + 67 files changed, 69 insertions(+), 69 deletions(-)
>
> -diff --git a/bin/ansible b/bin/ansible
> -index 24550b9..0587499 100755
> ---- a/bin/ansible
> -+++ b/bin/ansible
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> -
> - # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> - #
> -diff --git a/bin/ansible-connection b/bin/ansible-connection
> -index 93d787e..f0b9aa3 100755
> ---- a/bin/ansible-connection
> -+++ b/bin/ansible-connection
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> -
> - # (c) 2016, Ansible, Inc. <support@ansible.com>
> - #
> -diff --git a/bin/ansible-console b/bin/ansible-console
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-console
> -+++ b/bin/ansible-console
> +diff --git a/.azure-pipelines/scripts/combine-coverage.py b/.azure-pipelines/scripts/combine-coverage.py
> +index 506ade6460..15bee40234 100755
> +--- a/.azure-pipelines/scripts/combine-coverage.py
> ++++ b/.azure-pipelines/scripts/combine-coverage.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> - #
> -diff --git a/bin/ansible-doc b/bin/ansible-doc
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-doc
> -+++ b/bin/ansible-doc
> + """
> + Combine coverage data from multiple jobs, keeping the data only from the most recent attempt from each job.
> + Coverage artifacts must be named using the format: "Coverage $(System.JobAttempt) {StableUniqueNameForEachJob}"
> +diff --git a/.azure-pipelines/scripts/publish-codecov.py b/.azure-pipelines/scripts/publish-codecov.py
> +index f2bc4b84b3..01ad32f494 100755
> +--- a/.azure-pipelines/scripts/publish-codecov.py
> ++++ b/.azure-pipelines/scripts/publish-codecov.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> - #
> -diff --git a/bin/ansible-galaxy b/bin/ansible-galaxy
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-galaxy
> -+++ b/bin/ansible-galaxy
> + """
> + Upload code coverage reports to codecov.io.
> + Multiple coverage files from multiple languages are accepted and aggregated after upload.
> +diff --git a/.azure-pipelines/scripts/time-command.py b/.azure-pipelines/scripts/time-command.py
> +index 5e8eb8d4c8..5450c48900 100755
> +--- a/.azure-pipelines/scripts/time-command.py
> ++++ b/.azure-pipelines/scripts/time-command.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + """Prepends a relative timestamp to each input line from stdin and writes it to stdout."""
>
> - # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> - #
> -diff --git a/bin/ansible-playbook b/bin/ansible-playbook
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-playbook
> -+++ b/bin/ansible-playbook
> + from __future__ import (absolute_import, division, print_function)
> +diff --git a/hacking/ansible-profile b/hacking/ansible-profile
> +index 6612402da6..d67526a161 100755
> +--- a/hacking/ansible-profile
> ++++ b/hacking/ansible-profile
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + from __future__ import (absolute_import, division, print_function)
> + __metaclass__ = type
>
> - # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> - #
> -diff --git a/bin/ansible-pull b/bin/ansible-pull
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-pull
> -+++ b/bin/ansible-pull
> +diff --git a/hacking/azp/download.py b/hacking/azp/download.py
> +index 117e9da5b7..89466cb17b 100755
> +--- a/hacking/azp/download.py
> ++++ b/hacking/azp/download.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # PYTHON_ARGCOMPLETE_OK
>
> - # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> - #
> -diff --git a/bin/ansible-vault b/bin/ansible-vault
> -index 24550b9..0587499 100755
> ---- a/bin/ansible-vault
> -+++ b/bin/ansible-vault
> + # (c) 2016 Red Hat, Inc.
> +diff --git a/hacking/azp/get_recent_coverage_runs.py b/hacking/azp/get_recent_coverage_runs.py
> +index 25e2fa8120..9b0d9b972e 100755
> +--- a/hacking/azp/get_recent_coverage_runs.py
> ++++ b/hacking/azp/get_recent_coverage_runs.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> + # (c) 2020 Red Hat, Inc.
> #
> -diff --git a/contrib/inventory/abiquo.py b/contrib/inventory/abiquo.py
> -index 405bbbb..d318949 100755
> ---- a/contrib/inventory/abiquo.py
> -+++ b/contrib/inventory/abiquo.py
> +diff --git a/hacking/azp/incidental.py b/hacking/azp/incidental.py
> +index 87d4d213c9..7660e2ed22 100755
> +--- a/hacking/azp/incidental.py
> ++++ b/hacking/azp/incidental.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - # -*- coding: utf-8 -*-
> + # PYTHON_ARGCOMPLETE_OK
>
> - '''
> -diff --git a/contrib/inventory/apache-libcloud.py b/contrib/inventory/apache-libcloud.py
> -index 0120d2b..ce92843 100755
> ---- a/contrib/inventory/apache-libcloud.py
> -+++ b/contrib/inventory/apache-libcloud.py
> + # (c) 2020 Red Hat, Inc.
> +diff --git a/hacking/azp/run.py b/hacking/azp/run.py
> +index 00a177944f..591e6bcc4f 100755
> +--- a/hacking/azp/run.py
> ++++ b/hacking/azp/run.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # PYTHON_ARGCOMPLETE_OK
>
> - # (c) 2013, Sebastien Goasguen <runseb@gmail.com>
> - #
> -diff --git a/contrib/inventory/apstra_aos.py b/contrib/inventory/apstra_aos.py
> -index 65838c0..48d293e 100755
> ---- a/contrib/inventory/apstra_aos.py
> -+++ b/contrib/inventory/apstra_aos.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - #
> - # (c) 2017 Apstra Inc, <community@apstra.com>
> - #
> -diff --git a/contrib/inventory/azure_rm.py b/contrib/inventory/azure_rm.py
> -index 73b8b95..87b31b0 100755
> ---- a/contrib/inventory/azure_rm.py
> -+++ b/contrib/inventory/azure_rm.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - #
> - # Copyright (c) 2016 Matt Davis, <mdavis@ansible.com>
> - # Chris Houseknecht, <house@redhat.com>
> -diff --git a/contrib/inventory/brook.py b/contrib/inventory/brook.py
> -index a7d4741..e4de982 100755
> ---- a/contrib/inventory/brook.py
> -+++ b/contrib/inventory/brook.py
> + # (c) 2016 Red Hat, Inc.
> +diff --git a/hacking/backport/backport_of_line_adder.py b/hacking/backport/backport_of_line_adder.py
> +index ef77ddcf40..bbec15de6a 100755
> +--- a/hacking/backport/backport_of_line_adder.py
> ++++ b/hacking/backport/backport_of_line_adder.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - # Copyright 2016 Doalitic.
> + # (c) 2020, Red Hat, Inc. <relrod@redhat.com>
> #
> # This file is part of Ansible
> -diff --git a/contrib/inventory/cloudforms.py b/contrib/inventory/cloudforms.py
> -index 69c149b..202a6c9 100755
> ---- a/contrib/inventory/cloudforms.py
> -+++ b/contrib/inventory/cloudforms.py
> +diff --git a/hacking/create_deprecation_bug_reports.py b/hacking/create_deprecation_bug_reports.py
> +index e14df4be38..e6b9b9025c 100755
> +--- a/hacking/create_deprecation_bug_reports.py
> ++++ b/hacking/create_deprecation_bug_reports.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - # vim: set fileencoding=utf-8 :
> - #
> - # Copyright (C) 2016 Guido G�nther <agx@sigxcpu.org>
> -diff --git a/contrib/inventory/cloudstack.py b/contrib/inventory/cloudstack.py
> -index a9b6b9f..d7f05ff 100755
> ---- a/contrib/inventory/cloudstack.py
> -+++ b/contrib/inventory/cloudstack.py
> + # PYTHON_ARGCOMPLETE_OK
> + """Create GitHub issues for deprecated features."""
> +
> +diff --git a/hacking/fix_test_syntax.py b/hacking/fix_test_syntax.py
> +index 7178033406..78d87ef71c 100755
> +--- a/hacking/fix_test_syntax.py
> ++++ b/hacking/fix_test_syntax.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> # -*- coding: utf-8 -*-
> + # (c) 2017, Matt Martz <matt@sivel.net>
> #
> - # (c) 2015, Ren� Moser <mail@renemoser.net>
> -diff --git a/contrib/inventory/cobbler.py b/contrib/inventory/cobbler.py
> -index 89f9bf7..f2a9ff7 100755
> ---- a/contrib/inventory/cobbler.py
> -+++ b/contrib/inventory/cobbler.py
> +diff --git a/hacking/get_library.py b/hacking/get_library.py
> +index 23bf4a39bb..9346784398 100755
> +--- a/hacking/get_library.py
> ++++ b/hacking/get_library.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - """
> - Cobbler external inventory script
> -diff --git a/contrib/inventory/collins.py b/contrib/inventory/collins.py
> -index b7193e2..f0bc2a1 100755
> ---- a/contrib/inventory/collins.py
> -+++ b/contrib/inventory/collins.py
> + # (c) 2014, Will Thames <will@thames.id.au>
> + #
> +diff --git a/hacking/report.py b/hacking/report.py
> +index 58b3a6b915..78eed516dc 100755
> +--- a/hacking/report.py
> ++++ b/hacking/report.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # PYTHON_ARGCOMPLETE_OK
> + """A tool to aggregate data about Ansible source and testing into a sqlite DB for reporting."""
>
> - """
> - Collins external inventory script
> -diff --git a/contrib/inventory/consul_io.py b/contrib/inventory/consul_io.py
> -index 8106097..2cdc523 100755
> ---- a/contrib/inventory/consul_io.py
> -+++ b/contrib/inventory/consul_io.py
> +diff --git a/hacking/return_skeleton_generator.py b/hacking/return_skeleton_generator.py
> +index 7002b7899d..cff03c38e6 100755
> +--- a/hacking/return_skeleton_generator.py
> ++++ b/hacking/return_skeleton_generator.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> + # (c) 2017, Will Thames <will@thames.id.au>
> #
> - # (c) 2015, Steve Gargan <steve.gargan@gmail.com>
> -diff --git a/contrib/inventory/digital_ocean.py b/contrib/inventory/digital_ocean.py
> -index 07c124b..0b0e587 100755
> ---- a/contrib/inventory/digital_ocean.py
> -+++ b/contrib/inventory/digital_ocean.py
> +diff --git a/hacking/test-module.py b/hacking/test-module.py
> +index 54343e07e8..38d4b8c60b 100755
> +--- a/hacking/test-module.py
> ++++ b/hacking/test-module.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - '''
> - DigitalOcean external inventory script
> -diff --git a/contrib/inventory/docker.py b/contrib/inventory/docker.py
> -index da051dd..9b88d0c 100755
> ---- a/contrib/inventory/docker.py
> -+++ b/contrib/inventory/docker.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> + # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> #
> - # (c) 2016 Paul Durivage <paul.durivage@gmail.com>
> - # Chris Houseknecht <house@redhat.com>
> -diff --git a/contrib/inventory/ec2.py b/contrib/inventory/ec2.py
> -index 03b9820..9c9b2e4 100755
> ---- a/contrib/inventory/ec2.py
> -+++ b/contrib/inventory/ec2.py
> +diff --git a/hacking/tests/gen_distribution_version_testcase.py b/hacking/tests/gen_distribution_version_testcase.py
> +index 2fc5a2f932..18e67d7d12 100755
> +--- a/hacking/tests/gen_distribution_version_testcase.py
> ++++ b/hacking/tests/gen_distribution_version_testcase.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - '''
> - EC2 external inventory script
> -diff --git a/contrib/inventory/fleet.py b/contrib/inventory/fleet.py
> -index 4db4ea1..8790f2b 100755
> ---- a/contrib/inventory/fleet.py
> -+++ b/contrib/inventory/fleet.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> """
> - fleetctl base external inventory script. Automatically finds the IPs of the booted coreos instances and
> - returns it under the host group 'coreos'
> -diff --git a/contrib/inventory/foreman.py b/contrib/inventory/foreman.py
> -index 9a87397..2483cce 100755
> ---- a/contrib/inventory/foreman.py
> -+++ b/contrib/inventory/foreman.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # vim: set fileencoding=utf-8 :
> - #
> - # Copyright (C) 2016 Guido G�nther <agx@sigxcpu.org>,
> -diff --git a/contrib/inventory/freeipa.py b/contrib/inventory/freeipa.py
> -index a72b774..1f092b2 100755
> ---- a/contrib/inventory/freeipa.py
> -+++ b/contrib/inventory/freeipa.py
> + This script generated test_cases for test_distribution_version.py.
> +diff --git a/hacking/update-sanity-requirements.py b/hacking/update-sanity-requirements.py
> +index 997d6dbf87..16a47f0f3c 100755
> +--- a/hacking/update-sanity-requirements.py
> ++++ b/hacking/update-sanity-requirements.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # PYTHON_ARGCOMPLETE_OK
> + """Generate frozen sanity test requirements from source requirements files."""
>
> - import argparse
> - from ipalib import api
> -diff --git a/contrib/inventory/gce.py b/contrib/inventory/gce.py
> -index 5c58146..7616843 100755
> ---- a/contrib/inventory/gce.py
> -+++ b/contrib/inventory/gce.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # Copyright 2013 Google Inc.
> - #
> - # This file is part of Ansible
> -diff --git a/contrib/inventory/jail.py b/contrib/inventory/jail.py
> -index 98b6acf..b12289c 100755
> ---- a/contrib/inventory/jail.py
> -+++ b/contrib/inventory/jail.py
> +diff --git a/lib/ansible/cli/adhoc.py b/lib/ansible/cli/adhoc.py
> +index e90b44ce10..120948c749 100755
> +--- a/lib/ansible/cli/adhoc.py
> ++++ b/lib/ansible/cli/adhoc.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2013, Michael Scherer <misc@zarb.org>
> - #
> -diff --git a/contrib/inventory/landscape.py b/contrib/inventory/landscape.py
> -index 4b53171..7f52639 100755
> ---- a/contrib/inventory/landscape.py
> -+++ b/contrib/inventory/landscape.py
> + # Copyright: (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> + # Copyright: (c) 2018, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> +diff --git a/lib/ansible/cli/config.py b/lib/ansible/cli/config.py
> +index c8d99ea09c..987700e11d 100755
> +--- a/lib/ansible/cli/config.py
> ++++ b/lib/ansible/cli/config.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2015, Marc Abramowitz <marca@surveymonkey.com>
> - #
> -diff --git a/contrib/inventory/libvirt_lxc.py b/contrib/inventory/libvirt_lxc.py
> -index 35ccf40..ba3496d 100755
> ---- a/contrib/inventory/libvirt_lxc.py
> -+++ b/contrib/inventory/libvirt_lxc.py
> + # Copyright: (c) 2017, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> + # PYTHON_ARGCOMPLETE_OK
> +diff --git a/lib/ansible/cli/console.py b/lib/ansible/cli/console.py
> +index 3125cc47a7..4a2f38bb48 100755
> +--- a/lib/ansible/cli/console.py
> ++++ b/lib/ansible/cli/console.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2013, Michael Scherer <misc@zarb.org>
> - #
> -diff --git a/contrib/inventory/linode.py b/contrib/inventory/linode.py
> -index 6fd922f..cab7a70 100755
> ---- a/contrib/inventory/linode.py
> -+++ b/contrib/inventory/linode.py
> + # Copyright: (c) 2014, Nandor Sivok <dominis@haxor.hu>
> + # Copyright: (c) 2016, Redhat Inc
> + # Copyright: (c) 2018, Ansible Project
> +diff --git a/lib/ansible/cli/doc.py b/lib/ansible/cli/doc.py
> +index 9f560bcbc6..a0d34d92f6 100755
> +--- a/lib/ansible/cli/doc.py
> ++++ b/lib/ansible/cli/doc.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - '''
> - Linode external inventory script
> -diff --git a/contrib/inventory/lxc_inventory.py b/contrib/inventory/lxc_inventory.py
> -index d82bb61..f7ac67c 100755
> ---- a/contrib/inventory/lxc_inventory.py
> -+++ b/contrib/inventory/lxc_inventory.py
> + # Copyright: (c) 2014, James Tanner <tanner.jc@gmail.com>
> + # Copyright: (c) 2018, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> +diff --git a/lib/ansible/cli/galaxy.py b/lib/ansible/cli/galaxy.py
> +index 536964e28f..8053119bb6 100755
> +--- a/lib/ansible/cli/galaxy.py
> ++++ b/lib/ansible/cli/galaxy.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - #
> - # (c) 2015-16 Florian Haas, hastexo Professional Services GmbH
> - # <florian@hastexo.com>
> -diff --git a/contrib/inventory/mdt_dynamic_inventory.py b/contrib/inventory/mdt_dynamic_inventory.py
> -index 89ecc3e..5540a41 100755
> ---- a/contrib/inventory/mdt_dynamic_inventory.py
> -+++ b/contrib/inventory/mdt_dynamic_inventory.py
> + # Copyright: (c) 2013, James Cammarata <jcammarata@ansible.com>
> + # Copyright: (c) 2018-2021, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> +diff --git a/lib/ansible/cli/inventory.py b/lib/ansible/cli/inventory.py
> +index 56c370ccf8..085ccda0fd 100755
> +--- a/lib/ansible/cli/inventory.py
> ++++ b/lib/ansible/cli/inventory.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2016, Julian Barnett <jbarnett@tableau.com>
> - #
> -diff --git a/contrib/inventory/nagios_livestatus.py b/contrib/inventory/nagios_livestatus.py
> -index e1c145e..3e250cb 100755
> ---- a/contrib/inventory/nagios_livestatus.py
> -+++ b/contrib/inventory/nagios_livestatus.py
> + # Copyright: (c) 2017, Brian Coca <bcoca@ansible.com>
> + # Copyright: (c) 2018, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> +diff --git a/lib/ansible/cli/playbook.py b/lib/ansible/cli/playbook.py
> +index 9c091a675a..27ff7d442e 100755
> +--- a/lib/ansible/cli/playbook.py
> ++++ b/lib/ansible/cli/playbook.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2015, Yannig Perre <yannig.perre@gmail.com>
> - #
> -diff --git a/contrib/inventory/nagios_ndo.py b/contrib/inventory/nagios_ndo.py
> -index 49ec563..cc10a51 100755
> ---- a/contrib/inventory/nagios_ndo.py
> -+++ b/contrib/inventory/nagios_ndo.py
> + # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> + # Copyright: (c) 2018, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> +diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py
> +index dc8f055b44..0e5b030eec 100755
> +--- a/lib/ansible/cli/pull.py
> ++++ b/lib/ansible/cli/pull.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2014, Jonathan Lestrelin <jonathan.lestrelin@gmail.com>
> - #
> -diff --git a/contrib/inventory/nova.py b/contrib/inventory/nova.py
> -index f8c1617..d0ad7f0 100755
> ---- a/contrib/inventory/nova.py
> -+++ b/contrib/inventory/nova.py
> + # Copyright: (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
> + # Copyright: (c) 2018, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> +diff --git a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
> +index 9109137e7f..f01b1ec58d 100755
> +--- a/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
> ++++ b/lib/ansible/cli/scripts/ansible_connection_cli_stub.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # (c) 2012, Marco Vito Moscaritolo <marco@agavee.com>
> - #
> -diff --git a/contrib/inventory/nsot.py b/contrib/inventory/nsot.py
> -index 62be85a..0a8dc9b 100755
> ---- a/contrib/inventory/nsot.py
> -+++ b/contrib/inventory/nsot.py
> + # Copyright: (c) 2017, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> + from __future__ import (absolute_import, division, print_function)
> +diff --git a/lib/ansible/cli/vault.py b/lib/ansible/cli/vault.py
> +index 3e60329de6..6949940747 100755
> +--- a/lib/ansible/cli/vault.py
> ++++ b/lib/ansible/cli/vault.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - '''
> - nsot
> -diff --git a/contrib/inventory/openshift.py b/contrib/inventory/openshift.py
> -index 479b808..dc398b5 100755
> ---- a/contrib/inventory/openshift.py
> -+++ b/contrib/inventory/openshift.py
> + # (c) 2014, James Tanner <tanner.jc@gmail.com>
> + # Copyright: (c) 2018, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> +diff --git a/packaging/cli-doc/build.py b/packaging/cli-doc/build.py
> +index 878ba8eabf..64a614f3f7 100755
> +--- a/packaging/cli-doc/build.py
> ++++ b/packaging/cli-doc/build.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # PYTHON_ARGCOMPLETE_OK
> + """Build documentation for ansible-core CLI programs."""
>
> - # (c) 2013, Michael Scherer <misc@zarb.org>
> - #
> -diff --git a/contrib/inventory/openstack.py b/contrib/inventory/openstack.py
> -index 6679a2c..eb38742 100755
> ---- a/contrib/inventory/openstack.py
> -+++ b/contrib/inventory/openstack.py
> +diff --git a/packaging/release.py b/packaging/release.py
> +index 97c58a7424..fa5a27f794 100755
> +--- a/packaging/release.py
> ++++ b/packaging/release.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # PYTHON_ARGCOMPLETE_OK
> + """Manage upstream ansible-core releases."""
>
> - # Copyright (c) 2012, Marco Vito Moscaritolo <marco@agavee.com>
> - # Copyright (c) 2013, Jesse Keating <jesse.keating@rackspace.com>
> -diff --git a/contrib/inventory/openvz.py b/contrib/inventory/openvz.py
> -index 1ef8ab1..d4dfcde 100755
> ---- a/contrib/inventory/openvz.py
> -+++ b/contrib/inventory/openvz.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # -*- coding: utf-8 -*-
> - #
> - # openvz.py
> -diff --git a/contrib/inventory/ovirt.py b/contrib/inventory/ovirt.py
> -index 7f505d9..ada01fa 100755
> ---- a/contrib/inventory/ovirt.py
> -+++ b/contrib/inventory/ovirt.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # Copyright 2015 IIX Inc.
> - #
> - # This file is part of Ansible
> -diff --git a/contrib/inventory/ovirt4.py b/contrib/inventory/ovirt4.py
> -index 5ee5986..9d9e940 100755
> ---- a/contrib/inventory/ovirt4.py
> -+++ b/contrib/inventory/ovirt4.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # -*- coding: utf-8 -*-
> - #
> - # Copyright (c) 2016 Red Hat, Inc.
> -diff --git a/contrib/inventory/packet_net.py b/contrib/inventory/packet_net.py
> -index c40c821..d23eba1 100755
> ---- a/contrib/inventory/packet_net.py
> -+++ b/contrib/inventory/packet_net.py
> +diff --git a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
> +index 6182e865db..5829df52b5 100644
> +--- a/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
> ++++ b/test/integration/targets/ansible-galaxy-collection/files/build_bad_tar.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - '''
> - Packet.net external inventory script
> -diff --git a/contrib/inventory/proxmox.py b/contrib/inventory/proxmox.py
> -index c0ffb0b..ef7a394 100755
> ---- a/contrib/inventory/proxmox.py
> -+++ b/contrib/inventory/proxmox.py
> + # Copyright: (c) 2020, Ansible Project
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
> +diff --git a/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py b/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py
> +index cfd908c17b..3319084473 100755
> +--- a/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py
> ++++ b/test/integration/targets/ansible-galaxy-role/files/create-role-archive.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + """Create a role archive which overwrites an arbitrary file."""
>
> - # Copyright (C) 2014 Mathieu GAUTHIER-LAFAYE <gauthierl@lapth.cnrs.fr>
> - #
> -diff --git a/contrib/inventory/rackhd.py b/contrib/inventory/rackhd.py
> -index a89cb04..05b3ada 100755
> ---- a/contrib/inventory/rackhd.py
> -+++ b/contrib/inventory/rackhd.py
> + import argparse
> +diff --git a/test/integration/targets/ansible-test-container/runme.py b/test/integration/targets/ansible-test-container/runme.py
> +index 687128056f..bd7f367165 100755
> +--- a/test/integration/targets/ansible-test-container/runme.py
> ++++ b/test/integration/targets/ansible-test-container/runme.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + """Test suite used to verify ansible-test is able to run its containers on various container hosts."""
>
> - import json
> - import requests
> -diff --git a/contrib/inventory/rax.py b/contrib/inventory/rax.py
> -index d20a8ab..6c34753 100755
> ---- a/contrib/inventory/rax.py
> -+++ b/contrib/inventory/rax.py
> + from __future__ import annotations
> +diff --git a/test/integration/targets/ansible-test-integration-targets/test.py b/test/integration/targets/ansible-test-integration-targets/test.py
> +index 8effb647fc..4e34c4bbc1 100755
> +--- a/test/integration/targets/ansible-test-integration-targets/test.py
> ++++ b/test/integration/targets/ansible-test-integration-targets/test.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - # (c) 2013, Jesse Keating <jesse.keating@rackspace.com,
> - # Paul Durivage <paul.durivage@rackspace.com>,
> -diff --git a/contrib/inventory/rhv.py b/contrib/inventory/rhv.py
> -index 5ee5986..9d9e940 100755
> ---- a/contrib/inventory/rhv.py
> -+++ b/contrib/inventory/rhv.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # -*- coding: utf-8 -*-
> - #
> - # Copyright (c) 2016 Red Hat, Inc.
> -diff --git a/contrib/inventory/rudder.py b/contrib/inventory/rudder.py
> -index 5cf16c9..a669c37 100755
> ---- a/contrib/inventory/rudder.py
> -+++ b/contrib/inventory/rudder.py
> + import subprocess
> + import unittest
> +diff --git a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
> +index 463915284b..fc2ed398d9 100755
> +--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
> ++++ b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/run-with-pty.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + """Run a command using a PTY."""
>
> - # Copyright (c) 2015, Normation SAS
> - #
> -diff --git a/contrib/inventory/serf.py b/contrib/inventory/serf.py
> -index e1340da..6242eda 100755
> ---- a/contrib/inventory/serf.py
> -+++ b/contrib/inventory/serf.py
> + import sys
> +diff --git a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py
> +index a2b094e2fc..355dba697a 100755
> +--- a/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py
> ++++ b/test/integration/targets/ansible-test-no-tty/ansible_collections/ns/col/tests/integration/targets/no-tty/assert-no-tty.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + """Assert no TTY is available."""
>
> - # (c) 2015, Marc Abramowitz <marca@surveymonkey.com>
> - #
> -diff --git a/contrib/inventory/softlayer.py b/contrib/inventory/softlayer.py
> -index 3933eb4..519092f 100755
> ---- a/contrib/inventory/softlayer.py
> -+++ b/contrib/inventory/softlayer.py
> -@@ -1,4 +1,4 @@
> + import sys
> +diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
> +index 4265cc3e6c..e5a0d9b483 100755
> +--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
> ++++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/scripts/env_python.py
> +@@ -1 +1 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - """
> - SoftLayer external inventory script.
> -
> -diff --git a/contrib/inventory/spacewalk.py b/contrib/inventory/spacewalk.py
> -index 2735a81..2da2720 100755
> ---- a/contrib/inventory/spacewalk.py
> -+++ b/contrib/inventory/spacewalk.py
> -@@ -1,4 +1,4 @@
> +diff --git a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
> +index 4265cc3e6c..e5a0d9b483 100755
> +--- a/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
> ++++ b/test/integration/targets/ansible-test-sanity-shebang/ansible_collections/ns/col/tests/integration/targets/valid/env_python.py
> +@@ -1 +1 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - """
> - Spacewalk external inventory script
> -diff --git a/contrib/inventory/ssh_config.py b/contrib/inventory/ssh_config.py
> -index ae41e58..05373ec 100755
> ---- a/contrib/inventory/ssh_config.py
> -+++ b/contrib/inventory/ssh_config.py
> +diff --git a/test/integration/targets/ansible-test/venv-pythons.py b/test/integration/targets/ansible-test/venv-pythons.py
> +index b380f147fc..e97f2fcb33 100755
> +--- a/test/integration/targets/ansible-test/venv-pythons.py
> ++++ b/test/integration/targets/ansible-test/venv-pythons.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + """Return target Python options for use with ansible-test."""
>
> - # (c) 2014, Tomas Karasek <tomas.karasek@digile.fi>
> - #
> -diff --git a/contrib/inventory/stacki.py b/contrib/inventory/stacki.py
> -index fd4cda5..d6acda3 100755
> ---- a/contrib/inventory/stacki.py
> -+++ b/contrib/inventory/stacki.py
> + import os
> +diff --git a/test/integration/targets/ansible-vault/faux-editor.py b/test/integration/targets/ansible-vault/faux-editor.py
> +index b67c747563..a30c306a83 100755
> +--- a/test/integration/targets/ansible-vault/faux-editor.py
> ++++ b/test/integration/targets/ansible-vault/faux-editor.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # Copyright (c) 2016, Hugh Ma <hugh.ma@flextronics.com>
> #
> -diff --git a/contrib/inventory/vagrant.py b/contrib/inventory/vagrant.py
> -index 37a6741..86fc67d 100755
> ---- a/contrib/inventory/vagrant.py
> -+++ b/contrib/inventory/vagrant.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """
> - Vagrant external inventory script. Automatically finds the IP of the booted vagrant vm(s), and
> - returns it under the host group 'vagrant'
> -diff --git a/contrib/inventory/vbox.py b/contrib/inventory/vbox.py
> -index 8905fab..141b01a 100755
> ---- a/contrib/inventory/vbox.py
> -+++ b/contrib/inventory/vbox.py
> + # Ansible is free software: you can redistribute it and/or modify
> + # it under the terms of the GNU General Public License as published by
> +diff --git a/test/integration/targets/ansible-vault/password-script.py b/test/integration/targets/ansible-vault/password-script.py
> +index 1b7f02beb2..0dcada23c7 100755
> +--- a/test/integration/targets/ansible-vault/password-script.py
> ++++ b/test/integration/targets/ansible-vault/password-script.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> -
> - # This file is part of Ansible,
> #
> -diff --git a/contrib/inventory/vmware.py b/contrib/inventory/vmware.py
> -index 377c7cb..cee232a 100755
> ---- a/contrib/inventory/vmware.py
> -+++ b/contrib/inventory/vmware.py
> + # Ansible is free software: you can redistribute it and/or modify
> + # it under the terms of the GNU General Public License as published by
> +diff --git a/test/integration/targets/ansible-vault/test-vault-client.py b/test/integration/targets/ansible-vault/test-vault-client.py
> +index ee46188742..48244fca09 100755
> +--- a/test/integration/targets/ansible-vault/test-vault-client.py
> ++++ b/test/integration/targets/ansible-vault/test-vault-client.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> # -*- coding: utf-8 -*-
> - '''
> - VMware Inventory Script
> -diff --git a/contrib/inventory/vmware_inventory.py b/contrib/inventory/vmware_inventory.py
> -index 58ee473..4300fe5 100755
> ---- a/contrib/inventory/vmware_inventory.py
> -+++ b/contrib/inventory/vmware_inventory.py
> +
> + from __future__ import (absolute_import, division, print_function)
> +diff --git a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
> +index 93958fc2ad..33509c826a 100644
> +--- a/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
> ++++ b/test/integration/targets/builtin_vars_prompt/test-vars_prompt.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - # Requirements
> - # - pyvmomi >= 6.0.0.2016.4
> -diff --git a/contrib/inventory/windows_azure.py b/contrib/inventory/windows_azure.py
> -index cceed36..f8777be 100755
> ---- a/contrib/inventory/windows_azure.py
> -+++ b/contrib/inventory/windows_azure.py
> + from __future__ import (absolute_import, division, print_function)
> + __metaclass__ = type
> +diff --git a/test/integration/targets/cli/test-cli.py b/test/integration/targets/cli/test-cli.py
> +index 9893d6652e..7a07dcc108 100644
> +--- a/test/integration/targets/cli/test-cli.py
> ++++ b/test/integration/targets/cli/test-cli.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # Copyright (c) 2019 Matt Martz <matt@sivel.net>
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
>
> - '''
> - Windows Azure external inventory script
> -diff --git a/contrib/inventory/zabbix.py b/contrib/inventory/zabbix.py
> -index f6b37b9..241823b 100755
> ---- a/contrib/inventory/zabbix.py
> -+++ b/contrib/inventory/zabbix.py
> +diff --git a/test/integration/targets/cli/test_k_and_K.py b/test/integration/targets/cli/test_k_and_K.py
> +index f7077fba0a..dcc9614129 100644
> +--- a/test/integration/targets/cli/test_k_and_K.py
> ++++ b/test/integration/targets/cli/test_k_and_K.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
>
> - # (c) 2013, Greg Buehler
> - #
> -diff --git a/contrib/inventory/zone.py b/contrib/inventory/zone.py
> -index 893953e..b049fd7 100755
> ---- a/contrib/inventory/zone.py
> -+++ b/contrib/inventory/zone.py
> + # Make coding more python3-ish
> +diff --git a/test/integration/targets/collection/update-ignore.py b/test/integration/targets/collection/update-ignore.py
> +index 92a702cf13..9ea69089d5 100755
> +--- a/test/integration/targets/collection/update-ignore.py
> ++++ b/test/integration/targets/collection/update-ignore.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + """Rewrite a sanity ignore file to expand Python versions for import ignores and write the file out with the correct Ansible version in the name."""
>
> - # (c) 2015, Dagobert Michelsen <dam@baltic-online.de>
> - #
> -diff --git a/docs/docsite/rst/dev_guide/developing_api.rst b/docs/docsite/rst/dev_guide/developing_api.rst
> -index bb2cbc4..55d4212 100644
> ---- a/docs/docsite/rst/dev_guide/developing_api.rst
> -+++ b/docs/docsite/rst/dev_guide/developing_api.rst
> -@@ -37,7 +37,7 @@ Python API 2.0
> - In 2.0 things get a bit more complicated to start, but you end up with much more discrete and readable classes::
> -
> -
> -- #!/usr/bin/env python
> -+ #!/usr/bin/env python3
> -
> - import json
> - from collections import namedtuple
> -diff --git a/hacking/dump_playbook_attributes.py b/hacking/dump_playbook_attributes.py
> -index 204fe3f..9d86b66 100755
> ---- a/hacking/dump_playbook_attributes.py
> -+++ b/hacking/dump_playbook_attributes.py
> + import os
> +diff --git a/test/integration/targets/debugger/test_run_once.py b/test/integration/targets/debugger/test_run_once.py
> +index 237f9c2d90..4fe74903d8 100755
> +--- a/test/integration/targets/debugger/test_run_once.py
> ++++ b/test/integration/targets/debugger/test_run_once.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - import optparse
> - from jinja2 import Environment, FileSystemLoader
> -diff --git a/hacking/module_formatter.py b/hacking/module_formatter.py
> -index 4f132aa..1bee33a 100755
> ---- a/hacking/module_formatter.py
> -+++ b/hacking/module_formatter.py
> + import io
> + import os
> +diff --git a/test/integration/targets/fork_safe_stdio/run-with-pty.py b/test/integration/targets/fork_safe_stdio/run-with-pty.py
> +index 463915284b..fc2ed398d9 100755
> +--- a/test/integration/targets/fork_safe_stdio/run-with-pty.py
> ++++ b/test/integration/targets/fork_safe_stdio/run-with-pty.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - # (c) 2012, Jan-Piet Mens <jpmens () gmail.com>
> - # (c) 2012-2014, Michael DeHaan <michael@ansible.com> and others
> - #
> -diff --git a/lib/ansible/modules/web_infrastructure/django_manage.py b/lib/ansible/modules/web_infrastructure/django_manage.py
> -index ac24829..90aee1b 100644
> ---- a/lib/ansible/modules/web_infrastructure/django_manage.py
> -+++ b/lib/ansible/modules/web_infrastructure/django_manage.py
> -@@ -97,7 +97,7 @@ notes:
> - - This module assumes English error messages for the 'createcachetable' command to detect table existence, unfortunately.
> - - To be able to use the migrate command with django versions < 1.7, you must have south installed and added as an app in your settings.
> - - To be able to use the collectstatic command, you must have enabled staticfiles in your settings.
> -- - As of ansible 2.x, your I(manage.py) application must be executable (rwxr-xr-x), and must have a valid I(shebang), i.e. "#!/usr/bin/env python", for invoking the appropriate Python interpreter.
> -+ - As of ansible 2.x, your I(manage.py) application must be executable (rwxr-xr-x), and must have a valid I(shebang), i.e. "#!/usr/bin/env python3", for invoking the appropriate Python interpreter.
> - requirements: [ "virtualenv", "django" ]
> - author: "Scott Anderson (@tastychutney)"
> - '''
> -diff --git a/lib/ansible/modules/windows/win_file_version.py b/lib/ansible/modules/windows/win_file_version.py
> -index 399c978..1225a06 100644
> ---- a/lib/ansible/modules/windows/win_file_version.py
> -+++ b/lib/ansible/modules/windows/win_file_version.py
> + """Run a command using a PTY."""
> +
> + import sys
> +diff --git a/test/integration/targets/gathering/uuid.fact b/test/integration/targets/gathering/uuid.fact
> +index 79e3f62677..2a294b33a8 100644
> +--- a/test/integration/targets/gathering/uuid.fact
> ++++ b/test/integration/targets/gathering/uuid.fact
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> # -*- coding: utf-8 -*-
>
> - # Get DLL or EXE build version
> -diff --git a/lib/ansible/modules/windows/win_firewall_rule.py b/lib/ansible/modules/windows/win_firewall_rule.py
> -index e4ab1e4..456523d 100644
> ---- a/lib/ansible/modules/windows/win_firewall_rule.py
> -+++ b/lib/ansible/modules/windows/win_firewall_rule.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
>
> - # (c) 2014, Timothy Vandenbrande <timothy.vandenbrande@gmail.com>
> - #
> -diff --git a/test/compile/compile.py b/test/compile/compile.py
> -index 01144c6..6e332a9 100755
> ---- a/test/compile/compile.py
> -+++ b/test/compile/compile.py
> +diff --git a/test/integration/targets/gathering_facts/uuid.fact b/test/integration/targets/gathering_facts/uuid.fact
> +index 79e3f62677..2a294b33a8 100644
> +--- a/test/integration/targets/gathering_facts/uuid.fact
> ++++ b/test/integration/targets/gathering_facts/uuid.fact
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - """Python syntax checker with lint friendly output."""
> + # -*- coding: utf-8 -*-
>
> - import os
> -diff --git a/test/integration/cleanup_rax.py b/test/integration/cleanup_rax.py
> -index 5c757f5..bc3448b 100755
> ---- a/test/integration/cleanup_rax.py
> -+++ b/test/integration/cleanup_rax.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
>
> - import os
> - import re
> -diff --git a/test/integration/targets/embedded_module/library/test_integration_module b/test/integration/targets/embedded_module/library/test_integration_module
> -index f564619..0d46d15 100644
> ---- a/test/integration/targets/embedded_module/library/test_integration_module
> -+++ b/test/integration/targets/embedded_module/library/test_integration_module
> -@@ -1,3 +1,3 @@
> +diff --git a/test/integration/targets/group/files/gidget.py b/test/integration/targets/group/files/gidget.py
> +index 4b771516fd..085dfcdee1 100644
> +--- a/test/integration/targets/group/files/gidget.py
> ++++ b/test/integration/targets/group/files/gidget.py
> +@@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> - print('{"changed":false, "msg":"this is the embedded module"}')
> + from __future__ import (absolute_import, division, print_function)
> + __metaclass__ = type
> diff --git a/test/integration/targets/module_utils/module_utils/foo.py b/test/integration/targets/module_utils/module_utils/foo.py
> -index 20698f1..0cd5c85 100644
> +index 20698f1f46..0cd5c85142 100644
> --- a/test/integration/targets/module_utils/module_utils/foo.py
> +++ b/test/integration/targets/module_utils/module_utils/foo.py
> @@ -1,3 +1,3 @@
> @@ -802,7 +584,7 @@ index 20698f1..0cd5c85 100644
>
> foo = "FOO FROM foo.py"
> diff --git a/test/integration/targets/module_utils/module_utils/sub/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam.py
> -index 566f8b7..0814485 100644
> +index 566f8b7c47..0814485d5f 100644
> --- a/test/integration/targets/module_utils/module_utils/sub/bam.py
> +++ b/test/integration/targets/module_utils/module_utils/sub/bam.py
> @@ -1,3 +1,3 @@
> @@ -811,7 +593,7 @@ index 566f8b7..0814485 100644
>
> bam = "BAM FROM sub/bam.py"
> diff --git a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
> -index b7ed707..97f9eed 100644
> +index b7ed707211..97f9eedcdb 100644
> --- a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
> +++ b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
> @@ -1,3 +1,3 @@
> @@ -820,7 +602,7 @@ index b7ed707..97f9eed 100644
>
> bam = "BAM FROM sub/bam/bam.py"
> diff --git a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
> -index 02fafd4..3a93360 100644
> +index 02fafd40f3..3a93360c69 100644
> --- a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
> +++ b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
> @@ -1,3 +1,3 @@
> @@ -829,7 +611,7 @@ index 02fafd4..3a93360 100644
>
> bam = "BAM FROM sub/bar/bam.py"
> diff --git a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
> -index 8566901..40f0c94 100644
> +index 8566901f04..40f0c9446c 100644
> --- a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
> +++ b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
> @@ -1,3 +1,3 @@
> @@ -837,396 +619,145 @@ index 8566901..40f0c94 100644
> +#!/usr/bin/env python3
>
> bar = "BAR FROM sub/bar/bar.py"
> -diff --git a/test/integration/targets/service/files/ansible_test_service b/test/integration/targets/service/files/ansible_test_service
> -index 682edeb..e858909 100755
> ---- a/test/integration/targets/service/files/ansible_test_service
> -+++ b/test/integration/targets/service/files/ansible_test_service
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> -
> - # this is mostly based off of the code found here:
> - # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
> -diff --git a/test/runner/ansible-test b/test/runner/ansible-test
> -index 801f07f..804aa8f 100755
> ---- a/test/runner/ansible-test
> -+++ b/test/runner/ansible-test
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # PYTHON_ARGCOMPLETE_OK
> - """Test runner for all Ansible tests."""
> -
> -diff --git a/test/runner/injector/ansible b/test/runner/injector/ansible
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/ansible
> -+++ b/test/runner/injector/ansible
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/ansible-console b/test/runner/injector/ansible-console
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/ansible-console
> -+++ b/test/runner/injector/ansible-console
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/ansible-doc b/test/runner/injector/ansible-doc
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/ansible-doc
> -+++ b/test/runner/injector/ansible-doc
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/ansible-galaxy b/test/runner/injector/ansible-galaxy
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/ansible-galaxy
> -+++ b/test/runner/injector/ansible-galaxy
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/ansible-playbook b/test/runner/injector/ansible-playbook
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/ansible-playbook
> -+++ b/test/runner/injector/ansible-playbook
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/ansible-pull b/test/runner/injector/ansible-pull
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/ansible-pull
> -+++ b/test/runner/injector/ansible-pull
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/ansible-vault b/test/runner/injector/ansible-vault
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/ansible-vault
> -+++ b/test/runner/injector/ansible-vault
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/cover b/test/runner/injector/cover
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/cover
> -+++ b/test/runner/injector/cover
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/cover2 b/test/runner/injector/cover2
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/cover2
> -+++ b/test/runner/injector/cover2
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/cover2.4 b/test/runner/injector/cover2.4
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/cover2.4
> -+++ b/test/runner/injector/cover2.4
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/cover2.6 b/test/runner/injector/cover2.6
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/cover2.6
> -+++ b/test/runner/injector/cover2.6
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/cover2.7 b/test/runner/injector/cover2.7
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/cover2.7
> -+++ b/test/runner/injector/cover2.7
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/cover3 b/test/runner/injector/cover3
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/cover3
> -+++ b/test/runner/injector/cover3
> +diff --git a/test/integration/targets/packaging_cli-doc/verify.py b/test/integration/targets/packaging_cli-doc/verify.py
> +index 7793fa8c24..71f82186dd 100755
> +--- a/test/integration/targets/packaging_cli-doc/verify.py
> ++++ b/test/integration/targets/packaging_cli-doc/verify.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - """Code coverage wrapper."""
>
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/cover3.5 b/test/runner/injector/cover3.5
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/cover3.5
> -+++ b/test/runner/injector/cover3.5
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/cover3.6 b/test/runner/injector/cover3.6
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/cover3.6
> -+++ b/test/runner/injector/cover3.6
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/injector.py b/test/runner/injector/injector.py
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/injector.py
> -+++ b/test/runner/injector/injector.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/pytest b/test/runner/injector/pytest
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/pytest
> -+++ b/test/runner/injector/pytest
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/runner b/test/runner/injector/runner
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner
> -+++ b/test/runner/injector/runner
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/runner2 b/test/runner/injector/runner2
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner2
> -+++ b/test/runner/injector/runner2
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/runner2.4 b/test/runner/injector/runner2.4
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner2.4
> -+++ b/test/runner/injector/runner2.4
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/runner2.6 b/test/runner/injector/runner2.6
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner2.6
> -+++ b/test/runner/injector/runner2.6
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - """Code coverage wrapper."""
> -
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/runner2.7 b/test/runner/injector/runner2.7
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner2.7
> -+++ b/test/runner/injector/runner2.7
> + import os
> + import pathlib
> +diff --git a/test/integration/targets/pause/test-pause.py b/test/integration/targets/pause/test-pause.py
> +index 3703470d06..dd14b2810d 100755
> +--- a/test/integration/targets/pause/test-pause.py
> ++++ b/test/integration/targets/pause/test-pause.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - """Code coverage wrapper."""
>
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/runner3 b/test/runner/injector/runner3
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner3
> -+++ b/test/runner/injector/runner3
> + from __future__ import (absolute_import, division, print_function)
> + __metaclass__ = type
> +diff --git a/test/integration/targets/pip/files/setup.py b/test/integration/targets/pip/files/setup.py
> +index aaf21875ca..2835719e4f 100755
> +--- a/test/integration/targets/pip/files/setup.py
> ++++ b/test/integration/targets/pip/files/setup.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - """Code coverage wrapper."""
>
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/runner3.5 b/test/runner/injector/runner3.5
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner3.5
> -+++ b/test/runner/injector/runner3.5
> + from __future__ import (absolute_import, division, print_function)
> + __metaclass__ = type
> +diff --git a/test/integration/targets/service/files/ansible_test_service.py b/test/integration/targets/service/files/ansible_test_service.py
> +index 522493fcc7..b3aaf7f6b4 100644
> +--- a/test/integration/targets/service/files/ansible_test_service.py
> ++++ b/test/integration/targets/service/files/ansible_test_service.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - """Code coverage wrapper."""
>
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/injector/runner3.6 b/test/runner/injector/runner3.6
> -index 57241c9..c463946 100755
> ---- a/test/runner/injector/runner3.6
> -+++ b/test/runner/injector/runner3.6
> + # this is mostly based off of the code found here:
> + # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
> +diff --git a/test/integration/targets/service_facts/files/ansible_test_service.py b/test/integration/targets/service_facts/files/ansible_test_service.py
> +index 19f1e29138..609218325d 100644
> +--- a/test/integration/targets/service_facts/files/ansible_test_service.py
> ++++ b/test/integration/targets/service_facts/files/ansible_test_service.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - """Code coverage wrapper."""
>
> - from __future__ import absolute_import, print_function
> -diff --git a/test/runner/retry.py b/test/runner/retry.py
> -index 4972131..a9ffb07 100755
> ---- a/test/runner/retry.py
> -+++ b/test/runner/retry.py
> + # this is mostly based off of the code found here:
> + # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
> +diff --git a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
> +index b0a8889439..90c83b582b 100644
> +--- a/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
> ++++ b/test/integration/targets/template/role_filter/filter_plugins/myplugin.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - # PYTHON_ARGCOMPLETE_OK
> - """Automatically retry failed commands."""
>
> -diff --git a/test/runner/test.py b/test/runner/test.py
> -index 801f07f..804aa8f 100755
> ---- a/test/runner/test.py
> -+++ b/test/runner/test.py
> + from __future__ import (absolute_import, division, print_function)
> + __metaclass__ = type
> +diff --git a/test/integration/targets/throttle/test_throttle.py b/test/integration/targets/throttle/test_throttle.py
> +index 1a5bdd3078..344bcf0f86 100755
> +--- a/test/integration/targets/throttle/test_throttle.py
> ++++ b/test/integration/targets/throttle/test_throttle.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> - # PYTHON_ARGCOMPLETE_OK
> - """Test runner for all Ansible tests."""
>
> -diff --git a/test/sanity/code-smell/ansible-var-precedence-check.py b/test/sanity/code-smell/ansible-var-precedence-check.py
> -index e10c097..13c7a73 100755
> ---- a/test/sanity/code-smell/ansible-var-precedence-check.py
> -+++ b/test/sanity/code-smell/ansible-var-precedence-check.py
> + from __future__ import (absolute_import, division, print_function)
> + __metaclass__ = type
> +diff --git a/test/integration/targets/var_precedence/ansible-var-precedence-check.py b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
> +index fc31688be2..f964bbe8d6 100755
> +--- a/test/integration/targets/var_precedence/ansible-var-precedence-check.py
> ++++ b/test/integration/targets/var_precedence/ansible-var-precedence-check.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
>
> # A tool to check the order of precedence for ansible variables
> # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml
> -diff --git a/test/sanity/code-smell/integration-aliases.py b/test/sanity/code-smell/integration-aliases.py
> -index 50301e3..ac53ca9 100755
> ---- a/test/sanity/code-smell/integration-aliases.py
> -+++ b/test/sanity/code-smell/integration-aliases.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> -
> - import os
> - import textwrap
> -diff --git a/test/sanity/code-smell/shebang.sh b/test/sanity/code-smell/shebang.sh
> -index 76d72c1..565a198 100755
> ---- a/test/sanity/code-smell/shebang.sh
> -+++ b/test/sanity/code-smell/shebang.sh
> -@@ -8,11 +8,11 @@ grep '^#!' -rIn . \
> - -e '^\./test/integration/targets/[^/]*/library/[^/]*:#!powershell$' \
> - -e '^\./test/integration/targets/[^/]*/library/[^/]*:#!/usr/bin/python$' \
> - -e '^\./test/integration/targets/module_precedence/.*lib.*:#!/usr/bin/python$' \
> -- -e '^\./hacking/cherrypick.py:#!/usr/bin/env python3$' \
> -+ -e '^\./hacking/cherrypick.py:#!/usr/bin/env python33$' \
> - -e ':#!/bin/sh$' \
> - -e ':#!/bin/bash( -[eux]|$)' \
> - -e ':#!/usr/bin/make -f$' \
> -- -e ':#!/usr/bin/env python$' \
> -+ -e ':#!/usr/bin/env python3$' \
> - -e ':#!/usr/bin/env bash$' \
> - -e ':#!/usr/bin/env fish$' \
> -
> -diff --git a/test/sanity/validate-modules/test_validate_modules_regex.py b/test/sanity/validate-modules/test_validate_modules_regex.py
> -index 0e41ee7..8a86b07 100644
> ---- a/test/sanity/validate-modules/test_validate_modules_regex.py
> -+++ b/test/sanity/validate-modules/test_validate_modules_regex.py
> +diff --git a/test/lib/ansible_test/_internal/util_common.py b/test/lib/ansible_test/_internal/util_common.py
> +index 222366e473..2b11060113 100644
> +--- a/test/lib/ansible_test/_internal/util_common.py
> ++++ b/test/lib/ansible_test/_internal/util_common.py
> +@@ -303,7 +303,7 @@ def get_injector_path() -> str:
> + ])
> +
> + scripts = (
> +- ('python.py', '/usr/bin/env python', MODE_FILE_EXECUTE),
> ++ ('python.py', '/usr/bin/env python3', MODE_FILE_EXECUTE),
> + ('virtualenv.sh', '/usr/bin/env bash', MODE_FILE),
> + )
> +
> +diff --git a/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py b/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
> +index b0b1319783..9535c3b481 100644
> +--- a/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
> ++++ b/test/lib/ansible_test/_util/controller/sanity/code-smell/shebang.py
> +@@ -16,14 +16,14 @@ def main():
> + b'#!/usr/bin/env bash',
> + b'#!/usr/bin/env fish',
> + b'#!/usr/bin/env pwsh',
> +- b'#!/usr/bin/env python',
> ++ b'#!/usr/bin/env python3',
> + b'#!/usr/bin/make -f',
> + ])
> +
> + integration_shebangs = set([
> + b'#!/bin/sh',
> + b'#!/usr/bin/env bash',
> +- b'#!/usr/bin/env python',
> ++ b'#!/usr/bin/env python3',
> + ])
> +
> + module_shebangs = {
> +diff --git a/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py b/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
> +index 930654fc1e..bbf50369d7 100755
> +--- a/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
> ++++ b/test/lib/ansible_test/_util/target/cli/ansible_test_cli_stub.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python
> +#!/usr/bin/env python3
> + # PYTHON_ARGCOMPLETE_OK
> + """Command line entry point for ansible-test."""
>
> - # This is a standalone test for the regex inside validate-modules
> - # It is not suitable to add to the make tests target because the
> -diff --git a/test/sanity/validate-modules/validate-modules b/test/sanity/validate-modules/validate-modules
> -index d03bff1..201cd41 100755
> ---- a/test/sanity/validate-modules/validate-modules
> -+++ b/test/sanity/validate-modules/validate-modules
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # -*- coding: utf-8 -*-
> - #
> - # Copyright (C) 2015 Matt Martz <matt@sivel.net>
> diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py
> -index edbf836..1f3bb5a 100644
> +index fa6add8cd6..fcfd096e54 100644
> --- a/test/units/executor/module_common/test_module_common.py
> +++ b/test/units/executor/module_common/test_module_common.py
> -@@ -114,5 +114,5 @@ class TestGetShebang(object):
> +@@ -132,8 +132,8 @@ class TestGetShebang:
> (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3')
>
> - def test_python_via_env(self):
> -- assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python'}) == \
> + def test_python_via_env(self, templar):
> +- assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python'}, templar) == \
> - (u'#!/usr/bin/env python', u'/usr/bin/env python')
> -+ assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python3'}) == \
> -+ (u'#!/usr/bin/env python3', u'/usr/bin/env python')
> -diff --git a/test/units/modules/network/nxos/test_nxos_config.py b/test/units/modules/network/nxos/test_nxos_config.py
> -index 8e3a59c..46764a8 100644
> ---- a/test/units/modules/network/nxos/test_nxos_config.py
> -+++ b/test/units/modules/network/nxos/test_nxos_config.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - #
> - # (c) 2016 Red Hat Inc.
> - #
> -diff --git a/test/utils/shippable/ansible-core-ci b/test/utils/shippable/ansible-core-ci
> -index e91b426..44f8fb9 100755
> ---- a/test/utils/shippable/ansible-core-ci
> -+++ b/test/utils/shippable/ansible-core-ci
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> ++ assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python3'}, templar) == \
> ++ (u'#!/usr/bin/env python3', u'/usr/bin/env python3')
>
> - # (c) 2016 Matt Clay <matt@mystile.com>
> - #
> -diff --git a/test/utils/shippable/download.py b/test/utils/shippable/download.py
> -index cbda144..e86c8e6 100755
> ---- a/test/utils/shippable/download.py
> -+++ b/test/utils/shippable/download.py
> -@@ -1,4 +1,4 @@
> --#!/usr/bin/env python
> -+#!/usr/bin/env python3
> - # PYTHON_ARGCOMPLETE_OK
>
> - # (c) 2016 Red Hat, Inc.
> + class TestDetectionRegexes:
> --
> -2.7.4
> +2.40.0
>
> diff --git a/recipes-devtools/python/python3-ansible_2.3.1.0.bb b/recipes-devtools/python/python3-ansible_2.14.11.bb
> similarity index 100%
> rename from recipes-devtools/python/python3-ansible_2.3.1.0.bb
> rename to recipes-devtools/python/python3-ansible_2.14.11.bb
> --
> 2.40.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#8426): https://lists.yoctoproject.org/g/meta-virtualization/message/8426
> Mute This Topic: https://lists.yoctoproject.org/mt/102421319/1050810
> Group Owner: meta-virtualization+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/meta-virtualization/unsub [bruce.ashfield@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
In message: [meta-virtualization][kirkstone][PATCH 2/2] python3-ansible: Add locale-base-en-us to RDEPENDS
on 06/11/2023 Narpat Mali via lists.yoctoproject.org wrote:
> From: Narpat Mali <narpat.mali@windriver.com>
>
> Fixes:
> # export LANG='en_US.UTF-8'
> # ansible --version
> ERROR: Ansible requires the locale encoding to be UTF-8; Detected None.
>
> # python3
> Python 3.10.9 (main, Dec 6 2022, 18:44:57) [GCC 11.3.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import locale
> >>> locale.setlocale(locale.LC_CTYPE, ("en_US", "UTF-8"))
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "/usr/lib64/python3.10/locale.py", line 620, in setlocale
> return _setlocale(category, locale)
> locale.Error: unsupported locale setting
> >>>
>
> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
>
> Upstream master commit:
> https://git.yoctoproject.org/meta-cloud-services/commit/?id=cd048e11c4600636714051c787264a52be19c3f8
>
> Signed-off-by: Narpat Mali <narpat.mali@windriver.com>
> ---
> recipes-devtools/python/python3-ansible_2.14.11.bb | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/recipes-devtools/python/python3-ansible_2.14.11.bb b/recipes-devtools/python/python3-ansible_2.14.11.bb
> index ea0fdbe5..f3ab2377 100644
> --- a/recipes-devtools/python/python3-ansible_2.14.11.bb
> +++ b/recipes-devtools/python/python3-ansible_2.14.11.bb
> @@ -1,7 +1,11 @@
> inherit setuptools3
> require python-ansible.inc
>
> -RDEPENDS:${PN} += "python3-pyyaml python3-jinja2 python3-modules"
> +RDEPENDS:${PN} += "python3-pyyaml \
> + python3-jinja2 \
> + python3-modules \
> + locale-base-en-us \
> +"
>
> SRC_URI += " \
> file://python3-ensure-py-scripts-use-py3-for-shebang.patch \
> --
> 2.40.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#8427): https://lists.yoctoproject.org/g/meta-virtualization/message/8427
> Mute This Topic: https://lists.yoctoproject.org/mt/102421321/1050810
> Group Owner: meta-virtualization+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/meta-virtualization/unsub [bruce.ashfield@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
prev parent reply other threads:[~2023-11-07 1:47 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-06 14:51 [meta-virtualization][kirkstone][PATCH 1/2] python3-ansible: Upgrade to 2.14.11 nmali
2023-11-06 14:51 ` [meta-virtualization][kirkstone][PATCH 2/2] python3-ansible: Add locale-base-en-us to RDEPENDS nmali
2023-11-07 1:47 ` Bruce Ashfield [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZUmXG4YZ38b/mxfE@gmail.com \
--to=bruce.ashfield@gmail.com \
--cc=meta-virtualization@lists.yoctoproject.org \
--cc=narpat.mali@windriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.