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).
This commit is contained in:
Bruce Toll 2021-05-07 18:15:36 -04:00
parent 3385397ca1
commit 12d4e7567c
2 changed files with 24 additions and 0 deletions

View File

@ -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 = [

View File

@ -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")