;;; Copyright © 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019, 2021 Wiktor Żelazny <wzelazny@vurv.cz>
;;; Copyright © 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Christopher Baines <mail@cbaines.net>
-;;; Copyright © 2020, 2021 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2020, 2021, 2022 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2021 Nikolay Korotkiy <sikmir@disroot.org>
+;;; Copyright © 2021, 2022 Nikolay Korotkiy <sikmir@disroot.org>
+;;; Copyright © 2022 Roman Scherer <roman.scherer@burningswell.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
#: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)
#: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)
#: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)
#: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)
#: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")
(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-"
".tar.bz2"))
(sha256
(base32
- "1xqpmr10xi0n9sj47fbwc89qb0yr9imh4ybk0jsxpffy111syn22"))))
- (build-system gnu-build-system)
+ "12l59pxawyizmc4wn20dvjn7aifqwkim4ysmc78h91mayjmqravr"))))
+ (build-system cmake-build-system)
(arguments `(#:phases
(modify-phases %standard-phases
(add-after
(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
(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 "/"
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,
(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
(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:
(define-public proj
(package
(name "proj")
- (version "7.2.1")
+ (version "9.1.0")
(source
(origin
(method url-fetch)
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
;; 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")
(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
(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
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.
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
(define-public gdal
(package
(name "gdal")
- (version "3.3.3")
+ (version "3.5.1")
(source (origin
(method url-fetch)
(uri (string-append
version ".tar.gz"))
(sha256
(base32
- "0nk09lws1hk873yn5f4wzqfvr82gm4hw3gq8w9g1h0kvf6j5x4i8"))
+ "1l93q7xf6qx9ck5axfkf3ygmvclxkvrjd8x00ckn7j0d0750ci3w"))
(modules '((guix build utils)))
(snippet
`(begin
"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\"") "<zlib.h>")))))))
+ (list "-DGDAL_USE_INTERNAL_LIBS=WHEN_NO_EXTERNAL"
+ "-DGDAL_USE_JPEG12_INTERNAL=OFF")))
(inputs
- (list expat
+ (list curl
+ expat
freexl
geos
giflib
libtiff
libwebp
netcdf
- pcre
+ openssl
+ pcre2
postgresql ; libpq
proj
+ qhull
sqlite
zlib))
(native-inputs
(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
(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/")
(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
json-c
libjpeg-turbo
libxml2
+ openssl
pcre
postgresql
protobuf-c
(define-public libosmium
(package
(name "libosmium")
- (version "2.17.2")
+ (version "2.18.0")
(source
(origin
(method git-fetch)
(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
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)
(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))
(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
(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
(define-public libmaxminddb
(package
(name "libmaxminddb")
- (version "1.4.3")
+ (version "1.6.0")
(source
(origin
(method url-fetch)
"/releases/download/" version "/"
"/libmaxminddb-" version ".tar.gz"))
(sha256
- (base32 "0fd4a4sxiiwzbd5h74wl1ijnb7xybjyybb7q41vdq3w8nk3zdzd5"))))
+ (base32 "0rw2z7rx8jzgdcgqlmc4wqrsjmiwd8vm5wvvrldy472rghcaq83n"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
(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
(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
(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
(inputs
`(("clipper" ,clipper)
("cups" ,cups)
+ ("curl" ,curl)
("gdal" ,gdal)
("proj" ,proj)
("qtbase" ,qtbase-5)
("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
(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
(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)
(define-public saga
(package
(name "saga")
- (version "7.9.0")
+ (version "8.2.1")
(source
(origin
(method url-fetch)
(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 <hpdf\\.h>\n" all)
+ (string-append all "#include <hpdf_version.h>\n"))
+ (("\\bHPDF_PROJECTING_SCUARE_END\\b")
+ "HPDF_PROJECTING_SQUARE_END")))))
+ (build-system cmake-build-system)
(native-inputs
(list pkg-config swig))
(inputs
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
(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)
(("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
;; 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 tests? #:allow-other-keys)
(when tests?
'(;; 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_layoutlabeltest"
- "qgis_layoutmanualtabletest"
- "qgis_layoutmapgridtest"
- "qgis_layoutmaptest"
- "qgis_layoutmultiframetest"
- "qgis_layoutpicturetest"
- "qgis_layouttabletest"
- "qgis_layouttest"
- "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.
(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
qca
qscintilla
qtbase-5
- qtdeclarative
+ qtdeclarative-5
qtkeychain
qtlocation
qtserialport
- qtsvg
+ qtsvg-5
qwt
- ;;("saga" ,saga)
- sqlite))
+ ;; saga
+ sqlite
+ (list zstd "lib")))
(native-inputs
(list bison
flex
pkg-config
python-mock
python-nose2
- qttools
+ python-pyqt-builder
+ qttools-5
shellcheck
xorg-server-for-tests))
(home-page "https://qgis.org")
(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