summaryrefslogtreecommitdiff
path: root/pkgs/development/python-modules/python-mapnik
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2022-12-02 18:12:14 +0000
committerRobert Hensing <robert@roberthensing.nl>2022-12-02 18:12:14 +0000
commit7bfbf037d7fea8edca0ef75edd15ce4534052c5c (patch)
tree114669c9b210ea663710cd403350a43288b60e51 /pkgs/development/python-modules/python-mapnik
parent4e502a1c4d207610b0964b92bb41e574ed62e9c9 (diff)
parentfad052f056576d04a8eb7a6b374584a740e10706 (diff)
Merge remote-tracking branch 'upstream/master' into allow-configuration-of-roles
Diffstat (limited to 'pkgs/development/python-modules/python-mapnik')
-rw-r--r--pkgs/development/python-modules/python-mapnik/default.nix98
-rw-r--r--pkgs/development/python-modules/python-mapnik/find-libmapnik.patch30
2 files changed, 112 insertions, 16 deletions
diff --git a/pkgs/development/python-modules/python-mapnik/default.nix b/pkgs/development/python-modules/python-mapnik/default.nix
index 2d888518ff45..3e7b70463245 100644
--- a/pkgs/development/python-modules/python-mapnik/default.nix
+++ b/pkgs/development/python-modules/python-mapnik/default.nix
@@ -1,6 +1,8 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
+, fetchpatch
+, substituteAll
, isPyPy
, python
, pillow
@@ -17,37 +19,45 @@
, mapnik
, proj
, zlib
+, libxml2
+, sqlite
+, nose
+, pytestCheckHook
}:
buildPythonPackage rec {
pname = "python-mapnik";
- version = "unstable-2020-02-24";
+ version = "unstable-2020-09-08";
src = fetchFromGitHub {
owner = "mapnik";
repo = "python-mapnik";
- rev = "7da019cf9eb12af8f8aa88b7d75789dfcd1e901b";
- sha256 = "0snn7q7w1ab90311q8wgd1z64kw1svm5w831q0xd6glqhah86qc8";
+ rev = "a2c2a86eec954b42d7f00093da03807d0834b1b4";
+ hash = "sha256-GwDdrutJOHtW7pIWiUAiu1xucmRvp7YFYB3YSCrDsrY=";
+ # Only needed for test data
+ fetchSubmodules = true;
};
- disabled = isPyPy;
- doCheck = false; # doesn't find needed test data files
- preBuild = ''
- export BOOST_PYTHON_LIB="boost_python${"${lib.versions.major python.version}${lib.versions.minor python.version}"}"
- export BOOST_THREAD_LIB="boost_thread"
- export BOOST_SYSTEM_LIB="boost_system"
- export PYCAIRO=true
- '';
+ patches = [
+ # https://github.com/mapnik/python-mapnik/issues/239
+ (fetchpatch {
+ url = "https://github.com/koordinates/python-mapnik/commit/318b1edac16f48a7f21902c192c1dd86f6210a44.patch";
+ sha256 = "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 {
+ src = ./find-libmapnik.patch;
+ libmapnik = "${mapnik}/lib";
+ })
+ ];
nativeBuildInputs = [
mapnik # for mapnik_config
pkg-config
];
- patches = [
- ./find-pycairo-with-pkg-config.patch
- ];
-
buildInputs = [
mapnik
boost
@@ -60,16 +70,72 @@ buildPythonPackage rec {
libwebp
proj
zlib
+ libxml2
+ sqlite
];
propagatedBuildInputs = [ pillow pycairo ];
+ configureFlags = [
+ "XMLPARSER=libxml2"
+ ];
+
+ disabled = isPyPy;
+
+ preBuild = ''
+ export BOOST_PYTHON_LIB="boost_python${"${lib.versions.major python.version}${lib.versions.minor python.version}"}"
+ export BOOST_THREAD_LIB="boost_thread"
+ export BOOST_SYSTEM_LIB="boost_system"
+ export PYCAIRO=true
+ export XMLPARSER=libxml2
+ '';
+
+ checkInputs = [
+ nose
+ pytestCheckHook
+ ];
+
+ preCheck = ''
+ # import from $out
+ rm -r mapnik
+ '';
+
+ # 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_good_files"
+ "test_layer_init"
+ "test_load_save_map"
+ "test_loading_fontset_from_map"
+ "test_normalizing_definition"
+ "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_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"
+ ];
+
pythonImportsCheck = [ "mapnik" ];
meta = with lib; {
description = "Python bindings for Mapnik";
maintainers = with maintainers; [ erictapen ];
homepage = "https://mapnik.org";
- license = licenses.lgpl21;
+ license = licenses.lgpl21Plus;
};
}
diff --git a/pkgs/development/python-modules/python-mapnik/find-libmapnik.patch b/pkgs/development/python-modules/python-mapnik/find-libmapnik.patch
new file mode 100644
index 000000000000..cec557a2940a
--- /dev/null
+++ b/pkgs/development/python-modules/python-mapnik/find-libmapnik.patch
@@ -0,0 +1,30 @@
+diff --git a/build.py b/build.py
+index 0f94826b6..3cceb4546 100644
+--- a/build.py
++++ b/build.py
+@@ -110,8 +110,8 @@ py_env.AppendUnique(LIBS='mapnik-wkt')
+ _mapnik = py_env.LoadableModule('mapnik/_mapnik', sources, LDMODULEPREFIX='', LDMODULESUFFIX='.so')
+
+ Depends(_mapnik, env.subst('../../src/%s' % env['MAPNIK_LIB_NAME']))
+-Depends(_mapnik, env.subst('../../src/json/libmapnik-json${LIBSUFFIX}'))
+-Depends(_mapnik, env.subst('../../src/wkt/libmapnik-wkt${LIBSUFFIX}'))
++Depends(_mapnik, env.subst('@libmapnik@/libmapnikjson${LIBSUFFIX}'))
++Depends(_mapnik, env.subst('@libmapnik@/libmapnikwkt${LIBSUFFIX}'))
+
+ if 'uninstall' not in COMMAND_LINE_TARGETS:
+ pymapniklib = env.Install(target_path,_mapnik)
+diff --git a/setup.py b/setup.py
+index 9985da5a2..5a03a1ec8 100755
+--- a/setup.py
++++ b/setup.py
+@@ -118,8 +118,8 @@ linkflags.extend(check_output([mapnik_config, '--libs']).split(' '))
+ linkflags.extend(check_output([mapnik_config, '--ldflags']).split(' '))
+ linkflags.extend(check_output([mapnik_config, '--dep-libs']).split(' '))
+ linkflags.extend([
+-'-lmapnik-wkt',
+-'-lmapnik-json',
++'-lmapnikwkt',
++'-lmapnikjson',
+ ] + ['-l%s' % i for i in get_boost_library_names()])
+
+ # Dynamically make the mapnik/paths.py file