116 lines
2.6 KiB
Nix
116 lines
2.6 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchFromGitHub
|
|
, buildPackages
|
|
, cmake
|
|
, pkg-config
|
|
, substituteAll
|
|
, boost
|
|
, cairo
|
|
, freetype
|
|
, gdal
|
|
, harfbuzz
|
|
, icu
|
|
, libjpeg
|
|
, libpng
|
|
, libtiff
|
|
, libwebp
|
|
, libxml2
|
|
, proj
|
|
, python3
|
|
, sqlite
|
|
, zlib
|
|
, catch2
|
|
, postgresql
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "mapnik";
|
|
version = "unstable-2023-11-28";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "mapnik";
|
|
repo = "mapnik";
|
|
rev = "2e1b32512b1f8b52331994f2a809d8a383c0c984";
|
|
hash = "sha256-qGdUfu6gFWum/Id/W3ICeGZroMQ3Tz9PQf1tt+gaaXM=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace configure \
|
|
--replace '$PYTHON scons/scons.py' ${buildPackages.scons}/bin/scons
|
|
rm -r scons
|
|
'';
|
|
|
|
# a distinct dev output makes python-mapnik fail
|
|
outputs = [ "out" ];
|
|
|
|
patches = [
|
|
# The lib/cmake/harfbuzz/harfbuzz-config.cmake file in harfbuzz.dev is faulty,
|
|
# as it provides the wrong libdir. The workaround is to just rely on
|
|
# pkg-config to locate harfbuzz shared object files.
|
|
# Upstream HarfBuzz wants to drop CMake support anyway.
|
|
# See discussion: https://github.com/mapnik/mapnik/issues/4265
|
|
./cmake-harfbuzz.patch
|
|
# prevent CMake from trying to get libraries on the Internet
|
|
(substituteAll {
|
|
src = ./catch2-src.patch;
|
|
catch2_src = catch2.src;
|
|
})
|
|
# Disable broken test
|
|
# See discussion: https://github.com/mapnik/mapnik/issues/4329#issuecomment-1248778398
|
|
./datasource-ogr-test-should-fail.patch
|
|
# Account for full paths when generating libmapnik.pc
|
|
./export-pkg-config-full-paths.patch
|
|
];
|
|
|
|
nativeBuildInputs = [ cmake pkg-config ];
|
|
|
|
buildInputs = [
|
|
boost
|
|
cairo
|
|
freetype
|
|
gdal
|
|
harfbuzz
|
|
icu
|
|
libjpeg
|
|
libpng
|
|
libtiff
|
|
libwebp
|
|
proj
|
|
python3
|
|
sqlite
|
|
zlib
|
|
libxml2
|
|
postgresql
|
|
];
|
|
|
|
cmakeFlags = [
|
|
# Would require qt otherwise.
|
|
"-DBUILD_DEMO_VIEWER:BOOL=OFF"
|
|
];
|
|
|
|
doCheck = true;
|
|
|
|
# mapnik-config is currently not build with CMake. So we use the SCons for
|
|
# this one. We can't add SCons to nativeBuildInputs though, as stdenv would
|
|
# then try to build everything with scons.
|
|
preBuild = ''
|
|
cd ..
|
|
${buildPackages.scons}/bin/scons utils/mapnik-config
|
|
cd build
|
|
'';
|
|
|
|
preInstall = ''
|
|
mkdir -p $out/bin
|
|
cp ../utils/mapnik-config/mapnik-config $out/bin/mapnik-config
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "An open source toolkit for developing mapping applications";
|
|
homepage = "https://mapnik.org";
|
|
maintainers = with maintainers; [ hrdinka hummeltech ];
|
|
license = licenses.lgpl21Plus;
|
|
platforms = platforms.all;
|
|
};
|
|
}
|