summaryrefslogtreecommitdiff
blob: 6e7556cc1018731b57e3589fe05ac73787107378 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 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 ~ppc-aix ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~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.1: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"

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" "${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
}