1 |
commit: 16e3674d231ae99cf389246384659f28c0b19b21 |
2 |
Author: Nathan Phillip Brink <binki <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Feb 20 03:51:16 2012 +0000 |
4 |
Commit: Nathan Phillip Brink <binki <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Feb 20 03:51:16 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/multilib-portage.git;a=commit;h=16e3674d |
7 |
|
8 |
dev-python/pycairo: Fix bug #367293 for portage-multilib users by hackily patching waflib. |
9 |
|
10 |
(Portage version: 2.2.0_alpha84-r1/git/Linux x86_64, RepoMan options: --force, signed Manifest commit with key 6BA81050) |
11 |
|
12 |
--- |
13 |
dev-python/pycairo/Manifest | 27 +++ |
14 |
.../pycairo/files/py2cairo-1.10.0-svg_check.patch | 126 +++++++++++++++ |
15 |
.../pycairo/files/pycairo-1.10.0-svg_check.patch | 126 +++++++++++++++ |
16 |
dev-python/pycairo/metadata.xml | 8 + |
17 |
dev-python/pycairo/pycairo-1.10.0-r2.ebuild | 167 ++++++++++++++++++++ |
18 |
5 files changed, 454 insertions(+), 0 deletions(-) |
19 |
|
20 |
diff --git a/dev-python/pycairo/Manifest b/dev-python/pycairo/Manifest |
21 |
new file mode 100644 |
22 |
index 0000000..7c26183 |
23 |
--- /dev/null |
24 |
+++ b/dev-python/pycairo/Manifest |
25 |
@@ -0,0 +1,27 @@ |
26 |
+-----BEGIN PGP SIGNED MESSAGE----- |
27 |
+Hash: SHA512 |
28 |
+ |
29 |
+AUX py2cairo-1.10.0-svg_check.patch 2912 RMD160 79cbae6b38baeb1a55309aa41cb40bd0bb2ad1b2 SHA1 fdd5a4f9b9f17aa0f48e62ef97359f57046da46e SHA256 c35d96be5be571c2f4c3415e4016a7e70a5edd6164818af80d16855e4e4efe72 |
30 |
+AUX pycairo-1.10.0-svg_check.patch 2924 RMD160 e0a01e9587ad47dc00a0d449fb3d00fcfbacfe7a SHA1 3969a610e8431938605c7eae5a86b43ef0c9881c SHA256 f9d2bac70bcca57c523e69403cb7332bf4ade0427998b6a3dc16730bcc17b6c7 |
31 |
+DIST py2cairo-1.10.0.tar.bz2 402070 RMD160 ce75db9af32ef1a3e90f6aaa649cbb2493a941a4 SHA1 2efa8dfafbd6b8e492adaab07231556fec52d6eb SHA256 d30439f06c2ec1a39e27464c6c828b6eface3b22ee17b2de05dc409e429a7431 |
32 |
+DIST pycairo-1.10.0-waf-multilib.patch 761 RMD160 1e2210e0a7c7ec2fc19245d512c0d762ca9aed1f SHA1 bbaef5a3699a53023efb659a86a97180e34dee56 SHA256 8e9e081bf7b4beced282a8de265b6e8901b113df7fbe892d7f0f93c63c771e5b |
33 |
+DIST pycairo-1.10.0.tar.bz2 246556 RMD160 7d1c1c05113e5bbad32dbe96c65c918b170cac33 SHA1 b4283aa1cc9aafd12fd72ad371303a486da1d014 SHA256 9aa4078e7eb5be583aeabbe8d87172797717f95e8c4338f0d4a17b683a7253be |
34 |
+EBUILD pycairo-1.10.0-r2.ebuild 4956 RMD160 8b647aaf910d5614800c9f8971b76be108a7437d SHA1 a97b1ce6799116e06a0da9936dc1abb04bd66af8 SHA256 2ed5dfce4549fdb69c3dd6c2a64dd5d5b48f538bfef69c8858bb0820ac2f80db |
35 |
+MISC metadata.xml 244 RMD160 763839a53ccf1e2a58d249cfa2d94feeaa69e29c SHA1 fe85b5f10031620b8d1da84d695ec3080df29d82 SHA256 f5bde347c36c74889cbb32d29f06766c08eb3df6e0c468f00295681382c48457 |
36 |
+-----BEGIN PGP SIGNATURE----- |
37 |
+Version: GnuPG v2.0.14 (GNU/Linux) |
38 |
+ |
39 |
+iQIcBAEBCgAGBQJPQcM0AAoJEHQ6UuhrqBBQ//8P/Rorh+75shJuPQXl9G06/v/F |
40 |
+yAmTi3VIDxh6+hzGnYs40+78Q5maCXfUnA7i66PdsYvwidceNxl3mddo2dTLtlPm |
41 |
+uEKrXlaMHC1A3wTjKj0Zh+LtlWMU8/x83HV5jKOQy0E/45XnccvhIKnaADUXzatb |
42 |
+z486ITlx4V0V1Kg/sCdqWkVT0EfJ5GdreXqcdOwqbEWVoVcvv15des5hSAwKM5ON |
43 |
+1IJ5IJwln2ivI68cYA6nLrhHz6tieqqA4cie/G61z9Wapz8ZMXCEGiE3139sTQQi |
44 |
+8+A2Yf/nkvT3AKLqVoxbsnbVf5qgHiE2m+zzTWw8/58ZbdpghS9wFHroSLIxDxX9 |
45 |
+M9Pld7XFj1zWjbINvItgE5Y7H1B9HHofx01xB8Xbq0hrTOQpK5pTknDTXTwVMJgu |
46 |
+ktro/yL4B4Erhuc0l/m2NiSG/x+oHDUzWG06+wXjAlXXP8T4oGJMIDy6qvNhHP6z |
47 |
+FgXDs8HEjJFmPo10WtZ/Izbcqs7//t4wWFCm41efGfHUK6T1HX5skaesKL7qxOSK |
48 |
+PiP36IXImfBMvDN4hqI4mWGcEQHgz+z/abGu0igbooCZOkycTShVxoqFszlLjRkv |
49 |
+wU4TVGGAEc5GrMpgnWNj8cMZiEpKasvkF3BU36fEJEXbZSZQTbYqmWxCh6IxossX |
50 |
+RsAQNTKPLXnZhWEw5jXa |
51 |
+=tF88 |
52 |
+-----END PGP SIGNATURE----- |
53 |
|
54 |
diff --git a/dev-python/pycairo/files/py2cairo-1.10.0-svg_check.patch b/dev-python/pycairo/files/py2cairo-1.10.0-svg_check.patch |
55 |
new file mode 100644 |
56 |
index 0000000..4cd755c |
57 |
--- /dev/null |
58 |
+++ b/dev-python/pycairo/files/py2cairo-1.10.0-svg_check.patch |
59 |
@@ -0,0 +1,126 @@ |
60 |
+--- src/cairomodule.c |
61 |
++++ src/cairomodule.c |
62 |
+@@ -127,7 +127,7 @@ |
63 |
+ #else |
64 |
+ 0, |
65 |
+ #endif |
66 |
+-#ifdef CAIRO_HAS_SVG_SURFACE |
67 |
++#ifdef PYCAIRO_ENABLE_SVG |
68 |
+ &PycairoSVGSurface_Type, |
69 |
+ #else |
70 |
+ 0, |
71 |
+@@ -223,7 +223,7 @@ |
72 |
+ if (PyType_Ready(&PycairoPSSurface_Type) < 0) |
73 |
+ return; |
74 |
+ #endif |
75 |
+-#ifdef CAIRO_HAS_SVG_SURFACE |
76 |
++#ifdef PYCAIRO_ENABLE_SVG |
77 |
+ if (PyType_Ready(&PycairoSVGSurface_Type) < 0) |
78 |
+ return; |
79 |
+ #endif |
80 |
+@@ -305,7 +305,7 @@ |
81 |
+ PyModule_AddObject(m, "PSSurface", (PyObject *)&PycairoPSSurface_Type); |
82 |
+ #endif |
83 |
+ |
84 |
+-#ifdef CAIRO_HAS_SVG_SURFACE |
85 |
++#ifdef PYCAIRO_ENABLE_SVG |
86 |
+ Py_INCREF(&PycairoSVGSurface_Type); |
87 |
+ PyModule_AddObject(m, "SVGSurface", (PyObject *)&PycairoSVGSurface_Type); |
88 |
+ #endif |
89 |
+@@ -379,7 +379,7 @@ |
90 |
+ #else |
91 |
+ PyModule_AddIntConstant(m, "HAS_PS_SURFACE", 0); |
92 |
+ #endif |
93 |
+-#if CAIRO_HAS_SVG_SURFACE |
94 |
++#if PYCAIRO_ENABLE_SVG |
95 |
+ PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 1); |
96 |
+ #else |
97 |
+ PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 0); |
98 |
+--- src/private.h |
99 |
++++ src/private.h |
100 |
+@@ -86,7 +86,7 @@ |
101 |
+ extern PyTypeObject PycairoPSSurface_Type; |
102 |
+ #endif |
103 |
+ |
104 |
+-#if CAIRO_HAS_SVG_SURFACE |
105 |
++#if PYCAIRO_ENABLE_SVG |
106 |
+ extern PyTypeObject PycairoSVGSurface_Type; |
107 |
+ #endif |
108 |
+ |
109 |
+--- src/pycairo.h |
110 |
++++ src/pycairo.h |
111 |
+@@ -182,7 +182,7 @@ |
112 |
+ #define PycairoPSSurface_Type *(Pycairo_CAPI->PSSurface_Type) |
113 |
+ #endif |
114 |
+ |
115 |
+-#if CAIRO_HAS_SVG_SURFACE |
116 |
++#if PYCAIRO_ENABLE_SVG |
117 |
+ #define PycairoSVGSurface_Type *(Pycairo_CAPI->SVGSurface_Type) |
118 |
+ #endif |
119 |
+ |
120 |
+--- src/surface.c |
121 |
++++ src/surface.c |
122 |
+@@ -83,7 +83,7 @@ |
123 |
+ type = &PycairoPSSurface_Type; |
124 |
+ break; |
125 |
+ #endif |
126 |
+-#if CAIRO_HAS_SVG_SURFACE |
127 |
++#if PYCAIRO_ENABLE_SVG |
128 |
+ case CAIRO_SURFACE_TYPE_SVG: |
129 |
+ type = &PycairoSVGSurface_Type; |
130 |
+ break; |
131 |
+@@ -1015,7 +1015,7 @@ |
132 |
+ |
133 |
+ |
134 |
+ /* Class SVGSurface(Surface) ----------------------------------------------- */ |
135 |
+-#ifdef CAIRO_HAS_SVG_SURFACE |
136 |
++#ifdef PYCAIRO_ENABLE_SVG |
137 |
+ #include <cairo-svg.h> |
138 |
+ |
139 |
+ static PyObject * |
140 |
+@@ -1125,7 +1125,7 @@ |
141 |
+ 0, /* tp_is_gc */ |
142 |
+ 0, /* tp_bases */ |
143 |
+ }; |
144 |
+-#endif /* CAIRO_HAS_SVG_SURFACE */ |
145 |
++#endif /* PYCAIRO_ENABLE_SVG */ |
146 |
+ |
147 |
+ |
148 |
+ #if CAIRO_HAS_WIN32_SURFACE |
149 |
+--- wscript |
150 |
++++ wscript |
151 |
+@@ -1,6 +1,7 @@ |
152 |
+ # -*- python -*- |
153 |
+ |
154 |
+ import os |
155 |
++import subprocess |
156 |
+ |
157 |
+ top = '.' |
158 |
+ out = 'build_directory' |
159 |
+@@ -11,6 +12,17 @@ |
160 |
+ cairo_version_required = '1.10.0' |
161 |
+ |
162 |
+ |
163 |
++def check_svg(): |
164 |
++ if os.environ.get('PYCAIRO_DISABLE_SVG', None) is None: |
165 |
++ return_code = subprocess.call(['pkg-config', '--exists', 'cairo-svg']) |
166 |
++ if return_code == 0: |
167 |
++ return True |
168 |
++ else: |
169 |
++ return False |
170 |
++ else: |
171 |
++ return False |
172 |
++ |
173 |
++ |
174 |
+ def options(ctx): |
175 |
+ print(' %s/options()' %d) |
176 |
+ ctx.tool_options('gnu_dirs') |
177 |
+@@ -39,6 +51,8 @@ |
178 |
+ ctx.define('PYCAIRO_VERSION_MAJOR', version[0]) |
179 |
+ ctx.define('PYCAIRO_VERSION_MINOR', version[1]) |
180 |
+ ctx.define('PYCAIRO_VERSION_MICRO', version[2]) |
181 |
++ if check_svg(): |
182 |
++ ctx.define('PYCAIRO_ENABLE_SVG', 1) |
183 |
+ |
184 |
+ ctx.write_config_header('src/config.h') |
185 |
+ |
186 |
|
187 |
diff --git a/dev-python/pycairo/files/pycairo-1.10.0-svg_check.patch b/dev-python/pycairo/files/pycairo-1.10.0-svg_check.patch |
188 |
new file mode 100644 |
189 |
index 0000000..572a5f6 |
190 |
--- /dev/null |
191 |
+++ b/dev-python/pycairo/files/pycairo-1.10.0-svg_check.patch |
192 |
@@ -0,0 +1,126 @@ |
193 |
+--- src/cairomodule.c |
194 |
++++ src/cairomodule.c |
195 |
+@@ -116,7 +116,7 @@ |
196 |
+ #else |
197 |
+ 0, |
198 |
+ #endif |
199 |
+-#ifdef CAIRO_HAS_SVG_SURFACE |
200 |
++#ifdef PYCAIRO_ENABLE_SVG |
201 |
+ &PycairoSVGSurface_Type, |
202 |
+ #else |
203 |
+ 0, |
204 |
+@@ -247,7 +247,7 @@ |
205 |
+ if (PyType_Ready(&PycairoPSSurface_Type) < 0) |
206 |
+ return NULL; |
207 |
+ #endif |
208 |
+-#ifdef CAIRO_HAS_SVG_SURFACE |
209 |
++#ifdef PYCAIRO_ENABLE_SVG |
210 |
+ if (PyType_Ready(&PycairoSVGSurface_Type) < 0) |
211 |
+ return NULL; |
212 |
+ #endif |
213 |
+@@ -337,7 +337,7 @@ |
214 |
+ PyModule_AddObject(m, "PSSurface", (PyObject *)&PycairoPSSurface_Type); |
215 |
+ #endif |
216 |
+ |
217 |
+-#ifdef CAIRO_HAS_SVG_SURFACE |
218 |
++#ifdef PYCAIRO_ENABLE_SVG |
219 |
+ Py_INCREF(&PycairoSVGSurface_Type); |
220 |
+ PyModule_AddObject(m, "SVGSurface", (PyObject *)&PycairoSVGSurface_Type); |
221 |
+ #endif |
222 |
+@@ -399,7 +399,7 @@ |
223 |
+ #else |
224 |
+ PyModule_AddIntConstant(m, "HAS_PS_SURFACE", 0); |
225 |
+ #endif |
226 |
+-#if CAIRO_HAS_SVG_SURFACE |
227 |
++#if PYCAIRO_ENABLE_SVG |
228 |
+ PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 1); |
229 |
+ #else |
230 |
+ PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 0); |
231 |
+--- src/private.h |
232 |
++++ src/private.h |
233 |
+@@ -75,7 +75,7 @@ |
234 |
+ extern PyTypeObject PycairoPSSurface_Type; |
235 |
+ #endif |
236 |
+ |
237 |
+-#if CAIRO_HAS_SVG_SURFACE |
238 |
++#if PYCAIRO_ENABLE_SVG |
239 |
+ extern PyTypeObject PycairoSVGSurface_Type; |
240 |
+ #endif |
241 |
+ |
242 |
+--- src/py3cairo.h |
243 |
++++ src/py3cairo.h |
244 |
+@@ -171,7 +171,7 @@ |
245 |
+ #define PycairoPSSurface_Type *(Pycairo_CAPI->PSSurface_Type) |
246 |
+ #endif |
247 |
+ |
248 |
+-#if CAIRO_HAS_SVG_SURFACE |
249 |
++#if PYCAIRO_ENABLE_SVG |
250 |
+ #define PycairoSVGSurface_Type *(Pycairo_CAPI->SVGSurface_Type) |
251 |
+ #endif |
252 |
+ |
253 |
+--- src/surface.c |
254 |
++++ src/surface.c |
255 |
+@@ -72,7 +72,7 @@ |
256 |
+ type = &PycairoPSSurface_Type; |
257 |
+ break; |
258 |
+ #endif |
259 |
+-#if CAIRO_HAS_SVG_SURFACE |
260 |
++#if PYCAIRO_ENABLE_SVG |
261 |
+ case CAIRO_SURFACE_TYPE_SVG: |
262 |
+ type = &PycairoSVGSurface_Type; |
263 |
+ break; |
264 |
+@@ -1022,7 +1022,7 @@ |
265 |
+ |
266 |
+ |
267 |
+ /* Class SVGSurface(Surface) ----------------------------------------------- */ |
268 |
+-#ifdef CAIRO_HAS_SVG_SURFACE |
269 |
++#ifdef PYCAIRO_ENABLE_SVG |
270 |
+ #include <cairo-svg.h> |
271 |
+ |
272 |
+ static PyObject * |
273 |
+@@ -1133,7 +1133,7 @@ |
274 |
+ 0, /* tp_is_gc */ |
275 |
+ 0, /* tp_bases */ |
276 |
+ }; |
277 |
+-#endif /* CAIRO_HAS_SVG_SURFACE */ |
278 |
++#endif /* PYCAIRO_ENABLE_SVG */ |
279 |
+ |
280 |
+ |
281 |
+ #if CAIRO_HAS_WIN32_SURFACE |
282 |
+--- wscript |
283 |
++++ wscript |
284 |
+@@ -1,6 +1,7 @@ |
285 |
+ # -*- python -*- |
286 |
+ |
287 |
+ import os |
288 |
++import subprocess |
289 |
+ |
290 |
+ top = '.' |
291 |
+ out = 'build_directory' |
292 |
+@@ -11,6 +12,17 @@ |
293 |
+ cairo_version_required = '1.10.0' |
294 |
+ |
295 |
+ |
296 |
++def check_svg(): |
297 |
++ if os.environ.get('PYCAIRO_DISABLE_SVG', None) is None: |
298 |
++ return_code = subprocess.call(['pkg-config', '--exists', 'cairo-svg']) |
299 |
++ if return_code == 0: |
300 |
++ return True |
301 |
++ else: |
302 |
++ return False |
303 |
++ else: |
304 |
++ return False |
305 |
++ |
306 |
++ |
307 |
+ def options(ctx): |
308 |
+ print(' %s/options()' %d) |
309 |
+ ctx.tool_options('gnu_dirs') |
310 |
+@@ -39,6 +51,8 @@ |
311 |
+ ctx.define('PYCAIRO_VERSION_MAJOR', version[0]) |
312 |
+ ctx.define('PYCAIRO_VERSION_MINOR', version[1]) |
313 |
+ ctx.define('PYCAIRO_VERSION_MICRO', version[2]) |
314 |
++ if check_svg(): |
315 |
++ ctx.define('PYCAIRO_ENABLE_SVG', 1) |
316 |
+ |
317 |
+ ctx.write_config_header('src/config.h') |
318 |
+ |
319 |
|
320 |
diff --git a/dev-python/pycairo/metadata.xml b/dev-python/pycairo/metadata.xml |
321 |
new file mode 100644 |
322 |
index 0000000..5484483 |
323 |
--- /dev/null |
324 |
+++ b/dev-python/pycairo/metadata.xml |
325 |
@@ -0,0 +1,8 @@ |
326 |
+<?xml version="1.0" encoding="UTF-8"?> |
327 |
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> |
328 |
+<pkgmetadata> |
329 |
+ <maintainer> |
330 |
+ <email>binki@g.o</email> |
331 |
+ <name>Nathan Phillip Brink</name> |
332 |
+ </maintainer> |
333 |
+</pkgmetadata> |
334 |
|
335 |
diff --git a/dev-python/pycairo/pycairo-1.10.0-r2.ebuild b/dev-python/pycairo/pycairo-1.10.0-r2.ebuild |
336 |
new file mode 100644 |
337 |
index 0000000..d6c42a7 |
338 |
--- /dev/null |
339 |
+++ b/dev-python/pycairo/pycairo-1.10.0-r2.ebuild |
340 |
@@ -0,0 +1,167 @@ |
341 |
+# Copyright 1999-2012 Gentoo Foundation |
342 |
+# Distributed under the terms of the GNU General Public License v2 |
343 |
+# $Header: /var/cvsroot/gentoo-x86/dev-python/pycairo/pycairo-1.10.0-r2.ebuild,v 1.7 2012/02/13 19:35:24 xarthisius Exp $ |
344 |
+ |
345 |
+EAPI="3" |
346 |
+PYTHON_DEPEND="2:2.6 3:3.1" |
347 |
+SUPPORT_PYTHON_ABIS="1" |
348 |
+RESTRICT_PYTHON_ABIS="2.4 2.5 3.0 *-jython" |
349 |
+ |
350 |
+inherit eutils python waf-utils |
351 |
+ |
352 |
+PYCAIRO_PYTHON2_VERSION="${PV}" |
353 |
+PYCAIRO_PYTHON3_VERSION="${PV}" |
354 |
+ |
355 |
+DESCRIPTION="Python bindings for the cairo library" |
356 |
+HOMEPAGE="http://cairographics.org/pycairo/ http://pypi.python.org/pypi/pycairo" |
357 |
+SRC_URI="http://cairographics.org/releases/py2cairo-${PYCAIRO_PYTHON2_VERSION}.tar.bz2 |
358 |
+ http://cairographics.org/releases/pycairo-${PYCAIRO_PYTHON3_VERSION}.tar.bz2 |
359 |
+ http://dev.gentoo.org/~binki/distfiles/dev-python/${PN}/${P}-waf-multilib.patch" |
360 |
+ |
361 |
+# LGPL-3 for pycairo 1.10.0. |
362 |
+# || ( LGPL-2.1 MPL-1.1 ) for pycairo 1.8.10. |
363 |
+LICENSE="LGPL-3 || ( LGPL-2.1 MPL-1.1 )" |
364 |
+SLOT="0" |
365 |
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sh sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris" |
366 |
+IUSE="doc examples +svg test" |
367 |
+ |
368 |
+RDEPEND=">=x11-libs/cairo-1.10.0[svg?]" |
369 |
+DEPEND="${RDEPEND} |
370 |
+ dev-util/pkgconfig |
371 |
+ test? ( dev-python/pytest )" |
372 |
+ |
373 |
+PYTHON_CFLAGS=("2.* + -fno-strict-aliasing") |
374 |
+ |
375 |
+# In case if waf-utils.eclass actually accepts waf-utils_waflibdir() as |
376 |
+# a function. |
377 |
+unset waf-utils_waflibdir 2>/dev/null |
378 |
+ |
379 |
+# @FUNCTION: waf-utils_waflibdir |
380 |
+# @USAGE: [<waf-binary>] |
381 |
+# @DESCRIPTION: |
382 |
+# Echoes the absolute path to the directory containing waf-based |
383 |
+# project's waflib python module. Ensures that the waflib shipped with a |
384 |
+# project is unpacked if it isn't already. This waflib may be safely |
385 |
+# patched because waf-lite will not touch the waflib directory when it |
386 |
+# is run if it already exists. Uses the waf binary in WAF_BINARY or the |
387 |
+# first argument. |
388 |
+# |
389 |
+# @EXAMPLE |
390 |
+# @CODE |
391 |
+# pushd "$(waf-utils_waflibdir)" || die "Unable to patch waflib" |
392 |
+# epatch "${FILESDIR}"/${P}-waf-fix.patch |
393 |
+# popd |
394 |
+# @CODE |
395 |
+# |
396 |
+# Note that if you are using the python eclass, you must either call |
397 |
+# python_set_active_version or call waf-utils_waflibdir() from within a |
398 |
+# function run by python_execute(). |
399 |
+# |
400 |
+# @CODE |
401 |
+# SUPPORT_PYTHON_ABIS=1 |
402 |
+# inherit python |
403 |
+# |
404 |
+# src_prepare() { |
405 |
+# python_copy_sources |
406 |
+# |
407 |
+# myprepare() { |
408 |
+# epatch "${FILESDIR}"/${P}-sourcecode-fix.patch |
409 |
+# |
410 |
+# pushd "$(waf-utils_saflibdir "$(PYTHON)" waf)" || die "Unable to patch waflib" |
411 |
+# epatch "${FILESDIR}"/${P}-waf-fix.patch |
412 |
+# popd |
413 |
+# } |
414 |
+# python_execute_function -s myprepare |
415 |
+# } |
416 |
+# @CODE |
417 |
+waf-utils_waflibdir() { |
418 |
+ debug-print-function ${FUNCNAME} "$@" |
419 |
+ |
420 |
+ # @ECLASS-VARIABLE: WAF_BINARY |
421 |
+ # @DESCRIPTION: |
422 |
+ # Eclass can use different waf executable. Usually it is located in "${S}/waf". |
423 |
+ : ${WAF_BINARY:="${S}/waf"} |
424 |
+ |
425 |
+ local waf_binary=${WAF_BINARY} |
426 |
+ [[ -n ${1} ]] && waf_binary=${1} |
427 |
+ |
428 |
+ python -c "import imp, sys; sys.argv[0] = '${waf_binary}'; waflite = imp.load_source('waflite', '${waf_binary}'); print(waflite.find_lib());" \ |
429 |
+ || die "Unable to locate or unpack waflib module from the waf script at ${waf_binary}" |
430 |
+} |
431 |
+ |
432 |
+# When moving between the different build dirs, we want to use the waf |
433 |
+# associated with each build dir. |
434 |
+WAF_BINARY=./waf |
435 |
+ |
436 |
+src_prepare() { |
437 |
+ |
438 |
+ pushd "${WORKDIR}/pycairo-${PYCAIRO_PYTHON3_VERSION}" > /dev/null |
439 |
+ rm -f src/config.h || die |
440 |
+ epatch "${FILESDIR}/${PN}-1.10.0-svg_check.patch" |
441 |
+ popd > /dev/null |
442 |
+ |
443 |
+ pushd "${WORKDIR}/py2cairo-${PYCAIRO_PYTHON2_VERSION}" > /dev/null |
444 |
+ rm -f src/config.h || die |
445 |
+ epatch "${FILESDIR}/py2cairo-1.10.0-svg_check.patch" |
446 |
+ popd > /dev/null |
447 |
+ |
448 |
+ preparation() { |
449 |
+ local srcdir=${WORKDIR}/${P}-${PYTHON_ABI} |
450 |
+ if [[ "${PYTHON_ABI}" == 3.* ]]; then |
451 |
+ cp -r "${WORKDIR}/pycairo-${PYCAIRO_PYTHON3_VERSION}" "${srcdir}" |
452 |
+ else |
453 |
+ cp -r "${WORKDIR}/py2cairo-${PYCAIRO_PYTHON2_VERSION}" "${srcdir}" |
454 |
+ fi |
455 |
+ |
456 |
+ cd "$(waf-utils_waflibdir ${srcdir}/waf)" || die "Unable to patch waflib" |
457 |
+ epatch "${DISTDIR}"/${P}-waf-multilib.patch |
458 |
+ } |
459 |
+ python_execute_function preparation |
460 |
+} |
461 |
+ |
462 |
+src_configure() { |
463 |
+ if ! use svg; then |
464 |
+ export PYCAIRO_DISABLE_SVG="1" |
465 |
+ fi |
466 |
+ |
467 |
+ python_execute_function -s waf-utils_src_configure --nopyc --nopyo |
468 |
+} |
469 |
+ |
470 |
+src_compile() { |
471 |
+ python_execute_function -s waf-utils_src_compile |
472 |
+} |
473 |
+ |
474 |
+src_test() { |
475 |
+ test_installation() { |
476 |
+ ./waf install --destdir="${T}/tests/${PYTHON_ABI}" |
477 |
+ } |
478 |
+ python_execute_function -q -s test_installation |
479 |
+ |
480 |
+ python_execute_py.test -P '${T}/tests/${PYTHON_ABI}${EPREFIX}$(python_get_sitedir)' -s |
481 |
+} |
482 |
+ |
483 |
+src_install() { |
484 |
+ python_execute_function -s waf-utils_src_install |
485 |
+ |
486 |
+ dodoc AUTHORS NEWS README || die "dodoc failed" |
487 |
+ |
488 |
+ if use doc; then |
489 |
+ pushd doc/_build/html > /dev/null |
490 |
+ insinto /usr/share/doc/${PF}/html |
491 |
+ doins -r [a-z]* _static || die "Installation of documentation failed" |
492 |
+ popd > /dev/null |
493 |
+ fi |
494 |
+ |
495 |
+ if use examples; then |
496 |
+ insinto /usr/share/doc/${PF}/examples |
497 |
+ doins -r examples/* || die "Installation of examples failed" |
498 |
+ fi |
499 |
+} |
500 |
+ |
501 |
+pkg_postinst() { |
502 |
+ python_mod_optimize cairo |
503 |
+} |
504 |
+ |
505 |
+pkg_postrm() { |
506 |
+ python_mod_cleanup cairo |
507 |
+} |