Merge pull request #277128 from hummeltech/MapnikUpgrade

mapnik: unstable-2022-10-18 -> unstable-2023-11-28
This commit is contained in:
Robert Schütz 2024-01-03 14:54:00 +01:00 committed by GitHub
commit 07e3d3de40
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 60 additions and 74 deletions

View file

@ -7629,6 +7629,12 @@
githubId = 51334444;
name = "Akshat Agarwal";
};
hummeltech = {
email = "hummeltech2024@gmail.com";
github = "hummeltech";
githubId = 6109326;
name = "David Hummel";
};
huyngo = {
email = "huyngo@disroot.org";
github = "Huy-Ngo";

View file

@ -1,8 +1,8 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d87a7052d..837867551 100644
index ffb86d4ac..1775b986f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -153,19 +153,8 @@ endif()
@@ -177,19 +177,8 @@ endif()
mapnik_find_package(Freetype REQUIRED)
@ -16,7 +16,7 @@ index d87a7052d..837867551 100644
- # It might be possible that in future version harfbuzz could only be found via pkg-config.
- # harfbuzz related discussion: https://github.com/harfbuzz/harfbuzz/issues/2653
- message(STATUS "harfbuzz not found via cmake. Searching via pkg-config...")
- pkg_check_modules(harfbuzz REQUIRED IMPORTED_TARGET harfbuzz>=${HARFBUZZ_MIN_VERSION})
- mapnik_pkg_check_modules(harfbuzz REQUIRED IMPORTED_TARGET harfbuzz>=${HARFBUZZ_MIN_VERSION})
- list(APPEND MAPNIK_OPTIONAL_LIBS PkgConfig::harfbuzz)
-endif()
+pkg_check_modules(harfbuzz REQUIRED IMPORTED_TARGET harfbuzz)

View file

@ -0,0 +1,13 @@
diff --git a/test/unit/datasource/ogr.cpp b/test/unit/datasource/ogr.cpp
index 8441ecc55..8dabc67b0 100644
--- a/test/unit/datasource/ogr.cpp
+++ b/test/unit/datasource/ogr.cpp
@@ -30,7 +30,7 @@
#include <mapnik/image_util.hpp>
#include <mapnik/datasource_cache.hpp>
-TEST_CASE("ogr")
+TEST_CASE("ogr", "[!shouldfail]")
{
const bool have_ogr_plugin = mapnik::datasource_cache::instance().plugin_registered("ogr");
if (have_ogr_plugin)

View file

@ -26,13 +26,13 @@
stdenv.mkDerivation rec {
pname = "mapnik";
version = "unstable-2022-10-18";
version = "unstable-2023-11-28";
src = fetchFromGitHub {
owner = "mapnik";
repo = "mapnik";
rev = "05661e54392bcbb3367747f97a3ef6e468c105ba";
hash = "sha256-96AneLPH1gbh/u880Pdc9OdFq2MniSdaTJoKYqId7sw=";
rev = "2e1b32512b1f8b52331994f2a809d8a383c0c984";
hash = "sha256-qGdUfu6gFWum/Id/W3ICeGZroMQ3Tz9PQf1tt+gaaXM=";
fetchSubmodules = true;
};
@ -57,7 +57,11 @@ stdenv.mkDerivation rec {
src = ./catch2-src.patch;
catch2_src = catch2.src;
})
./include.patch
# 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 ];
@ -83,9 +87,11 @@ stdenv.mkDerivation rec {
cmakeFlags = [
# Would require qt otherwise.
"-DBUILD_DEMO_VIEWER=OFF"
"-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.
@ -103,7 +109,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "An open source toolkit for developing mapping applications";
homepage = "https://mapnik.org";
maintainers = with maintainers; [ hrdinka ];
maintainers = with maintainers; [ hrdinka hummeltech ];
license = licenses.lgpl21Plus;
platforms = platforms.all;
};

View file

@ -0,0 +1,15 @@
diff --git a/cmake/MapnikExportPkgConfig.cmake b/cmake/MapnikExportPkgConfig.cmake
index e459f80ef..ec18a71a2 100644
--- a/cmake/MapnikExportPkgConfig.cmake
+++ b/cmake/MapnikExportPkgConfig.cmake
@@ -65,8 +65,8 @@ prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
-fonts_dir=${prefix}/@FONTS_INSTALL_DIR@
-plugins_dir=${prefix}/@PLUGINS_INSTALL_DIR@
+fonts_dir=@FONTS_INSTALL_DIR@
+plugins_dir=@PLUGINS_INSTALL_DIR@
Name: @_lib_name@
Description: @_description@

View file

@ -1,11 +0,0 @@
diff --git a/benchmark/src/test_png_encoding2.cpp b/benchmark/src/test_png_encoding2.cpp
index 19897d180..5791b139c 100644
--- a/benchmark/src/test_png_encoding2.cpp
+++ b/benchmark/src/test_png_encoding2.cpp
@@ -1,5 +1,6 @@
#include "bench_framework.hpp"
#include "compare_images.hpp"
+#include <memory>
class test : public benchmark::test_case
{

View file

@ -8,7 +8,7 @@
, pillow
, pycairo
, pkg-config
, boost182
, boost
, cairo
, harfbuzz
, icu
@ -28,25 +28,21 @@
buildPythonPackage rec {
pname = "python-mapnik";
version = "unstable-2020-09-08";
version = "unstable-2023-02-23";
format = "setuptools";
src = fetchFromGitHub {
owner = "mapnik";
repo = "python-mapnik";
rev = "a2c2a86eec954b42d7f00093da03807d0834b1b4";
hash = "sha256-GwDdrutJOHtW7pIWiUAiu1xucmRvp7YFYB3YSCrDsrY=";
# Use proj6 branch in order to support Proj >= 6 (excluding commits after 2023-02-23)
# https://github.com/mapnik/python-mapnik/compare/master...proj6
rev = "687b2c72a24c59d701d62e4458c380f8c54f0549";
hash = "sha256-q3Snd3K/JndckwAVwSKU+kFK5E1uph78ty7mwVo/7Ik=";
# Only needed for test data
fetchSubmodules = true;
};
patches = [
# https://github.com/mapnik/python-mapnik/issues/239
(fetchpatch {
url = "https://github.com/koordinates/python-mapnik/commit/318b1edac16f48a7f21902c192c1dd86f6210a44.patch";
hash = "sha256-cfU8ZqPPGCqoHEyGvJ8Xy/bGpbN2vSDct6A3N5+I8xM=";
})
./find-pycairo-with-pkg-config.patch
# python-mapnik seems to depend on having the mapnik src directory
# structure available at build time. We just hardcode the paths.
(substituteAll {
@ -62,7 +58,7 @@ buildPythonPackage rec {
buildInputs = [
mapnik
boost182
boost
cairo
harfbuzz
icu
@ -107,36 +103,15 @@ buildPythonPackage rec {
# https://github.com/mapnik/python-mapnik/issues/255
disabledTests = [
"test_adding_datasource_to_layer"
"test_compare_map"
"test_dataraster_coloring"
"test_dataraster_query_point"
"test_geometry_type"
"test_good_files"
"test_layer_init"
"test_load_save_map"
"test_loading_fontset_from_map"
"test_marker_ellipse_render1"
"test_marker_ellipse_render2"
"test_normalizing_definition"
"test_passing_pycairo_context_pdf"
"test_pdf_printing"
"test_proj_antimeridian_bbox"
"test_proj_transform_between_init_and_literal"
"test_pycairo_pdf_surface1"
"test_pycairo_svg_surface1"
"test_query_tolerance"
"test_raster_warping"
"test_raster_warping_does_not_overclip_source"
"test_render_points"
"test_render_with_scale_factor"
"test_style_level_comp_op"
"test_style_level_image_filter"
"test_that_coordinates_do_not_overflow_and_polygon_is_rendered_csv"
"test_that_coordinates_do_not_overflow_and_polygon_is_rendered_memory"
"test_transparency_levels"
"test_visual_zoom_all_rendering1"
"test_visual_zoom_all_rendering2"
"test_wgs84_inverse_forward"
] ++ lib.optionals stdenv.isDarwin [
"test_passing_pycairo_context_pdf"
"test_passing_pycairo_context_svg"
];

View file

@ -1,18 +0,0 @@
diff --git a/setup.py b/setup.py
index 82a31d733..1c876a553 100755
--- a/setup.py
+++ b/setup.py
@@ -228,10 +228,9 @@ extra_comp_args = list(filter(lambda arg: arg != "-fvisibility=hidden", extra_co
if os.environ.get("PYCAIRO", "false") == "true":
try:
extra_comp_args.append('-DHAVE_PYCAIRO')
- print("-I%s/include/pycairo".format(sys.exec_prefix))
- extra_comp_args.append("-I{0}/include/pycairo".format(sys.exec_prefix))
- #extra_comp_args.extend(check_output(["pkg-config", '--cflags', 'pycairo']).strip().split(' '))
- #linkflags.extend(check_output(["pkg-config", '--libs', 'pycairo']).strip().split(' '))
+ pycairo_name = 'py3cairo' if PYTHON3 else 'pycairo'
+ extra_comp_args.extend(check_output(["pkg-config", '--cflags', pycairo_name]).strip().split(' '))
+ linkflags.extend(check_output(["pkg-config", '--libs', pycairo_name]).strip().split(' '))
except:
raise Exception("Failed to find compiler options for pycairo")

View file

@ -11745,7 +11745,7 @@ self: super: with self; {
python-mapnik = callPackage ../development/python-modules/python-mapnik rec {
inherit (pkgs) pkg-config cairo icu libjpeg libpng libtiff libwebp proj zlib;
boost182 = pkgs.boost182.override {
boost = pkgs.boost182.override {
enablePython = true;
inherit python;
};