;;; Copyright © 2017, 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
-;;; Copyright © 2018, 2019 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2018, 2019, 2020 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
+;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix build-system go)
#:use-module (guix build-system meson)
#:use-module (guix build-system python)
+ #:use-module (guix build-system qt)
#:use-module (guix build-system scons)
#:use-module (guix build-system r)
#:use-module (guix download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages astronomy)
+ #:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages backup)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages elf)
+ #:use-module (gnu packages flex)
#:use-module (gnu packages fonts)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages gps)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages haskell-apps)
#: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 lua)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages pcre)
+ #:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
+ #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages swig)
#:use-module (gnu packages sqlite)
+ #:use-module (gnu packages textutils)
+ #:use-module (gnu packages time)
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
#:use-module (gnu packages wxwidgets)
- #:use-module (gnu packages xml))
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages xorg))
(define-public geos
(package
(name "geos")
- (version "3.7.1")
+ (version "3.8.0")
(source (origin
(method url-fetch)
(uri (string-append "http://download.osgeo.org/geos/geos-"
".tar.bz2"))
(sha256
(base32
- "1312m02xk4sp6f1xdpb9w0ic0zbxg90p5y66qnwidl5fksscf1h0"))))
+ "1mb2v9fy1gnbjhcgv0xny11ggfb17vkzsajdyibigwsxr4ylq4cr"))))
(build-system gnu-build-system)
(arguments `(#:phases
(modify-phases %standard-phases
(define-public gnome-maps
(package
(name "gnome-maps")
- (version "3.30.3.1")
+ (version "3.34.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
name "-" version ".tar.xz"))
(sha256
(base32
- "0xqk3yrds0w8bjmpf4jw0370phvm65av82nqrx7fp1648h9nq7xi"))))
+ "00xslcnhhwslqglgfv2im7vq3awa49y2jxzr8wsby7f713k28vf5"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
,geocode-glib-path)))
#t))))))
(native-inputs
- `(("gobject-introspection" ,gobject-introspection)
- ("intltool" ,intltool)
+ `(("gettext" ,gettext-minimal)
+ ("gobject-introspection" ,gobject-introspection)
("pkg-config" ,pkg-config)))
(inputs
- `(("folks" ,folks)
+ `(("evolution-data-server" ,evolution-data-server)
+ ("folks" ,folks)
("libchamplain" ,libchamplain)
("libgee" ,libgee)
("libsecret" ,libsecret)
("glib" ,glib)
("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+ ("gtk+" ,gtk+)
("rest" ,rest)
("webkitgtk" ,webkitgtk)))
- (propagated-inputs
- `(("gtk+3" ,gtk+)))
(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.4.3")
+ (version "1.5.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 "0rbjqixi4c8yz19larlzq6jda0px2gpmpp9c52cyhplbjsdhsldq"))
+ (base32 "0b31mlzcv5b1y7jdvb7p0pa3xradrg3x5g32ym911lbhq4rrgsgr"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove .csv files, distributed from EPSG under a restricted
;; license. See LICENSE for full license text.
(for-each delete-file (find-files "." "\\.csv$"))
- ;; Now that we have removed the csv files, we need to modify the Makefile.
- (substitute* "Makefile.in"
- (("^all-am: .*$")
- "all-am: Makefile $(LTLIBRARIES) $(HEADERS) geo_config.h\n")
- (("^install-data-am: .*$")
- "install-data-am: install-includeHEADERS"))
#t))))
(build-system gnu-build-system)
(inputs
`(("libjpeg-turbo" ,libjpeg-turbo)
("libtiff" ,libtiff)
- ("proj.4" ,proj.4)
("zlib" ,zlib)))
+ (propagated-inputs
+ `(;; libgeotiff headers include proj headers, so ensure those are available.
+ ("proj" ,proj)))
(arguments
`(#:configure-flags
- (list (string-append "--with-zlib")
- (string-append "--with-jpeg")
+ (list "--disable-static"
+ "--with-zlib" "--with-jpeg"
(string-append "--with-libtiff=" (assoc-ref %build-inputs "libtiff")))))
(synopsis "Library for handling GeoTIFF (geographic enabled TIFF)")
(description "libgeotiff is a library on top of libtiff for reading and
license:mpl1.1
license:public-domain))))
+(define-public proj
+ (package
+ (name "proj")
+ (version "6.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://download.osgeo.org/proj/proj-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1y46ij32j9b4x1kjnnlykcwk3kkjwkg44sfc1ziwm3a3g0ki3q3d"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("sqlite" ,sqlite)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "https://proj.org/")
+ (synopsis "Coordinate transformation software")
+ (description
+ "Proj is a generic coordinate transformation software that transforms
+geospatial coordinates from one coordinate reference system (CRS) to another.
+This includes cartographic projections as well as geodetic transformations.
+PROJ includes command line applications for easy conversion of coordinates
+from text files or directly from user input. In addition, proj also exposes
+an application programming interface that lets developers use the
+functionality of proj in their own software.")
+ (license (list license:expat
+ ;; src/projections/patterson.cpp
+ license:asl2.0
+ ;; src/geodesic.*, src/tests/geodtest.cpp
+ license:x11))))
+
(define-public proj.4
(package
(name "proj.4")
#t)))))
(inputs
`(("glib" ,glib)))
- (home-page "http://proj4.org/")
+ (home-page "https://proj.org/")
(synopsis "Cartographic Projections Library")
(description
"Proj.4 is a library for converting coordinates between cartographic
(list "CC=gcc"
(string-append "PREFIX=" %output)
(string-append "CUSTOM_LDFLAGS=-Wl,-rpath=" %output "/lib"))))
- (home-page "http://mapnik.org/")
+ (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,
`(("freexl" ,freexl)
("geos" ,geos)
("libgaiagraphics" ,libgaiagraphics)
+ ("libjpeg-turbo" ,libjpeg-turbo)
("libspatialite" ,libspatialite)
("libxml2" ,libxml2)
("proj.4" ,proj.4)
("sqlite" ,sqlite)
("wxwidgets" ,wxwidgets-2)
("zlib" ,zlib)))
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'fix-gui
+ (lambda _
+ ;; Fix for the GUI not showing up.
+ (substitute* "Main.cpp"
+ (("Hide\\(\\);") ""))
+ #t)))))
(synopsis "Graphical user interface for SpatiaLite")
(description "Spatialite-gui provides a visual interface for viewing and
maintaining a spatialite database. You can easily see the structure of the
(define-public gdal
(package
(name "gdal")
- (version "2.2.4")
+ (version "3.0.4")
(source (origin
(method url-fetch)
(uri (string-append
version ".tar.gz"))
(sha256
(base32
- "1951f7b69x3d1vic0rmq92q8f4bj3hbxnxmj5jl0cc3zg0isgmdr"))
+ "10symyajj1b7j98f889lqxxbmhcyvlhq9gg0l42h69bv22wx45gw"))
(modules '((guix build utils)))
(snippet
`(begin
(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
(substitute* "frmts/mrf/mrf_band.cpp"
(("\"../zlib/zlib.h\"") "<zlib.h>")))))))
(inputs
- `(("freexl" ,freexl)
+ `(("expat" ,expat)
+ ("freexl" ,freexl)
("geos" ,geos)
("giflib" ,giflib)
("json-c" ,json-c)
("libpng" ,libpng)
("libtiff" ,libtiff)
("libwebp" ,libwebp)
+ ("netcdf" ,netcdf)
("pcre" ,pcre)
+ ("proj" ,proj)
+ ("sqlite" ,sqlite)
("zlib" ,zlib)))
- (home-page "http://www.gdal.org/")
+ (home-page "https://gdal.org/")
(synopsis "Raster and vector geospatial data format library")
(description "GDAL is a translator library for raster and vector geospatial
data formats. As a library, it presents a single raster abstract data model
(define-public postgis
(package
(name "postgis")
- (version "2.4.8")
+ (version "3.0.0")
(source (origin
(method url-fetch)
(uri (string-append "https://download.osgeo.org/postgis/source/postgis-"
version ".tar.gz"))
(sha256
(base32
- "0nanza15xzfhbpbq49p1xqz96dgbsam5332y9zj6snmz2mq685ll"))))
+ "15557fbk0xkngihwhqsbdyz2ng49blisf5zydw81j0gabk6x4vy0"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
(inputs
`(("gdal" ,gdal)
("geos" ,geos)
+ ("giflib" ,giflib)
+ ("json-c" ,json-c)
+ ("libjpeg" ,libjpeg-turbo)
("libxml2" ,libxml2)
("pcre" ,pcre)
("postgresql" ,postgresql)
- ("proj.4" ,proj.4)))
+ ("proj" ,proj)))
(native-inputs
`(("perl" ,perl)
("pkg-config" ,pkg-config)))
"cmd/tegola_lambda/main.go")
(("version not set") ,version)))
#t)))))
- (home-page "http://tegola.io")
+ (home-page "https://tegola.io")
(synopsis "Vector tile server for maps")
(description "Tegola is a free vector tile server written in Go. Tegola
takes geospatial data and slices it into vector tiles that can be efficiently
(define-public libosmium
(package
(name "libosmium")
- (version "2.14.2")
+ (version "2.15.4")
(source
(origin
(method git-fetch)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "123ri1l0a2b9fljgpwsl7z2w4i3kmgxz79d4ns9z4mwbp8sw0250"))))
+ (base32 "0mlcvqrhp40bzj5r5j9nfc5vbis8hmzcq9xi8jylkciyydaynhz4"))))
(build-system cmake-build-system)
(propagated-inputs
`(("boost" ,boost)
+ ("bzip2" ,bzip2)
("expat" ,expat)
("gdal" ,gdal)
("geos" ,geos)
- ("proj.4" ,proj.4)
+ ("proj" ,proj)
("protozero" ,protozero)
("sparsehash" ,sparsehash)
+ ("utfcpp" ,utfcpp)
("zlib" ,zlib)))
(native-inputs
`(("doxygen" ,doxygen)))
(define-public osm2pgsql
(package
(name "osm2pgsql")
- (version "0.96.0")
+ (version "1.2.1")
(source
(origin
(method git-fetch)
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "032cydh8ynaqfhdzmkvgbmqyjql668y6qln1l59l2s3ni9963bbl"))
+ (base32 "1ysan01lpqzjxlq3y2kdminfjs5d9zksicpf9vvzpdk3fzq51fc9"))
(modules '((guix build utils)))
(snippet
'(begin
"/include"))))
(inputs
`(("boost" ,boost)
+ ("bzip2" ,bzip2)
("expat" ,expat)
("libosmium" ,libosmium)
("lua" ,lua)
("postgresql" ,postgresql)
- ("proj.4" ,proj.4)
+ ("proj" ,proj)
("protozero" ,protozero)
("zlib" ,zlib)))
(native-inputs
- `(("python-2" ,python-2)
- ("python2-psycopg2" ,python2-psycopg2)))
+ `(("python" ,python)
+ ("python-psycopg2" ,python-psycopg2)))
(home-page "https://github.com/openstreetmap/osm2pgsql")
(synopsis "OSM data importer to postgresql")
(description "Osm2pgsql is a tool for loading OpenStreetMap data into a
(define-public libspatialindex
(package
(name "libspatialindex")
- (version "1.8.5")
+ (version "1.9.3")
(source
(origin
(method url-fetch)
- (uri (string-append "https://download.osgeo.org/libspatialindex/"
- "spatialindex-src-" version ".tar.gz"))
+ (uri (string-append "https://github.com/libspatialindex/libspatialindex/"
+ "releases/download/" version "/spatialindex-src-"
+ version ".tar.bz2"))
(sha256
(base32
- "1vxzm7kczwnb6qdmc0hb00z8ykx11zk3sb68gc7rch4vrfi4dakw"))))
- (build-system gnu-build-system)
+ "02n5vjcyk04w0djidyp21hfbxfpbbara8ifd9nml6158rwqr8lja"))))
+ (build-system cmake-build-system)
(home-page "https://libspatialindex.org")
(synopsis "Spatial indexing library")
(description "The purpose of this library is to provide:
(define-public java-jmapviewer
(package
(name "java-jmapviewer")
- (version "2.12")
+ (version "2.13")
(source (origin
(method url-fetch)
(uri (string-append "https://svn.openstreetmap.org/applications/"
"/JMapViewer-" version "-Source.zip"))
(sha256
(base32
- "08hbqsbs859v4m5d90560fdifavd1apnpz9v9iry1v31dsvy5707"))))
+ "0sy6r5fkbb9bclw0is6gwnbzz627m7pjfnsqydxz58pbndakkhrv"))))
(build-system ant-build-system)
(native-inputs
`(("unzip" ,unzip)))
(lambda* (#:key outputs #:allow-other-keys)
(let ((dir (string-append (assoc-ref outputs "out") "/share/java/")))
(mkdir-p dir)
- (copy-file "JMapViewer.jar" (string-append dir "JMapViewer.jar"))))))))
+ (copy-file "JMapViewer.jar" (string-append dir "JMapViewer.jar"))
+ #t))))))
(home-page "https://wiki.openstreetmap.org/wiki/JMapViewer")
(synopsis "OSM map integration in Java")
- (description "JMapViewer is a Java component which allows to easily
-integrate an OSM map view into your Java application. It is maintained as
+ (description "JMapViewer is a Java component which easily
+integrates an OSM map view into your Java application. It is maintained as
an independent project by the JOSM team.")
(license license:gpl2)))
+(define-public java-opening-hours-parser
+ (package
+ (name "java-opening-hours-parser")
+ (version "0.21.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/simonpoole/OpeningHoursParser")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1m8sp0jbjyv1nq3ddj8rk6rf3sva3mkacc6vw7rsj0c2n57k3i50"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:jar-name "java-opening-hours-parser.jar"
+ #:source-dir "src/main/java"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'copy-resources
+ (lambda _
+ (copy-recursively "src/main/resources" "build/classes")
+ #t))
+ (add-before 'build 'generate-parser
+ (lambda* _
+ (let* ((dir "src/main/java/ch/poole/openinghoursparser")
+ (file (string-append dir "/OpeningHoursParser.jj")))
+ (invoke "javacc" "-DEBUG_PARSER=false"
+ "-DEBUG_TOKEN_MANAGER=false" "-JDK_VERSION=1.8"
+ "-GRAMMAR_ENCODING=UTF-8"
+ (string-append "-OUTPUT_DIRECTORY=" dir)
+ file))
+ #t)))))
+ (inputs
+ `(("java-jetbrains-annotations" ,java-jetbrains-annotations)))
+ (native-inputs
+ `(("javacc" ,javacc)
+ ("java-junit" ,java-junit)
+ ("java-hamcrest-core" ,java-hamcrest-core)))
+ (home-page "https://github.com/simonpoole/OpeningHoursParser")
+ (synopsis "Java parser for the OpenStreetMap opening hour format")
+ (description "This is a very simplistic parser for string values according
+to the OSM opening hours specification.")
+ (license license:expat)))
+
(define-public josm
(package
(name "josm")
- (version "15492")
+ (version "15937")
(source (origin
(method svn-fetch)
(uri (svn-reference
(recursive? #f)))
(sha256
(base32
- "12xkwcv77as30a61w1c8a0i2b0kiiks71d487gbdfv7azlj4vqia"))
+ "00b8sw0wgkcf7xknmdpn5s521ax8x2660figidcrry37sgq3x946"))
(file-name (string-append name "-" version "-checkout"))
(modules '((guix build utils)))
(snippet
(synopsis "OSM editor")
(description "JOSM is an extensible editor for OpenStreetMap (OSM). It
supports loading GPX tracks, background imagery and OSM data from local
-sources as well as from online sources and allows to edit the OSM data (nodes,
+sources as well as from online sources and allows editing the OSM data (nodes,
ways, and relations) and their metadata tags.")
(license license:gpl2+)))
+
+(define-public libmaxminddb
+ (package
+ (name "libmaxminddb")
+ (version "1.4.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/maxmind/libmaxminddb"
+ "/releases/download/" version "/"
+ "/libmaxminddb-" version ".tar.gz"))
+ (sha256
+ (base32 "0mnimbaxnnarlw7g1rh8lpxsyf7xnmzwcczcc3lxw8xyf6ljln6x"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'set-cc-to-gcc
+ (lambda _
+ (setenv "CC" "gcc"))))))
+ (native-inputs
+ `(("perl" ,perl)))
+ (home-page "https://maxmind.github.io/libmaxminddb/")
+ (synopsis "C library for the MaxMind DB file format")
+ (description "The libmaxminddb library provides a C library for reading
+MaxMind DB files, including the GeoIP2 databases from MaxMind. The MaxMind DB
+format is a custom, but open, binary format designed to facilitate fast
+lookups of IP addresses while allowing flexibility in the type of data
+associated with an address.")
+ (license license:asl2.0)))
+
+(define-public python-maxminddb
+ (package
+ (name "python-maxminddb")
+ (version "1.5.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "maxminddb" version))
+ (sha256
+ (base32
+ "0y9giw81k4wdmpryr4k42w50z292mf364a6vs1vxf83ksc9ig6j4"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f)) ;; Tests require a copy of the maxmind database
+ (inputs
+ `(("libmaxminddb" ,libmaxminddb)))
+ (home-page "https://www.maxmind.com/")
+ (synopsis "Reader for the MaxMind DB format")
+ (description "MaxMind DB is a binary file format that stores data indexed
+by IP address subnets (IPv4 or IPv6). This is a Python module for reading
+MaxMind DB files.")
+ (license license:asl2.0)))
+
+(define-public python-geoip2
+ (package
+ (name "python-geoip2")
+ (version "2.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "geoip2" version))
+ (sha256
+ (base32
+ "1w7cay5q6zawjzivqbwz5cqx1qbdjw6kbriccb7l46p7b39fkzzp"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f)) ;; Tests require a copy of the maxmind database
+ (inputs
+ `(("python-maxminddb" ,python-maxminddb)
+ ("python-requests" ,python-requests)))
+ (home-page "https://www.maxmind.com/")
+ (synopsis "MaxMind GeoIP2 API")
+ (description "Provides an API for the GeoIP2 web services and databases.
+The API also works with MaxMind’s free GeoLite2 databases.")
+ (license license:asl2.0)))
+
+(define-public routino
+ (package
+ (name "routino")
+ (version "3.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.routino.org/download/routino-"
+ version ".tgz"))
+ (sha256
+ (base32
+ "1ccx3s99j8syxc1gqkzsaqkmyf44l7h3adildnc5iq2md7bp8wab"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("perl" ,perl)))
+ (inputs
+ `(("bzip2" ,bzip2)
+ ("xz" ,xz)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:test-target "test"
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "Makefile.conf"
+ (("prefix=/usr/local")
+ (string-append "prefix=" (assoc-ref outputs "out")))
+ (("LDFLAGS_LDSO=-Wl,-R\\.")
+ "LDFLAGS_LDSO=-Wl,-R$(libdir)")
+ (("#CFLAGS\\+=-DUSE_XZ")
+ "CFLAGS+=-DUSE_XZ")
+ (("#LDFLAGS\\+=-llzma")
+ "LDFLAGS+=-llzma"))
+ #t)))))
+ (synopsis "Routing application for OpenStreetMap data")
+ (description
+ "Routino is an application for finding a route between two points
+using the dataset of topographical information collected by
+@url{https://www.OpenStreetMap.org}.")
+ (home-page "https://www.routino.org/")
+ (license license:agpl3+)))
+
+(define-public qmapshack
+ (package
+ (name "qmapshack")
+ (version "1.14.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Maproom/qmapshack.git")
+ (commit (string-append "V_" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07c2hrq9sn456w7l3gdr599rmjfv2k6mh159zza7p1py8r7ywksa"))))
+ (build-system qt-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("qttools" ,qttools)))
+ (inputs
+ `(("gdal" ,gdal)
+ ("libjpeg-turbo" ,libjpeg-turbo)
+ ("proj" ,proj)
+ ("qtbase" ,qtbase)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtlocation" ,qtlocation)
+ ("qtwebchannel" ,qtwebchannel)
+ ("qtwebengine" ,qtwebengine)
+ ("quazip" ,quazip)
+ ("routino" ,routino)
+ ("sqlite" ,sqlite) ; See wrap phase
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-cmake-modules
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "CMakeLists.txt"
+ (("find_package\\(Qt5PrintSupport REQUIRED\\)" all)
+ (string-append all "\nfind_package(Qt5Positioning REQUIRED)")))
+ (substitute* "cmake/Modules/FindROUTINO.cmake"
+ (("/usr/local")
+ (assoc-ref inputs "routino")))
+ ;; The following fixes are included as patches in the sources
+ ;; of QMapShack, but they are not applied by default, for
+ ;; some reason...
+ (invoke "patch" "-p1" "-i" "FindPROJ4.patch")
+ (invoke "patch" "-p1" "-i" "FindQuaZip5.patch")
+ #t))
+ (add-after 'install 'wrap
+ ;; The program fails to find the QtWebEngineProcess program,
+ ;; so we set QTWEBENGINEPROCESS_PATH to help it.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
+ (qtwebengineprocess (string-append
+ (assoc-ref inputs "qtwebengine")
+ "/lib/qt5/libexec/QtWebEngineProcess")))
+ (for-each (lambda (program)
+ (wrap-program program
+ `("QTWEBENGINEPROCESS_PATH" =
+ (,qtwebengineprocess))))
+ (find-files bin ".*")))
+ #t)))))
+ (synopsis "GPS mapping application")
+ (description
+ "QMapShack can be used to plan your next outdoor trip or to visualize and
+archive all the GPS recordings of your past trips. It is the successor of the
+QLandkarte GT application.")
+ (home-page "https://github.com/Maproom/qmapshack/wiki")
+ (license license:gpl3+)))
+
+(define-public readosm
+ (package
+ (name "readosm")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.gaia-gis.it/gaia-sins/"
+ "readosm-" version ".tar.gz"))
+ (sha256
+ (base32 "1v20pnda67imjd70fn0zw30aar525xicy3d3v49md5cvqklws265"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("expat" ,expat)
+ ("zlib" ,zlib)))
+ (synopsis "Data extractor for OpenStreetMap files")
+ (description
+ "ReadOSM is a library to extract valid data from within an OpenStreetMap
+input file (in @code{.osm} or @code{.osm.pbf} format).")
+ (home-page "https://www.gaia-gis.it/fossil/readosm/index")
+ (license (list license:gpl2+
+ license:lgpl2.1+
+ license:mpl1.1))))
+
+(define-public spatialite-tools
+ (package
+ (name "spatialite-tools")
+ (version "4.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.gaia-gis.it/gaia-sins/"
+ "spatialite-tools-" version ".tar.gz"))
+ (sha256
+ (base32 "12fggjhi8cgwvw8f6nk76f83b8lqkc07abxyj5ap6f2gq2dqafgp"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("expat" ,expat)
+ ("freexl" ,freexl)
+ ("geos" ,geos)
+ ("libspatialite" ,libspatialite)
+ ("libxml2" ,libxml2)
+ ("proj.4" ,proj.4)
+ ("readosm" ,readosm)
+ ("sqlite" ,sqlite)
+ ("zlib" ,zlib)))
+ (synopsis "Collection of command line tools for SpatiaLite")
+ (description
+ "@code{spatialite-tools} is a collection of Command Line Interface (CLI)
+tools supporting SpatiaLite.")
+ (home-page "https://www.gaia-gis.it/fossil/spatialite-tools/index")
+ (license license:gpl3+)))
+
+(define-public virtualpg
+ (package
+ (name "virtualpg")
+ (version "1.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.gaia-gis.it/gaia-sins/"
+ "virtualpg-" version ".tar.gz"))
+ (sha256
+ (base32 "0kjipcd08vvn188xmwbs7sw41xcs06x47n2hbqshpjcr51mxbarp"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("postgresql" ,postgresql)
+ ("sqlite" ,sqlite)))
+ (synopsis "Allow SQLite/SpatiaLite to access PostgreSQL/PostGIS tables")
+ (description
+ "VirtualPG is a dynamic extension for the SQLite DBMS. It implements
+the VirtualPostgres driver, allowing to directly exchange data between SQLite
+and PostgreSQL; if SpatiaLite is available even PostGIS geometries can be
+exchanged form one Spatial DBMS and the other.")
+ (home-page "https://www.gaia-gis.it/fossil/virtualpg/index")
+ (license (list license:gpl2+
+ license:lgpl2.1+
+ license:mpl1.1))))
+
+(define-public opencpn
+ (package
+ (name "opencpn")
+ (version "5.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/OpenCPN/OpenCPN.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1xv3h6svw9aay5ixpql231md3pf00qxvhg62z88daraf18hlkfja"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("gettext" ,gettext-minimal)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("bzip2" ,bzip2)
+ ("cairo" ,cairo)
+ ("curl" ,curl)
+ ("glu" ,glu)
+ ("gtk+" ,gtk+)
+ ("libarchive" ,libarchive)
+ ("libelf" ,libelf)
+ ("libexif" ,libexif)
+ ("libsndfile" ,libsndfile)
+ ("lz4" ,lz4)
+ ("mesa" ,mesa)
+ ("pango" ,pango)
+ ("portaudio" ,portaudio)
+ ("sqlite" ,sqlite)
+ ("tinyxml" ,tinyxml)
+ ("wxsvg" ,wxsvg)
+ ("wxwidgets" ,wxwidgets)
+ ("xz" ,xz)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:configure-flags '("-DENABLE_PORTAUDIO=ON"
+ "-DENABLE_SNDFILE=ON"
+ "-DBUNDLE_TCDATA=ON"
+ "-DBUNDLE_GSHHS=CRUDE")
+ #:tests? #f ; No tests defined
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-build
+ (lambda _
+ (substitute* "CMakeLists.txt"
+ (("set\\(wxWidgets_CONFIG_OPTIONS.*--toolkit=gtk3" all)
+ (string-append all " --libs all")))
+ #t)))))
+ (synopsis "Chart plotter and marine GPS navigation software")
+ (description
+ "OpenCPN is a chart plotter and marine navigation software designed to be
+used at the helm station of your boat while underway. Chart a course and
+track your position right from your laptop.")
+ (home-page "https://opencpn.org/")
+ (license (list license:asl2.0
+ license:cc0
+ license:bsd-2
+ license:bsd-3
+ license:expat
+ license:gpl3+
+ license:lgpl2.1+
+ license:lgpl3+
+ license:sgifreeb2.0
+ license:zlib))))
+
+(define-public grass
+ (let* ((version "7.8.2")
+ (majorminor (string-join (list-head (string-split version #\.) 2) ""))
+ (grassxx (string-append "grass" majorminor)))
+ (package
+ (name "grass")
+ (version version)
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://grass.osgeo.org/" grassxx
+ "/source/grass-" version ".tar.gz"))
+ (sha256
+ (base32 "1fwsm99kz0bxvjk7442qq1h45ikrmhba8bqclafb61gqg1q6ymrk"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("bzip2", bzip2)
+ ("cairo" ,cairo)
+ ("fftw" ,fftw)
+ ("freetype" ,freetype)
+ ("gdal" ,gdal)
+ ("geos" ,geos)
+ ("glu" ,glu)
+ ("lapack" ,lapack)
+ ("libpng" ,libpng)
+ ("libtiff" ,libtiff)
+ ("mesa" ,mesa)
+ ("mariadb-dev" ,mariadb "dev")
+ ("mariadb-lib" ,mariadb "lib")
+ ("netcdf" ,netcdf)
+ ("openblas" ,openblas)
+ ("perl" ,perl)
+ ("postgresql" ,postgresql)
+ ("proj.4" ,proj.4)
+ ("python" ,python)
+ ("python-dateutil" ,python-dateutil)
+ ("python-numpy" ,python-numpy)
+ ("python-wxpython" ,python-wxpython)
+ ("readline" ,readline)
+ ("sqlite" ,sqlite)
+ ("wxwidgets" ,wxwidgets)
+ ("zlib" ,zlib)
+ ("zstd" ,zstd "lib")))
+ (native-inputs
+ `(("bash" ,bash-minimal)
+ ("bison" ,bison)
+ ("flex" ,flex)
+ ("pkg-config" ,pkg-config)))
+ (arguments
+ `(#:tests? #f ; No tests
+ #:modules ((guix build gnu-build-system)
+ ((guix build python-build-system) #:prefix python:)
+ (guix build utils))
+ #:imported-modules (,@%gnu-build-system-modules
+ (guix build python-build-system))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((shell (string-append (assoc-ref inputs "bash")
+ "/bin/bash")))
+ (setenv "SHELL" shell)
+ (setenv "CONFIG_SHELL" shell)
+ (setenv "LDFLAGS" (string-append "-Wl,-rpath -Wl,"
+ (assoc-ref outputs "out")
+ "/" ,grassxx "/lib")))
+ (invoke "./configure"
+ (string-append "--prefix="
+ (assoc-ref outputs "out"))
+ "--with-blas"
+ "--with-bzlib"
+ (string-append "--with-freetype-includes="
+ (assoc-ref inputs "freetype")
+ "/include/freetype2")
+ (string-append "--with-freetype-libs="
+ (assoc-ref inputs "freetype")
+ "/lib")
+ "--with-geos"
+ "--with-lapack"
+ "--with-mysql"
+ (string-append "--with-mysql-includes="
+ (assoc-ref inputs "mariadb-dev")
+ "/include/mysql")
+ (string-append "--with-mysql-libs="
+ (assoc-ref inputs "mariadb-lib")
+ "/lib")
+ "--with-netcdf"
+ "--with-postgres"
+ (string-append "--with-proj-share="
+ (assoc-ref inputs "proj.4")
+ "/share/proj")
+ "--with-pthread"
+ "--with-readline"
+ "--with-sqlite"
+ "--with-wxwidgets")))
+ (add-after 'install 'install-links
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Put links for includes and libraries in the standard places.
+ (let* ((out (assoc-ref outputs "out"))
+ (dir (string-append out "/" ,grassxx)))
+ (symlink (string-append dir "/include")
+ (string-append out "/include"))
+ (symlink (string-append dir "/lib")
+ (string-append out "/lib")))
+ #t))
+ (add-after 'install-links 'wrap-python
+ (assoc-ref python:%standard-phases 'wrap)))))
+ (synopsis "GRASS Geographic Information System")
+ (description
+ "GRASS (Geographic Resources Analysis Support System), is a Geographic
+Information System (GIS) software suite used for geospatial data management and
+analysis, image processing, graphics and maps production, spatial modeling, and
+visualization.")
+ (home-page "https://grass.osgeo.org/")
+ (license license:gpl2+))))
+
+(define-public saga
+ (package
+ (name "saga")
+ (version "7.6.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/saga-gis/SAGA%20-%20"
+ (version-major version) "/SAGA%20-%20" version
+ "/saga-" version ".tar.gz"))
+ (sha256
+ (base32 "09j5magmayq2y620kqa490mfd1kpdp3lng2ifcgbrmssc079ybm0"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("swig" ,swig)))
+ (inputs
+ `(("curl" ,curl)
+ ("fftw" ,fftw)
+ ("gdal" ,gdal)
+ ("hdf5" ,hdf5)
+ ("jasper" ,jasper)
+ ("libharu" ,libharu)
+ ("libtiff" ,libtiff)
+ ("opencv" ,opencv)
+ ("postgresql" ,postgresql)
+ ("proj.4" ,proj.4)
+ ("python" ,python)
+ ("qhull" ,qhull)
+ ("unixodbc" ,unixodbc)
+ ("vigra" ,vigra)
+ ("wxwidgets" ,wxwidgets)))
+ (arguments
+ '(#:configure-flags '("--enable-python")))
+ (synopsis "System for Automated Geoscientific Analyses")
+ (description
+ "SAGA (System for Automated Geoscientific Analyses) is a Geographic
+Information System (GIS) software. It has been designed for an easy and
+effective implementation of spatial algorithms and it offers a comprehensive,
+growing set of geoscientific methods.")
+ (home-page "http://www.saga-gis.org")
+ (license (list license:gpl2+ license:lgpl2.1+))))
+
+(define-public qgis
+ (package
+ (name "qgis")
+ (version "3.12.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://qgis.org/downloads/qgis-"
+ version ".tar.bz2"))
+ (sha256
+ (base32 "1a41525y8ac44gzcfaffjx0lyrm49hgnr83jrq40r5mqd3vpmp57"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:modules ((guix build cmake-build-system)
+ ((guix build python-build-system) #:prefix python:)
+ (guix build qt-utils)
+ (guix build utils))
+ #:imported-modules (,@%cmake-build-system-modules
+ (guix build python-build-system)
+ (guix build qt-utils))
+ #:phases
+ (modify-phases %standard-phases
+ ;; Configure correct path to PyQt5 SIP directory
+ (add-after 'unpack 'configure-pyqt5-sip-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "cmake/FindPyQt5.cmake"
+ (("\"\\\\\\\\1\" PYQT5_SIP_DIR")
+ (string-append "\"" (assoc-ref inputs "python-pyqt+qscintilla")
+ "/share/sip\" PYQT5_SIP_DIR")))
+ (substitute* (list "scripts/prepare-commit.sh"
+ "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_uptodate.sh"
+ "tests/code_layout/test_sipify.sh")
+ (("\\$\\(git rev-parse --show-toplevel\\)")
+ (getcwd)))
+ (substitute* "tests/code_layout/test_sip_include.sh"
+ (("^REV=.*") "REV=currentrev\n"))
+ #t))
+ (replace 'check
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "HOME" "/tmp")
+ (system (string-append (assoc-ref inputs "xorg-server")
+ "/bin/Xvfb :1 &"))
+ (setenv "DISPLAY" ":1")
+ (setenv "TRAVIS" "true")
+ (setenv "CTEST_OUTPUT_ON_FAILURE" "1")
+ (invoke "ctest"
+ "-E" (string-join
+ '(;; Disable tests that require network access
+ "qgis_filedownloader"
+ ;; TODO: Find why the following tests fail
+ "ProcessingQgisAlgorithmsTestPt1"
+ "ProcessingQgisAlgorithmsTestPt2"
+ "ProcessingQgisAlgorithmsTestPt3"
+ "ProcessingQgisAlgorithmsTestPt4"
+ "ProcessingGdalAlgorithmsRasterTest"
+ "ProcessingGdalAlgorithmsVectorTest"
+ "ProcessingGrass7AlgorithmsImageryTest"
+ "ProcessingGrass7AlgorithmsRasterTest"
+ "ProcessingGrass7AlgorithmsVectorTest"
+ "ProcessingOtbAlgorithmsTest"
+ "qgis_authmanagertest"
+ "qgis_compositionconvertertest"
+ "qgis_coordinatereferencesystemtest"
+ "qgis_geometrytest"
+ "qgis_layouthtmltest"
+ "qgis_layoutmaptest"
+ "qgis_layoutmapgridtest"
+ "qgis_painteffecttest"
+ "qgis_pallabelingtest"
+ "qgis_svgmarkertest"
+ "qgis_taskmanagertest"
+ "qgis_ziplayertest"
+ "qgis_processingtest"
+ "qgis_wcsprovidertest"
+ "qgis_arcgisrestutilstest"
+ "qgis_grassprovidertest7"
+ "qgis_gpsinformationwidget"
+ "PyCoreAdittions"
+ "PyQgsPythonProvider"
+ "PyQgsAnnotation"
+ "PyQgsAuthenticationSystem"
+ "PyQgsProject"
+ "PyQgsFileUtils"
+ "PyQgsGeometryTest"
+ "PyQgsImageCache"
+ "PyQgsLayerMetadata"
+ "PyQgsLayout"
+ "PyQgsLayoutHtml"
+ "PyQgsLayoutMapGrid"
+ "PyQgsMetadataBase"
+ "PyQgsLayoutExporter"
+ "PyQgsLayoutLegend"
+ "PyQgsMapLayer"
+ "PyQgsOGRProviderGpkg"
+ "PyQgsPalLabelingLayout"
+ "PyQgsImportIntoPostGIS"
+ "PyQgsProviderConnectionPostgres"
+ "PyQgsProviderConnectionGpkg"
+ "PyQgsShapefileProvider"
+ "PyQgsSvgCache"
+ "PyQgsTextRenderer"
+ "PyQgsOGRProvider"
+ "PyQgsSpatialiteProvider"
+ "PyQgsVectorFileWriter"
+ "PyQgsVectorLayer"
+ "PyQgsVectorLayerUtils"
+ "PyQgsVirtualLayerProvider"
+ "PyQgsWFSProvider"
+ "PyQgsOapifProvider"
+ "PyQgsLayerDependencies"
+ "PyQgsDBManagerGpkg"
+ "PyQgsDBManagerSpatialite"
+ "PyQgsSettings"
+ "PyQgsAuxiliaryStorage"
+ "PyQgsSelectiveMasking"
+ "PyQgsAppStartup"
+ "qgis_geometrycheckstest"
+ "qgis_shellcheck"
+ "qgis_sipify"
+ "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 #:allow-other-keys)
+ (wrap-qt-program (assoc-ref outputs "out") "qgis")
+ #t))
+ (add-after 'wrap-qt 'wrap-gis
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (saga (string-append (assoc-ref inputs "saga") "/bin"))
+ (grass-version ,(package-version grass))
+ (grass-majorminor (string-join
+ (list-head
+ (string-split grass-version #\.) 2)
+ ""))
+ (grass (string-append (assoc-ref inputs "grass")
+ "/grass" grass-majorminor)))
+ (wrap-program (string-append out "/bin/qgis")
+ `("PATH" ":" prefix (,saga))
+ `("QGIS_PREFIX_PATH" = (,out))
+ `("GISBASE" = (,grass))))
+ #t)))))
+ (inputs
+ `(("exiv2" ,exiv2)
+ ("expat" ,expat)
+ ("gdal" ,gdal)
+ ("geos" ,geos)
+ ("gpsbabel" ,gpsbabel)
+ ("grass" ,grass)
+ ("gsl" ,gsl)
+ ("hdf5" ,hdf5)
+ ("libspatialindex" ,libspatialindex)
+ ("libspatialite" ,libspatialite)
+ ("libxml2" ,libxml2)
+ ("libzip" ,libzip)
+ ("netcdf" ,netcdf)
+ ("postgresql" ,postgresql)
+ ("proj" ,proj)
+ ("python" ,python)
+ ("python-chardet" ,python-chardet)
+ ("python-dateutil" ,python-dateutil)
+ ("python-gdal" ,python-gdal)
+ ("python-jinja2" ,python-jinja2)
+ ("python-numpy" ,python-numpy)
+ ("python-owslib" ,python-owslib)
+ ("python-psycopg2" ,python-psycopg2)
+ ("python-pygments" ,python-pygments)
+ ("python-pyqt+qscintilla" ,python-pyqt+qscintilla)
+ ("python-pytz" ,python-pytz)
+ ("python-pyyaml" ,python-pyyaml)
+ ("python-requests" ,python-requests)
+ ("python-sip" ,python-sip)
+ ("python-six" ,python-six)
+ ("python-urllib3" ,python-urllib3)
+ ("qca" ,qca)
+ ("qscintilla" ,qscintilla)
+ ("qtbase" ,qtbase)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtkeychain" ,qtkeychain)
+ ("qtlocation" ,qtlocation)
+ ("qtserialport" ,qtserialport)
+ ("qtsvg" ,qtsvg)
+ ("qtwebkit" ,qtwebkit)
+ ("qwt" ,qwt)
+ ("saga" ,saga)
+ ("sqlite" ,sqlite)))
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)
+ ("perl" ,perl)
+ ("perl-yaml-tiny" ,perl-yaml-tiny)
+ ("pkg-config" ,pkg-config)
+ ("python-mock" ,python-mock)
+ ("python-nose2" ,python-nose2)
+ ("qttools" ,qttools)
+ ("shellcheck" ,shellcheck)
+ ("xorg-server" ,xorg-server-for-tests)))
+ (home-page "https://qgis.org")
+ (synopsis "Geographical information system")
+ (description "QGIS is an easy to use Geographical Information
+System (GIS). It is a GIS data viewer and editor. QGIS supports a number of
+raster and vector data formats, with new support easily added using the plugin
+architecture.")
+ (license
+ (list
+ license:asl1.1
+ license:asl2.0
+ license:bsd-2
+ license:bsd-3
+ license:boost1.0
+ license:cc-by3.0
+ license:cc-by4.0
+ license:cc-by-sa3.0
+ license:cc-by-sa4.0
+ (license:fsdg-compatible "https://www.deviantart.com/elvensword")
+ (license:fsf-free "file://debian/copyright" "Go Squared")
+ license:expat
+ license:fdl1.2+
+ (license:fsf-free
+ "https://www.deviantart.com/webgoddess/art/Reddish-Inspired-Gradients-42208824")
+ (license:fsf-free
+ "file://debian/copyright"
+ "QT-Commercial or LGPL-2.1 with Digia Qt LGPL Exception 1.1 or GPL-3")
+ license:gpl2
+ license:gpl2+
+ license:gpl3
+ license:gpl3+
+ license:isc
+ license:lgpl2.0+
+ license:lgpl2.1
+ license:lgpl2.1+
+ license:lgpl3
+ (license:non-copyleft "file://debian/copyright" "BSD-like-gist")
+ (license:non-copyleft "file://debian/copyright" "Jim Mossman Attribution")
+ (license:non-copyleft
+ "https://www.ncl.ucar.edu/Download/NCL_source_license.shtml"
+ "NCL Source Code License")
+ license:ogl-psi1.0
+ license:opl1.0+
+ license:public-domain
+ license:qwt1.0))))