diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3674286 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/virtualenv-15.1.0.tar.gz diff --git a/.python-virtualenv.metadata b/.python-virtualenv.metadata new file mode 100644 index 0000000..dbe103b --- /dev/null +++ b/.python-virtualenv.metadata @@ -0,0 +1 @@ +995ce0fa007210ac2f10258999d06813ecdd6eeb SOURCES/virtualenv-15.1.0.tar.gz diff --git a/SOURCES/check-exec_dir.patch b/SOURCES/check-exec_dir.patch new file mode 100644 index 0000000..3173786 --- /dev/null +++ b/SOURCES/check-exec_dir.patch @@ -0,0 +1,16 @@ +diff --git a/virtualenv.py b/virtualenv.py +index c4e3bd5..89b8863 100755 +--- a/virtualenv.py ++++ b/virtualenv.py +@@ -1181,8 +1181,9 @@ def install_python(home_dir, lib_dir, inc_dir, bin_dir, site_packages, clear, sy + exec_dir = join(sys.exec_prefix, 'Lib') + else: + exec_dir = join(sys.exec_prefix, 'lib', py_version) +- for fn in os.listdir(exec_dir): +- copyfile(join(exec_dir, fn), join(lib_dir, fn), symlink) ++ if os.path.isdir(exec_dir): ++ for fn in os.listdir(exec_dir): ++ copyfile(join(exec_dir, fn), join(lib_dir, fn), symlink) + + if is_jython: + # Jython has either jython-dev.jar and javalib/ dir, or just diff --git a/SOURCES/dont-fail-on-missing-certifi-cert.patch b/SOURCES/dont-fail-on-missing-certifi-cert.patch new file mode 100644 index 0000000..73478a3 --- /dev/null +++ b/SOURCES/dont-fail-on-missing-certifi-cert.patch @@ -0,0 +1,102 @@ +diff --git a/tests/test_virtualenv.py b/tests/test_virtualenv.py +index ce45ede..7946a16 100644 +--- a/tests/test_virtualenv.py ++++ b/tests/test_virtualenv.py +@@ -4,11 +4,16 @@ import os + import shutil + import sys + import tempfile ++import zipfile + import pytest + import platform # noqa + + from mock import patch, Mock + ++try: ++ from pathlib import Path ++except ImportError: ++ from pathlib2 import Path + + def test_version(): + """Should have a version string""" +@@ -139,3 +144,44 @@ def test_always_copy_option(): + " symlink (to %s)" % (full_name, os.readlink(full_name)) + finally: + shutil.rmtree(tmp_virtualenv) ++ ++ ++def test_missing_certifi_pem(tmp_path): ++ """Make sure that we can still create virtual environment if pip is ++ patched to not use certifi's cacert.pem and the file is removed. ++ This can happen if pip is packaged by Linux distributions.""" ++ proj_dir = Path(__file__).parent.parent ++ support_original = proj_dir / "virtualenv_support" ++ pip_wheel = sorted(support_original.glob("pip*whl"))[0] ++ whl_name = pip_wheel.name ++ ++ wheeldir = tmp_path / "wheels" ++ wheeldir.mkdir() ++ tmpcert = tmp_path / "tmpcert.pem" ++ cacert = "pip/_vendor/requests/cacert.pem" ++ certifi = "pip/_vendor/requests/certs.py" ++ oldpath = b"os.path.join(os.path.dirname(__file__), 'cacert.pem')" ++ newpath = "r'{}'".format(tmpcert).encode() ++ removed = False ++ replaced = False ++ ++ with zipfile.ZipFile(str(pip_wheel), "r") as whlin: ++ with zipfile.ZipFile(str(wheeldir / whl_name), "w") as whlout: ++ for item in whlin.infolist(): ++ buff = whlin.read(item.filename) ++ if item.filename == cacert: ++ tmpcert.write_bytes(buff) ++ removed = True ++ continue ++ if item.filename == certifi: ++ nbuff = buff.replace(oldpath, newpath) ++ assert nbuff != buff ++ buff = nbuff ++ replaced = True ++ whlout.writestr(item, buff) ++ ++ assert removed and replaced ++ ++ venvdir = tmp_path / "venv" ++ search_dirs = [str(wheeldir), str(support_original)] ++ virtualenv.create_environment(str(venvdir), search_dirs=search_dirs) +diff --git a/virtualenv.egg-info/PKG-INFO b/virtualenv.egg-info/PKG-INFO +index 11f5c75..501e81a 100644 +--- a/virtualenv.egg-info/PKG-INFO ++++ b/virtualenv.egg-info/PKG-INFO +@@ -1,10 +1,12 @@ +-Metadata-Version: 1.1 ++Metadata-Version: 1.2 + Name: virtualenv + Version: 15.1.0 + Summary: Virtual Python Environment builder + Home-page: https://virtualenv.pypa.io/ +-Author: Jannis Leidel, Carl Meyer and Brian Rosner +-Author-email: python-virtualenv@groups.google.com ++Author: Ian Bicking ++Author-email: ianb@colorstudy.com ++Maintainer: Jannis Leidel, Carl Meyer and Brian Rosner ++Maintainer-email: python-virtualenv@groups.google.com + License: MIT + Description: Virtualenv + ========== +diff --git a/virtualenv.py b/virtualenv.py +index a174b8a..5699998 100755 +--- a/virtualenv.py ++++ b/virtualenv.py +@@ -861,7 +861,10 @@ def install_wheel(project_names, py_executable, search_dirs=None, + + import pip + +- cert_data = pkgutil.get_data("pip._vendor.requests", "cacert.pem") ++ try: ++ cert_data = pkgutil.get_data("pip._vendor.requests", "cacert.pem") ++ except IOError: ++ cert_data = None + if cert_data is not None: + cert_file = tempfile.NamedTemporaryFile(delete=False) + cert_file.write(cert_data) diff --git a/SPECS/python-virtualenv.spec b/SPECS/python-virtualenv.spec new file mode 100644 index 0000000..feca8d5 --- /dev/null +++ b/SPECS/python-virtualenv.spec @@ -0,0 +1,413 @@ +# python2X and python3X are built form the same module, so we need a conditional +# for python[23] bits the state of the conditional is not important in the spec, +# it is set in modulemd +%bcond_without python2 +%bcond_without python3 +%bcond_with python36_module + +Name: python-virtualenv +Version: 15.1.0 +Release: 17%{?dist} +Summary: Tool to create isolated Python environments + +Group: Development/Languages +License: MIT +URL: http://pypi.python.org/pypi/virtualenv +Source0: http://pypi.python.org/packages/source/v/virtualenv/virtualenv-%{version}.tar.gz + +# virtualenv -p "/usr/bin/python3" venv fails if there are not packages installed +# under /usr/local/lib/pythonX.Y/site-packages. Check if exec_dir exists before +# listing it's content. +Patch0: check-exec_dir.patch + +# Don't fail on missing certifi's cert +# https://github.com/pypa/virtualenv/pull/1252 +Patch3: dont-fail-on-missing-certifi-cert.patch + +BuildArch: noarch +%{?with_python2:BuildRequires: python2-devel} + +%if %{with python3} +BuildRequires: python3-sphinx +%if %{with python36_module} +BuildRequires: python36-devel +BuildRequires: python36-rpm-macros +%else +BuildRequires: python3-devel +%endif +%endif # with python3 + +%description +virtualenv is a tool to create isolated Python environments. virtualenv +is a successor to workingenv, and an extension of virtual-python. It is +written by Ian Bicking, and sponsored by the Open Planning Project. It is +licensed under an MIT-style permissive license. + + +%if %{with python2} +%package -n python2-virtualenv +Summary: Tool to create isolated Python environments + +Requires: python2-setuptools +Requires: python2-devel +%{?python_provide:%python_provide python2-virtualenv} + +%description -n python2-virtualenv +virtualenv is a tool to create isolated Python environments. virtualenv +is a successor to workingenv, and an extension of virtual-python. It is +written by Ian Bicking, and sponsored by the Open Planning Project. It is +licensed under an MIT-style permissive license +%endif + + +%if %{with python3} +%package -n python-virtualenv-doc +Summary: Documentation for python virtualenv + +%description -n python-virtualenv-doc +Documentation for python virtualenv. + +%package -n python3-virtualenv +Summary: Tool to create isolated Python environments + +Requires: python3-setuptools +# For alternatives +Requires: python36 +Requires(post): python36 +Requires(postun): python36 +%if %{with python36_module} +Requires: python36-devel +%else +Requires: python3-devel +%endif +%{?python_provide:%python_provide python3-virtualenv} +Provides: virtualenv = %{version}-%{release} + +%description -n python3-virtualenv +virtualenv is a tool to create isolated Python environments. virtualenv +is a successor to workingenv, and an extension of virtual-python. It is +written by Ian Bicking, and sponsored by the Open Planning Project. It is +licensed under an MIT-style permissive license +%endif # with python3 + + +%prep +%setup -q -n virtualenv-%{version} +%{__sed} -i -e "1s|#!/usr/bin/env python||" virtualenv.py + +%patch0 -p1 +%patch3 -p1 + +%build +# Build code +%{?with_python2:%{py2_build}} + +# Build docs on Fedora +%if %{with python3} +%{__python3} setup.py build_sphinx +rm -f build/sphinx/html/.buildinfo + +%{py3_build} + +# Build docs on Fedora +%{__python3} setup.py build_sphinx +rm -f build/sphinx/html/.buildinfo +%endif # with python3 + +%install +%if %{with python3} +%{py3_install} +# rename binaries to use python3 +mv %{buildroot}/%{_bindir}/virtualenv %{buildroot}/%{_bindir}/py3-virtualenv +# The versioned 3.x script was removed from upstream. Add it back. +cp %{buildroot}/%{_bindir}/py3-virtualenv %{buildroot}/%{_bindir}/virtualenv-%{python3_version} +# For alternatives +touch %{buildroot}/%{_bindir}/virtualenv-3 +touch %{buildroot}/%{_bindir}/virtualenv +%endif # with python3 + +%if %{with python2} +%{py2_install} +# The versioned 2.x script was removed from upstream. Add it back. +cp %{buildroot}/%{_bindir}/virtualenv %{buildroot}/%{_bindir}/virtualenv-%{python2_version} +mv %{buildroot}/%{_bindir}/virtualenv %{buildroot}/%{_bindir}/virtualenv-2 +%endif + + +%if %{with python3} +%post -n python3-virtualenv +alternatives --add-slave python3 %{_bindir}/python%{python3_version} \ + %{_bindir}/virtualenv-3 \ + virtualenv-3 \ + %{_bindir}/virtualenv-%{python3_version} +alternatives --add-slave python3 %{_bindir}/python%{python3_version} \ + %{_bindir}/virtualenv \ + virtualenv \ + %{_bindir}/virtualenv-3 + +%postun -n python3-virtualenv +# Do this only during uninstall process (not during update) +if [ $1 -eq 0 ]; then + alternatives --remove-slave python3 %{_bindir}/python%{python3_version} \ + virtualenv-3 + alternatives --remove-slave python3 %{_bindir}/python%{python3_version} \ + virtualenv +fi +%endif + + +%if %{with python2} +%files -n python2-virtualenv +%license LICENSE.txt +%doc docs/*rst PKG-INFO AUTHORS.txt + +%{python2_sitelib}/* +%{_bindir}/virtualenv-2 +%{_bindir}/virtualenv-%{python2_version} +%endif + +%if %{with python3} +# Include sphinx docs on Fedora +%files -n python-virtualenv-doc +%doc build/sphinx/* + +%files -n python3-virtualenv +%license LICENSE.txt +%doc docs/*rst PKG-INFO AUTHORS.txt +%{_bindir}/py3-virtualenv +%ghost %{_bindir}/virtualenv +%ghost %{_bindir}/virtualenv-3 +%{_bindir}/virtualenv-%{python3_version} +%{python3_sitelib}/virtualenv.py +%{python3_sitelib}/virtualenv_support/ +%{python3_sitelib}/virtualenv-*.egg-info/ +%{python3_sitelib}/__pycache__/* +%endif # with python3 + + + +%changelog +* Fri Dec 14 2018 Miro Hrončok - 15.1.0-17 +- Don't fail on missing certifi's cert bundle +- Resolves: rhbz#1659440 + +* Wed Nov 28 2018 Tomas Orsava - 15.1.0-16 +- Provide the package name `virtualenv` and the /usr/bin/virtualenv binary +- Resolves: rhbz#1649958 + +* Thu Oct 04 2018 Lumír Balhar - 15.1.0-15 +- Fix alternatives - post and postun sections only with python3 +- Resolves: rhbz#1633534 + +* Mon Oct 01 2018 Lumír Balhar - 15.1.0-14 +- Add alternatives for virtualenv-3 +- Resolves: rhbz#1633534 + +* Wed Aug 15 2018 Lumír Balhar - 15.1.0-13 +- Remove virtualenv-3 executable. This will be provided by python3 module. +- Resolves: rhbz#1615727 + +* Wed Aug 08 2018 Lumír Balhar - 15.1.0-12 +- Remove unversioned binaries from python2 subpackage +- Resolves: rhbz#1613343 + +* Sat Aug 04 2018 Lumír Balhar - 15.1.0-11 +- Fixed conditions + +* Tue Jul 31 2018 Lumír Balhar - 15.1.0-10 +- Switch python3 coditions to bcond + +* Tue Jul 17 2018 Tomas Orsava - 15.1.0-9 +- BuildRequire also python36-rpm-macros as part of the python36 module build + +* Wed Jul 04 2018 Miro Hrončok - 15.1.0-8 +- Add a bcond for python2 + +* Thu Jun 14 2018 Tomas Orsava - 15.1.0-7 +- Switch to using Python 3 version of sphinx + +* Mon Apr 30 2018 Tomas Orsava - 15.1.0-6 +- Require the python36-devel package when building for the python36 module + +* Wed Feb 28 2018 Iryna Shcherbina - 15.1.0-5 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Fri Feb 09 2018 Fedora Release Engineering - 15.1.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Sep 29 2017 Troy Dawson - 15.1.0-3 +- Cleanup spec file conditionals + +* Thu Jul 27 2017 Fedora Release Engineering - 15.1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jun 12 2017 Steve Milner - 15.1.0-1 +- Update to 15.1.0 per https://bugzilla.redhat.com/show_bug.cgi?id=1454962 + +* Fri Feb 17 2017 Michal Cyprian - 15.0.3-6 +- Check if exec_dir exists before listing it's content during venv create process + +* Sat Feb 11 2017 Fedora Release Engineering - 15.0.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Jan 4 2017 Steve Milner - 15.0.3-4 +- Updated version binaries per discussion at bz#1385240. + +* Tue Dec 13 2016 Stratakis Charalampos - 15.0.3-3 +- Rebuild for Python 3.6 + +* Mon Oct 17 2016 Steve Milner - 15.0.3-2 +- Added MAJOR symlinks per bz#1385240. + +* Mon Aug 8 2016 Steve Milner - 15.0.3-1 +- Update for upstream release. + +* Tue Jul 19 2016 Fedora Release Engineering - 14.0.6-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Sun Feb 21 2016 Orion Poplawski - 14.0.6-1 +- Update to 14.0.6 + +* Tue Feb 2 2016 Orion Poplawski - 13.1.2-4 +- Modernize spec +- Fix python3 package file ownership + +* Wed Dec 2 2015 Orion Poplawski - 13.1.2-3 +- Move documentation to separate package (bug #1219139) + +* Wed Oct 14 2015 Robert Kuska - 13.1.2-2 +- Rebuilt for Python3.5 rebuild + +* Mon Aug 24 2015 Steve Milner - 13.1.2-1 +- Update for upstream release. + +* Thu Jun 18 2015 Fedora Release Engineering - 12.0.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Mar 16 2015 Matej Stuchlik - 12.0.7-1 +- Update to 12.0.7 + +* Thu Jan 15 2015 Matthias Runge - 1.11.6-2 +- add a python3-package, thanks to Matej Stuchlik (rhbz#1179150) + +* Wed Jul 09 2014 Matthias Runge - 1.11.6-1 +- update to 1.11.6: + Upstream updated setuptools to 3.6, updated pip to 1.5.6 + +* Sun Jun 08 2014 Fedora Release Engineering - 1.10.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Aug 15 2013 Steve 'Ashcrow' Milner - 1.10.1-1 +- Upstream upgraded pip to v1.4.1 +- Upstream upgraded setuptools to v0.9.8 (fixes CVE-2013-1633) + +* Sun Aug 04 2013 Fedora Release Engineering - 1.9.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue May 14 2013 Toshio Kuratomi - 1.9.1-1 +- Update to upstream 1.9.1 because of security issues with the bundled + python-pip in older releases. This is just a quick fix until a + python-virtualenv maintainer can unbundle the python-pip package + see: https://bugzilla.redhat.com/show_bug.cgi?id=749378 + +* Thu Feb 14 2013 Fedora Release Engineering - 1.7.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Aug 14 2012 Steve Milner - 1.7.2-1 +- Update for upstream bug fixes. +- Added path for versioned binary. +- Patch no longer required. + +* Sat Jul 21 2012 Fedora Release Engineering - 1.7.1.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Mar 14 2012 Steve 'Ashcrow' Milner - 1.7.1.2-1 +- Update for upstream bug fixes. +- Added patch for sphinx building + +* Sat Jan 14 2012 Fedora Release Engineering - 1.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Dec 20 2011 Steve 'Ashcrow' Milner - 1.7-1 +- Update for https://bugzilla.redhat.com/show_bug.cgi?id=769067 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sat Oct 16 2010 Steve 'Ashcrow' Milner - 1.5.1-1 +- Added _weakrefset requirement for Python 2.7.1. +- Add support for PyPy. +- Uses a proper temporary dir when installing environment requirements. +- Add --prompt option to be able to override the default prompt prefix. +- Add fish and csh activate scripts. + +* Thu Jul 22 2010 David Malcolm - 1.4.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Wed Jul 7 2010 Steve 'Ashcrow' Milner - 1.4.8-3 +- Fixed EPEL installation issue from BZ#611536 + +* Wed Jun 9 2010 Steve 'Ashcrow' Milner - 1.4.8-2 +- Only replace the python shebang on the first line (Robert Buchholz) + +* Wed Apr 28 2010 Steve 'Ashcrow' Milner - 1.4.8-1 +- update pip to 0.7 +- move regen-docs into bin/ +- Fix #31, make activate_this.py work on Windows (use Lib/site-packages) +unset PYTHONHOME envioronment variable -- first step towards fixing the PYTHONHOME issue; see e.g. https://bugs.launchpad.net/virtualenv/+bug/290844 +- unset PYTHONHOME in the (Unix) activate script (and reset it in deactivate()) +- use the activate.sh in virtualenv.py via running bin/rebuild-script.py +- add warning message if PYTHONHOME is set + +* Fri Apr 2 2010 Steve 'Ashcrow' Milner - 1.4.6-1 +- allow script creation without setuptools +- fix problem with --relocate when bin/ has subdirs (fixes #12) +- Allow more flexible .pth file fixup +- make nt a required module, along with posix. it may not be a builtin module on jython +- don't mess with PEP 302-supplied __file__, from CPython, and merge in a small startup optimization for Jython, from Jython + +* Tue Dec 22 2009 Steve 'Ashcrow' Milner - 1.4.3-1 +- Updated for upstream release. + +* Thu Nov 12 2009 Steve 'Ashcrow' Milner - 1.4.2-1 +- Updated for upstream release. + +* Sun Jul 26 2009 Fedora Release Engineering - 1.3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Apr 28 2009 Steve 'Ashcrow' Milner - 1.3.3-1 +- Updated for upstream release. + +* Thu Feb 26 2009 Fedora Release Engineering - 1.3.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Dec 25 2008 Steve 'Ashcrow' Milner - 1.3.2-1 +- Updated for upstream release. + +* Thu Dec 04 2008 Ignacio Vazquez-Abrams - 1.3.1-4 +- Rebuild for Python 2.6 + +* Mon Dec 1 2008 Steve 'Ashcrow' Milner - 1.3.1-3 +- Added missing dependencies. + +* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 1.3.1-2 +- Rebuild for Python 2.6 + +* Fri Nov 28 2008 Steve 'Ashcrow' Milner - 1.3.1-1 +- Updated for upstream release + +* Sun Sep 28 2008 Steve 'Ashcrow' Milner - 1.3-1 +- Updated for upstream release + +* Sat Aug 30 2008 Steve 'Ashcrow' Milner - 1.2-1 +- Updated for upstream release + +* Fri Aug 29 2008 Steve 'Ashcrow' Milner - 1.1-3 +- Updated from review notes + +* Thu Aug 28 2008 Steve 'Ashcrow' Milner - 1.1-2 +- Updated from review notes + +* Tue Aug 26 2008 Steve 'Ashcrow' Milner - 1.1-1 +- Initial Version