1 |
vapier |
1.5 |
# Copyright 1999-2003 Gentoo Technologies, Inc. |
2 |
vapier |
1.4 |
# Distributed under the terms of the GNU General Public License v2 |
3 |
liquidx |
1.21 |
# $Header: /home/cvsroot/gentoo-x86/eclass/distutils.eclass,v 1.20 2003/10/19 11:40:25 lanius Exp $ |
4 |
vapier |
1.5 |
# |
5 |
jnelson |
1.1 |
# Author: Jon Nelson <jnelson@gentoo.org> |
6 |
liquidx |
1.12 |
# Current Maintainer: Alastair Tse <liquidx@gentoo.org> |
7 |
vapier |
1.5 |
# |
8 |
jnelson |
1.1 |
# The distutils eclass is designed to allow easier installation of |
9 |
vapier |
1.11 |
# distutils-based python modules and their incorporation into |
10 |
jnelson |
1.1 |
# the Gentoo Linux system. |
11 |
liquidx |
1.12 |
# |
12 |
|
|
# - Features: |
13 |
|
|
# distutils_src_compile() - does python setup.py build |
14 |
|
|
# distutils_src_install() - does python setup.py install and install docs |
15 |
|
|
# distutils_python_version() - sets PYVER/PYVER_MAJOR/PYVER_MINOR |
16 |
|
|
# distutils_python_tkinter() - checks for tkinter support in python |
17 |
|
|
# |
18 |
|
|
# - Variables: |
19 |
|
|
# PYTHON_SLOT_VERSION - for Zope support |
20 |
|
|
# DOCS - additional DOCS |
21 |
jnelson |
1.1 |
|
22 |
liquidx |
1.16 |
inherit python |
23 |
|
|
|
24 |
jnelson |
1.1 |
ECLASS=distutils |
25 |
|
|
INHERITED="$INHERITED $ECLASS" |
26 |
|
|
|
27 |
kutsuya |
1.6 |
# This helps make it possible to add extensions to python slots. |
28 |
kutsuya |
1.9 |
# Normally only a -py21- ebuild would set PYTHON_SLOT_VERSION. |
29 |
kutsuya |
1.6 |
if [ "${PYTHON_SLOT_VERSION}" = 2.1 ] ; then |
30 |
kutsuya |
1.9 |
newdepend "=dev-lang/python-2.1*" |
31 |
kutsuya |
1.6 |
python="python2.1" |
32 |
|
|
else |
33 |
vapier |
1.8 |
newdepend "virtual/python" |
34 |
kutsuya |
1.6 |
python="python" |
35 |
|
|
fi |
36 |
jnelson |
1.1 |
|
37 |
|
|
distutils_src_compile() { |
38 |
liquidx |
1.15 |
${python} setup.py build "$@" || die "compilation failed" |
39 |
jnelson |
1.1 |
} |
40 |
|
|
|
41 |
|
|
distutils_src_install() { |
42 |
liquidx |
1.18 |
if has_version ">=dev-lang/python-2.3"; then |
43 |
|
|
${python} setup.py install --root=${D} --no-compile "$@" || die |
44 |
|
|
else |
45 |
|
|
${python} setup.py install --root=${D} "$@" || die |
46 |
|
|
fi |
47 |
lanius |
1.20 |
|
48 |
|
|
DDOCS="CHANGELOG COPYRIGHT KNOWN_BUGS MAINTAINERS PKG-INFO" |
49 |
|
|
DDOCS="${DDOCS} CONTRIBUTORS LICENSE COPYING*" |
50 |
|
|
DDOCS="${DDOCS} Change* MANIFEST* README*" |
51 |
|
|
|
52 |
|
|
for doc in ${DDOCS}; do |
53 |
|
|
[ -s "$doc" ] && dodoc $doc |
54 |
|
|
done |
55 |
|
|
|
56 |
liquidx |
1.12 |
[ -n "${DOCS}" ] && dodoc ${DOCS} |
57 |
|
|
|
58 |
|
|
# deprecated! please use DOCS instead. |
59 |
|
|
[ -n "${mydoc}" ] && dodoc ${mydoc} |
60 |
jnelson |
1.1 |
} |
61 |
kutsuya |
1.6 |
|
62 |
liquidx |
1.19 |
# generic pyc/pyo cleanup script. |
63 |
|
|
|
64 |
|
|
distutils_pkg_postrm() { |
65 |
|
|
PYTHON_MODNAME=${PYTHON_MODNAME:-${PN}} |
66 |
|
|
|
67 |
|
|
if has_version ">=dev-lang/python-2.3"; then |
68 |
|
|
ebegin "Performing Python Module Cleanup .." |
69 |
|
|
if [ -n "${PYTHON_MODNAME}" ]; then |
70 |
|
|
for pymod in "${PYTHON_MODNAME}"; do |
71 |
liquidx |
1.21 |
for moddir in "`ls -d --color=none -1 ${ROOT}usr/lib/python*/site-packages/${pymod} 2> /dev/null`"; do |
72 |
liquidx |
1.19 |
python_mod_cleanup ${moddir} |
73 |
|
|
done |
74 |
|
|
done |
75 |
|
|
else |
76 |
|
|
python_mod_cleanup |
77 |
|
|
fi |
78 |
|
|
eend 0 |
79 |
|
|
fi |
80 |
|
|
} |
81 |
|
|
|
82 |
|
|
# this is a generic optimization, you should override it if your package |
83 |
|
|
# installs things in another directory |
84 |
|
|
|
85 |
|
|
distutils_pkg_postinst() { |
86 |
|
|
PYTHON_MODNAME=${PYTHON_MODNAME:-${PN}} |
87 |
|
|
|
88 |
|
|
if has_version ">=dev-lang/python-2.3"; then |
89 |
|
|
python_version |
90 |
|
|
for pymod in "${PYTHON_MODNAME}"; do |
91 |
|
|
if [ -d "${ROOT}usr/lib/python${PYVER}/site-packages/${pymod}" ]; then |
92 |
|
|
python_mod_optimize ${ROOT}usr/lib/python${PYVER}/site-packages/${pymod} |
93 |
|
|
fi |
94 |
|
|
done |
95 |
|
|
fi |
96 |
|
|
} |
97 |
|
|
|
98 |
kutsuya |
1.6 |
# e.g. insinto ${ROOT}/usr/include/python${PYVER} |
99 |
|
|
|
100 |
liquidx |
1.13 |
distutils_python_version() { |
101 |
kutsuya |
1.6 |
local tmpstr="$(${python} -V 2>&1 )" |
102 |
liquidx |
1.13 |
export PYVER_ALL="${tmpstr#Python }" |
103 |
kutsuya |
1.6 |
|
104 |
liquidx |
1.13 |
export PYVER_MAJOR=$(echo ${PYVER_ALL} | cut -d. -f1) |
105 |
|
|
export PYVER_MINOR=$(echo ${PYVER_ALL} | cut -d. -f2) |
106 |
|
|
export PYVER_MICRO=$(echo ${PYVER_ALL} | cut -d. -f3-) |
107 |
liquidx |
1.12 |
export PYVER="${PYVER_MAJOR}.${PYVER_MINOR}" |
108 |
|
|
} |
109 |
|
|
|
110 |
|
|
# checks for if tkinter support is compiled into python |
111 |
|
|
distutils_python_tkinter() { |
112 |
|
|
if ! python -c "import Tkinter" >/dev/null 2>&1; then |
113 |
|
|
eerror "You need to recompile python with Tkinter support." |
114 |
|
|
eerror "That means: USE='tcltk' emerge python" |
115 |
|
|
echo |
116 |
|
|
die "missing tkinter support with installed python" |
117 |
|
|
fi |
118 |
vapier |
1.8 |
} |
119 |
liquidx |
1.12 |
|
120 |
|
|
|
121 |
liquidx |
1.19 |
EXPORT_FUNCTIONS src_compile src_install pkg_postinst pkg_postrm |
122 |
liquidx |
1.12 |
|