diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index e0fc652..1501beb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -/Jinja2-*.tar.gz -/jinja2-*.tar.gz +/Jinja2-2.5.tar.gz +/Jinja2-2.5.2.tar.gz +/Jinja2-2.5.5.tar.gz +/Jinja2-2.6.tar.gz diff --git a/Jinja2-2.6-fix-CVE-2014-1402.patch b/Jinja2-2.6-fix-CVE-2014-1402.patch new file mode 100644 index 0000000..c77bacc --- /dev/null +++ b/Jinja2-2.6-fix-CVE-2014-1402.patch @@ -0,0 +1,64 @@ +--- jinja2/bccache.py.orig 2011-07-12 14:02:32.000000000 +0200 ++++ jinja2/bccache.py 2014-05-30 13:15:12.850410773 +0200 +@@ -20,6 +20,9 @@ + import tempfile + import cPickle as pickle + import fnmatch ++import os ++import errno ++import stat + try: + from hashlib import sha1 + except ImportError: +@@ -194,7 +197,9 @@ + two arguments: The directory where the cache items are stored and a + pattern string that is used to build the filename. + +- If no directory is specified the system temporary items folder is used. ++ If no directory is specified a default cache directory is selected. On ++ Windows the user's temp directory is used, on UNIX systems a directory ++ is created for the user in the system temp directory. + + The pattern can be used to have multiple separate caches operate on the + same directory. The default pattern is ``'__jinja2_%s.cache'``. ``%s`` +@@ -207,10 +212,39 @@ + + def __init__(self, directory=None, pattern='__jinja2_%s.cache'): + if directory is None: +- directory = tempfile.gettempdir() ++ directory = self._get_default_cache_dir() + self.directory = directory + self.pattern = pattern + ++ def _get_default_cache_dir(self): ++ tmpdir = tempfile.gettempdir() ++ ++ # On windows the temporary directory is used specific unless ++ # explicitly forced otherwise. We can just use that. ++ if os.name == 'nt': ++ return tmpdir ++ if not hasattr(os, 'getuid'): ++ raise RuntimeError('Cannot determine safe temp directory. You ' ++ 'need to explicitly provide one.') ++ ++ dirname = '_jinja2-cache-%d' % os.getuid() ++ actual_dir = os.path.join(tmpdir, dirname) ++ try: ++ os.mkdir(actual_dir, stat.S_IRWXU) # 0o700 ++ except OSError as e: ++ if e.errno != errno.EEXIST: ++ raise ++ ++ actual_dir_stat = os.lstat(actual_dir) ++ if actual_dir_stat.st_uid != os.getuid() \ ++ or not stat.S_ISDIR(actual_dir_stat.st_mode) \ ++ or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU: ++ raise RuntimeError('Temporary directory \'%s\' has an incorrect ' ++ 'owner, permissions, or type.' % actual_dir) ++ ++ ++ return actual_dir ++ + def _get_cache_filename(self, bucket): + return path.join(self.directory, self.pattern % bucket.key) + diff --git a/plans.fmf b/plans.fmf deleted file mode 100644 index e6427de..0000000 --- a/plans.fmf +++ /dev/null @@ -1,4 +0,0 @@ -discover: - how: fmf -execute: - how: tmt diff --git a/python-jinja2.spec b/python-jinja2.spec index 410f2c0..4f7c463 100644 --- a/python-jinja2.spec +++ b/python-jinja2.spec @@ -1,27 +1,45 @@ -%global srcname jinja2 - -Name: python-jinja2 -Version: 3.1.6 -Release: 6%{?dist} -Summary: General purpose template engine -License: BSD-3-Clause -URL: https://palletsprojects.com/p/jinja/ -Source0: %{pypi_source %srcname} +%if 0%{?fedora} > 12 +%global with_python3 1 +%else +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} +%endif # Enable building without docs to avoid a circular dependency between this # and python-sphinx: -%if 0%{?rhel} || 0%{?flatpak} -%bcond_with docs -%else -%bcond_without docs -%endif -# The dependency on trio is undesired on RHEL -%bcond asyncio_tests %{undefined rhel} +%global with_docs 1 -BuildArch: noarch +Name: python-jinja2 +Version: 2.6 +Release: 7%{?dist} +Summary: General purpose template engine +Group: Development/Languages +License: BSD +URL: http://jinja.pocoo.org/ +Source0: http://pypi.python.org/packages/source/J/Jinja2/Jinja2-%{version}.tar.gz +# This patch consists of two upstream patches merged and rebased +# (the first upstream patch introduced CVE-2014-0012 and the second fixed it) +# https://github.com/mitsuhiko/jinja2/commit/acb672b6a179567632e032f547582f30fa2f4aa7 +# https://github.com/mitsuhiko/jinja2/pull/296/files +Patch0: Jinja2-2.6-fix-CVE-2014-1402.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildArch: noarch +BuildRequires: python-devel +BuildRequires: python-setuptools +BuildRequires: python-markupsafe +%if 0%{?with_docs} +BuildRequires: python-sphinx +%endif # with_docs +Requires: python-babel >= 0.8 +Requires: python-markupsafe +%if 0%{?with_python3} +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-markupsafe +%endif # with_python3 -%global _description %{expand: -Jinja2 is a template engine written in pure Python. It provides a + +%description +Jinja2 is a template engine written in pure Python. It provides a Django inspired non-XML syntax but supports inline expressions and an optional sandboxed environment. @@ -29,342 +47,122 @@ If you have any exposure to other text-based template languages, such as Smarty or Django, you should feel right at home with Jinja2. It's both designer and developer friendly by sticking to Python's principles and adding functionality useful for templating -environments.} +environments. -%description %_description +%if 0%{?with_python3} %package -n python3-jinja2 -Summary: %{summary} -BuildRequires: python3-devel -BuildRequires: python3-pytest -%if %{with asyncio_tests} -BuildRequires: python3-trio -%endif -%if %{with docs} -BuildRequires: %{_bindir}/sphinx-build-3 -BuildRequires: make -BuildRequires: python3-Pallets-Sphinx-Themes >= 2 -BuildRequires: python3-sphinxcontrib-log-cabinet -BuildRequires: python3-sphinx-issues -%endif +Summary: General purpose template engine +Group: Development/Languages +Requires: python3-markupsafe +# babel isn't py3k ready yet, and is only a weak dependency +#Requires: python3-babel >= 0.8 -%description -n python3-jinja2 %_description -%pyproject_extras_subpkg -n python3-jinja2 i18n +%description -n python3-jinja2 +Jinja2 is a template engine written in pure Python. It provides a +Django inspired non-XML syntax but supports inline expressions and an +optional sandboxed environment. + +If you have any exposure to other text-based template languages, such +as Smarty or Django, you should feel right at home with Jinja2. It's +both designer and developer friendly by sticking to Python's +principles and adding functionality useful for templating +environments. +%endif # with_python3 %prep -%autosetup -p1 -n %{srcname}-%{version} +%setup -q -n Jinja2-%{version} +%patch0 -p0 +# cleanup +find . -name '*.pyo' -o -name '*.pyc' -delete -%generate_buildrequires -%pyproject_buildrequires -x i18n +# fix EOL +sed -i 's|\r$||g' LICENSE + +%if 0%{?with_python3} +cp -a . %{py3dir} +%endif # with_python3 %build -%pyproject_wheel -%if %{with docs} -make -C docs html PYTHONPATH=$(pwd)/src SPHINXBUILD=sphinx-build-3 -# remove hidden file -rm -rvf docs/_build/html/.buildinfo -%endif +%{__python} setup.py build + +# for now, we build docs using Python 2.x and use that for both +# packages. +%if 0%{?with_docs} +make -C docs html +%endif # with_docs + +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py build +popd +%endif # with_python3 %install -%pyproject_install -%pyproject_save_files jinja2 +rm -rf %{buildroot} +%{__python} setup.py install -O1 --skip-build \ + --root %{buildroot} + +# remove hidden file +rm -rf docs/_build/html/.buildinfo + +%if 0%{?with_python3} +pushd %{py3dir} +%{__python3} setup.py install -O1 --skip-build \ + --root %{buildroot} +popd +%endif # with_python3 + + +%clean +rm -rf %{buildroot} %check -# test_elif_deep is flaky for an unknown reason -# https://github.com/pallets/jinja/issues/2079 -%pytest tests -k "not test_elif_deep" %{!?with_asyncio_tests:--ignore tests/test_async.py --ignore tests/test_async_filters.py} +make test -%files -n python3-jinja2 -f %{pyproject_files} -%doc README.md -%doc docs/examples -%license LICENSE.txt -%if %{with docs} +%if 0%{?with_python3} +pushd %{py3dir} +make test +popd +%endif # with_python3 + + +%files +%defattr(-,root,root,-) +%doc AUTHORS CHANGES LICENSE +%if 0%{?with_docs} %doc docs/_build/html -%endif +%endif # with_docs +%doc ext +%doc examples +%{python_sitelib}/* +%exclude %{python_sitelib}/jinja2/_debugsupport.c + + +%if 0%{?with_python3} +%files -n python3-jinja2 +%defattr(-,root,root,-) +%doc AUTHORS CHANGES LICENSE +%if 0%{?with_docs} +%doc docs/_build/html +%endif # with_docs +%doc ext +%doc examples +%{python3_sitelib}/* +%exclude %{python3_sitelib}/jinja2/_debugsupport.c +%endif # with_python3 %changelog -* Fri Sep 19 2025 Python Maint - 3.1.6-6 -- Rebuilt for Python 3.14.0rc3 bytecode - -* Fri Aug 15 2025 Python Maint - 3.1.6-5 -- Rebuilt for Python 3.14.0rc2 bytecode - -* Fri Jul 25 2025 Fedora Release Engineering - 3.1.6-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Tue Jun 03 2025 Python Maint - 3.1.6-3 -- Rebuilt for Python 3.14 - -* Mon Jun 02 2025 Python Maint - 3.1.6-2 -- Bootstrap for Python 3.14 - -* Sun Mar 9 2025 Thomas Moschny - 3.1.6-1 -- Update to 3.1.6. - -* Sat Jan 18 2025 Fedora Release Engineering - 3.1.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Jan 08 2025 Miro Hrončok - 3.1.5-1 -- Update to 3.1.5 -- Security fix for CVE-2024-56201 -- Fixes: rhzb#2333688 -- Fixes: rhzb#2336377 - -* Fri Jul 19 2024 Fedora Release Engineering - 3.1.4-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sat Jun 08 2024 Python Maint - 3.1.4-4 -- Rebuilt for Python 3.13 - -* Fri Jun 07 2024 Python Maint - 3.1.4-3 -- Bootstrap for Python 3.13 - -* Thu May 23 2024 Miro Hrončok - 3.1.4-2 -- Python 3.13 fixes -- Fixes: rhzb#2245265 - -* Tue May 07 2024 Lumír Balhar - 3.1.4-1 -- Update to 3.1.4 (rhbz#2279211,rhbz#2279491) - -* Fri Jan 26 2024 Fedora Release Engineering - 3.1.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Mon Jan 22 2024 Fedora Release Engineering - 3.1.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Jan 11 2024 Michel Lind - 3.1.3-1 -- Update to 3.1.3 to fix CVE-2024-22195 - -* Tue Aug 08 2023 Karolina Surma - 3.1.2-6 -- Declare the license as an SPDX expression - -* Fri Jul 21 2023 Fedora Release Engineering - 3.1.2-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Fri Jun 16 2023 Python Maint - 3.1.2-4 -- Rebuilt for Python 3.12 - -* Tue Jun 13 2023 Python Maint - 3.1.2-3 -- Bootstrap for Python 3.12 - -* Fri May 19 2023 Yaakov Selkowitz - 3.1.2-2 -- Disable docs by default in RHEL builds - -* Mon May 01 2023 Sandro Mani - 3.1.2-1 -- Update to 3.1.2 - -* Fri Jan 20 2023 Fedora Release Engineering - 3.0.3-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Mon Nov 14 2022 Lumír Balhar - 3.0.3-6 -- Fix compatibility with pytest 7.2 - -* Fri Jul 22 2022 Fedora Release Engineering - 3.0.3-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Jun 13 2022 Python Maint - 3.0.3-4 -- Rebuilt for Python 3.11 - -* Mon Jun 13 2022 Python Maint - 3.0.3-3 -- Bootstrap for Python 3.11 - -* Fri Jan 21 2022 Fedora Release Engineering - 3.0.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Mon Nov 15 2021 Thomas Moschny - 3.0.3-1 -- Update to 3.0.3. - -* Mon Nov 15 2021 Thomas Moschny - 3.0.1-4 -- Use new Python packaging guidelines. -- Jinja2 version 3 does not support Python 2 anymore. - -* Wed Nov 10 2021 Karolina Surma - 3.0.1-3 -- Don't explicitly declare runtime dependencies when building for Python 3 -- Declare jinja2+i18n extra to map the upstream package structure - -* Fri Jul 23 2021 Fedora Release Engineering - 3.0.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Jun 22 2021 Lumír Balhar - 3.0.1-1 -- Update to 3.0.1 -- Resolves: rhbz#1961862 - -* Fri Jun 04 2021 Python Maint - 2.11.3-3 -- Rebuilt for Python 3.10 - -* Wed Jun 02 2021 Python Maint - 2.11.3-2 -- Bootstrap for Python 3.10 - -* Sat Feb 6 2021 Thomas Moschny - 2.11.3-1 -- Update to 2.11.3. -- Add patches to build with Python 3.10 (#1907442). - -* Wed Jan 27 2021 Fedora Release Engineering - 2.11.2-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Dec 21 2020 Miro Hrončok - 2.11.2-7 -- Drop python2-jinja2 on Fedora 34+ - -* Wed Jul 29 2020 Fedora Release Engineering - 2.11.2-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Sun May 24 2020 Miro Hrončok - 2.11.2-5 -- Rebuilt for Python 3.9 - -* Fri May 22 2020 Miro Hrončok - 2.11.2-4 -- Bootstrap for Python 3.9 - -* Fri May 22 2020 Thomas Moschny - 2.11.2-3 -- Re-add python2 subpackage (#1832057). - -* Wed May 6 2020 Thomas Moschny - 2.11.2-2 -- Drop python2 subpackage from F33 on (#1832057). - -* Wed Apr 15 2020 Thomas Moschny - 2.11.2-1 -- Re-add dependency on python-setuptools. - -* Wed Apr 15 2020 Dan Horák - 2.11.2-1 -- Update to 2.11.2 - -* Mon Apr 06 2020 Igor Raits - 2.11.1-2 -- Drop unneeded R: pythonX-setuptools - -* Sat Feb 8 2020 Thomas Moschny - 2.11.1-1 -- Update to 2.11.1. - -* Thu Jan 30 2020 Fedora Release Engineering - 2.10.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Wed Nov 20 2019 Thomas Moschny - 2.10.3-2 -- Add missing BR on make. - -* Mon Nov 11 2019 Lumír Balhar - 2.10.3-1 -- New upstream version (2.10.3) - -* Thu Oct 03 2019 Miro Hrončok - 2.10.1-5 -- Rebuilt for Python 3.8.0rc1 (#1748018) - -* Sat Aug 17 2019 Miro Hrončok - 2.10.1-4 -- Rebuilt for Python 3.8 - -* Thu Aug 15 2019 Miro Hrončok - 2.10.1-3 -- Bootstrap for Python 3.8 - -* Fri Jul 26 2019 Fedora Release Engineering - 2.10.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Wed Apr 10 2019 Thomas Moschny - 2.10.1-1 -- Update to 2.10.1. -- Update specfile. - -* Wed Feb 27 2019 Phil Wyett - 2.10-8 -- Fix FTBS due to bad conditional -- Add version requirement for markupsafe - -* Sat Feb 02 2019 Fedora Release Engineering - 2.10-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Jul 14 2018 Fedora Release Engineering - 2.10-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Mon Jun 18 2018 Miro Hrončok - 2.10-5 -- Rebuilt for Python 3.7 - -* Thu Jun 14 2018 Miro Hrončok - 2.10-4 -- Bootstrap for Python 3.7 - -* Mon Apr 16 2018 Charalampos Stratakis - 2.10-3 -- Don't build the Python 2 subpackage on EL > 7 - -* Fri Feb 09 2018 Fedora Release Engineering - 2.10-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Nov 16 2017 Thomas Moschny - 2.10-1 -- Update to 2.10. -- Use %%bcond. -- Move BRs to their respective subpackages. - -* Fri Oct 20 2017 Troy Dawson - 2.9.6-4 -- Really cleanup spec file conditionals - -* Fri Sep 29 2017 Troy Dawson - 2.9.6-3 -- Cleanup spec file conditionals - -* Thu Jul 27 2017 Fedora Release Engineering - 2.9.6-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Wed Apr 5 2017 Thomas Moschny - 2.9.6-1 -- Update to 2.9.6. - -* Sat Feb 11 2017 Fedora Release Engineering - 2.9.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Sun Jan 29 2017 Thomas Moschny - 2.9.5-1 -- Update to 2.9.5. - -* Fri Jan 13 2017 Thomas Moschny - 2.9.4-1 -- Update to 2.9.4. - -* Sat Dec 31 2016 Thomas Moschny - 2.8.1-1 -- Update to 2.8.1. - -* Fri Dec 09 2016 Charalampos Stratakis - 2.8-8 -- Rebuild for Python 3.6 - -* Thu Sep 22 2016 Orion Poplawski - 2.8-7 -- Ship python2-jinja2 (bug #1378519) -- Modernize spec - -* Tue Jul 19 2016 Fedora Release Engineering - 2.8-6 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Fri Feb 5 2016 Thomas Moschny - 2.8-5 -- Do not call py.test, there are currently no tests in the tarball. - -* Thu Feb 04 2016 Fedora Release Engineering - 2.8-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Mon Oct 12 2015 Robert Kuska - 2.8-3 -- Rebuilt for Python3.5 rebuild - -* Mon Jul 27 2015 Thomas Moschny - 2.8-2 -- Apply updates Python packaging guidelines. -- Mark LICENSE with %%license. - -* Sun Jul 26 2015 Haïkel Guémar - 2.8-1 -- Upstream 2.8 - -* Thu Jun 18 2015 Fedora Release Engineering - 2.7.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Tue Dec 2 2014 Orion Poplawski - 2.7.3-2 -- Add Requires python(3)-setuptools (bug #1168774) - -* Sat Jun 7 2014 Thomas Moschny - 2.7.3-1 -- Update to 2.7.3. -- Reenable docs. - -* Sat May 10 2014 Orion Poplawski - 2.7.2-2 -- Bootstrap (without docs) build for Python 3.4 - -* Fri Jan 10 2014 Thomas Moschny - 2.7.2-1 -- Update to 2.7.2. -- Update python3 conditional. - -* Fri Aug 16 2013 Thomas Moschny - 2.7.1-1 -- Update to 2.7.1. - -* Thu Jul 25 2013 Orion Poplawski - 2.7-1 -- Update to 2.7 -- spec cleanup +* Fri Jun 13 2014 Thomas Moschny - 2.6-7 +- Fix CVE-2014-1402 (using patch from RHSA-2014:0748). * Thu Feb 14 2013 Fedora Release Engineering - 2.6-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild @@ -425,7 +223,7 @@ dependency with python-sphinx; disable docs for now * Tue Jul 13 2010 Thomas Moschny - 2.5-1 - Update to upstream version 2.5. -- Create python3 subpackage. +- Create python3 subpackage. - Minor specfile fixes. - Add examples directory. - Thanks to Gareth Armstrong for additional hints. diff --git a/sources b/sources index 17e3310..542d56c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (jinja2-3.1.6.tar.gz) = bddd5e142f1462426c57b2efafdfafdfc6b66de257668707940896feae71eabdf19e0b6e34ef49b965153baf9b1eb59bb5a97349bb287ea0921dd2a751e967ab +1c49a8825c993bfdcf55bb36897d28a2 Jinja2-2.6.tar.gz diff --git a/tests/smoke.fmf b/tests/smoke.fmf deleted file mode 100644 index 19656ca..0000000 --- a/tests/smoke.fmf +++ /dev/null @@ -1,7 +0,0 @@ -description: | - Runs very simple jinja2 template which should always work -test: python3 smoke.py -framework: shell -require: -- python3 -- python3-jinja2 diff --git a/tests/smoke.py b/tests/smoke.py deleted file mode 100644 index 99a000c..0000000 --- a/tests/smoke.py +++ /dev/null @@ -1,9 +0,0 @@ -import jinja2 - - -TEMPLATE = "Text {{ variable }}" - -environment = jinja2.Environment() -template = environment.from_string(TEMPLATE) -output = template.render(variable="demo") -assert output == "Text demo", f"got: {output}"