summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Lecher <jlec@gentoo.org>2016-01-17 16:23:04 +0100
committerJustin Lecher <jlec@gentoo.org>2016-01-17 16:23:30 +0100
commite0b3f694ceda2d7220431ee7b27011877bbd3230 (patch)
treef5fdc8af183e3a7a69c23e0ec4d93acfcf586f1c /dev-python/virtualenv
parentsys-apps/paludis: Add a safe snapshot (diff)
downloadgentoo-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.patch144
-rw-r--r--dev-python/virtualenv/virtualenv-13.1.2-r1.ebuild52
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
+}