blob: c69900f170c6cc2142bb2eaca5a5893f24cf2c96 (
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-python/pycairo/pycairo-1.10.0-r3.ebuild,v 1.9 2012/12/05 13:12:14 grobian Exp $
EAPI="4"
PYTHON_DEPEND="2:2.6 3:3.1"
SUPPORT_PYTHON_ABIS="1"
RESTRICT_PYTHON_ABIS="2.5 3.0 *-jython"
inherit eutils python waf-utils
PYCAIRO_PYTHON2_VERSION="${PV}"
PYCAIRO_PYTHON3_VERSION="${PV}"
DESCRIPTION="Python bindings for the cairo library"
HOMEPAGE="http://cairographics.org/pycairo/ http://pypi.python.org/pypi/pycairo"
SRC_URI="http://cairographics.org/releases/py2cairo-${PYCAIRO_PYTHON2_VERSION}.tar.bz2
http://cairographics.org/releases/pycairo-${PYCAIRO_PYTHON3_VERSION}.tar.bz2"
# LGPL-3 for pycairo 1.10.0.
# || ( LGPL-2.1 MPL-1.1 ) for pycairo 1.8.10.
LICENSE="LGPL-3 || ( LGPL-2.1 MPL-1.1 )"
SLOT="0"
KEYWORDS="~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd ~ppc-macos ~x64-macos ~x86-macos"
IUSE="doc examples +svg test xcb"
RDEPEND=">=x11-libs/cairo-1.10.0[svg?,xcb?]
xcb? ( x11-libs/xpyb )"
DEPEND="${RDEPEND}
virtual/pkgconfig
test? ( dev-python/pytest )"
PYTHON_CFLAGS=("2.* + -fno-strict-aliasing")
src_prepare() {
pushd "${WORKDIR}/pycairo-${PYCAIRO_PYTHON3_VERSION}" > /dev/null
rm -f src/config.h || die
epatch "${FILESDIR}/${PN}-1.10.0-svg_check.patch"
epatch "${FILESDIR}/${PN}-1.10.0-xpyb.patch"
epatch "${FILESDIR}"/py2cairo-1.10.0-ppc-darwin.patch
popd > /dev/null
pushd "${WORKDIR}/py2cairo-${PYCAIRO_PYTHON2_VERSION}" > /dev/null
rm -f src/config.h || die
epatch "${FILESDIR}/py2cairo-1.10.0-svg_check.patch"
epatch "${FILESDIR}/py2cairo-1.10.0-xpyb.patch"
epatch "${FILESDIR}"/py2cairo-1.10.0-ppc-darwin.patch
popd > /dev/null
preparation() {
if [[ "${PYTHON_ABI}" == 3.* ]]; then
cp -r "${WORKDIR}/pycairo-${PYCAIRO_PYTHON3_VERSION}" "${WORKDIR}/${P}-${PYTHON_ABI}"
else
cp -r "${WORKDIR}/py2cairo-${PYCAIRO_PYTHON2_VERSION}" "${WORKDIR}/${P}-${PYTHON_ABI}"
fi
}
python_execute_function preparation
}
src_configure() {
if ! use svg; then
export PYCAIRO_DISABLE_SVG=1
fi
if ! use xcb; then
export PYCAIRO_DISABLE_XPYB=1
fi
# If WAF_BINARY is an absolute path, the configure is different and fails to
# find Python.h due to a compiler misconfiguration. If WAF_BINARY is just
# ./waf or python waf, it works fine. Hooray for reinvented buildsystems
WAF_BINARY="./waf"
python_execute_function -s waf-utils_src_configure --nopyc --nopyo
}
src_compile() {
python_execute_function -s waf-utils_src_compile
}
src_test() {
test_installation() {
./waf install --destdir="${T}/tests/${PYTHON_ABI}"
}
python_execute_function -q -s test_installation
testing() {
# Need a variable for the pypy minor version and a variable to set 2 distinct pythonpaths
local pypy_v= PyPath= exit_status=0
pypy_v=$(python_get_version)
if [[ "${PYTHON_ABI:4:4}" == "pypy" ]]; then
PyPath=$(find "${T}"/tests/2.7-pypy-$pypy_v/ -name site-packages)
PYTHONPATH="${PyPath}" py.test-${PYTHON_ABI} "${WORKDIR}/${P}-${PYTHON_ABI}"/test || exit_status=1
else
PyPath="${T}/tests/${PYTHON_ABI}${EPREFIX}"$(python_get_sitedir)
PYTHONPATH="${PyPath}" py.test "${WORKDIR}/${P}-${PYTHON_ABI}"/test || exit_status=1
fi
return $exit_status
}
python_execute_function testing
}
src_install() {
python_execute_function -s waf-utils_src_install
dodoc AUTHORS NEWS README || die "dodoc failed"
if use doc; then
pushd doc/_build/html > /dev/null
insinto /usr/share/doc/${PF}/html
doins -r [a-z]* _static || die "Installation of documentation failed"
popd > /dev/null
fi
if use examples; then
insinto /usr/share/doc/${PF}/examples
doins -r examples/* || die "Installation of examples failed"
fi
if [[ ${CHOST} == *-darwin* ]] ; then
# fix install_names; next to waf producing dylibs (not bundles) and
# calling them .bundle, it also has no idea what it should do to create
# proper ones (dylibs)
fix_darwin_install_names() {
local x=$(python_get_sitedir)/cairo/_cairo.bundle
install_name_tool -id "${EPREFIX}${x}" "${ED}${x}"
}
python_execute_function fix_darwin_install_names
fi
}
pkg_postinst() {
python_mod_optimize cairo
}
pkg_postrm() {
python_mod_cleanup cairo
}
|