summary refs log tree commit diff
path: root/pkgs/development/python-modules/python-mapnik
diff options
context:
space:
mode:
authorBruce Toll <4109762+tollb@users.noreply.github.com>2021-05-07 18:15:36 -0400
committerBruce Toll <4109762+tollb@users.noreply.github.com>2021-05-11 13:49:58 -0400
commit12d4e7567c1c5d30d489e51f23e96f17783fe22d (patch)
treef0191cdca4b1395cd7260fd5c4a79a244ed6d226 /pkgs/development/python-modules/python-mapnik
parent3385397ca108ec81f8114de1dd7781028efffe01 (diff)
downloadnixpkgs-12d4e7567c1c5d30d489e51f23e96f17783fe22d.tar
nixpkgs-12d4e7567c1c5d30d489e51f23e96f17783fe22d.tar.gz
nixpkgs-12d4e7567c1c5d30d489e51f23e96f17783fe22d.tar.bz2
nixpkgs-12d4e7567c1c5d30d489e51f23e96f17783fe22d.tar.lz
nixpkgs-12d4e7567c1c5d30d489e51f23e96f17783fe22d.tar.xz
nixpkgs-12d4e7567c1c5d30d489e51f23e96f17783fe22d.tar.zst
nixpkgs-12d4e7567c1c5d30d489e51f23e96f17783fe22d.zip
python-mapnik: fix pycairo support
Fully enable pycairo support by exporting PYCAIRO=true and using
pkg-config to locate the pycairo library (with included patch).

The patch restores the use of pkg-config to find pycairo. This code was
present upstream, but commented out; it has been re-enabled and
modified to support both pycairo and py3cairo (the python3 version
of pycairo).
Diffstat (limited to 'pkgs/development/python-modules/python-mapnik')
-rw-r--r--pkgs/development/python-modules/python-mapnik/default.nix6
-rw-r--r--pkgs/development/python-modules/python-mapnik/find-pycairo-with-pkg-config.patch18
2 files changed, 24 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/python-mapnik/default.nix b/pkgs/development/python-modules/python-mapnik/default.nix
index 36c297358e8..b1b0c70d860 100644
--- a/pkgs/development/python-modules/python-mapnik/default.nix
+++ b/pkgs/development/python-modules/python-mapnik/default.nix
@@ -35,10 +35,16 @@ in buildPythonPackage rec {
     export BOOST_PYTHON_LIB="boost_python${pythonVersion}"
     export BOOST_THREAD_LIB="boost_thread"
     export BOOST_SYSTEM_LIB="boost_system"
+    export PYCAIRO=true
   '';
 
   nativeBuildInputs = [
     mapnik # for mapnik_config
+    pkgs.pkgconfig
+  ];
+
+  patches = [
+    ./find-pycairo-with-pkg-config.patch
   ];
 
   buildInputs = [
diff --git a/pkgs/development/python-modules/python-mapnik/find-pycairo-with-pkg-config.patch b/pkgs/development/python-modules/python-mapnik/find-pycairo-with-pkg-config.patch
new file mode 100644
index 00000000000..1f35af36ee8
--- /dev/null
+++ b/pkgs/development/python-modules/python-mapnik/find-pycairo-with-pkg-config.patch
@@ -0,0 +1,18 @@
+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")
+