diff --git a/Babel-2.9.0.tar.gz b/Babel-2.6.0.tar.gz similarity index 49% rename from Babel-2.9.0.tar.gz rename to Babel-2.6.0.tar.gz index 95929f246c7a7fb3f80e82997da169c1ecbe9daa..27358741fe71faac642552b56f57e49af59f6f4c 100644 Binary files a/Babel-2.9.0.tar.gz and b/Babel-2.6.0.tar.gz differ diff --git a/babel.spec b/babel.spec deleted file mode 100644 index 86cbc8bfa2ce9406ce1e8760bab3380f299980f4..0000000000000000000000000000000000000000 --- a/babel.spec +++ /dev/null @@ -1,131 +0,0 @@ -Name: babel -Version: 2.9.0 -Release: 2 -Summary: Tools for internationalizing and localizing Python applications -License: BSD -URL: http://babel.pocoo.org/ -Source0: https://files.pythonhosted.org/packages/source/B/Babel/Babel-%{version}.tar.gz - -Patch0: babel-2.3.4-remove-pytz-version.patch -Patch1: backport-0001-CVE-2021-20095-Run-locale-identifiers-through-os.path.basename.patch -Patch2: backport-0002-CVE-2021-20095-Disallow-special-filenames-on-Windows.patch - -BuildArch: noarch - -BuildRequires: gcc git make -BuildRequires: python3-devel python3-setuptools python3-pytz python3-pytest python3-freezegun python3-sphinx - -Requires: python3-babel python3-setuptools - -%description -Babel is an integrated collection of utilities that assist in internationalizing and -localizing Python applications, with an emphasis on web-based applications. - -%package -n python3-babel -Summary: Library for internationalizing Python applications -Requires: python3-setuptools -Requires: python3-pytz - -%description -n python3-babel -Babel is an integrated collection of utilities that assist in internationalizing and -localizing Python applications, with an emphasis on web-based applications. - -%package help -Summary: Documentation for Babel -Provides: python-babel-doc = %{version}-%{release} -Provides: python3-babel-doc = %{version}-%{release} -Provides: babel-doc -Obsoletes: babel-doc - -%description help -Documentation for Babel - -%prep -%autosetup -n Babel-%{version} -p1 -Sgit - -%build -%py3_build - -BUILDDIR="$PWD/built-docs" -rm -rf "$BUILDDIR" -pushd docs -make \ - SPHINXBUILD=sphinx-build-3 \ - BUILDDIR="$BUILDDIR" \ - html -popd -rm -f "$BUILDDIR/html/.buildinfo" - -%install -%py3_install - -%check -export TZ=Asia/Shanghai -%{__python3} -m pytest - -%pre - -%preun - -%post - -%postun - -%files -%doc CHANGES AUTHORS -%license LICENSE -%{_bindir}/pybabel - -%files -n python3-babel -%{python3_sitelib}/Babel-%{version}-py*.egg-info -%{python3_sitelib}/babel - -%files help -%doc built-docs/html/* - -%changelog -* Tue May 11 2021 yangzhuangzhuang - 2.9.0-2 -- Type:bugfix -- ID:NA -- SUG:NA -- DESC:Fix CVE-2021-20095 - -* Sat Jan 23 2021 zoulin - 2.9.0-1 -- Type:enhancement -- ID:NA -- SUG:NA -- DESC:update to 2.9.0 - -* Thu Oct 29 2020 yangzhuangzhuang - 2.8.0-2 -- Type:enhancement -- ID:NA -- SUG:NA -- DESC:remove python2 - -* Mon Jun 29 2020 Liquor - 2.8.0-1 -- Type:enhancement -- ID:NA -- SUG:NA -- DESC:update to 2.8.0 - -* Wed Jun 24 2020 chenditang - 2.7.0-2 -- Type:enhancement -- ID:NA -- SUG:NA -- DESC:fix tests when using Python 3.9a6 - -* Fri Oct 11 2019 hanzhijun - 2.7.0-1 -- Type:enhancement -- ID:NA -- SUG:NA -- DESC:update to 2.7.0 - -* Fri Sep 27 2019 chengquan - 2.6.0-7 -- Type:bugfix -- ID:NA -- SUG:NA -- DESC:add help package - -* Tue Aug 13 2019 openEuler Buildteam - 2.6.0-6 -- Package init - diff --git a/babel.yaml b/babel.yaml deleted file mode 100644 index d7faa1a98139457d667320df927e0a70049dadba..0000000000000000000000000000000000000000 --- a/babel.yaml +++ /dev/null @@ -1,4 +0,0 @@ -version_control: github -src_repo: python-babel/babel -tag_prefix: "^v" -seperator: "." diff --git a/backport-0001-CVE-2021-20095-Run-locale-identifiers-through-os.path.basename.patch b/backport-0001-CVE-2021-20095-Run-locale-identifiers-through-os.path.basename.patch deleted file mode 100644 index 6988b71ef1f7f736cd4cf233d2a58fc7f6639eb3..0000000000000000000000000000000000000000 --- a/backport-0001-CVE-2021-20095-Run-locale-identifiers-through-os.path.basename.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 3a700b5b8b53606fd98ef8294a56f9510f7290f8 Mon Sep 17 00:00:00 2001 -From: Aarni Koskela -Date: Wed, 28 Apr 2021 10:33:40 +0300 -Subject: [PATCH] Run locale identifiers through `os.path.basename()` - ---- - babel/localedata.py | 2 ++ - tests/test_localedata.py | 30 +++++++++++++++++++++++++++++- - 2 files changed, 31 insertions(+), 1 deletion(-) - -diff --git a/babel/localedata.py b/babel/localedata.py -index f4771d1f..11085490 100644 ---- a/babel/localedata.py -+++ b/babel/localedata.py -@@ -47,6 +47,7 @@ def exists(name): - """ - if not name or not isinstance(name, string_types): - return False -+ name = os.path.basename(name) - if name in _cache: - return True - file_found = os.path.exists(os.path.join(_dirname, '%s.dat' % name)) -@@ -102,6 +103,7 @@ def load(name, merge_inherited=True): - :raise `IOError`: if no locale data file is found for the given locale - identifer, or one of the locales it inherits from - """ -+ name = os.path.basename(name) - _cache_lock.acquire() - try: - data = _cache.get(name) -diff --git a/tests/test_localedata.py b/tests/test_localedata.py -index 83cd6699..9cb4282e 100644 ---- a/tests/test_localedata.py -+++ b/tests/test_localedata.py -@@ -11,11 +11,17 @@ - # individuals. For the exact contribution history, see the revision - # history and logs, available at http://babel.edgewall.org/log/. - -+import os -+import pickle -+import sys -+import tempfile - import unittest - import random - from operator import methodcaller - --from babel import localedata -+import pytest -+ -+from babel import localedata, Locale, UnknownLocaleError - - - class MergeResolveTestCase(unittest.TestCase): -@@ -131,3 +137,25 @@ def listdir_spy(*args): - localedata.locale_identifiers.cache = None - assert localedata.locale_identifiers() - assert len(listdir_calls) == 2 -+ -+ -+def test_locale_name_cleanup(): -+ """ -+ Test that locale identifiers are cleaned up to avoid directory traversal. -+ """ -+ no_exist_name = os.path.join(tempfile.gettempdir(), "babel%d.dat" % random.randint(1, 99999)) -+ with open(no_exist_name, "wb") as f: -+ pickle.dump({}, f) -+ -+ try: -+ name = os.path.splitext(os.path.relpath(no_exist_name, localedata._dirname))[0] -+ except ValueError: -+ if sys.platform == "win32": -+ pytest.skip("unable to form relpath") -+ raise -+ -+ assert not localedata.exists(name) -+ with pytest.raises(IOError): -+ localedata.load(name) -+ with pytest.raises(UnknownLocaleError): -+ Locale(name) diff --git a/backport-0002-CVE-2021-20095-Disallow-special-filenames-on-Windows.patch b/backport-0002-CVE-2021-20095-Disallow-special-filenames-on-Windows.patch deleted file mode 100644 index fc9d84a5174c6a92d5ac43ee4ee29a99fe20575b..0000000000000000000000000000000000000000 --- a/backport-0002-CVE-2021-20095-Disallow-special-filenames-on-Windows.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 5caf717ceca4bd235552362b4fbff88983c75d8c Mon Sep 17 00:00:00 2001 -From: Aarni Koskela -Date: Wed, 28 Apr 2021 11:47:42 +0300 -Subject: [PATCH] Disallow special filenames on Windows - ---- - babel/localedata.py | 24 +++++++++++++++++++++--- - tests/test_localedata.py | 9 +++++++++ - 2 files changed, 30 insertions(+), 3 deletions(-) - -diff --git a/babel/localedata.py b/babel/localedata.py -index 11085490..782b7afa 100644 ---- a/babel/localedata.py -+++ b/babel/localedata.py -@@ -13,6 +13,8 @@ - """ - - import os -+import re -+import sys - import threading - from itertools import chain - -@@ -22,6 +24,7 @@ - _cache = {} - _cache_lock = threading.RLock() - _dirname = os.path.join(os.path.dirname(__file__), 'locale-data') -+_windows_reserved_name_re = re.compile("^(con|prn|aux|nul|com[0-9]|lpt[0-9])$", re.I) - - - def normalize_locale(name): -@@ -38,6 +41,22 @@ def normalize_locale(name): - return locale_id - - -+def resolve_locale_filename(name): -+ """ -+ Resolve a locale identifier to a `.dat` path on disk. -+ """ -+ -+ # Clean up any possible relative paths. -+ name = os.path.basename(name) -+ -+ # Ensure we're not left with one of the Windows reserved names. -+ if sys.platform == "win32" and _windows_reserved_name_re.match(os.path.splitext(name)[0]): -+ raise ValueError("Name %s is invalid on Windows" % name) -+ -+ # Build the path. -+ return os.path.join(_dirname, '%s.dat' % name) -+ -+ - def exists(name): - """Check whether locale data is available for the given locale. - -@@ -47,10 +66,9 @@ def exists(name): - """ - if not name or not isinstance(name, string_types): - return False -- name = os.path.basename(name) - if name in _cache: - return True -- file_found = os.path.exists(os.path.join(_dirname, '%s.dat' % name)) -+ file_found = os.path.exists(resolve_locale_filename(name)) - return True if file_found else bool(normalize_locale(name)) - - -@@ -121,7 +139,7 @@ def load(name, merge_inherited=True): - else: - parent = '_'.join(parts[:-1]) - data = load(parent).copy() -- filename = os.path.join(_dirname, '%s.dat' % name) -+ filename = resolve_locale_filename(name) - with open(filename, 'rb') as fileobj: - if name != 'root' and merge_inherited: - merge(data, pickle.load(fileobj)) -diff --git a/tests/test_localedata.py b/tests/test_localedata.py -index 9cb4282e..c852c1b6 100644 ---- a/tests/test_localedata.py -+++ b/tests/test_localedata.py -@@ -159,3 +159,12 @@ def test_locale_name_cleanup(): - localedata.load(name) - with pytest.raises(UnknownLocaleError): - Locale(name) -+ -+ -+@pytest.mark.skipif(sys.platform != "win32", reason="windows-only test") -+def test_reserved_locale_names(): -+ for name in ("con", "aux", "nul", "prn", "com8", "lpt5"): -+ with pytest.raises(ValueError): -+ localedata.load(name) -+ with pytest.raises(ValueError): -+ Locale(name) diff --git a/python-babel.spec b/python-babel.spec new file mode 100644 index 0000000000000000000000000000000000000000..42182813d4521a214763fc886a983a05897f1587 --- /dev/null +++ b/python-babel.spec @@ -0,0 +1,74 @@ +%global _empty_manifest_terminate_build 0 +Name: python-babel +Version: 2.6.0 +Release: 1 +Summary: Internationalization utilities +License: BSD +URL: http://babel.pocoo.org/ +Source0: https://files.pythonhosted.org/packages/be/cc/9c981b249a455fa0c76338966325fc70b7265521bad641bf2932f77712f4/Babel-2.6.0.tar.gz +BuildArch: noarch +%description +A collection of tools for internationalizing Python applications. + + +%package -n python2-babel +Summary: Internationalization utilities +Provides: python2-babel, python2-Babel +BuildRequires: python2-devel +BuildRequires: python2-setuptools +BuildRequires: python2-pip +Requires: python2-pytz +%description -n python2-babel +A collection of tools for internationalizing Python applications. + + +%package help +Summary: Development documents and examples for Babel +Provides: python2-babel-doc +%description help +A collection of tools for internationalizing Python applications. + + +%prep +%autosetup -n Babel-2.6.0 + +%build +%py2_build + +%install +%py2_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python2-babel -f filelist.lst +%dir %{python2_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu Apr 29 2021 openstack-sig +- Package Spec generated