X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/d8d0bd7c6764308bba16494b75dd3f22a95e7545..f928abac369f699f425ddee925d0d0c2dc0a635d:/gnu/packages/geo.scm diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 8de186a4e3..5e484c6e1c 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -7,17 +7,19 @@ ;;; Copyright © 2018, 2019 Arun Isaac ;;; Copyright © 2018 Joshua Sierles, Nextjournal ;;; Copyright © 2018, 2019, 2020, 2021 Julien Lepiller -;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant +;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant ;;; Copyright © 2019, 2020, 2021 Efraim Flashner ;;; Copyright © 2019, 2021 Wiktor Żelazny ;;; Copyright © 2019, 2020 Hartmut Goebel -;;; Copyright © 2020 Marius Bakke +;;; Copyright © 2020, 2022 Marius Bakke ;;; Copyright © 2020 Christopher Baines -;;; Copyright © 2020, 2021 Felix Gruber +;;; Copyright © 2020, 2021, 2022 Felix Gruber ;;; Copyright © 2021 Sharlatan Hellseher ;;; Copyright © 2021 Vinicius Monego ;;; Copyright © 2021 Clément Lassieur -;;; Copyright © 2021 Nikolay Korotkiy +;;; Copyright © 2021, 2022 Nikolay Korotkiy +;;; Copyright © 2022 Roman Scherer +;;; Copyright © 2022 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -45,6 +47,7 @@ #:use-module (guix build-system qt) #:use-module (guix build-system scons) #:use-module (guix build-system r) + #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix svn-download) @@ -62,6 +65,7 @@ #:use-module (gnu packages boost) #:use-module (gnu packages build-tools) #:use-module (gnu packages check) + #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages cups) @@ -82,11 +86,14 @@ #:use-module (gnu packages graphics) #:use-module (gnu packages gtk) #:use-module (gnu packages haskell-apps) + #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages image) #:use-module (gnu packages image-processing) #:use-module (gnu packages icu4c) #:use-module (gnu packages java) #:use-module (gnu packages kde) + #:use-module (gnu packages libusb) + #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) @@ -95,6 +102,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pretty-print) #:use-module (gnu packages protobuf) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) @@ -110,12 +118,42 @@ #:use-module (gnu packages sqlite) #:use-module (gnu packages textutils) #:use-module (gnu packages time) + #:use-module (gnu packages tls) #:use-module (gnu packages web) #:use-module (gnu packages webkit) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xml) #:use-module (gnu packages xorg)) +(define-public cdo + (package + (name "cdo") + (version "2.0.5") + (source (origin + (method url-fetch) + (uri (string-append + "https://code.mpimet.mpg.de/attachments/download/26823/cdo-" + version ".tar.gz")) + (sha256 + (base32 + "1khdbd5cmnn7qm6hcqg4md5wbq14fs6brrns8b3g18diqgqvpvpd")))) + (build-system gnu-build-system) + (arguments + (list #:configure-flags + #~(list (string-append "--with-netcdf=" + #$(this-package-input "netcdf"))))) + (inputs + (list netcdf)) + (native-inputs + (list pkg-config)) + (home-page "https://code.mpimet.mpg.de/projects/cdo") + (synopsis "Climate data operators") + (description "@acronym{CDO, Climate Data Operators} is a collection of command-line +operators to manipulate and analyse climate and NWP model data. Supported +data formats are GRIB 1/2, netCDF 3/4, SERVICE, EXTRA and IEG. There are more +than 600 operators available.") + (license license:bsd-3))) + (define-public memphis (package (name "memphis") @@ -181,7 +219,7 @@ OpenStreetMap written in C using eXpat, Cairo and GLib.") (define-public geos (package (name "geos") - (version "3.8.1") + (version "3.11.0") (source (origin (method url-fetch) (uri (string-append "http://download.osgeo.org/geos/geos-" @@ -189,8 +227,8 @@ OpenStreetMap written in C using eXpat, Cairo and GLib.") ".tar.bz2")) (sha256 (base32 - "1xqpmr10xi0n9sj47fbwc89qb0yr9imh4ybk0jsxpffy111syn22")))) - (build-system gnu-build-system) + "12l59pxawyizmc4wn20dvjn7aifqwkim4ysmc78h91mayjmqravr")))) + (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after @@ -198,11 +236,10 @@ OpenStreetMap written in C using eXpat, Cairo and GLib.") (lambda _ (substitute* '("tests/xmltester/testrunner.sh" "tests/geostest/testrunner.sh") - (("/bin/sh") (which "sh"))) - #t))))) + (("/bin/sh") (which "sh")))))))) (inputs (list glib)) - (home-page "https://geos.osgeo.org/") + (home-page "https://libgeos.org/") (synopsis "Geometry Engine for Geographic Information Systems") (description "GEOS provides a spatial object model and fundamental geometric @@ -218,7 +255,7 @@ topology functions.") (define-public gnome-maps (package (name "gnome-maps") - (version "41.2") + (version "43.0") ;for libsoup 3 support (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -226,77 +263,62 @@ topology functions.") name "-" version ".tar.xz")) (sha256 (base32 - "037xmkmcmcw87vb1c1s3y225m8757k331cvk1m8cshf6mx61p0l1")))) + "1r1l6ajs6zz316m8zac5r0l3qgdv616xh376bfn2fflcnz7wys08")))) (build-system meson-build-system) (arguments - `(#:glib-or-gtk? #t - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'skip-gtk-update-icon-cache - ;; Don't create 'icon-theme.cache'. - (lambda _ - (substitute* "meson_post_install.py" - (("gtk-update-icon-cache") "true")))) - (add-after 'unpack 'patch-dbus-service - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "data/org.gnome.Maps.service.in" - (("@pkgdatadir@/org.gnome.Maps") - (string-append (assoc-ref outputs "out") - "/bin/gnome-maps"))))) - (add-after 'install 'wrap - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (gi-typelib-path (getenv "GI_TYPELIB_PATH")) - (geocode-glib-path (string-append - (assoc-ref inputs "geocode-glib") - "/lib")) - (goa-path (string-append - (assoc-ref inputs "gnome-online-accounts:lib") - "/lib")) - (gdk-pixbuf-path (string-append - (assoc-ref inputs "gdk-pixbuf") - "/lib")) - (webkitgtk-path (string-append - (assoc-ref inputs "webkitgtk") - "/lib"))) - (wrap-program (string-append out "/bin/gnome-maps") - `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)) - - ;; There seems to be no way to embed the path of - ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37, - ;; libgdk_pixbuf-2.0.so, libjavascriptcoregtk-4.0.so.18, and - ;; libgeocode-glib.so.0 - `("LD_LIBRARY_PATH" ":" prefix (,goa-path - ,webkitgtk-path - ,gdk-pixbuf-path - ,geocode-glib-path))) - #t)))))) + (list + #:glib-or-gtk? #t + #:meson meson-0.63 + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'skip-cache-and-database-updates + (lambda _ + (substitute* "meson.build" + (("([a-z_]*): true" all option) + (cond ; cond rather than match saves an import + ((member option '("gtk_update_icon_cache" + "update_desktop_database")) + (string-append option ": false")) + (else all)))))) + (add-after 'install 'wrap + (lambda _ + (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + (substitute* (string-append #$output "/share/gnome-maps/" + "org.gnome.Maps") + (("imports\\.package\\.init" all) + (string-append "'" gi-typelib-path "'.split(':').forEach(" + "path => imports.gi.GIRepository.Repository." + "prepend_search_path(path));\n" + all))))))))) (native-inputs - `(("gettext" ,gettext-minimal) - ("gobject-introspection" ,gobject-introspection) - ("pkg-config" ,pkg-config))) + (list gettext-minimal + `(,glib "bin") + gobject-introspection + pkg-config)) (inputs - `(("evolution-data-server" ,evolution-data-server) - ("folks" ,folks) - ("libchamplain" ,libchamplain) - ("libgee" ,libgee) - ("libhandy" ,libhandy) - ("libsecret" ,libsecret) - ("libsoup" ,libsoup-minimal-2) - ("libgweather" ,libgweather) - ("libxml2" ,libxml2) - ("librsvg" ,librsvg) - ("glib-networking" ,glib-networking) - ("geoclue" ,geoclue) - ("geocode-glib" ,geocode-glib) - ("gfbgraph" ,gfbgraph) - ("gjs" ,gjs) - ("glib" ,glib) - ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") - ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("gtk+" ,gtk+) - ("rest" ,rest) - ("webkitgtk" ,webkitgtk-with-libsoup2))) + (list folks + evolution-data-server + geoclue + geocode-glib + gfbgraph + gjs + glib + glib-networking + gnome-online-accounts + gsettings-desktop-schemas + gtk+ + libadwaita + libgee + libgweather4 + libhandy + librsvg + libsecret + libshumate + libsoup + libxml2 + pango-next ;TODO: remove when it's the default + rest-next + webkitgtk)) (synopsis "Graphical map viewer and wayfinding program") (description "GNOME Maps is a graphical map viewer. It uses map data from the OpenStreetMap project. It can provide directions for walking, bicycling, @@ -307,18 +329,14 @@ and driving.") (define-public libgeotiff (package (name "libgeotiff") - (version "1.5.1") + (version "1.7.1") (source (origin (method url-fetch) (uri (string-append "http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-" version ".tar.gz")) - (patches (search-patches - ;; See libgeotiff 1.5.1 issue - ;; https://github.com/OSGeo/libgeotiff/issues/22 - "libgeotiff-adapt-test-script-for-proj-6.2.patch")) (sha256 - (base32 "0b31mlzcv5b1y7jdvb7p0pa3xradrg3x5g32ym911lbhq4rrgsgr")) + (base32 "1mjmgv48x51ppax5dnb6lq7z600czxll53bx6jbzqwd4m93i7aq5")) (modules '((guix build utils))) (snippet '(begin @@ -479,6 +497,8 @@ coverages using a SpatiaLite DBMS.") (arguments `(#:configure-flags '("--enable-rttopo=yes") + ;; FIXME: Several tests fail with Proj 9. + #:tests? #f #:phases (modify-phases %standard-phases ;; 1 test is failing, ignore it: @@ -505,7 +525,7 @@ fully fledged Spatial SQL capabilities.") (define-public proj (package (name "proj") - (version "7.2.1") + (version "9.1.0") (source (origin (method url-fetch) @@ -513,20 +533,10 @@ fully fledged Spatial SQL capabilities.") version ".tar.gz")) (sha256 (base32 - "050apzdn0isxpsblys1shrl9ccli5vd32kgswlgx1imrbwpg915k")))) + "0593vd9sac0c98j1f4rammd90d4xnhygbr6d49i8il6ajjdj7cl1")))) (build-system cmake-build-system) - (arguments - `(#:configure-flags '("-DUSE_EXTERNAL_GTEST=ON") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-version - (lambda _ - (substitute* "CMakeLists.txt" - (("MAJOR 7 MINOR 2 PATCH 0") "MAJOR 7 MINOR 2 PATCH 1"))))))) - (inputs - (list curl libjpeg-turbo libtiff sqlite)) - (native-inputs - (list googletest pkg-config)) + (native-inputs (list googletest pkg-config)) + (propagated-inputs (list curl libtiff sqlite)) ;required by proj.pc (home-page "https://proj.org/") (synopsis "Coordinate transformation software") (description @@ -543,6 +553,27 @@ lets developers use the functionality of Proj in their own software.") ;; src/geodesic.*, src/tests/geodtest.cpp license:x11)))) +; This is the last version of proj that provides the old proj.4 API. +(define-public proj-7 + (package (inherit proj) + (version "7.2.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://download.osgeo.org/proj/proj-" + version ".tar.gz")) + (sha256 + (base32 + "050apzdn0isxpsblys1shrl9ccli5vd32kgswlgx1imrbwpg915k")))) + (arguments + `(#:configure-flags '("-DUSE_EXTERNAL_GTEST=ON") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-version + (lambda _ + (substitute* "CMakeLists.txt" + (("MAJOR 7 MINOR 2 PATCH 0") "MAJOR 7 MINOR 2 PATCH 1"))))))))) + (define-public proj.4 (package (name "proj.4") @@ -596,14 +627,14 @@ projections.") (define-public python-pyproj (package (name "python-pyproj") - (version "3.2.1") + (version "3.3.1") (source (origin (method url-fetch) (uri (pypi-uri "pyproj" version)) (sha256 (base32 - "0xrqpy708qlyd7nqjra0dl7nvkqzaj9w0v7wq4j5pxazha9n14sa")))) + "1gjg63irs44djyqbp9gg7s02d0y5i9cd1a83phyzp5fcj56y3n5k")))) (build-system python-build-system) (arguments `(#:phases @@ -653,8 +684,14 @@ projections and coordinate transformations library.") (replace 'check (lambda* (#:key tests? inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) + (setenv "GDAL_ENABLE_DEPRECATED_DRIVER_GTM" "YES") (when tests? - (invoke "pytest" "-m" "not network and not wheel"))))))) + (invoke "pytest" + "-m" "not network and not wheel" + ;; FIXME: Find why the + ;; test_no_append_driver_cannot_append[PCIDSK] + ;; test is failing. + "-k" "not test_no_append_driver_cannot_append"))))))) (inputs (list gdal)) (propagated-inputs @@ -706,9 +743,14 @@ pyproj, Rtree, and Shapely.") (lambda* (#:key tests? #:allow-other-keys) (when tests? (invoke "pytest" - ; Disable test that fails with - ; NotImplementedError in pandas. - "-k" "not test_fillna_no_op_returns_copy" + ; Disable tests that fail due to incompatibilities + ; with our pandas version. + "-k" + (string-append + "not test_getitem_invalid" + " and not test_value_counts" + " and not test_setitem_invalid" + " and not test_insert_invalid") ; Disable tests that require internet access. "-m" "not web"))))))) (propagated-inputs @@ -725,44 +767,138 @@ enables you to easily do operations in Python that would otherwise require a spatial database such as PostGIS.") (license license:bsd-3))) -(define-public mapnik +(define-public python-osmnx (package - (name "mapnik") - (version "3.0.18") + (name "python-osmnx") + (version "1.1.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/mapnik/mapnik/releases/download/v" - version "/mapnik-v" version ".tar.bz2")) + ; Fetch from github as the pypi package is missing the tests dir. + (method git-fetch) + (uri (git-reference + (url "https://github.com/gboeing/osmnx") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 - "06frcikaj2mgz3abfk5h0z4j3hbksi0zikwjngbjv4p5f3pwxf8q")))) - (build-system scons-build-system) - (inputs - (list boost - cairo - freetype - harfbuzz - icu4c - libjpeg-turbo - libpng - libtiff - libwebp - libxml2 - proj.4 - sqlite - zlib)) - (native-inputs - (list pkg-config)) + (base32 "1n8qjn184p5a2s3j6x6iyc1i7p3l3xnbqqxm6ajwgwv6j5fw1d5a")))) + (build-system python-build-system) (arguments - `(#:scons ,scons-python2 - #:scons-flags - (list "CC=gcc" - (string-append "PREFIX=" %output) - (string-append "CUSTOM_LDFLAGS=-Wl,-rpath=" %output "/lib")))) - (home-page "https://mapnik.org/") - (synopsis "Toolkit for developing mapping applications") - (description "Mapnik is a toolkit for developing mapping applications. It + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? inputs outputs #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + ; TODO: Disable network tests + (invoke "pytest" "tests" + "-k" + (string-append + ;; The following tests require network access. + "not test_geocode_to_gdf" + " and not test_stats" + " and not test_osm_xml" + " and not test_elevation" + " and not test_routing" + " and not test_plots" + " and not test_find_nearest" + " and not test_api_endpoints" + " and not test_graph_save_load" + " and not test_graph_from_functions" + " and not test_geometries")))))))) + (propagated-inputs + (list python-folium + python-geopandas + python-matplotlib + python-networkx + python-numpy + python-pandas + python-pyproj + python-requests + python-rtree + python-shapely)) + (native-inputs + (list python-numpy python-pytest)) + (home-page "https://github.com/gboeing/osmnx") + (synopsis + "Retrieve, model, analyze, and visualize OpenStreetMap street networks") + (description + "OSMnx is a Python library that lets you download geospatial data +from OpenStreetMap and model, project, visualize, and analyze real-world +street networks and any other geospatial geometries. You can download +and model walkable, drivable, or bikeable urban networks with a single +line of Python code then easily analyze and visualize them. You can +just as easily download and work with other infrastructure types, +amenities/points of interest, building footprints, elevation data, +street bearings/orientations, and speed/travel time.") + (license license:expat))) + +(define-public mapnik + ;; There hasn't been a release since early 2021, and it fails to build with + ;; Boost 1.77+. + (let ((commit "81103491b467e17218140f50bc0bb9dc8c1f0317") + (revision "0")) + (package + (name "mapnik") + (version (git-version "3.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mapnik/mapnik") + (commit commit) + ;; TODO: Un-bundle mapbox dependencies (not yet packaged). + (recursive? #t))) ;for mapbox dependencies and test data + (file-name (git-file-name name version)) + (sha256 + (base32 "094nam57bdd5nak88qy33z2p3kjahk3vk2nk56m5jkcr5d3hlnx2")))) + (build-system qt-build-system) + (arguments + (list + #:cmake cmake ;for FIND_PACKAGE_ARGS + #:configure-flags + #~(list (string-append "-DCMAKE_CXX_FLAGS=-I" + #$(this-package-native-input "catch2") + "/include/catch2")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'use-system-catch2 + (lambda _ + (substitute* "test/CMakeLists.txt" + (("GIT_TAG.*v2.13.7" all) + (string-append all "\n" + " FIND_PACKAGE_ARGS NAMES Catch2")) + (("^include.*Catch2_SOURCE_DIR.*contrib/Catch.cmake.*") + "include(Catch)\n")))) + (add-after 'unpack 'disable-problematic-tests + (lambda _ + ;; The 'ogr' test fails for unknown reasons. Mark it as + ;; expected to fail (see: + ;; https://github.com/mapnik/mapnik/issues/4329). + (substitute* "test/unit/datasource/ogr.cpp" + (("TEST_CASE\\(\"ogr\"" all) + (string-append all ", \"[!shouldfail]\"")))))))) + (native-inputs + (list catch2 + pkg-config + postgresql)) + (inputs + (list boost + cairo + freetype + gdal + harfbuzz + icu4c + libjpeg-turbo + libpng + libtiff + libwebp + libxml2 + proj + sqlite + zlib)) + (home-page "https://mapnik.org/") + (synopsis "Toolkit for developing mapping applications") + (description "Mapnik is a toolkit for developing mapping applications. It is basically a collection of geographic objects like maps, layers, datasources, features, and geometries. At its core is a C++ shared library providing algorithms and patterns for spatial data access and visualization. @@ -770,15 +906,15 @@ The library does not rely on any specific windowing system and can be deployed to any server environment. It is intended to play fair in a multi-threaded environment and is aimed primarily, but not exclusively, at web-based development.") - (license (list license:lgpl2.1+ - ;; demo/viewer, demo/python/rundemo.py - license:gpl2+ - ;; deps/boost, deps/mapbox, deps/agg/include/agg_conv_offset.h - license:boost1.0 - ;; deps/mapnik/sparsehash - license:bsd-3 - ;; deps/agg - (license:non-copyleft "file://deps/agg/copying"))))) + (license (list license:lgpl2.1+ + ;; demo/viewer, demo/python/rundemo.py + license:gpl2+ + ;; deps/boost, deps/mapbox, deps/agg/include/agg_conv_offset.h + license:boost1.0 + ;; deps/mapnik/sparsehash + license:bsd-3 + ;; deps/agg + (license:non-copyleft "file://deps/agg/copying")))))) (define-public spatialite-gui (package @@ -835,7 +971,7 @@ development.") (define-public gdal (package (name "gdal") - (version "3.3.3") + (version "3.5.1") (source (origin (method url-fetch) (uri (string-append @@ -843,7 +979,7 @@ development.") version ".tar.gz")) (sha256 (base32 - "0nk09lws1hk873yn5f4wzqfvr82gm4hw3gq8w9g1h0kvf6j5x4i8")) + "1l93q7xf6qx9ck5axfkf3ygmvclxkvrjd8x00ckn7j0d0750ci3w")) (modules '((guix build utils))) (snippet `(begin @@ -858,36 +994,15 @@ development.") "frmts/gtiff/libgeotiff" "frmts/zlib" "ogr/ogrsf_frmts/geojson/libjson")))))) - (build-system gnu-build-system) + (build-system cmake-build-system) (arguments `(#:tests? #f #:configure-flags - (let-syntax ((with (syntax-rules () - ((_ option input) - (string-append option "=" - (assoc-ref %build-inputs input)))))) - (list - ;; TODO: --with-pcidsk, --with-pcraster - (with "--with-freexl" "freexl") - (with "--with-libjson-c" "json-c") - (with "--with-png" "libpng") - (with "--with-webp" "libwebp") - (with "--with-gif" "giflib") - (with "--with-jpeg" "libjpeg-turbo") - (with "--with-libtiff" "libtiff") - (with "--with-geotiff" "libgeotiff") - (with "--with-libz" "zlib") - (with "--with-expat" "expat") - (with "--with-sqlite3" "sqlite") - "--with-pcre")) - #:phases - (modify-phases %standard-phases - (add-before 'build 'fix-path - (lambda _ - (substitute* "frmts/mrf/mrf_band.cpp" - (("\"../zlib/zlib.h\"") ""))))))) + (list "-DGDAL_USE_INTERNAL_LIBS=WHEN_NO_EXTERNAL" + "-DGDAL_USE_JPEG12_INTERNAL=OFF"))) (inputs - (list expat + (list curl + expat freexl geos giflib @@ -898,9 +1013,11 @@ development.") libtiff libwebp netcdf - pcre + openssl + pcre2 postgresql ; libpq proj + qhull sqlite zlib)) (native-inputs @@ -986,13 +1103,13 @@ utilities for data translation and processing.") (package (name "python-cartopy") ;; This is a post-release fix that adds build_ext to setup.py. - (version "0.19.0.post1") + (version "0.20.3") (source (origin (method url-fetch) (uri (pypi-uri "Cartopy" version)) (sha256 - (base32 "0xnm8z3as3hriivdfd26s6vn5b63gb46x6vxw6gh1mwfm5rlg2sb")))) + (base32 "01lhnkhw22jp6hnrs5qvgkq4fqcni2sx7ydiyv8w8xxx5wpglq0d")))) (build-system python-build-system) (arguments `(#:phases @@ -1010,11 +1127,16 @@ utilities for data translation and processing.") (list python-matplotlib python-numpy python-pykdtree + python-pyproj python-pyshp python-scipy python-shapely)) (inputs - (list geos proj)) + (list geos + ;; cartopy's setup.py looks for the proj executable. + ;; Not sure if it actually makes use of it since it + ;; probably uses proj only through pyproj. + proj)) (native-inputs (list python-cython python-flufl-lock python-pytest)) (home-page "https://scitools.org.uk/cartopy/docs/latest/") @@ -1038,14 +1160,14 @@ Shapely capabilities (define-public postgis (package (name "postgis") - (version "3.2.0") + (version "3.2.1") (source (origin (method url-fetch) (uri (string-append "https://download.osgeo.org/postgis/source/postgis-" version ".tar.gz")) (sha256 (base32 - "1zbwa15rsvr05rmcidk21q3amndd0q4df4psp3zhqz4lqraf3fbs")))) + "0gl9d6xy2an82ldb9sixz5blyngjryq8m3509fr38ffawvfniazv")))) (build-system gnu-build-system) (arguments `(#:tests? #f @@ -1068,6 +1190,7 @@ Shapely capabilities json-c libjpeg-turbo libxml2 + openssl pcre postgresql protobuf-c @@ -1172,7 +1295,7 @@ to create databases that are optimized for rendering/tile/map-services.") (define-public libosmium (package (name "libosmium") - (version "2.17.2") + (version "2.18.0") (source (origin (method git-fetch) @@ -1181,7 +1304,7 @@ to create databases that are optimized for rendering/tile/map-services.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0xgwicnzlyr8pcpgx528xrzh7g6rjfd7f80bi30478fnp8mq8rzr")))) + (base32 "0fh57mpii1ksacwfx5rz213j896aklib53jbybld2i517q2mmxr0")))) (build-system cmake-build-system) (propagated-inputs (list boost @@ -1203,10 +1326,39 @@ to create databases that are optimized for rendering/tile/map-services.") OpenStreetMap data.") (license license:boost1.0))) +(define-public osmium-tool + (package + (name "osmium-tool") + (version "1.14.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/osmcode/osmium-tool") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zgyqyrs89vch0qnkh9m5xq079sr2wmydy5zz4l8xbysbjf6xry5")) + (modules '((guix build utils))) + (snippet + ;; Remove bundled libraries. + '(delete-file-recursively "include/rapidjson")))) + (build-system cmake-build-system) + (inputs + (list libosmium + rapidjson)) + (native-inputs + (list pandoc)) + (home-page "https://osmcode.org/osmium-tool/") + (synopsis "Osmium command-line tool") + (description "Command line tool for working with OpenStreetMap data +based on the Osmium library.") + (license license:gpl3+))) + (define-public osm2pgsql (package (name "osm2pgsql") - (version "1.5.1") + (version "1.7.0") (source (origin (method git-fetch) @@ -1215,32 +1367,30 @@ OpenStreetMap data.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0i18mskcs087dn3f3h9n7j0wafn8502m0h13mrjwin38xsz0crfj")) + (base32 "15fxr4xq7siy237763l7nswx7v0swr3qzs2h3zkjzgvajw4p6qii")) (modules '((guix build utils))) (snippet - '(begin - (delete-file-recursively "contrib/protozero") - (delete-file-recursively "contrib/libosmium") - #t)))) + ;; Remove bundled libraries. + '(delete-file-recursively "contrib")))) (build-system cmake-build-system) (arguments `(#:tests? #f; tests fail because we need to setup a database #:configure-flags - (list (string-append "-DOSMIUM_INCLUDE_DIR=" - (assoc-ref %build-inputs "libosmium") - "/include") - (string-append "-DPROTOZERO_INCLUDE_DIR=" - (assoc-ref %build-inputs "protozero") - "/include")))) + (list "-DEXTERNAL_LIBOSMIUM=ON" + "-DEXTERNAL_PROTOZERO=ON" + "-DEXTERNAL_FMT=ON" + "-DEXTERNAL_RAPIDJSON=ON"))) (inputs (list boost bzip2 expat + fmt libosmium lua postgresql proj protozero + rapidjson zlib)) (native-inputs (list python python-psycopg2)) @@ -1379,14 +1529,14 @@ map display. Downloads map data from a number of websites, including (string-append "\"" font "/share/fonts/\""))))))) #:tests? #f)) ; no tests (native-inputs - (list qttools)) + (list qttools-5)) (inputs (list bzip2 font-liberation libnova libpng openjpeg - proj + proj-7 qtbase-5 zlib)) (native-search-paths @@ -1443,27 +1593,28 @@ persisted. (define-public python-rtree (package (name "python-rtree") - (version "0.9.7") + (version "1.0.0") (source (origin (method url-fetch) (uri (pypi-uri "Rtree" version)) (sha256 - (base32 "0gna530vy6rh76035cqh7i2lx199cvxjrzjczg9rm6k96k5751xy")))) + (base32 "10lnhf67c9pb0yisxdqmb52dy6lj1za1h9d4p69v0ihk2a138j6h")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'find-libspatialindex (lambda* (#:key inputs #:allow-other-keys) - (setenv "SPATIALINDEX_C_LIBRARY" - (string-append (assoc-ref inputs "libspatialindex") - "/lib/libspatialindex.so")))) + (let ((libspatialindex (assoc-ref inputs "libspatialindex"))) + (substitute* "rtree/finder.py" + (("find_library\\(\"spatialindex_c\"\\)") + (string-append "\"" libspatialindex + "/lib/libspatialindex_c.so\"")))))) (replace 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (lambda* (#:key outputs tests? #:allow-other-keys) (when tests? - (add-installed-pythonpath inputs outputs) - (invoke "python" "-m" "pytest"))))))) + (invoke "pytest"))))))) (native-inputs (list python-numpy python-pytest python-wheel)) (inputs @@ -1711,7 +1862,7 @@ ways, and relations) and their metadata tags.") (define-public libmaxminddb (package (name "libmaxminddb") - (version "1.4.3") + (version "1.6.0") (source (origin (method url-fetch) @@ -1719,7 +1870,7 @@ ways, and relations) and their metadata tags.") "/releases/download/" version "/" "/libmaxminddb-" version ".tar.gz")) (sha256 - (base32 "0fd4a4sxiiwzbd5h74wl1ijnb7xybjyybb7q41vdq3w8nk3zdzd5")))) + (base32 "0rw2z7rx8jzgdcgqlmc4wqrsjmiwd8vm5wvvrldy472rghcaq83n")))) (build-system gnu-build-system) (arguments `(#:make-flags @@ -1738,14 +1889,14 @@ associated with an address.") (define-public python-maxminddb (package (name "python-maxminddb") - (version "1.5.1") + (version "2.2.0") (source (origin (method url-fetch) (uri (pypi-uri "maxminddb" version)) (sha256 (base32 - "0y9giw81k4wdmpryr4k42w50z292mf364a6vs1vxf83ksc9ig6j4")))) + "1rc4a403r3b4vhmhb03gidd0fmsbvfpbf3qfcw25h4db9zn0fxz3")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;; Tests require a copy of the maxmind database @@ -1835,16 +1986,17 @@ using the dataset of topographical information collected by (base32 "184fqmsfzr3b333ssizjk6gvv7mncmygq8dj5r7rsvs5md26z2ys")))) (build-system qt-build-system) (native-inputs - (list pkg-config qttools)) + (list pkg-config qttools-5)) (inputs - (list gdal + (list curl + gdal libjpeg-turbo proj qtbase-5 - qtdeclarative + qtdeclarative-5 qtlocation - qtwebchannel - qtwebengine + qtwebchannel-5 + qtwebengine-5 quazip routino sqlite ; See wrap phase @@ -1976,30 +2128,35 @@ exchanged form one Spatial DBMS and the other.") (define-public opencpn (package (name "opencpn") - (version "5.2.4") + (version "5.6.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/OpenCPN/OpenCPN") - (commit (string-append "v" version)))) + (commit (string-append "Release_" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0ffx0lmz1mp5433zqyxigy4qqav32xprpagd66krvihkyvqp2y6y")))) + (base32 "0g5x45wv3djfjmigk6kgs0i63yp8rs1fbmm4pb15wb3z6dml624y")))) (build-system cmake-build-system) (native-inputs `(("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config))) (inputs - (list bzip2 + (list alsa-utils + bzip2 cairo curl + eudev glu gtk+ + jasper libarchive libelf libexif + libjpeg-turbo libsndfile + libusb lz4 mesa pango @@ -2068,6 +2225,7 @@ track your position right from your laptop.") (inputs `(("clipper" ,clipper) ("cups" ,cups) + ("curl" ,curl) ("gdal" ,gdal) ("proj" ,proj) ("qtbase" ,qtbase-5) @@ -2077,7 +2235,7 @@ track your position right from your laptop.") ("zlib" ,zlib))) (native-inputs `(("doxygen" ,doxygen) - ("qttools" ,qttools))) + ("qttools-5" ,qttools-5))) (home-page "https://www.openorienteering.org/apps/mapper/") (synopsis "OpenOrienteering Mapper (OOM)") (description @@ -2086,7 +2244,7 @@ orienteering sport.") (license license:gpl3+))) (define-public grass - (let* ((version "7.8.6") + (let* ((version "7.8.7") (majorminor (string-join (list-head (string-split version #\.) 2) "")) (grassxx (string-append "grass" majorminor))) (package @@ -2098,7 +2256,7 @@ orienteering sport.") (uri (string-append "https://grass.osgeo.org/" grassxx "/source/grass-" version ".tar.gz")) (sha256 - (base32 "1glk74ly3j0x8ymn4jp73s6y8qv7p3g5nv4gvb6l9qqplyq1fpnq")))) + (base32 "0sbz0ba9p963phvd0gmvfqq1fg4ixpipzcjbf20ys86qavjppzsg")))) (build-system gnu-build-system) (inputs `(("bzip2" ,bzip2) @@ -2209,7 +2367,7 @@ visualization.") (define-public saga (package (name "saga") - (version "7.9.0") + (version "8.2.1") (source (origin (method url-fetch) @@ -2217,8 +2375,15 @@ visualization.") (version-major version) "/SAGA%20-%20" version "/saga-" version ".tar.gz")) (sha256 - (base32 "1n051yxxkylly0k9rlkx2ih3j2lf9d4csg00sm7161r7nhjvggd1")))) - (build-system gnu-build-system) + (base32 "008izjs6gvj09abxf16ssl1xy0ay3ljq4jswbggp6wiiq459minv")) + (modules '((guix build utils))) + (snippet + '(substitute* "saga-gis/src/tools/docs/docs_pdf/doc_pdf.cpp" + (("^#include \n" all) + (string-append all "#include \n")) + (("\\bHPDF_PROJECTING_SCUARE_END\\b") + "HPDF_PROJECTING_SQUARE_END"))))) + (build-system cmake-build-system) (native-inputs (list pkg-config swig)) (inputs @@ -2238,7 +2403,12 @@ visualization.") vigra wxwidgets)) (arguments - '(#:configure-flags '("--enable-python"))) + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'configure 'cd-to-source-dir + (lambda _ + (chdir "saga-gis")))))) (synopsis "System for Automated Geoscientific Analyses") (description "SAGA (System for Automated Geoscientific Analyses) is a Geographic @@ -2251,14 +2421,14 @@ growing set of geoscientific methods.") (define-public qgis (package (name "qgis") - (version "3.16.3") + (version "3.26.2") (source (origin (method url-fetch) (uri (string-append "https://qgis.org/downloads/qgis-" version ".tar.bz2")) (sha256 - (base32 "012dv8dcg7w4lf6k37i41wialwhi0kpkxw2dnq19yqqk35632mzx")))) + (base32 "1hsq3wchsf7db7134fgg9xzzap35q1s4r6649d0krbw80xw5asca")))) (build-system cmake-build-system) (arguments `(#:modules ((guix build cmake-build-system) @@ -2268,6 +2438,8 @@ growing set of geoscientific methods.") #:imported-modules (,@%cmake-build-system-modules (guix build python-build-system) (guix build qt-utils)) + #:configure-flags + '("-DWITH_QTWEBKIT=NO") #:phases (modify-phases %standard-phases ;; Configure correct path to PyQt5 SIP directory @@ -2277,7 +2449,7 @@ growing set of geoscientific methods.") (("sip_dir = cfg.default_sip_dir") (string-append "sip_dir = \"" (assoc-ref inputs "python-pyqt+qscintilla") - "/share/sip\"")) + "/share/sip\""))) ;; Fix building with python-sip@5. ;; ;; The reason for this is that python-sip@5 introduces some @@ -2288,33 +2460,18 @@ growing set of geoscientific methods.") ;; are, messing up the build. The long term solution is to fully ;; upgrade SIP, use sip-build and fix all failing packages, but ;; for now I just want to get the build working. - ((".pyqt_sip_dir...os.path.join.*,") - (string-append "'pyqt_sip_dir': \"" + (substitute* "cmake/FindPyQt5.cmake" + (("SET\\(PYQT5_SIP_DIR \"\\$\\{Python_SITEARCH\\}/PyQt5/bindings\"\\)") + (string-append "SET(PYQT5_SIP_DIR \"" (assoc-ref inputs "python-pyqt+qscintilla") - "/share/sip" "\","))) - (substitute* (list "scripts/prepare_commit.sh" - "scripts/qstringfixup.sh" - "scripts/release.pl" - "scripts/runtests_local_travis_config.sh" - "scripts/sip_include.sh" - "scripts/sipdiff" - "scripts/sipify_all.sh" - "scripts/spell_check/check_spelling.sh" - "scripts/spell_check/spell_test.sh" - "scripts/verify_indentation.sh" - "tests/code_layout/test_banned_keywords.sh" - "tests/code_layout/test_licenses.sh" - "tests/code_layout/test_shellcheck.sh" - "tests/code_layout/test_sip_include.sh" - "tests/code_layout/test_sipfiles.sh" - "tests/code_layout/test_sipify.sh") + "/share/sip\")"))) + (substitute* (list "tests/code_layout/test_qt_imports.sh" + "tests/code_layout/test_qgsscrollarea.sh") (("\\$\\(git rev-parse --show-toplevel\\)") - (getcwd))) - (substitute* "tests/code_layout/test_sip_include.sh" - (("^REV=.*") "REV=currentrev\n")) - #t)) + (getcwd))))) (replace 'check - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key inputs tests? #:allow-other-keys) + (when tests? (setenv "HOME" "/tmp") (system "Xvfb :1 &") (setenv "DISPLAY" ":1") @@ -2325,104 +2482,87 @@ growing set of geoscientific methods.") '(;; Disable tests that require network access "qgis_filedownloader" ;; TODO: Find why the following tests fail - "ProcessingGdalAlgorithmsRasterTest" - "ProcessingGdalAlgorithmsVectorTest" - "ProcessingGrass7AlgorithmsImageryTest" - "ProcessingGrass7AlgorithmsRasterTest" - "ProcessingGrass7AlgorithmsVectorTest" - "ProcessingOtbAlgorithmsTest" "ProcessingQgisAlgorithmsTestPt1" "ProcessingQgisAlgorithmsTestPt2" "ProcessingQgisAlgorithmsTestPt3" "ProcessingQgisAlgorithmsTestPt4" - "PyCoreAdittions" + "ProcessingGdalAlgorithmsVectorTest" + "ProcessingGrass7AlgorithmsImageryTest" + "ProcessingGrass7AlgorithmsRasterTestPt1" + "ProcessingGrass7AlgorithmsRasterTestPt2" + "ProcessingGrass7AlgorithmsVectorTest" + "ProcessingOtbAlgorithmsTest" + "test_core_authmanager" + "test_core_compositionconverter" + "test_core_coordinatereferencesystem" + "test_core_gdalutils" + "test_core_labelingengine" + "test_core_layout" + "test_core_layouthtml" + "test_core_layoutlabel" + "test_core_layoutmultiframe" + "test_core_layoutpicture" + "test_core_legendrenderer" + "test_core_networkaccessmanager" + "test_core_rasterfilewriter" + "test_core_tiledownloadmanager" + "test_gui_dualview" + "test_gui_htmlwidgetwrapper" + "test_gui_filedownloader" + "test_gui_queryresultwidget" + "test_analysis_processingalgspt2" + "test_analysis_processing" + "test_provider_wcsprovider" + "qgis_grassprovidertest7" + "test_app_gpsinformationwidget" "PyQgsAnnotation" - "PyQgsAppStartup" - "PyQgsAuthBasicMethod" + "PyQgsAttributeTableModel" "PyQgsAuthenticationSystem" - "PyQgsAuxiliaryStorage" - "PyQgsDBManagerGpkg" - "PyQgsDBManagerSpatialite" - "PyQgsDataItem" - "PyQgsFieldValidator" + "PyQgsExternalStorageWebDAV" + "PyQgsFieldFormattersTest" "PyQgsFileUtils" "PyQgsGeometryTest" - "PyQgsImageCache" - "PyQgsImportIntoPostGIS" - "PyQgsLayerDependencies" - "PyQgsLayerMetadata" - "PyQgsLayout" + "PyQgsGoogleMapsGeocoder" + "PyQgsHashLineSymbolLayer" "PyQgsLayoutExporter" "PyQgsLayoutHtml" - "PyQgsLayoutLegend" - "PyQgsLayoutMapGrid" + "PyQgsLineSymbolLayers" "PyQgsMapLayer" - "PyQgsMetadataBase" - "PyQgsOGRProvider" + "PyQgsNetworkContentFetcherRegistry" "PyQgsOGRProviderGpkg" - "PyQgsOapifProvider" + "PyQgsOGRProviderSqlite" + "PyQgsPalLabelingCanvas" "PyQgsPalLabelingLayout" - "PyQgsProject" + "PyQgsPalLabelingPlacement" + "PyQgsProcessExecutable" "PyQgsProviderConnectionGpkg" - "PyQgsProviderConnectionPostgres" "PyQgsProviderConnectionSpatialite" - "PyQgsPythonProvider" - "PyQgsRasterLayer" - "PyQgsRulebasedRenderer" - "PyQgsSelectiveMasking" - "PyQgsSettings" - "PyQgsShapefileProvider" + "PyQgsOGRProvider" "PyQgsSpatialiteProvider" - "PyQgsSvgCache" - "PyQgsSymbolExpressionVariables" - "PyQgsTextRenderer" "PyQgsVectorFileWriter" - "PyQgsVectorLayer" - "PyQgsVectorLayerUtils" + "PyQgsVectorLayerEditBuffer" + "PyQgsVectorLayerEditBufferGroup" + "PyQgsVectorLayerProfileGenerator" "PyQgsVirtualLayerProvider" "PyQgsWFSProvider" - "qgis_arcgisrestutilstest" - "qgis_authmanagertest" - "qgis_compositionconvertertest" - "qgis_coordinatereferencesystemtest" - "qgis_expressiontest" - "qgis_fontmarkertest" - "qgis_geometrycheckstest" - "qgis_geometrytest" - "qgis_gpsinformationwidget" - "qgis_grassprovidertest7" - "qgis_imagecachetest" - "qgis_labelingenginetest" - "qgis_layouthtmltest" - "qgis_layoutmanualtabletest" - "qgis_layoutmapgridtest" - "qgis_layoutmaptest" - "qgis_layoutpicturetest" - "qgis_layouttabletest" - "qgis_mapdevicepixelratiotest" - "qgis_maprendererjobtest" - "qgis_ogrproviderguitest" - "qgis_painteffecttest" - "qgis_pallabelingtest" - "qgis_processingtest" - "qgis_rasterlayertest" + "PyQgsWFSProviderGUI" + "PyQgsOapifProvider" + "PyQgsLayerDependencies" + "PyQgsDBManagerGpkg" + "PyQgsDBManagerSpatialite" + "PyQgsAuxiliaryStorage" + "PyQgsSelectiveMasking" "qgis_shellcheck" - "qgis_sip_include" - "qgis_sip_uptodate" "qgis_sipify" - "qgis_styletest" - "qgis_svgmarkertest" - "qgis_taskmanagertest" - "qgis_wcsprovidertest" - "qgis_ziplayertest") - "|")))) + "qgis_sip_include" + "qgis_sip_uptodate") + "|"))))) (add-after 'install 'wrap-python (assoc-ref python:%standard-phases 'wrap)) (add-after 'wrap-python 'wrap-qt (lambda* (#:key outputs inputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - (wrap-qt-program "qgis" #:output out #:inputs inputs)) - #t)) + (wrap-qt-program "qgis" #:output out #:inputs inputs)))) (add-after 'wrap-qt 'wrap-gis (lambda* (#:key inputs outputs #:allow-other-keys) ;; TODO: Find if there is a way to get SAGA to work. @@ -2440,10 +2580,10 @@ growing set of geoscientific methods.") (wrap-program (string-append out "/bin/qgis") ;;`("PATH" ":" prefix (,saga)) `("QGIS_PREFIX_PATH" = (,out)) - `("GISBASE" = (,grass)))) - #t))))) + `("GISBASE" = (,grass))))))))) (inputs - (list exiv2 + (list bash-minimal + exiv2 expat gdal geos @@ -2479,15 +2619,15 @@ growing set of geoscientific methods.") qca qscintilla qtbase-5 - qtdeclarative + qtdeclarative-5 qtkeychain qtlocation qtserialport - qtsvg - qtwebkit + qtsvg-5 qwt - ;;("saga" ,saga) - sqlite)) + ;; saga + sqlite + (list zstd "lib"))) (native-inputs (list bison flex @@ -2496,7 +2636,8 @@ growing set of geoscientific methods.") pkg-config python-mock python-nose2 - qttools + python-pyqt-builder + qttools-5 shellcheck xorg-server-for-tests)) (home-page "https://qgis.org") @@ -2596,35 +2737,41 @@ using third-party geocoders and other data sources.") (define-public gplates (package (name "gplates") - (version "2.3.0") + ;; Note: use a pre-release to cope with newer Boost, ref + ;; https://discourse.gplates.org/t/compilation-error-with-boost-1-77/452/3 + (version "2.3.01-beta.3") (source (origin (method url-fetch) - (uri "https://www.earthbyte.org/download/8421/") - (file-name (string-append name "-" version ".tar.bz2")) + (uri "https://cloudstor.aarnet.edu.au/plus/s\ +/ojsYNOyUYE3evNp/download?path=%2F&files=gplates_2.3.1-beta.3_src.zip") + (file-name (string-append name "-" version ".zip")) (sha256 (base32 - "0lrcmcxc924ixddii8cyglqlwwxvk7f00g4yzbss5i3fgcbh8n96")))) + "06i87dfab0cq9gdi5mh6sf9wigawpp0d05zbyslv910443i26gwv")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DBoost_NO_BOOST_CMAKE=ON") - #:tests? #f)) ;no test target + #:tests? #f)) ;no test target + (native-inputs + (list unzip)) ;for the beta (inputs - `(("boost" ,boost) - ("cgal" ,cgal) - ("gdal" ,gdal) - ("glew" ,glew) - ("glu" ,glu) - ("gmp" ,gmp) - ("mesa" ,mesa) - ("mpfr" ,mpfr) - ("proj" ,proj) - ("python-3" ,python-3) - ("python-numpy" ,python-numpy) - ("qt" ,qtbase-5) - ("qtsvg" ,qtsvg) - ("qtxmlpatterns" ,qtxmlpatterns) - ("qwt" ,qwt) - ("zlib" ,zlib))) + (list boost + cgal + curl + gdal + glew + glu + gmp + mesa + mpfr + proj + python-3 + python-numpy + qtbase-5 + qtsvg-5 + qtxmlpatterns + qwt + zlib)) (home-page "https://www.gplates.org") (synopsis "Plate tectonics simulation program") (description "GPlates is a plate tectonics program. Manipulate