diff --git a/0001-Fix-final-fact-delegation-77008-77017.patch b/0001-Fix-final-fact-delegation-77008-77017.patch deleted file mode 100644 index 0d8e9943bb8414d7febdcc33e48671ca09e38e1c..0000000000000000000000000000000000000000 --- a/0001-Fix-final-fact-delegation-77008-77017.patch +++ /dev/null @@ -1,87 +0,0 @@ -From ae35fc04c3a2068b1d37efe813d1c6938b4f2634 Mon Sep 17 00:00:00 2001 -From: Brian Coca -Date: Wed, 16 Feb 2022 11:55:03 -0500 -Subject: [PATCH] Fix final fact delegation (#77008) (#77017) - -* fix facts delegation loop overwrite - - partial revert of change to allow facts to be present in each loop iteration - was not needed in final results as result processing alreayd had the disctiontion - and ended up breaking the assumptions in the calling code. - - fixes #76676 - -(cherry picked from commit c9d3518d2f3812787e1627806b5fa93f8fae48a6) ---- - .../fragments/fix_fax_delegation_loops.yml | 2 ++ - lib/ansible/executor/task_executor.py | 8 +------ - .../delegate_to/delegate_facts_loop.yml | 21 ++++++++++++++++++- - 3 files changed, 23 insertions(+), 8 deletions(-) - create mode 100644 changelogs/fragments/fix_fax_delegation_loops.yml - -diff --git a/changelogs/fragments/fix_fax_delegation_loops.yml b/changelogs/fragments/fix_fax_delegation_loops.yml -new file mode 100644 -index 0000000000..d9e07bf110 ---- /dev/null -+++ b/changelogs/fragments/fix_fax_delegation_loops.yml -@@ -0,0 +1,2 @@ -+bugfixes: -+ - task_executor reverts the change to push facts into delegated vars on loop finalization as result managing code already handles this and was duplicating effort to wrong result. -diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py -index 1a7c666fea..05dcb96446 100644 ---- a/lib/ansible/executor/task_executor.py -+++ b/lib/ansible/executor/task_executor.py -@@ -745,13 +745,7 @@ class TaskExecutor: - - if 'ansible_facts' in result and self._task.action not in C._ACTION_DEBUG: - if self._task.action in C._ACTION_WITH_CLEAN_FACTS: -- if self._task.delegate_to and self._task.delegate_facts: -- if '_ansible_delegated_vars' in variables: -- variables['_ansible_delegated_vars'].update(result['ansible_facts']) -- else: -- variables['_ansible_delegated_vars'] = result['ansible_facts'] -- else: -- variables.update(result['ansible_facts']) -+ variables.update(result['ansible_facts']) - else: - # TODO: cleaning of facts should eventually become part of taskresults instead of vars - af = wrap_var(result['ansible_facts']) -diff --git a/test/integration/targets/delegate_to/delegate_facts_loop.yml b/test/integration/targets/delegate_to/delegate_facts_loop.yml -index 90a25676dd..28a1488de3 100644 ---- a/test/integration/targets/delegate_to/delegate_facts_loop.yml -+++ b/test/integration/targets/delegate_to/delegate_facts_loop.yml -@@ -5,7 +5,6 @@ - test: 123 - delegate_to: "{{ item }}" - delegate_facts: true -- when: test is not defined - loop: "{{ groups['all'] | difference(['localhost']) }}" - - - name: ensure we didnt create it on current host -@@ -19,3 +18,23 @@ - - "'test' in hostvars[item]" - - hostvars[item]['test'] == 123 - loop: "{{ groups['all'] | difference(['localhost']) }}" -+ -+ -+- name: test that we don't polute whole group with one value -+ hosts: localhost -+ gather_facts: no -+ vars: -+ cluster_name: bleh -+ tasks: -+ - name: construct different fact per host in loop -+ set_fact: -+ vm_name: "{{ cluster_name }}-{{item}}" -+ delegate_to: "{{ item }}" -+ delegate_facts: True -+ with_items: "{{ groups['all'] }}" -+ -+ - name: ensure the fact is personalized for each host -+ assert: -+ that: -+ - hostvars[item]['vm_name'].endswith(item) -+ loop: "{{ groups['all'] }}" --- -2.30.2 - diff --git a/ansible-core.spec b/ansible-core.spec index 71c6c839953e6416258af077b2d00ffdbc2f57d5..534f225f82108020a743e06c13de44248297c8d0 100644 --- a/ansible-core.spec +++ b/ansible-core.spec @@ -1,4 +1,6 @@ -%define anolis_release .0.1 +%global __python3 /usr/bin/python3.11 +%global python3_pkgversion 3.11 + # We need this because we are no longer noarch, since our bundled deps might # conceivably need to compile arch-specific things. But we currently have no # useful debuginfo stuff. @@ -8,9 +10,6 @@ # ansible-test munges the shebangs itself. %global __brp_mangle_shebangs_exclude_from_file %{SOURCE1} -%global commitId 6c75cf5c83da044d1fd69bc444ce4de50d728d09 -%global python38_sitelib /usr/lib/python3.8/site-packages/ - # NOTE(pabelanger): Don't auto add pwsh as Requires for ansible-test. We do # not wish to package it. %global __requires_exclude ^/usr/bin/pwsh$ @@ -24,34 +23,36 @@ %define py2_shbang_opts %{nil} %define py3_shbang_opts %{nil} -%define vendor_path %{buildroot}%{python38_sitelib}/ansible/_vendor/ -%define vendor_pip /usr/bin/python3.8 -m pip install --no-deps -v --no-use-pep517 --no-binary :all: -t %{vendor_path} +%define vendor_path %{buildroot}%{python3_sitelib}/ansible/_vendor/ +%define vendor_pip %{__python3} -m pip install --no-deps -v --no-build-isolation --no-binary :all: -t %{vendor_path} # These control which bundled dep versions we pin against +%global jinja2_version 3.1.2 +%global markupsafe_version 2.1.0 %global packaging_version 20.4 %global pyparsing_version 2.4.7 -%global straightplugin_version 1.4.1 +%global resolvelib_version 0.5.4 Name: ansible-core Summary: SSH-based configuration management, deployment, and task execution system -Version: 2.12.2 -Release: 4%{anolis_release}%{?dist} +Version: 2.14.2 +Release: 3%{?dist} ExcludeArch: i686 Group: Development/Libraries License: GPLv3+ -Source0: ansible-%{commitId}.tar.gz +Source0: https://files.pythonhosted.org/packages/source/a/ansible-core/ansible-core-%{version}.tar.gz Source1: ansible-test-data-files.txt # And bundled deps -Source2: packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz -Source3: pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz +Source2: https://files.pythonhosted.org/packages/source/J/Jinja2/Jinja2-%{jinja2_version}.tar.gz +Source3: https://files.pythonhosted.org/packages/source/M/MarkupSafe/MarkupSafe-%{markupsafe_version}.tar.gz +Source4: https://files.pythonhosted.org/packages/source/p/packaging/packaging-%{packaging_version}.tar.gz +Source5: https://files.pythonhosted.org/packages/source/p/pyparsing/pyparsing-%{pyparsing_version}.tar.gz +Source6: https://files.pythonhosted.org/packages/source/r/resolvelib/resolvelib-%{resolvelib_version}.tar.gz -# Deps to build man pages -Source5: straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz - -Patch0: 0001-Fix-final-fact-delegation-77008-77017.patch +Patch0: remove-bundled-deps-from-requirements.patch URL: http://ansible.com @@ -65,34 +66,29 @@ Conflicts: ansible-base # Bundled provides that are sprinkled throughout the codebase. Provides: bundled(python-backports-ssl_match_hostname) = 3.7.0.1 -Provides: bundled(python-distro) = 1.5.0 +Provides: bundled(python-distro) = 1.6.0 Provides: bundled(python-selectors2) = 1.1.1 -Provides: bundled(python-six) = 1.13.0 +Provides: bundled(python-six) = 1.16.0 # Things we explicitly bundle via src rpm, and put in ansible._vendor +Provides: bundled(python-jinja2) = %{jinja2_version} +Provides: bundled(python-markupsafe) = %{markupsafe_version} Provides: bundled(python-packaging) = %{packaging_version} Provides: bundled(python-pyparsing) = %{pyparsing_version} -Provides: bundled(python-straightplugin) = %{straightplugin_version} - -Provides: /usr/bin/ansible - -BuildRequires: python38-devel -# BuildRequires: python38-docutils -BuildRequires: python38-jinja2 -BuildRequires: python38-pip -BuildRequires: python38-pyyaml -BuildRequires: python38-resolvelib -BuildRequires: python38-rpm-macros -BuildRequires: python38-setuptools -BuildRequires: python38-wheel - -Requires: git -Requires: python38 -Requires: python38-jinja2 -Requires: python38-PyYAML -Requires: python38-cryptography -Requires: python38-resolvelib -Requires: python38-six +Provides: bundled(python-resolvelib) = %{resolvelib_version} + +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-pip +BuildRequires: python%{python3_pkgversion}-pyyaml +BuildRequires: python%{python3_pkgversion}-rpm-macros +BuildRequires: python%{python3_pkgversion}-setuptools +BuildRequires: python%{python3_pkgversion}-wheel +BuildRequires: make git-core gcc + +Requires: git-core +Requires: python%{python3_pkgversion}-PyYAML >= 5.1 +Requires: python%{python3_pkgversion}-cryptography +Requires: python%{python3_pkgversion}-six Requires: sshpass %description @@ -116,37 +112,26 @@ are transferred to managed machines automatically. This package installs the ansible-test command for testing modules and plugins developed for ansible. -%package doc -Summary: Documents for %{name} -BuildArch: noarch -Requires: %{name} = %{version}-%{release} - -%description doc -Doc pages for %{name}. - %prep -%setup -q -T -b 2 -n packaging-ded06cedf6e20680eea0363fac894cb4a09e7831 -%setup -q -T -b 3 -n pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605 -%setup -q -T -b 5 -n straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed -%setup -q -n ansible-%{commitId} -%patch0 -p 1 +%setup -q -b2 -b3 -b4 -b5 -b6 -n ansible-core-%{version} +%patch0 -p1 # Fix all Python shebangs recursively in ansible-test -# -p preserves timestamps -# -n prevents creating ~backup files -# -i specifies the interpreter for the shebang -pathfix3.8.py -pni "%{__python3} %{py3_shbang_opts}" test/lib/ansible_test +%{py3_shebang_fix} test/lib/ansible_test %build -/usr/bin/python3.8 setup.py build +%{py3_build} %install -/usr/bin/python3.8 setup.py install --root %{buildroot} +%{py3_install} # Handle bundled deps: %{vendor_pip} \ - ../pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605/ \ - ../packaging-ded06cedf6e20680eea0363fac894cb4a09e7831/ + ../Jinja2-%{jinja2_version}/ \ + ../MarkupSafe-%{markupsafe_version}/ \ + ../packaging-%{packaging_version}/ \ + ../pyparsing-%{pyparsing_version}/ \ + ../resolvelib-%{resolvelib_version} # Create system directories that Ansible defines as default locations in # ansible/config/base.yml @@ -188,48 +173,93 @@ mkdir -p %{buildroot}%{_sysconfdir}/ansible/roles/ cp examples/hosts %{buildroot}%{_sysconfdir}/ansible/ cp examples/ansible.cfg %{buildroot}%{_sysconfdir}/ansible/ mkdir -p %{buildroot}/%{_mandir}/man1/ -## Build man pages -# -#mkdir /tmp/_vendor -#/usr/bin/python3.8 -m pip install ../straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed -t /tmp/_vendor --no-build-isolation -# -## Remove plugins not needed, they bring in more dependencies -#find hacking/build_library/build_ansible/command_plugins ! -name 'generate_man.py' -type f -exec rm -f {} + -# -#PYTHON=python3.8 PYTHONPATH=%{vendor_path}:/tmp/_vendor make docs -#cp -v docs/man/man1/*.1 %{buildroot}/%{_mandir}/man1/ -# -#cp -pr docs/docsite/rst . + +cp -v docs/man/man1/*.1 %{buildroot}/%{_mandir}/man1/ + +cp -pr docs/docsite/rst . cp -p lib/ansible_core.egg-info/PKG-INFO . +strip --strip-unneeded %{vendor_path}/markupsafe/_speedups%{python3_ext_suffix} + %files %defattr(-,root,root) %{_bindir}/ansible* %exclude %{_bindir}/ansible-test %config(noreplace) %{_sysconfdir}/ansible/ -# TODO(pabelanger): uncomment once we move back to tagged releases -# %doc changelogs/CHANGELOG-v2.*.rst -#%doc %{_mandir}/man1/ansible* +%doc README.rst PKG-INFO COPYING +%doc changelogs/CHANGELOG-v2.*.rst +%doc %{_mandir}/man1/ansible* %{_datadir}/ansible/ -%{python38_sitelib}/ansible* -%exclude %{python38_sitelib}/ansible_test +%{python3_sitelib}/ansible* +%exclude %{python3_sitelib}/ansible_test +%exclude %{python3_sitelib}/ansible/_vendor/markupsafe/_speedups.c %files -n ansible-test %{_bindir}/ansible-test -%{python38_sitelib}/ansible_test - -%files doc -%doc README.rst PKG-INFO COPYING +%{python3_sitelib}/ansible_test %changelog -* Fri Sep 23 2022 Bo Ren - 2.12.2-4.0.1 -- Add doc sub package +* Tue Feb 14 2023 Dimitri Savineau - 2.14.2-3 +- rebuild with python 3.11 (rhbz#2169524) +- remove bundled dependencies from requirements file (rhbz#2143974) +- use PyPi sources (rhbz#2160277) +- remove straightplugin + +* Thu Feb 02 2023 Christian Adams - 2.14.2-2 +- fix debuginfo symbols from markupsafe dependency (rhbz#2166414) + +* Wed Feb 01 2023 Christian Adams - 2.14.2-1 +- ansible-core 2.14.2 release (rhbz#2166414) + +* Wed Dec 07 2022 Dimitri Savineau - 2.14.1-1 +- ansible-core 2.14.1 release (rhbz#2151594) + +* Tue Nov 08 2022 Dimitri Savineau - 2.14.0-1 +- ansible-core 2.14.0 release (rhbz#2141386) + +* Mon Nov 07 2022 Dimitri Savineau - 2.13.6-1 +- ansible-core 2.13.6 release (rhbz#2141109) +- fix service_facts module parsing (rhbz#2141111) + +* Wed Oct 12 2022 James Marshall - 2.13.5-1 +- ansible-core 2.13.5 release (rhbz#2134116) + +* Fri Oct 07 2022 Dimitri Savineau - 2.13.4-1 +- ansible-core 2.13.4 release (rhbz#2133024) + +* Mon Aug 15 2022 James Marshall - 2.13.3-1 +- ansible-core 2.13.3 release (rhbz#2118475) + +* Wed Jul 20 2022 James Marshall - 2.13.2-1 +- ansible-core 2.13.2 release (rhbz#2109192) + +* Mon Jul 04 2022 Dimitri Savineau - 2.13.1-1 +- ansible-core 2.13.1 release (rhbz#2103699) +- add bundled version of jinja2, markupsafe and resolvelib +- rebuild with python 3.9 + +* Mon Jun 20 2022 Dimitri Savineau - 2.12.7-1 +- ansible-core 2.12.7 release (rhbz#2099323) + +* Thu Jun 09 2022 Dimitri Savineau - 2.12.6-3 +- Build manpages (rhbz#2032809) +- Remove legacy files + +* Tue Jun 07 2022 Dimitri Savineau - 2.12.6-2 +- switch from git to git-core dependency (rhbz#2094549) + +* Tue May 24 2022 James Marshall - 2.12.6-1 +- ansible-core 2.12.6 release + +* Mon May 09 2022 Dimitri Savineau - 2.12.5-1 +- ansible-core 2.12.5 release -* Tue Jul 19 2022 Dimitri Savineau - 2.12.2-4 -- fix facts delegation loop overwrite (rhbz#2109263) +* Mon Apr 11 2022 James Marshall - 2.12.4-1 +- ansible-core 2.12.4 release -* Thu Mar 10 2022 Dimitri Savineau - 2.12.2-3.1 -- Rebuilt for rhel-8.6 +* Mon Mar 14 2022 Dimitri Savineau - 2.12.3-1 +- ansible-core 2.12.3 release +- re-enable changelog and manpages * Mon Mar 07 2022 Dimitri Savineau - 2.12.2-3 - replace Obsolete to Conflicts diff --git a/dist b/dist new file mode 100644 index 0000000000000000000000000000000000000000..9c0e36ec42a2d9bfefacb21ac6354c9ddd910533 --- /dev/null +++ b/dist @@ -0,0 +1 @@ +an8 diff --git a/download b/download index 9ec5fbaa0d2a453dddae3e3738f156cc3cae59db..098a875471fdc18dcb02d97e795d60f967017cef 100644 --- a/download +++ b/download @@ -1,4 +1,6 @@ -47e3fc5bf02c3e25251f1c6cbdd76879 ansible-6c75cf5c83da044d1fd69bc444ce4de50d728d09.tar.gz -b807514ccc85b052e576860904387a37 packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz -6935fa01ae25d95f036094763499bc67 pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz -c720f6d7f45c900348674a83d7eec605 straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz +9f5cc5335e22dfd10d64420df3b5f73a ansible-core-2.14.2.tar.gz +d31148abd89c1df1cdb077a55db27d02 Jinja2-3.1.2.tar.gz +1c3ef96104e89fc64f90e48194a4f154 MarkupSafe-2.1.0.tar.gz +3208229da731c5d8e29d4d8941e75005 packaging-20.4.tar.gz +f0953e47a0112f7a65aec2305ffdf7b4 pyparsing-2.4.7.tar.gz +98078e0fcd9366278f64af522cd124fa resolvelib-0.5.4.tar.gz diff --git a/remove-bundled-deps-from-requirements.patch b/remove-bundled-deps-from-requirements.patch new file mode 100644 index 0000000000000000000000000000000000000000..9e6b4331da73aebf26146ec05088187b7d4ee463 --- /dev/null +++ b/remove-bundled-deps-from-requirements.patch @@ -0,0 +1,18 @@ +diff --git a/requirements.txt b/requirements.txt +index 20562c3e0f..792daa209a 100644 +--- a/requirements.txt ++++ b/requirements.txt +@@ -3,13 +3,5 @@ + # packages. Thus, this should be the loosest set possible (only required + # packages, not optional ones, and with the widest range of versions that could + # be suitable) +-jinja2 >= 3.0.0 + PyYAML >= 5.1 # PyYAML 5.1 is required for Python 3.8+ support + cryptography +-packaging +-# NOTE: resolvelib 0.x version bumps should be considered major/breaking +-# NOTE: and we should update the upper cap with care, at least until 1.0 +-# NOTE: Ref: https://github.com/sarugaku/resolvelib/issues/69 +-# NOTE: When updating the upper bound, also update the latest version used +-# NOTE: in the ansible-galaxy-collection test suite. +-resolvelib >= 0.5.3, < 0.9.0 # dependency resolver used by ansible-galaxy