diff options
| author | Robert Hensing <robert@roberthensing.nl> | 2022-12-02 18:12:14 +0000 |
|---|---|---|
| committer | Robert Hensing <robert@roberthensing.nl> | 2022-12-02 18:12:14 +0000 |
| commit | 7bfbf037d7fea8edca0ef75edd15ce4534052c5c (patch) | |
| tree | 114669c9b210ea663710cd403350a43288b60e51 /pkgs/development/python-modules/python-mapnik | |
| parent | 4e502a1c4d207610b0964b92bb41e574ed62e9c9 (diff) | |
| parent | fad052f056576d04a8eb7a6b374584a740e10706 (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.nix | 98 | ||||
| -rw-r--r-- | pkgs/development/python-modules/python-mapnik/find-libmapnik.patch | 30 |
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 |
