1{ stdenv, fetchzip, fetchpatch
2, boost, cairo, freetype, gdal, harfbuzz, icu, libjpeg, libpng, libtiff
3, libwebp, libxml2, proj, python, scons, sqlite, zlib
4
5# supply a postgresql package to enable the PostGIS input plugin
6, postgresql ? null
7}:
8
9stdenv.mkDerivation rec {
10 name = "mapnik-${version}";
11 version = "3.0.21";
12
13 src = fetchzip {
14 # this one contains all git submodules and is cheaper than fetchgit
15 url = "https://github.com/mapnik/mapnik/releases/download/v${version}/mapnik-v${version}.tar.bz2";
16 sha256 = "0cq2gbmf1sssg72sq4b5s3x1z6wvl1pzxliymm06flw5bpim5as2";
17 };
18
19 # a distinct dev output makes python-mapnik fail
20 outputs = [ "out" ];
21
22 nativeBuildInputs = [ python ];
23
24 buildInputs =
25 [ boost cairo freetype gdal harfbuzz icu libjpeg libpng libtiff
26 libwebp libxml2 proj python sqlite zlib
27
28 # optional inputs
29 postgresql
30 ];
31
32 prefixKey = "PREFIX=";
33
34 preConfigure = ''
35 patchShebangs ./configure
36 '';
37
38 configureFlags = [
39 "BOOST_INCLUDES=${boost.dev}/include"
40 "BOOST_LIBS=${boost.out}/lib"
41 "CAIRO_INCLUDES=${cairo.dev}/include"
42 "CAIRO_LIBS=${cairo.out}/lib"
43 "FREETYPE_INCLUDES=${freetype.dev}/include"
44 "FREETYPE_LIBS=${freetype.out}/lib"
45 "GDAL_CONFIG=${gdal}/bin/gdal-config"
46 "HB_INCLUDES=${harfbuzz.dev}/include"
47 "HB_LIBS=${harfbuzz.out}/lib"
48 "ICU_INCLUDES=${icu.dev}/include"
49 "ICU_LIBS=${icu.out}/lib"
50 "JPEG_INCLUDES=${libjpeg.dev}/include"
51 "JPEG_LIBS=${libjpeg.out}/lib"
52 "PNG_INCLUDES=${libpng.dev}/include"
53 "PNG_LIBS=${libpng.out}/lib"
54 "PROJ_INCLUDES=${proj}/include"
55 "PROJ_LIBS=${proj}/lib"
56 "SQLITE_INCLUDES=${sqlite.dev}/include"
57 "SQLITE_LIBS=${sqlite.out}/lib"
58 "TIFF_INCLUDES=${libtiff.dev}/include"
59 "TIFF_LIBS=${libtiff.out}/lib"
60 "WEBP_INCLUDES=${libwebp}/include"
61 "WEBP_LIBS=${libwebp}/lib"
62 "XML2_INCLUDES=${libxml2.dev}/include"
63 "XML2_LIBS=${libxml2.out}/lib"
64 ];
65
66 meta = with stdenv.lib; {
67 description = "An open source toolkit for developing mapping applications";
68 homepage = http://mapnik.org;
69 maintainers = with maintainers; [ hrdinka ];
70 license = licenses.lgpl21;
71 platforms = platforms.all;
72 };
73}