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 provides three minor improvements:
1. Fix missing proj support. Fixes#91889.
2. Fix missing libxml2 support.
3. Improve build time with parallel build.
Fix missing proj support:
-------------------------
The 2019-07-09 update to proj version 6.1.1 in nixpkgs
commit d55cba68ff caused two problems for mapnik:
1. The separation of the dev output was not reflected in the mapnik
expression. Since proj support is optional in the mapnik build,
the build succeeded but no longer included proj support.
See build log for: https://hydra.nixos.org/build/96274475.
2. Even if the mapnik expression was updated to use the separate
dev output, it would still have dropped proj support because mapnik
has not been updated for the proj 6 API.
This commit fixes the PROJ_INCLUDES to use the correct dev output and
also makes the PROJ_LIBS output explicit. In addition, it defines
ACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1 since mapnik still does not have
a tagged release that supports the proj 6 api.
Looking to the future, it appears that the mapnik master branch includes
proj 6 support, so some checks were included to help insure that this
workaround gets removed once it is no longer required.
Fix missing libxml2 support:
----------------------------
Configure with "XMLPARSER=libxml2" to get libxml2 support. This has been
needed since mapnik 3.0.2. Remove XML2_INCLUDES and XML2_LIBS which
trigger a bug in the supplied SConstruct script (when used with
"XMLPARSER=libxml2.
In addition, libxml2 needs to be a propagatedBuildInput to avoid
errors building apacheHttpdPackages.mod_tile, python-mapnik, and
possibly other packages.
Enable parallel build:
----------------------
Setting enableParallelBuild does not result in a parallel build
with mapnik. However, setting JOBS=$(NIX_BUILD_CORES) in buildFlags
works and significantly reduces the build time.
- Drop compiler and stdver arguments – if someone needs to provide them, they can just use overrideAttrs
- Update repo source
- Narrow scope of `with lib` declaration
- Change optional → optionals
- Use one input per line
- Build on all unix platforms
- Re-order attributes
Due to improper sandboxing, I didn't notice the failed tests while
upgrading jupytext in #121648. The errors come from jupyter_core so
the same fix is used here as there: set $HOME to a writable directory.
The diagrams libraries universe still uses monoid-extras 0.5.1 and build
failures start cropping up when upgrading it. Since no other packages I
am aware of use this, we can pin it to 0.5.1 which still uses Option
instead of Maybe (the former of which is deprecated).
Patching this seems like a lot of work that'd break other stuff because
Option is seemingly part of the public API. Let's hope they sort all of
that out themselves before base 4.15 comes around in our main package
set.