dev-python/pypy-bin: Apply full Gentoo path set, for Gentoo sys.prefix

Override all default distutils.command.install paths for Gentoo rather
than just scriptdir. However, do that only when install_base equals
the default prefix in which PyPy is installed system-wide.

This fixes both issues resulting from lack of prefix override (like
installing data files in /usr/lib*/pypy), and from overeager prefix
overrides (like virtualenv installing scripts in /usr/bin).

Fixes: https://bugs.gentoo.org/462306
Fixes: https://bugs.gentoo.org/465546
This commit is contained in:
Michał Górny
2015-11-27 17:29:08 +01:00
parent ac802704f1
commit 2d1cc6f35d
4 changed files with 60 additions and 13 deletions

View File

@@ -1,11 +0,0 @@
--- pypy-pypy-release-1.7/lib-python/2.7/distutils/command/install.py
+++ pypy-pypy-release-1.7/lib-python/2.7/distutils/command/install.py
@@ -87,7 +87,7 @@
'purelib': '$base/site-packages',
'platlib': '$base/site-packages',
'headers': '$base/include',
- 'scripts': '$base/bin',
+ 'scripts': '/usr/bin',
'data' : '$base',
},
}

View File

@@ -0,0 +1,50 @@
From 165e05bbdc93e54411217c0198d0a5cbb9de4e33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Fri, 27 Nov 2015 17:02:42 +0100
Subject: [PATCH] Gentoo: override paths for system-wide install based on
sys.prefix
Override all default distutils install paths to ones suitable for
system-wide install when sys.prefix indicates we're running the Gentoo
system-wide install of PyPy with no prefix overrides (e.g. virtualenv).
Fixes: https://bugs.gentoo.org/462306
Fixes: https://bugs.gentoo.org/465546
---
lib-python/2.7/distutils/command/install.py | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/lib-python/2.7/distutils/command/install.py b/lib-python/2.7/distutils/command/install.py
index fc43951..fed5218 100644
--- a/lib-python/2.7/distutils/command/install.py
+++ b/lib-python/2.7/distutils/command/install.py
@@ -90,6 +90,13 @@ INSTALL_SCHEMES = {
'scripts': '$base/bin',
'data' : '$base',
},
+ 'gentoo': {
+ 'purelib': '$base/site-packages',
+ 'platlib': '$base/site-packages',
+ 'headers': '$base/include',
+ 'scripts': '@EPREFIX@/usr/bin',
+ 'data' : '@EPREFIX@/usr',
+ },
}
# The keys to an installation scheme; if any new types of files are to be
@@ -476,7 +483,11 @@ class install (Command):
# it's the caller's problem if they supply a bad name!
if (hasattr(sys, 'pypy_version_info') and
not name.endswith(('_user', '_home'))):
- name = 'pypy'
+ if self.install_base == os.path.normpath('@EPREFIX@/usr/@libdir@/pypy'):
+ # override paths for system-wide install
+ name = 'gentoo'
+ else:
+ name = 'pypy'
scheme = INSTALL_SCHEMES[name]
for key in SCHEME_KEYS:
attrname = 'install_' + key
--
2.6.3

View File

@@ -84,9 +84,13 @@ pkg_setup() {
}
src_prepare() {
epatch "${FILESDIR}/1.9-scripts-location.patch" \
epatch "${FILESDIR}/4.0.0-gentoo-path.patch" \
"${FILESDIR}/1.9-distutils.unixccompiler.UnixCCompiler.runtime_library_dir_option.patch"
sed -e "s^@EPREFIX@^${EPREFIX}^" \
-e "s^@libdir@^$(get_libdir)^" \
-i lib-python/2.7/distutils/command/install.py || die
# apply CPython stdlib patches
pushd lib-python/2.7 > /dev/null || die
epatch "${FILESDIR}"/2.5.0_all_distutils_cxx.patch \

View File

@@ -84,9 +84,13 @@ pkg_setup() {
}
src_prepare() {
epatch "${FILESDIR}/1.9-scripts-location.patch" \
epatch "${FILESDIR}/4.0.0-gentoo-path.patch" \
"${FILESDIR}/1.9-distutils.unixccompiler.UnixCCompiler.runtime_library_dir_option.patch"
sed -e "s^@EPREFIX@^${EPREFIX}^" \
-e "s^@libdir@^$(get_libdir)^" \
-i lib-python/2.7/distutils/command/install.py || die
# apply CPython stdlib patches
pushd lib-python/2.7 > /dev/null || die
epatch "${FILESDIR}"/2.5.0_all_distutils_cxx.patch \