commit:     c9d797292c781e1ef3365f33552579937cd19bf4
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jan  9 22:55:16 2016 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Jan 11 16:00:03 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c9d79729

app-eselect/eselect-python: Use C wrapper for python{,2,3}, #568974

Use python-exec2-c to wrap /usr/bin/python{,2,3}, rather than the Python
wrapper. This is both more correct, and fixes Prefix support since
non-Linux systems require programs referenced in shebangs to be real
executables rather than scripts.

 .../eselect-python-20151117-r3.ebuild              | 89 ++++++++++++++++++++++
 1 file changed, 89 insertions(+)

diff --git a/app-eselect/eselect-python/eselect-python-20151117-r3.ebuild 
b/app-eselect/eselect-python/eselect-python-20151117-r3.ebuild
new file mode 100644
index 0000000..7c478b0
--- /dev/null
+++ b/app-eselect/eselect-python/eselect-python-20151117-r3.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+if [[ ${PV} == "99999999" ]] ; then
+       inherit autotools git-r3
+       EGIT_REPO_URI="git://anongit.gentoo.org/proj/${PN}.git"
+else
+       SRC_URI="https://dev.gentoo.org/~mgorny/dist/${P}.tar.bz2";
+       KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 
~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~ppc-aix ~x64-freebsd 
~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux 
~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris 
~sparc64-solaris ~x64-solaris ~x86-solaris"
+fi
+
+DESCRIPTION="Eselect module for management of multiple Python versions"
+HOMEPAGE="https://www.gentoo.org/proj/en/Python/";
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE=""
+
+RDEPEND=">=app-admin/eselect-1.2.3
+       >=dev-lang/python-exec-2.2_pre:2
+       !<dev-lang/python-2.7.10-r4:2.7
+       !<dev-lang/python-3.3.5-r4:3.3
+       !<dev-lang/python-3.4.3-r4:3.4
+       !<dev-lang/python-3.5.0-r3:3.5"
+
+# Those files are copied from built package
+QA_PREBUILT="
+       /usr/bin/python
+       /usr/bin/python2
+       /usr/bin/python3"
+
+src_prepare() {
+       [[ ${PV} == "99999999" ]] && eautoreconf
+}
+
+src_install() {
+       keepdir /etc/env.d/python
+       emake DESTDIR="${D}" install || die
+
+       local f
+       for f in python{,2,3}; do
+               # can't use symlinks here since random stuff
+               # loves to do readlink on sys.executable...
+               newbin "${EPREFIX}/usr/lib/python-exec/python-exec2-c" "${f}"
+       done
+       for f in python{,2,3}-config 2to3 idle pydoc pyvenv; do
+               dosym ../lib/python-exec/python-exec2 /usr/bin/"${f}"
+       done
+}
+
+pkg_preinst() {
+       local py
+
+       # Copy python[23] selection from the old format (symlink)
+       for py in 2 3; do
+               # default to none
+               declare -g "PREV_PYTHON${py}"=
+
+               if [[ -L ${EROOT}/usr/bin/python${py} ]]; then
+                       local target=$(readlink "${EROOT}/usr/bin/python${py}")
+
+                       # check if it's actually old eselect symlink
+                       if [[ ${target} == python?.? ]]; then
+                               declare -g "PREV_PYTHON${py}=${target}"
+                       fi
+               fi
+       done
+}
+
+pkg_postinst() {
+       local py
+
+       if has_version 'dev-lang/python'; then
+               eselect python update --if-unset
+       fi
+
+       for py in 2 3; do
+               local pyvar=PREV_PYTHON${py}
+               if [[ -n ${!pyvar} ]]; then
+                       einfo "Setting Python${py} to ${!pyvar}"
+                       eselect python set "--python${py}" "${!pyvar}"
+               elif has_version "=dev-lang/python-${py}*"; then
+                       eselect python update "--python${py}" --if-unset
+               fi
+       done
+}

Reply via email to