1 |
dev-zero |
1.46 |
# Copyright 1999-2008 Gentoo Foundation |
2 |
vapier |
1.4 |
# Distributed under the terms of the GNU General Public License v2 |
3 |
hawking |
1.47 |
# $Header: /var/cvsroot/gentoo-x86/eclass/distutils.eclass,v 1.46 2008/02/28 20:20:32 dev-zero Exp $ |
4 |
dev-zero |
1.46 |
|
5 |
|
|
# @ECLASS: distutils.eclass |
6 |
|
|
# @MAINTAINER: |
7 |
|
|
# Alastair Tse <liquidx@gentoo.org> |
8 |
vapier |
1.5 |
# |
9 |
dev-zero |
1.46 |
# Original author: Jon Nelson <jnelson@gentoo.org> |
10 |
|
|
# @BLURB: This eclass allows easier installation of distutils-based python modules |
11 |
|
|
# @DESCRIPTION: |
12 |
jnelson |
1.1 |
# The distutils eclass is designed to allow easier installation of |
13 |
swegener |
1.28 |
# distutils-based python modules and their incorporation into |
14 |
jnelson |
1.1 |
# the Gentoo Linux system. |
15 |
liquidx |
1.12 |
# |
16 |
dev-zero |
1.46 |
# It inherits python, multilib, and eutils |
17 |
jnelson |
1.1 |
|
18 |
kloeri |
1.37 |
inherit python multilib eutils |
19 |
liquidx |
1.16 |
|
20 |
dev-zero |
1.46 |
# @ECLASS-VARIABLE: PYTHON_SLOT_VERSION |
21 |
|
|
# @DESCRIPTION: |
22 |
kutsuya |
1.6 |
# This helps make it possible to add extensions to python slots. |
23 |
kutsuya |
1.9 |
# Normally only a -py21- ebuild would set PYTHON_SLOT_VERSION. |
24 |
radek |
1.31 |
if [ "${PYTHON_SLOT_VERSION}" = "2.1" ] ; then |
25 |
mr_bones_ |
1.23 |
DEPEND="=dev-lang/python-2.1*" |
26 |
kutsuya |
1.6 |
python="python2.1" |
27 |
radek |
1.31 |
elif [ "${PYTHON_SLOT_VERSION}" = "2.3" ] ; then |
28 |
|
|
DEPEND="=dev-lang/python-2.3*" |
29 |
|
|
python="python2.3" |
30 |
kutsuya |
1.6 |
else |
31 |
mr_bones_ |
1.23 |
DEPEND="virtual/python" |
32 |
kutsuya |
1.6 |
python="python" |
33 |
|
|
fi |
34 |
jnelson |
1.1 |
|
35 |
dev-zero |
1.46 |
# @ECLASS-VARIABLE: DOCS |
36 |
|
|
# @DESCRIPTION: |
37 |
|
|
# Additional DOCS |
38 |
|
|
|
39 |
|
|
# @FUNCTION: distutils_src_unpack |
40 |
|
|
# @DESCRIPTION: |
41 |
|
|
# The distutils src_unpack function, this function is exported |
42 |
lucass |
1.41 |
distutils_src_unpack() { |
43 |
|
|
unpack ${A} |
44 |
|
|
cd "${S}" |
45 |
|
|
|
46 |
|
|
# remove ez_setup stuff to prevent packages |
47 |
|
|
# from installing setuptools on their own |
48 |
|
|
rm -rf ez_setup* |
49 |
hawking |
1.42 |
echo "def use_setuptools(*args, **kwargs): pass" > ez_setup.py |
50 |
lucass |
1.41 |
} |
51 |
|
|
|
52 |
dev-zero |
1.46 |
# @FUNCTION: distutils_src_compile |
53 |
|
|
# @DESCRIPTION: |
54 |
|
|
# The distutils src_compile function, this function is exported |
55 |
jnelson |
1.1 |
distutils_src_compile() { |
56 |
liquidx |
1.15 |
${python} setup.py build "$@" || die "compilation failed" |
57 |
jnelson |
1.1 |
} |
58 |
|
|
|
59 |
dev-zero |
1.46 |
# @FUNCTION: distutils_src_install |
60 |
|
|
# @DESCRIPTION: |
61 |
|
|
# The distutils src_install function, this function is exported. |
62 |
|
|
# It also installs the "standard docs" (CHANGELOG, Change*, KNOWN_BUGS, MAINTAINERS, |
63 |
|
|
# PKG-INFO, CONTRIBUTORS, TODO, NEWS, MANIFEST*, README*, and AUTHORS) |
64 |
jnelson |
1.1 |
distutils_src_install() { |
65 |
liquidx |
1.33 |
|
66 |
|
|
# need this for python-2.5 + setuptools in cases where |
67 |
|
|
# a package uses distutils but does not install anything |
68 |
|
|
# in site-packages. (eg. dev-java/java-config-2.x) |
69 |
|
|
# - liquidx (14/08/2006) |
70 |
|
|
pylibdir="$(${python} -c 'from distutils.sysconfig import get_python_lib; print get_python_lib()')" |
71 |
|
|
[ -n "${pylibdir}" ] && dodir "${pylibdir}" |
72 |
swegener |
1.36 |
|
73 |
liquidx |
1.18 |
if has_version ">=dev-lang/python-2.3"; then |
74 |
|
|
${python} setup.py install --root=${D} --no-compile "$@" || die |
75 |
|
|
else |
76 |
|
|
${python} setup.py install --root=${D} "$@" || die |
77 |
swegener |
1.28 |
fi |
78 |
lanius |
1.20 |
|
79 |
betelgeuse |
1.39 |
DDOCS="CHANGELOG KNOWN_BUGS MAINTAINERS PKG-INFO CONTRIBUTORS TODO NEWS" |
80 |
dev-zero |
1.43 |
DDOCS="${DDOCS} Change* MANIFEST* README* AUTHORS" |
81 |
lanius |
1.20 |
|
82 |
|
|
for doc in ${DDOCS}; do |
83 |
|
|
[ -s "$doc" ] && dodoc $doc |
84 |
|
|
done |
85 |
|
|
|
86 |
liquidx |
1.12 |
[ -n "${DOCS}" ] && dodoc ${DOCS} |
87 |
jnelson |
1.1 |
} |
88 |
kutsuya |
1.6 |
|
89 |
dev-zero |
1.46 |
# @FUNCTION: distutils_pkg_postrm |
90 |
|
|
# @DESCRIPTION: |
91 |
|
|
# Generic pyc/pyo cleanup script. This function is exported. |
92 |
liquidx |
1.19 |
distutils_pkg_postrm() { |
93 |
|
|
PYTHON_MODNAME=${PYTHON_MODNAME:-${PN}} |
94 |
|
|
|
95 |
|
|
if has_version ">=dev-lang/python-2.3"; then |
96 |
|
|
ebegin "Performing Python Module Cleanup .." |
97 |
|
|
if [ -n "${PYTHON_MODNAME}" ]; then |
98 |
liquidx |
1.22 |
for pymod in ${PYTHON_MODNAME}; do |
99 |
kugelfang |
1.25 |
for moddir in "`ls -d --color=none -1 ${ROOT}usr/$(get_libdir)/python*/site-packages/${pymod} 2> /dev/null`"; do |
100 |
liquidx |
1.19 |
python_mod_cleanup ${moddir} |
101 |
|
|
done |
102 |
|
|
done |
103 |
|
|
else |
104 |
|
|
python_mod_cleanup |
105 |
swegener |
1.28 |
fi |
106 |
liquidx |
1.19 |
eend 0 |
107 |
swegener |
1.28 |
fi |
108 |
liquidx |
1.19 |
} |
109 |
|
|
|
110 |
dev-zero |
1.46 |
# @FUNCTION: distutils_pkg_postinst |
111 |
|
|
# @DESCRIPTION: |
112 |
|
|
# This is a generic optimization, you should override it if your package |
113 |
|
|
# installs things in another directory. This function is exported |
114 |
liquidx |
1.19 |
distutils_pkg_postinst() { |
115 |
|
|
PYTHON_MODNAME=${PYTHON_MODNAME:-${PN}} |
116 |
swegener |
1.28 |
|
117 |
liquidx |
1.19 |
if has_version ">=dev-lang/python-2.3"; then |
118 |
|
|
python_version |
119 |
marienz |
1.30 |
for pymod in ${PYTHON_MODNAME}; do |
120 |
hawking |
1.47 |
python_mod_optimize \ |
121 |
|
|
/usr/$(get_libdir)/python${PYVER}/site-packages/${pymod} |
122 |
swegener |
1.28 |
done |
123 |
|
|
fi |
124 |
liquidx |
1.19 |
} |
125 |
|
|
|
126 |
dev-zero |
1.46 |
# @FUNCTION: distutils_python_version |
127 |
|
|
# @DESCRIPTION: |
128 |
|
|
# Calls python_version, so that you can use something like |
129 |
|
|
# e.g. insinto ${ROOT}/usr/include/python${PYVER} |
130 |
liquidx |
1.13 |
distutils_python_version() { |
131 |
liquidx |
1.34 |
python_version |
132 |
liquidx |
1.12 |
} |
133 |
|
|
|
134 |
dev-zero |
1.46 |
# @FUNCTION: distutils_python_tkinter |
135 |
|
|
# @DESCRIPTION: |
136 |
|
|
# Checks for if tkinter support is compiled into python |
137 |
liquidx |
1.12 |
distutils_python_tkinter() { |
138 |
lucass |
1.40 |
python_tkinter_exists |
139 |
vapier |
1.8 |
} |
140 |
liquidx |
1.12 |
|
141 |
lucass |
1.41 |
EXPORT_FUNCTIONS src_unpack src_compile src_install pkg_postinst pkg_postrm |