diff --git a/pkgs/development/libraries/mapnik/default.nix b/pkgs/development/libraries/mapnik/default.nix index d4f11c1d126..45d5e0a40eb 100644 --- a/pkgs/development/libraries/mapnik/default.nix +++ b/pkgs/development/libraries/mapnik/default.nix @@ -23,18 +23,42 @@ stdenv.mkDerivation rec { buildInputs = [ boost cairo freetype gdal harfbuzz icu libjpeg libpng libtiff - libwebp libxml2 proj python sqlite zlib + libwebp proj python sqlite zlib # optional inputs postgresql ]; + propagatedBuildInputs = [ libxml2 ]; + prefixKey = "PREFIX="; preConfigure = '' patchShebangs ./configure ''; + # NOTE: 2021-05-06: + # Add -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1 for backwards compatibility + # with major versions 6 and 7 of proj which are otherwise not compatible + # with mapnik 3.1.0. Note that: + # + # 1. Starting with proj version 8, this workaround will no longer be + # supported by the upstream proj project. + # + # 2. Without the workaround, mapnik configures itself without proj support. + # + # 3. The master branch of mapnik (after 3.1.0) appears to add native support + # for the proj 6 api, so this workaround is not likely to be needed in + # subsequent mapnik releases. At that point, this block comment and the + # NIX_CFLAGS_COMPILE expression can be removed. + + NIX_CFLAGS_COMPILE = + if version != "3.1.0" && lib.versionAtLeast version "3.1.0" + then throw "The mapnik compatibility workaround for proj 6 may no longer be required. Remove workaround after checking." + else if lib.versionAtLeast (lib.getVersion proj) "8" + then throw ("mapnik currently requires a version of proj less than 8, but proj version is: " + (lib.getVersion proj)) + else "-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1"; + configureFlags = [ "BOOST_INCLUDES=${boost.dev}/include" "BOOST_LIBS=${boost.out}/lib" @@ -51,16 +75,19 @@ stdenv.mkDerivation rec { "JPEG_LIBS=${libjpeg.out}/lib" "PNG_INCLUDES=${libpng.dev}/include" "PNG_LIBS=${libpng.out}/lib" - "PROJ_INCLUDES=${proj}/include" - "PROJ_LIBS=${proj}/lib" + "PROJ_INCLUDES=${proj.dev}/include" + "PROJ_LIBS=${proj.out}/lib" "SQLITE_INCLUDES=${sqlite.dev}/include" "SQLITE_LIBS=${sqlite.out}/lib" "TIFF_INCLUDES=${libtiff.dev}/include" "TIFF_LIBS=${libtiff.out}/lib" "WEBP_INCLUDES=${libwebp}/include" "WEBP_LIBS=${libwebp}/lib" - "XML2_INCLUDES=${libxml2.dev}/include" - "XML2_LIBS=${libxml2.out}/lib" + "XMLPARSER=libxml2" + ]; + + buildFlags = [ + "JOBS=$(NIX_BUILD_CORES)" ]; meta = with lib; {