gnu: Add guile-irc.
[jackhill/guix/guix.git] / gnu / packages / gps.scm
CommitLineData
83aabfbc 1;;; GNU Guix --- Functional package management for GNU
ce0614dd 2;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
0f763db4 3;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
7b6eabc7 4;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
53655964 5;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
74c65c9d 6;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
83aabfbc
LC
7;;;
8;;; This file is part of GNU Guix.
9;;;
10;;; GNU Guix is free software; you can redistribute it and/or modify it
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
15;;; GNU Guix is distributed in the hope that it will be useful, but
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23(define-module (gnu packages gps)
24 #:use-module (guix packages)
25 #:use-module (guix download)
3b239720 26 #:use-module (guix git-download)
83aabfbc 27 #:use-module (guix build-system gnu)
74c65c9d 28 #:use-module (guix build-system scons)
83aabfbc 29 #:use-module ((guix licenses) #:prefix license:)
924b96db 30 #:use-module (gnu packages)
ce0614dd 31 #:use-module (gnu packages base)
83aabfbc 32 #:use-module (gnu packages compression)
3b239720 33 #:use-module (gnu packages docbook)
74c65c9d 34 #:use-module (gnu packages glib)
3b239720 35 #:use-module (gnu packages gtk)
74c65c9d
GLV
36 #:use-module (gnu packages image)
37 #:use-module (gnu packages libusb)
38 #:use-module (gnu packages linux)
39 #:use-module (gnu packages ncurses)
40 #:use-module (gnu packages pkg-config)
41 #:use-module (gnu packages python)
cd0322a3 42 #:use-module (gnu packages qt)
74c65c9d
GLV
43 #:use-module (gnu packages sqlite)
44 #:use-module (gnu packages xml))
83aabfbc
LC
45
46(define-public gpsbabel
47 (package
48 (name "gpsbabel")
924b96db 49 (version "1.5.4")
83aabfbc
LC
50 (source (origin
51 (method url-fetch)
52 ;; XXX: Downloads from gpsbabel.org are hidden behind a POST, so
53 ;; get it from elsewhere.
54 (uri (string-append
55 "mirror://debian/pool/main/g/gpsbabel/gpsbabel_"
56 version ".orig.tar.gz"))
57 (sha256
58 (base32
924b96db
MO
59 "19hykxhyl567gf8qcrl33qhv95w0g4vxw9r3h9b8d8plx9bnaf8l"))
60 (patches (search-patches
61 "gpsbabel-minizip.patch"
62 ;; XXX: Remove this patch on the next release.
63 "gpsbabel-qstring.patch"))
03392caa 64 (modules '((guix build utils)))
6d2ff645
TGR
65 (snippet
66 '(begin
67 ;; Delete files under GPL-compatible licences but never used
68 ;; on GNU systems, rather than bloating the LICENSE field.
924b96db
MO
69 (delete-file "gui/serial_mac.cc") ; Apple MIT
70 (delete-file "mingw/include/ddk/hidsdi.h") ; public domain
6d2ff645 71 #t))))
83aabfbc 72 (build-system gnu-build-system)
924b96db 73 ;; TODO: "make doc" requires Docbook & co.
83aabfbc 74 (arguments
15354d86 75 `(#:configure-flags
cfad3def 76 '("--with-zlib=system")
82350397
LC
77 ;; On i686, 'raymarine.test' fails because of a rounding error:
78 ;; <http://hydra.gnu.org/build/133040>. As a workaround, disable tests
79 ;; on these platforms.
15354d86
DC
80 ;; FIXME: On x86_64 with -std=gnu++11 tests also fail due to rounding
81 ;; error.
82 #:tests? #f))
83aabfbc
LC
83 (inputs
84 `(("expat" ,expat)
85 ("zlib" ,zlib)
e2814984
EF
86 ("qtbase" ,qtbase)
87 ("qttools" ,qttools)))
83aabfbc
LC
88 (native-inputs
89 `(("which" ,which)
90 ("libxml2" ,libxml2))) ;'xmllint' needed for the KML tests
facee794 91 (home-page "https://www.gpsbabel.org/")
83aabfbc
LC
92 (synopsis "Convert and exchange data with GPS and map programs")
93 (description
94 "GPSBabel converts waypoints, tracks, and routes between hundreds of
95popular GPS receivers and mapping programs. It contains extensive data
96manipulation abilities making it a convenient for server-side processing or as
97the back-end for other tools. It does not convert, transfer, send, or
98manipulate maps.")
6d2ff645
TGR
99 (license (list license:expat ; shapelib/*.[ch]
100 license:gpl2+)))) ; everything else
3b239720
LC
101
102(define-public gpscorrelate
103 ;; This program is "lightly maintained", so to speak, so we end up taking it
104 ;; directly from its Git repo.
105 (let ((commit "365f6e1b3f"))
106 (package
107 (name "gpscorrelate")
108 (version (string-append "1.6.1." commit))
109 (source (origin
110 (method git-fetch)
111 (uri (git-reference
2508b075 112 (url "https://github.com/dfandrich/gpscorrelate")
3b239720 113 (commit commit)))
87d868cc 114 (file-name (git-file-name name version))
3b239720
LC
115 (sha256
116 (base32
117 "006a6l8p38a4h7y2959sqrmjjn29d8pd50zj9nypcp5ph18nybjb"))))
118 (build-system gnu-build-system)
119 (arguments
dc1d3cde
KK
120 `(#:phases
121 (modify-phases %standard-phases
122 (replace 'configure
123 (lambda* (#:key inputs outputs #:allow-other-keys)
124 ;; This is a rudimentary build system.
125 (substitute* "Makefile"
126 (("prefix[[:blank:]]*=.*$")
127 (string-append "prefix = " (assoc-ref outputs "out")
128 "\n")))
129 #t)))
3b239720
LC
130 #:tests? #f))
131 (inputs
132 `(("gtk+" ,gtk+-2)
133 ("libxml2" ,libxml2)
134 ("exiv2" ,exiv2)))
135 (native-inputs
136 `(("pkg-config" ,pkg-config)
137 ("docbook-xml" ,docbook-xml)
138 ("docbook-xsl" ,docbook-xsl)
139 ("libxslt" ,libxslt)))
2508b075 140 (home-page "https://dfandrich.github.io/gpscorrelate/")
3b239720
LC
141 (synopsis "GPS photo correlation tool to geo-localize images")
142 (description
143 "GPS Correlate is a program to match a recorded GPS track with the EXIF
144tags in digital camera photos, and update the EXIF tags with the location that
145the photo was taken. It does this by using the timestamp in the photo and
146finding a data point in the GPS track that matches, or interpolating a point
147between two other data points.")
148 (license license:gpl2+))))
b200ecde
EF
149
150(define-public gama
151 (package
152 (name "gama")
6b4ed9ad 153 (version "2.07")
b200ecde
EF
154 (source
155 (origin
156 (method url-fetch)
157 (uri (string-append "mirror://gnu/gama/gama-"
158 version ".tar.gz"))
159 (sha256
160 (base32
6b4ed9ad 161 "0nmc6mkd55nryfffq5k9c09dhkbq6bfs06af8ammhbh5jzdn3s36"))))
b200ecde
EF
162 (build-system gnu-build-system)
163 (arguments '(#:parallel-tests? #f)) ; race condition
164 (native-inputs
165 `(("libxml2" ,libxml2)))
166 (inputs
167 `(("expat" ,expat)
168 ("sqlite" ,sqlite)))
169 (home-page "https://www.gnu.org/software/gama")
170 (synopsis "Adjustment of geodetic networks")
171 (description
172 "GNU Gama is a program for the adjustment of geodetic networks. It is
173useful in measurements where Global Positioning System (GPS) is not available,
174such as underground. It features the ability to adjust in local Cartesian
175coordinates as well as partial support for adjustments in global coordinate systems.")
176 (license license:gpl3+)))
53655964
MO
177
178(define-public gpxsee
179 (package
180 (name "gpxsee")
3437fe1f 181 (version "7.25")
53655964 182 (source (origin
ed8a5516
LC
183 (method git-fetch)
184 (uri (git-reference
185 (url "https://github.com/tumic0/GPXSee")
186 (commit version)))
187 (file-name (git-file-name name version))
53655964
MO
188 (sha256
189 (base32
3437fe1f 190 "0lml3hz2zxljl9j5wnh7bn9bj8k9v3wf6bk3g77x9nnarsmw0fcx"))))
53655964
MO
191 (build-system gnu-build-system)
192 (arguments
193 '(#:phases
194 (modify-phases %standard-phases
195 (replace 'configure
196 ;; Use lrelease to convert TS translation files into QM files.
197 (lambda* (#:key inputs outputs #:allow-other-keys)
198 (for-each (lambda (file)
d64b79fa 199 (invoke "lrelease" file))
53655964 200 (find-files "lang" "\\.ts"))
53655964
MO
201 (invoke "qmake"
202 (string-append "PREFIX="
286ef5d9 203 (assoc-ref outputs "out"))))))))
53655964
MO
204 (inputs
205 `(("qtbase" ,qtbase)))
206 (native-inputs
207 `(("qttools" ,qttools)))
286ef5d9
NK
208 (home-page "https://www.gpxsee.org")
209 (synopsis "GPS log file viewer and analyzer")
53655964 210 (description
cebfc269
TGR
211 "GPXSee is a Qt-based GPS log file viewer and analyzer that supports all
212common GPS log file formats. It can display multiple tracks on various on-
213and off-line maps. You can easily add more maps and graph other captured data
214such as elevation, speed, heart rate, power, temperature, and gear shifts.")
53655964 215 (license license:gpl3)))
74c65c9d
GLV
216
217(define-public gpsd
218 (package
219 (name "gpsd")
220 (version "3.19")
221 (source
222 (origin
223 (method url-fetch)
224 (uri (string-append "https://download-mirror.savannah.gnu.org"
225 "/releases/gpsd/gpsd-" version ".tar.gz"))
226 (sha256
227 (base32 "0faz2mvk82hi7ispxxih07lhpyz5dazs4gcknym9piiabga29p97"))))
228 (build-system scons-build-system)
229 (native-inputs
230 `(("pkg-config" ,pkg-config)
231 ("python" ,python)))
232 (inputs
233 `(("bluez" ,bluez)
234 ("dbus" ,dbus)
235 ("libcap" ,libcap)
236 ("libusb" ,libusb)
237 ("ncurses" ,ncurses)))
238 (arguments
239 `(#:scons-flags (list (string-append "prefix=" %output)
240 ;; TODO: Install python bindings.
241 "python=no")
242 #:phases
243 (modify-phases %standard-phases
244 (add-after 'unpack 'fix-paths
245 (lambda* (#:key inputs #:allow-other-keys)
246 (let ((python3 (string-append (assoc-ref inputs "python")
247 "/bin/python3")))
248 (substitute* '("contrib/gpsData.py"
249 "contrib/ntpshmviz"
250 "contrib/skyview2svg"
251 "contrib/webgps.py"
252 "devtools/ais.py"
253 "devtools/aivdmtable"
254 "devtools/cycle_analyzer"
255 "devtools/flocktest"
256 "devtools/identify_failing_build_options.py"
257 "devtools/regress-builder"
258 "devtools/regressdiff"
259 "devtools/sizes"
260 "devtools/striplog"
261 "devtools/tablegen.py"
262 "devtools/test_json_validity.py"
263 "devtools/uninstall_cleanup.py"
264 "gegps"
265 "gps/gps.py"
266 "gpscat"
267 "gpsfake"
268 "gpsprof"
269 "jsongen.py"
270 "leapsecond.py"
271 "maskaudit.py"
272 "test_maidenhead.py"
273 "test_misc.py"
274 "test_xgps_deps.py"
275 "ubxtool"
276 "valgrind-audit.py"
277 "xgps"
278 "xgpsspeed"
279 "zerk")
280 (("/usr/bin/python") python3)
281 (("/usr/bin/env python") python3)))
282 #t))
283 (add-after 'fix-paths 'fix-build
284 (lambda _
285 (substitute* "SConstruct"
286 (("'PATH'")
287 "'PATH','CPATH','LIBRARY_PATH'"))
288 #t)))))
289 (synopsis "GPS service daemon")
290 (description
291 "@code{gpsd} is a service daemon that monitors one or more GPSes or AIS
292receivers attached to a host computer through serial or USB ports, making all
293data on the location/course/velocity of the sensors available to be queried on
294TCP port 2947 of the host computer.")
295 (home-page "https://gpsd.gitlab.io/gpsd/")
296 (license license:bsd-2)))