1{ stdenv
2, buildPythonPackage
3, fetchFromGitHub
4, isPyPy
5, python
6, pkgs
7, pillow
8, pycairo
9}:
10
11let
12 boost = pkgs.boost.override {
13 enablePython = true;
14 inherit python;
15 };
16 mapnik = pkgs.mapnik.override {
17 inherit python boost;
18 };
19
20in buildPythonPackage rec {
21 pname = "python-mapnik";
22 version = "3.0.16";
23
24 src = pkgs.fetchFromGitHub {
25 owner = "mapnik";
26 repo = "python-mapnik";
27 rev = "v${version}";
28 sha256 = "1gqs4kvmjawdgl80j0ab5r8y0va9kw0rvwix3093xsv4hwd00lcc";
29 };
30
31 disabled = isPyPy;
32 doCheck = false; # doesn't find needed test data files
33 preBuild = let
34 pythonVersion = with stdenv.lib.versions; "${major python.version}${minor python.version}";
35 in ''
36 export BOOST_PYTHON_LIB="boost_python${pythonVersion}"
37 export BOOST_THREAD_LIB="boost_thread"
38 export BOOST_SYSTEM_LIB="boost_system"
39 '';
40
41 nativeBuildInputs = [
42 mapnik # for mapnik_config
43 ];
44
45 buildInputs = [
46 mapnik
47 boost
48 ] ++ (with pkgs; [
49 cairo
50 harfbuzz
51 icu
52 libjpeg
53 libpng
54 libtiff
55 libwebp
56 proj
57 zlib
58 ]);
59 propagatedBuildInputs = [ pillow pycairo ];
60
61 meta = with stdenv.lib; {
62 description = "Python bindings for Mapnik";
63 homepage = http://mapnik.org;
64 license = licenses.lgpl21;
65 };
66
67}