1{ lib, fetchurl, fetchpatch, python, buildPythonPackage, pkgconfig, cairo, xlibsWrapper, isPyPy, isPy35, isPy36, isPy3k }:
2
3if (isPyPy) then throw "pycairo not supported for interpreter ${python.executable}" else let
4
5 patch_waf = fetchpatch {
6 url = http://www.linuxfromscratch.org/patches/blfs/8.0/pycairo-1.10.0-waf_python_3_4-1.patch;
7 sha256 = "0xfl1i9dips2nykyg91f5h5r3xpk2hp1js1gq5z0hwjr0in55id4";
8 };
9 patch_waf-py3_5 = ./waf-py3_5.patch;
10
11in buildPythonPackage rec {
12 pname = "pycairo";
13 version = "1.10.0";
14 name = "${pname}-${version}";
15 format = "other";
16
17 src = if isPy3k
18 then fetchurl {
19 url = "http://cairographics.org/releases/pycairo-${version}.tar.bz2";
20 sha256 = "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s";
21 }
22 else fetchurl {
23 url = "http://cairographics.org/releases/py2cairo-${version}.tar.bz2";
24 sha256 = "0cblk919wh6w0pgb45zf48xwxykfif16qk264yga7h9fdkq3j16k";
25 };
26
27 patches = [
28 (fetchpatch {
29 url = http://www.linuxfromscratch.org/patches/blfs/8.0/pycairo-1.10.0-waf_unpack-1.patch;
30 sha256 = "1bmrhq2nmhx4l5glvyi59r0hc7w5m56kz41frx7v3dcp8f91p7xd";
31 })
32 ];
33
34 buildInputs = [ python pkgconfig cairo xlibsWrapper ];
35
36 configurePhase = ''
37 (
38 cd $(${python.executable} waf unpack)
39 patch -p1 < ${patch_waf}
40 ${lib.optionalString (isPy35 || isPy36) "patch -p1 < ${patch_waf-py3_5}"}
41 )
42
43 ${python.executable} waf configure --prefix=$out
44 '';
45 buildPhase = "${python.executable} waf";
46 installPhase = "${python.executable} waf install";
47
48 meta.platforms = lib.platforms.linux ++ lib.platforms.darwin;
49}