diff options
author | 2016-01-17 16:23:04 +0100 | |
---|---|---|
committer | 2016-01-17 16:23:30 +0100 | |
commit | e0b3f694ceda2d7220431ee7b27011877bbd3230 (patch) | |
tree | f5fdc8af183e3a7a69c23e0ec4d93acfcf586f1c /dev-python/virtualenv | |
parent | sys-apps/paludis: Add a safe snapshot (diff) | |
download | gentoo-e0b3f694ceda2d7220431ee7b27011877bbd3230.tar.gz gentoo-e0b3f694ceda2d7220431ee7b27011877bbd3230.tar.bz2 gentoo-e0b3f694ceda2d7220431ee7b27011877bbd3230.zip |
dev-python/virtualenv: Backport fix for python3.5
Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=571172
Package-Manager: portage-2.2.26
Signed-off-by: Justin Lecher <jlec@gentoo.org>
Diffstat (limited to 'dev-python/virtualenv')
-rw-r--r-- | dev-python/virtualenv/files/virtualenv-13.1.2-PYTHONPATH-backport.patch | 144 | ||||
-rw-r--r-- | dev-python/virtualenv/virtualenv-13.1.2-r1.ebuild | 52 |
2 files changed, 196 insertions, 0 deletions
diff --git a/dev-python/virtualenv/files/virtualenv-13.1.2-PYTHONPATH-backport.patch b/dev-python/virtualenv/files/virtualenv-13.1.2-PYTHONPATH-backport.patch new file mode 100644 index 000000000000..0e48643a85cc --- /dev/null +++ b/dev-python/virtualenv/files/virtualenv-13.1.2-PYTHONPATH-backport.patch @@ -0,0 +1,144 @@ + docs/changes.rst | 3 ++ + virtualenv.py | 92 +++++++++++++++++++++++++++++--------------------------- + 2 files changed, 50 insertions(+), 45 deletions(-) + +diff --git a/docs/changes.rst b/docs/changes.rst +index 80c3dc1..1d9c1fe 100644 +--- a/docs/changes.rst ++++ b/docs/changes.rst +@@ -1,6 +1,9 @@ + Release History + =============== + ++* Remove virtualenv file's path from directory when executing with a new ++ python. Fixes issue #779, #763 (PR #805) ++ + 13.1.2 (2015-08-23) + ~~~~~~~~~~~~~~~~~~~ + +diff --git a/virtualenv.py b/virtualenv.py +index da25205..64e70d4 100755 +--- a/virtualenv.py ++++ b/virtualenv.py +@@ -5,9 +5,22 @@ + __version__ = "13.1.2" + virtualenv_version = __version__ # legacy + +-import base64 +-import sys + import os ++import sys ++ ++# If we are running in a new interpreter to create a virtualenv, ++# we do NOT want paths from our existing location interfering with anything, ++# So we remove this file's directory from sys.path - most likely to be ++# the previous interpreter's site-packages. Solves #705, #763, #779 ++if os.environ.get('VIRTUALENV_INTERPRETER_RUNNING'): ++ del_paths = [] ++ for path in sys.path: ++ if os.path.realpath(os.path.dirname(__file__)) == os.path.realpath(path): ++ del_paths.append(path) ++ for path in del_paths: ++ sys.path.remove(path) ++ ++import base64 + import codecs + import optparse + import re +@@ -23,6 +36,11 @@ import struct + import subprocess + import tarfile + ++try: ++ import ConfigParser ++except ImportError: ++ import configparser as ConfigParser ++ + if sys.version_info < (2, 6): + print('ERROR: %s' % sys.exc_info()[1]) + print('ERROR: this script requires Python 2.6 or greater.') +@@ -33,11 +51,6 @@ try: + except NameError: + basestring = str + +-try: +- import ConfigParser +-except ImportError: +- import configparser as ConfigParser +- + join = os.path.join + py_version = 'python%s.%s' % (sys.version_info[0], sys.version_info[1]) + +@@ -1096,45 +1109,34 @@ def change_prefix(filename, dst_prefix): + + def copy_required_modules(dst_prefix, symlink): + import imp +- # If we are running under -p, we need to remove the current +- # directory from sys.path temporarily here, so that we +- # definitely get the modules from the site directory of +- # the interpreter we are running under, not the one +- # virtualenv.py is installed under (which might lead to py2/py3 +- # incompatibility issues) +- _prev_sys_path = sys.path +- if os.environ.get('VIRTUALENV_INTERPRETER_RUNNING'): +- sys.path = sys.path[1:] +- try: +- for modname in REQUIRED_MODULES: +- if modname in sys.builtin_module_names: +- logger.info("Ignoring built-in bootstrap module: %s" % modname) +- continue +- try: +- f, filename, _ = imp.find_module(modname) +- except ImportError: +- logger.info("Cannot import bootstrap module: %s" % modname) ++ ++ for modname in REQUIRED_MODULES: ++ if modname in sys.builtin_module_names: ++ logger.info("Ignoring built-in bootstrap module: %s" % modname) ++ continue ++ try: ++ f, filename, _ = imp.find_module(modname) ++ except ImportError: ++ logger.info("Cannot import bootstrap module: %s" % modname) ++ else: ++ if f is not None: ++ f.close() ++ # special-case custom readline.so on OS X, but not for pypy: ++ if modname == 'readline' and sys.platform == 'darwin' and not ( ++ is_pypy or filename.endswith(join('lib-dynload', 'readline.so'))): ++ dst_filename = join(dst_prefix, 'lib', 'python%s' % sys.version[:3], 'readline.so') ++ elif modname == 'readline' and sys.platform == 'win32': ++ # special-case for Windows, where readline is not a ++ # standard module, though it may have been installed in ++ # site-packages by a third-party package ++ pass + else: +- if f is not None: +- f.close() +- # special-case custom readline.so on OS X, but not for pypy: +- if modname == 'readline' and sys.platform == 'darwin' and not ( +- is_pypy or filename.endswith(join('lib-dynload', 'readline.so'))): +- dst_filename = join(dst_prefix, 'lib', 'python%s' % sys.version[:3], 'readline.so') +- elif modname == 'readline' and sys.platform == 'win32': +- # special-case for Windows, where readline is not a +- # standard module, though it may have been installed in +- # site-packages by a third-party package +- pass +- else: +- dst_filename = change_prefix(filename, dst_prefix) +- copyfile(filename, dst_filename, symlink) +- if filename.endswith('.pyc'): +- pyfile = filename[:-1] +- if os.path.exists(pyfile): +- copyfile(pyfile, dst_filename[:-1], symlink) +- finally: +- sys.path = _prev_sys_path ++ dst_filename = change_prefix(filename, dst_prefix) ++ copyfile(filename, dst_filename, symlink) ++ if filename.endswith('.pyc'): ++ pyfile = filename[:-1] ++ if os.path.exists(pyfile): ++ copyfile(pyfile, dst_filename[:-1], symlink) + + + def subst_path(prefix_path, prefix, home_dir): diff --git a/dev-python/virtualenv/virtualenv-13.1.2-r1.ebuild b/dev-python/virtualenv/virtualenv-13.1.2-r1.ebuild new file mode 100644 index 000000000000..13c85a33ab78 --- /dev/null +++ b/dev-python/virtualenv/virtualenv-13.1.2-r1.ebuild @@ -0,0 +1,52 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +PYTHON_COMPAT=( python2_7 python3_{3,4,5} pypy pypy3 ) + +inherit distutils-r1 + +DESCRIPTION="Virtual Python Environment builder" +HOMEPAGE=" + http://www.virtualenv.org/ + https://pypi.python.org/pypi/virtualenv + https://github.com/pypa/virtualenv/ +" +SRC_URI="https://github.com/pypa/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="MIT" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x64-solaris ~x86-solaris" +SLOT="0" +IUSE="doc test" + +RDEPEND="" +DEPEND="${RDEPEND} + dev-python/setuptools[${PYTHON_USEDEP}] + doc? ( dev-python/sphinx[${PYTHON_USEDEP}] ) + test? ( + dev-python/mock[${PYTHON_USEDEP}] + dev-python/pytest[${PYTHON_USEDEP}] + )" + +DOCS=( docs/index.rst docs/changes.rst ) + +PATCHES=( + "${FILESDIR}"/${PN}-1.8.2-no-versioned-script.patch + "${FILESDIR}"/${PN}-12.1.1-skip-broken-test.patch + "${FILESDIR}"/${P}-PYTHONPATH-backport.patch +) + +python_compile_all() { + use doc && emake -C docs html +} + +python_test() { + py.test -v -v || die "Tests fail with ${EPYTHON}" +} + +python_install_all() { + use doc && local HTML_DOCS=( "${S}"/docs/_build/html/. ) + distutils-r1_python_install_all +} |