nixpkgs/pkgs/development/libraries/mapnik/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

139 lines
3.2 KiB
Nix
Raw Permalink Normal View History

{
lib,
stdenv,
fetchFromGitHub,
2024-09-26 09:58:04 +00:00
gitUpdater,
buildPackages,
cmake,
pkg-config,
boost,
cairo,
freetype,
gdal,
harfbuzz,
icu,
libjpeg,
libpng,
libtiff,
libwebp,
libxml2,
proj,
python3,
sqlite,
zlib,
catch2,
postgresql,
protozero,
sparsehash,
2015-12-02 20:27:32 +00:00
}:
stdenv.mkDerivation rec {
pname = "mapnik";
2024-10-30 12:07:52 +00:00
version = "4.0.3";
src = fetchFromGitHub {
owner = "mapnik";
repo = "mapnik";
2024-01-13 05:36:08 +00:00
rev = "v${version}";
2024-10-30 12:07:52 +00:00
hash = "sha256-BDddxaMgUv1q3zceiAOorSpT7GH1xt3PotrdJg4/j+E=";
fetchSubmodules = true;
2015-12-02 20:27:32 +00:00
};
2024-09-26 09:58:04 +00:00
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
2022-06-05 21:58:36 +00:00
postPatch = ''
substituteInPlace configure \
--replace '$PYTHON scons/scons.py' ${buildPackages.scons}/bin/scons
2022-06-05 21:58:36 +00:00
rm -r scons
2024-01-13 05:36:08 +00:00
# Remove bundled 'sparsehash' directory in favor of 'sparsehash' package
rm -r deps/mapnik/sparsehash
2022-06-05 21:58:36 +00:00
'';
2016-09-27 13:17:28 +00:00
# a distinct dev output makes python-mapnik fail
outputs = [ "out" ];
2016-06-13 09:59:04 +00:00
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
# Account for full paths when generating libmapnik.pc
./export-pkg-config-full-paths.patch
2024-01-13 05:36:08 +00:00
# Use 'sparsehash' package.
./use-sparsehash-package.patch
];
2015-12-02 20:27:32 +00:00
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
boost
cairo
freetype
gdal
harfbuzz
icu
libjpeg
libpng
libtiff
libwebp
proj
python3
sqlite
zlib
(libxml2.override { enableHttp = true; })
postgresql
2024-01-13 05:36:08 +00:00
protozero
sparsehash
];
2015-12-02 20:27:32 +00:00
cmakeFlags = [
2024-01-13 05:36:08 +00:00
# Save time by not building some development-related code.
(lib.cmakeBool "BUILD_BENCHMARK" false)
(lib.cmakeBool "BUILD_DEMO_CPP" false)
## Would require QT otherwise.
(lib.cmakeBool "BUILD_DEMO_VIEWER" false)
# Use 'protozero' package.
(lib.cmakeBool "USE_EXTERNAL_MAPBOX_PROTOZERO" true)
# macOS builds fail when using memory mapped file cache.
(lib.cmakeBool "USE_MEMORY_MAPPED_FILE" (!stdenv.hostPlatform.isDarwin))
# don't try to download sources for catch2, use our own
(lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_CATCH2" "${catch2.src}")
];
2015-12-02 20:27:32 +00:00
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
2024-01-13 05:36:08 +00:00
# then try to build everything with scons. C++17 is the minimum supported
# C++ version.
preBuild = ''
cd ..
2024-01-13 05:36:08 +00:00
env CXX_STD=17 ${buildPackages.scons}/bin/scons utils/mapnik-config
cd build
2019-03-04 20:41:53 +00:00
'';
preInstall = ''
mkdir -p $out/bin
cp ../utils/mapnik-config/mapnik-config $out/bin/mapnik-config
'';
2015-12-02 20:27:32 +00:00
meta = with lib; {
2015-12-02 20:27:32 +00:00
description = "Open source toolkit for developing mapping applications";
homepage = "https://mapnik.org";
maintainers =
with maintainers;
teams.geospatial.members
++ [
hrdinka
hummeltech
];
license = licenses.lgpl21Plus;
2015-12-02 20:27:32 +00:00
platforms = platforms.all;
};
}