diff --git a/.ansible-core.metadata b/.ansible-core.metadata
index 7286dea..b44cd82 100644
--- a/.ansible-core.metadata
+++ b/.ansible-core.metadata
@@ -1,4 +1,7 @@
-c482edef8c65b0ebf62eb0eddab3c039ac1e4589 SOURCES/ansible-6c75cf5c83da044d1fd69bc444ce4de50d728d09.tar.gz
+56057bba4714e59b0f28bbb778bdb8321a198dd7 SOURCES/ansible-c1bb0c6ab89a344bdcc07ef66887c310e661e3a6.tar.gz
+6a9e1e0eec23c0f3091fa53f91eb8701ad7caaeb SOURCES/jinja2-b08cd4bc64bb980df86ed2876978ae5735572280.tar.gz
+72c5fe7f8145d4cff66426c444c33104a9ae3d53 SOURCES/markupsafe-b5a517506d6cb8091e215a4a89e47db5eee6a68f.tar.gz
 d5b06047a8a5937c9433c8e0e88bcf2ccb6a4f84 SOURCES/packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
 f20e820c8fa08ff162ace90735a2a89c599f7166 SOURCES/pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
+2203e09b2add3d1edceb28e20b2a091e5e6c0344 SOURCES/resolvelib-d935f9fd07246d9641436c7a8e6ae39423374e28.tar.gz
 c17fd6000af4ccf32930c41e928fea1e38cb5d0a SOURCES/straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
diff --git a/.gitignore b/.gitignore
index 9ea2782..27d037d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,7 @@
-SOURCES/ansible-6c75cf5c83da044d1fd69bc444ce4de50d728d09.tar.gz
+SOURCES/ansible-c1bb0c6ab89a344bdcc07ef66887c310e661e3a6.tar.gz
+SOURCES/jinja2-b08cd4bc64bb980df86ed2876978ae5735572280.tar.gz
+SOURCES/markupsafe-b5a517506d6cb8091e215a4a89e47db5eee6a68f.tar.gz
 SOURCES/packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
 SOURCES/pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
+SOURCES/resolvelib-d935f9fd07246d9641436c7a8e6ae39423374e28.tar.gz
 SOURCES/straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
diff --git a/SPECS/ansible-core.spec b/SPECS/ansible-core.spec
index f54d664..e9cd4ac 100644
--- a/SPECS/ansible-core.spec
+++ b/SPECS/ansible-core.spec
@@ -7,8 +7,8 @@
 # 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/
+%global commitId c1bb0c6ab89a344bdcc07ef66887c310e661e3a6
+%global python39_sitelib /usr/lib/python3.9/site-packages/
 
 # NOTE(pabelanger): Don't auto add pwsh as Requires for ansible-test. We do
 # not wish to package it.
@@ -23,19 +23,22 @@
 %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}%{python39_sitelib}/ansible/_vendor/
+%define vendor_pip /usr/bin/python3.9 -m pip install --no-deps -v --no-use-pep517 --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 resolvelib_version 0.5.4
 %global straightplugin_version 1.4.1
 
 
 Name: ansible-core
 Summary: SSH-based configuration management, deployment, and task execution system
-Version: 2.12.2
-Release: 2%{?dist}
+Version: 2.13.3
+Release: 1%{?dist}
 ExcludeArch: i686
 
 Group: Development/Libraries
@@ -44,17 +47,20 @@ Source0: ansible-%{commitId}.tar.gz
 Source1: ansible-test-data-files.txt
 
 # And bundled deps
-Source2: packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
-Source3: pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
+Source2: jinja2-b08cd4bc64bb980df86ed2876978ae5735572280.tar.gz
+Source3: markupsafe-b5a517506d6cb8091e215a4a89e47db5eee6a68f.tar.gz
+Source4: packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
+Source5: pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
+Source6: resolvelib-d935f9fd07246d9641436c7a8e6ae39423374e28.tar.gz
 
 # Deps to build man pages
-Source5: straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
+Source7: straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
 
 URL: http://ansible.com
 
-# We obsolete old ansible, and any version of ansible-base.
-Obsoletes: ansible < 2.10.0
-Obsoletes: ansible-base
+# We conflict old ansible, and any version of ansible-base.
+Conflicts: ansible < 2.10.0
+Conflicts: ansible-base
 
 # ... and provide 'ansible' so that old packages still work without updated
 # spec files.
@@ -62,32 +68,32 @@ Obsoletes: 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-resolvelib) = %{resolvelib_version}
 Provides: bundled(python-straightplugin) = %{straightplugin_version}
 
-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
+BuildRequires: python3-docutils
+BuildRequires: python39-devel
+BuildRequires: python39-pip
+BuildRequires: python39-pyyaml
+BuildRequires: python39-rpm-macros
+BuildRequires: python39-setuptools
+BuildRequires: python39-wheel
+BuildRequires: make git-core gcc
+
+Requires: git-core
+Requires: python39
+Requires: python39-PyYAML >= 5.1
+Requires: python39-cryptography
+Requires: python39-six
 Requires: sshpass
 
 %description
@@ -112,27 +118,33 @@ This package installs the ansible-test command for testing modules and plugins
 developed for ansible.
 
 %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 -T -b 2 -n jinja2-b08cd4bc64bb980df86ed2876978ae5735572280
+%setup -q -T -b 3 -n markupsafe-b5a517506d6cb8091e215a4a89e47db5eee6a68f
+%setup -q -T -b 4 -n packaging-ded06cedf6e20680eea0363fac894cb4a09e7831
+%setup -q -T -b 5 -n pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605
+%setup -q -T -b 6 -n resolvelib-d935f9fd07246d9641436c7a8e6ae39423374e28
+%setup -q -T -b 7 -n straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed
 %setup -q -n ansible-%{commitId}
 
 # 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
+pathfix3.9.py -pni "%{__python3} %{py3_shbang_opts}" test/lib/ansible_test
 
 %build
-/usr/bin/python3.8 setup.py build
+/usr/bin/python3.9 setup.py build
 
 %install
-/usr/bin/python3.8 setup.py install --root %{buildroot}
+/usr/bin/python3.9 setup.py install --root %{buildroot}
 
 # Handle bundled deps:
 %{vendor_pip} \
+  ../jinja2-b08cd4bc64bb980df86ed2876978ae5735572280/ \
+  ../markupsafe-b5a517506d6cb8091e215a4a89e47db5eee6a68f/ \
+  ../packaging-ded06cedf6e20680eea0363fac894cb4a09e7831/ \
   ../pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605/ \
-  ../packaging-ded06cedf6e20680eea0363fac894cb4a09e7831/
+  ../resolvelib-d935f9fd07246d9641436c7a8e6ae39423374e28
 
 # Create system directories that Ansible defines as default locations in
 # ansible/config/base.yml
@@ -175,17 +187,17 @@ 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 .
+
+mkdir /tmp/_vendor
+/usr/bin/python3.9 -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.9 PYTHONPATH=%{vendor_path}:/tmp/_vendor make docs
+cp -v docs/man/man1/*.1 %{buildroot}/%{_mandir}/man1/
+
+cp -pr docs/docsite/rst .
 cp -p lib/ansible_core.egg-info/PKG-INFO .
 
 %files
@@ -194,18 +206,55 @@ cp -p lib/ansible_core.egg-info/PKG-INFO .
 %exclude %{_bindir}/ansible-test
 %config(noreplace) %{_sysconfdir}/ansible/
 %doc README.rst PKG-INFO COPYING
-# TODO(pabelanger): uncomment once we move back to tagged releases
-# %doc changelogs/CHANGELOG-v2.*.rst
-#%doc %{_mandir}/man1/ansible*
+%doc changelogs/CHANGELOG-v2.*.rst
+%doc %{_mandir}/man1/ansible*
 %{_datadir}/ansible/
-%{python38_sitelib}/ansible*
-%exclude %{python38_sitelib}/ansible_test
+%{python39_sitelib}/ansible*
+%exclude %{python39_sitelib}/ansible_test
+%exclude %{python39_sitelib}/ansible/_vendor/markupsafe/_speedups.c
 
 %files -n ansible-test
 %{_bindir}/ansible-test
-%{python38_sitelib}/ansible_test
+%{python39_sitelib}/ansible_test
 
 %changelog
+* Wed Aug 15 2022 James Marshall <jamarsha@redhat.com> - 2.13.3-1
+- ansible-core 2.13.3 release (rhbz#2118475)
+
+* Wed Jul 20 2022 James Marshall <jamarsha@redhat.com> - 2.13.2-1
+- ansible-core 2.13.2 release (rhbz#2109192)
+
+* Mon Jul 04 2022 Dimitri Savineau <dsavinea@redhat.com> - 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 <dsavinea@redhat.com> - 2.12.7-1
+- ansible-core 2.12.7 release (rhbz#2099323)
+
+* Thu Jun 09 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.6-3
+- Build manpages (rhbz#2032809)
+- Remove legacy files
+
+* Tue Jun 07 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.6-2
+- switch from git to git-core dependency (rhbz#2094549)
+
+* Tue May 24 2022 James Marshall <jamarsha@redhat.com> - 2.12.6-1
+- ansible-core 2.12.6 release
+
+* Mon May 09 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.5-1
+- ansible-core 2.12.5 release
+
+* Mon Apr 11 2022 James Marshall <jamarsha@redhat.com> - 2.12.4-1
+- ansible-core 2.12.4 release
+
+* Mon Mar 14 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.3-1
+- ansible-core 2.12.3 release
+- re-enable changelog and manpages
+
+* Mon Mar 07 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.2-3
+- replace Obsolete to Conflicts
+
 * Wed Feb 02 2022 Dimitri Savineau <dsavinea@redhat.com> - 2.12.2-2
 - fix ansible tarball setup