gnu: Add cl-tga.
[jackhill/guix/guix.git] / gnu / packages / gps.scm
index 0709a58..5f9dcdb 100644 (file)
@@ -1,8 +1,10 @@
 ;;; 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>
 ;;;
 ;;; 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")
@@ -106,7 +113,7 @@ manipulate maps.")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
-                      (url "https://github.com/freefoote/gpscorrelate")
+                      (url "https://github.com/dfandrich/gpscorrelate")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
@@ -134,7 +141,7 @@ manipulate maps.")
          ("docbook-xml" ,docbook-xml)
          ("docbook-xsl" ,docbook-xsl)
          ("libxslt" ,libxslt)))
-      (home-page "http://freefoote.dview.net/linux/gpscorrelate")
+      (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
@@ -147,7 +154,7 @@ between two other data points.")
 (define-public gama
   (package
     (name "gama")
-    (version "2.01")
+    (version "2.09")
     (source
       (origin
         (method url-fetch)
@@ -155,7 +162,7 @@ between two other data points.")
                             version ".tar.gz"))
         (sha256
          (base32
-          "1z3n5p69qglxq15l9g13cg78kyb0l6v8mbzqgc1fqkfbdk1mis0k"))))
+          "0c1b28frl6109arj09v4zr1xs859krn8871mkvis517g5pb55dc9"))))
     (build-system gnu-build-system)
     (arguments '(#:parallel-tests? #f)) ; race condition
     (native-inputs
@@ -175,16 +182,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 +202,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.20")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://download-mirror.savannah.gnu.org"
+                           "/releases/gpsd/gpsd-" version ".tar.gz"))
+       (sha256
+        (base32 "0l2yz0yw9sil82lh2l4swkkldgmhzhv588n5lcavib4f0q2phahp"))))
+    (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)))