gnu: r-maldiquant: Move to (gnu packages cran).
[jackhill/guix/guix.git] / gnu / packages / gps.scm
index cd639a4..92ba884 100644 (file)
@@ -1,8 +1,11 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system scons)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
   #:use-module (gnu packages)
+  #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
-  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages databases)
   #:use-module (gnu packages docbook)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages xml)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
-  #:use-module (gnu packages qt))
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages libusb)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages xml))
 
 (define-public gpsbabel
   (package
     ;; TODO: "make doc" requires Docbook & co.
     (arguments
      `(#:configure-flags
-       '("--with-zlib=system"
-         ;; XXX Use -fPIC to work around build problems with Qt, GCC 5, and
-         ;; recent binutils:
-         ;; https://codereview.qt-project.org/#/c/111787/
-         "CXXFLAGS=-std=gnu++11 -fPIC")
+       '("--with-zlib=system")
        ;; On i686, 'raymarine.test' fails because of a rounding error:
        ;; <http://hydra.gnu.org/build/133040>.  As a workaround, disable tests
        ;; on these platforms.
     (inputs
      `(("expat" ,expat)
        ("zlib" ,zlib)
-       ("qtbase" ,qtbase)
-       ("qttools" ,qttools)))
+       ("qtbase" ,qtbase)))
     (native-inputs
      `(("which" ,which)
+       ("qttools" ,qttools)
        ("libxml2" ,libxml2)))              ;'xmllint' needed for the KML tests
     (home-page "https://www.gpsbabel.org/")
     (synopsis "Convert and exchange data with GPS and map programs")
@@ -97,57 +105,53 @@ manipulate maps.")
                    license:gpl2+))))    ; everything else
 
 (define-public gpscorrelate
-  ;; This program is "lightly maintained", so to speak, so we end up taking it
-  ;; directly from its Git repo.
-  (let ((commit "365f6e1b3f"))
-    (package
-      (name "gpscorrelate")
-      (version (string-append "1.6.1." commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/freefoote/gpscorrelate")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "006a6l8p38a4h7y2959sqrmjjn29d8pd50zj9nypcp5ph18nybjb"))))
-      (build-system gnu-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (replace 'configure
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               ;; This is a rudimentary build system.
-               (substitute* "Makefile"
-                 (("prefix[[:blank:]]*=.*$")
-                  (string-append "prefix = " (assoc-ref outputs "out")
-                                 "\n")))
-               #t)))
-         #:tests? #f))
-      (inputs
-       `(("gtk+" ,gtk+-2)
-         ("libxml2" ,libxml2)
-         ("exiv2" ,exiv2)))
-      (native-inputs
-       `(("pkg-config" ,pkg-config)
-         ("docbook-xml" ,docbook-xml)
-         ("docbook-xsl" ,docbook-xsl)
-         ("libxslt" ,libxslt)))
-      (home-page "http://freefoote.dview.net/linux/gpscorrelate")
-      (synopsis "GPS photo correlation tool to geo-localize images")
-      (description
-       "GPS Correlate is a program to match a recorded GPS track with the EXIF
+  (package
+    (name "gpscorrelate")
+    (version "2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dfandrich/gpscorrelate")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1kvybhfnygz79q3pgwc1q2x4ccmnsfscx2hzxnmzjbnc6arnqari"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             ;; This is a rudimentary build system.
+             (substitute* "Makefile"
+               (("prefix[[:blank:]]*=.*$")
+                (string-append "prefix = " (assoc-ref outputs "out")
+                               "\n")))
+             #t)))))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("libxml2" ,libxml2)
+       ("exiv2" ,exiv2)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("docbook-xml" ,docbook-xml)
+       ("docbook-xsl" ,docbook-xsl)
+       ("libxslt" ,libxslt)))
+    (home-page "https://dfandrich.github.io/gpscorrelate/")
+    (synopsis "GPS photo correlation tool to geo-localize images")
+    (description
+     "GPS Correlate is a program to match a recorded GPS track with the EXIF
 tags in digital camera photos, and update the EXIF tags with the location that
 the photo was taken.  It does this by using the timestamp in the photo and
 finding a data point in the GPS track that matches, or interpolating a point
 between two other data points.")
-      (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public gama
   (package
     (name "gama")
-    (version "2.00")
+    (version "2.09")
     (source
       (origin
         (method url-fetch)
@@ -155,7 +159,7 @@ between two other data points.")
                             version ".tar.gz"))
         (sha256
          (base32
-          "1p51jlzr6qqqvzx0sq8j7fxqfij62c3pjcsb53vgx0jx0qdqyjba"))))
+          "0c1b28frl6109arj09v4zr1xs859krn8871mkvis517g5pb55dc9"))))
     (build-system gnu-build-system)
     (arguments '(#:parallel-tests? #f)) ; race condition
     (native-inputs
@@ -175,16 +179,16 @@ coordinates as well as partial support for adjustments in global coordinate syst
 (define-public gpxsee
   (package
     (name "gpxsee")
-    (version "4.19")
+    (version "7.30")
     (source (origin
-              (method url-fetch)
-              (uri
-               (string-append "https://github.com/tumic0/GPXSee/archive/"
-                              version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tumic0/GPXSee")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "00j0gjldw1kn3i45dppld1pz8r4s1g7lw89k7gfvvqbjjyjih1wg"))))
+                "09gajwqc30r9a2sn972qdx3gx0gki9n0zafq986hn6zsr3z43mfs"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -195,27 +199,93 @@ coordinates as well as partial support for adjustments in global coordinate syst
              (for-each (lambda (file)
                          (invoke "lrelease" file))
                        (find-files "lang" "\\.ts"))
-             (substitute* "src/config.h"
-               (("/usr/share/gpxsee")
-                (string-append
-                 (assoc-ref outputs "out") "/share/gpxsee")))
              (invoke "qmake"
                      (string-append "PREFIX="
-                                    (assoc-ref outputs "out")))))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (share (string-append out "/share/gpxsee/")))
-               (install-file "GPXSee" (string-append out "/bin/GPXSee"))
-               (install-file "pkg/maps.txt" share))
-             #t)))))
+                                    (assoc-ref outputs "out"))))))))
     (inputs
      `(("qtbase" ,qtbase)))
     (native-inputs
      `(("qttools" ,qttools)))
-    (home-page "http://www.gpxsee.org")
-    (synopsis "GPX file viewer and analyzer")
+    (home-page "https://www.gpxsee.org")
+    (synopsis "GPS log file viewer and analyzer")
     (description
-     "GPXSee is a Qt-based GPS log file viewer and analyzer that supports GPX,
-TCX, KML, FIT, IGC and NMEA files.")
+     "GPXSee is a Qt-based GPS log file viewer and analyzer that supports all
+common GPS log file formats.  It can display multiple tracks on various on-
+and off-line maps.  You can easily add more maps and graph other captured data
+such as elevation, speed, heart rate, power, temperature, and gear shifts.")
     (license license:gpl3)))
+
+(define-public gpsd
+  (package
+    (name "gpsd")
+    (version "3.21")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download-mirror.savannah.gnu.org"
+                           "/releases/gpsd/gpsd-" version ".tar.gz"))
+       (sha256
+        (base32 "14gyqrbrq6jz4y6x59rdpv9d4c3pbn0vh1blq3iwrc6kz0x4ql35"))))
+    (build-system scons-build-system)
+    (native-inputs
+     `(("bc" ,bc)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("bluez" ,bluez)
+       ("dbus" ,dbus)
+       ("gtk+" ,gtk+)
+       ("libcap" ,libcap)
+       ("libusb" ,libusb)
+       ("ncurses" ,ncurses)
+       ("python" ,python)
+       ("python-pycairo" ,python-pycairo)
+       ("python-pygobject" ,python-pygobject)
+       ("python-pyserial" ,python-pyserial)
+       ("python-wrapper" ,python-wrapper)
+       ("qtbase" ,qtbase)))
+    (arguments
+     `(#:scons-flags
+       (list (string-append "prefix=" %output)
+             (let ((version ,(version-major+minor (package-version python))))
+               (string-append "python_libdir=" %output
+                              "/lib/python" version
+                              "/site-packages"))
+             "qt_versioned=5")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "SConstruct"
+               (("envs = \\{\\}")
+                "envs = os.environ"))
+             #t))
+         (add-after 'install 'wrap-python-scripts
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (pycairo (assoc-ref inputs "python-pycairo"))
+                    (pygobject (assoc-ref inputs "python-pygobject"))
+                    (pyserial (assoc-ref inputs "python-pyserial"))
+                    (sitedir (lambda (package)
+                               (string-append package
+                                              "/lib/python"
+                                              ,(version-major+minor
+                                                (package-version python))
+                                              "/site-packages")))
+                    (pythonpath (string-join (map sitedir
+                                                  (list out pycairo pygobject
+                                                        pyserial))
+                                             ":")))
+               (for-each (lambda (script)
+                           (wrap-program (string-append out "/bin/" script)
+                             `("PYTHONPATH" ":" prefix (,pythonpath))))
+                         '("gegps" "gpscat" "gpsfake" "gpsprof"
+                           "ubxtool" "xgps" "xgpsspeed" "zerk")))
+             #t)))))
+    (synopsis "GPS service daemon")
+    (description
+     "@code{gpsd} is a service daemon that monitors one or more GPSes or AIS
+receivers attached to a host computer through serial or USB ports, making all
+data on the location/course/velocity of the sensors available to be queried on
+TCP port 2947 of the host computer.")
+    (home-page "https://gpsd.gitlab.io/gpsd/")
+    (license license:bsd-2)))