gpsd: update to 3.26.1.

drop unused asciidoc, tarball ships with manpages

Fixes: #55388
This commit is contained in:
Piraty 2025-06-15 23:03:40 +02:00
parent ab3698fd1f
commit 5b33580800
7 changed files with 245 additions and 26 deletions

View file

@ -95,7 +95,7 @@ libpanelw.so.6 ncurses-libs-5.8_1 ignore
libmenuw.so.6 ncurses-libs-5.8_1 ignore libmenuw.so.6 ncurses-libs-5.8_1 ignore
libobjc.so.4 libobjc-4.7.3_12 libobjc.so.4 libobjc-4.7.3_12
libgomp.so.1 libgomp-4.4.0_1 libgomp.so.1 libgomp-4.4.0_1
libgps.so.29 gpsd-3.23_1 libgps.so.31 gpsd-3.26.1_1
libmagic.so.1 libmagic-5.12_1 libmagic.so.1 libmagic-5.12_1
libbluetooth.so.3 libbluetooth-4.58_1 libbluetooth.so.3 libbluetooth-4.58_1
libwmf-0.2.so.7 libwmf-0.2.8.4_1 libwmf-0.2.so.7 libwmf-0.2.8.4_1
@ -449,7 +449,7 @@ libdex-1.so.1 libdex-0.2.0_1
libmpeg2.so.0 libmpeg2-0.5.1_1 libmpeg2.so.0 libmpeg2-0.5.1_1
libmpeg2convert.so.0 libmpeg2-0.5.1_1 libmpeg2convert.so.0 libmpeg2-0.5.1_1
libmng.so.2 libmng-2.0.2_1 libmng.so.2 libmng-2.0.2_1
libQgpsmm.so.29 gpsd-qt-3.23_1 libQgpsmm.so.31 gpsd-qt-3.26.1_1
libsysfs.so.2 libsysfs-2.1.0_1 libsysfs.so.2 libsysfs-2.1.0_1
libsensors.so.5 libsensors-3.5.0_1 libsensors.so.5 libsensors-3.5.0_1
libcap-ng.so.0 libcap-ng-0.6.2_1 libcap-ng.so.0 libcap-ng-0.6.2_1

View file

@ -0,0 +1,36 @@
From bad9973b8e73e9e2cc0af2555edc9c8a0855d203 Mon Sep 17 00:00:00 2001
From: Richard Lindsley <rich.lindsley@gmail.com>
Date: Fri, 23 May 2025 18:48:57 -0700
Subject: [PATCH] Fix the --logfile and --dumpfile options for gpsprof
The open() function requires that the "encoding" argument is a str or
None.
---
clients/gpsprof.py.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clients/gpsprof.py.in b/clients/gpsprof.py.in
index 935bb4052..0c809a985 100644
--- a/clients/gpsprof.py.in
+++ b/clients/gpsprof.py.in
@@ -1208,7 +1208,7 @@ if __name__ == '__main__':
options = parser.parse_args()
if options.logfile:
- options.logfp = open(options.logfile, "w", encoding=ascii)
+ options.logfp = open(options.logfile, "w", encoding="ascii")
else:
options.logfp = None
@@ -1255,7 +1255,7 @@ if __name__ == '__main__':
plot.postprocess()
# Save the timing data (only) for post-analysis if required.
if options.dumpfile:
- with open(options.dumpfile, "w", encoding=ascii) as fp:
+ with open(options.dumpfile, "w", encoding="ascii") as fp:
fp.write(plot.dump())
if options.logfp:
options.logfp.close()
--
2.49.0

View file

@ -0,0 +1,96 @@
From 8a01cdbf710c91d3db1d7c2c30f5c048e2331a09 Mon Sep 17 00:00:00 2001
From: James Browning <jamesb.fe80@gmail.com>
Date: Thu, 5 Jun 2025 15:42:28 -0700
Subject: [PATCH] devel/gpsdfake: fix for Python 3
Handle errors better in gpsdfake
Print empty line on ctrl + c
Print message on socket errors
---
devtools/gpsdfake | 52 +++++++++++++++++++++++++++++------------------
1 file changed, 32 insertions(+), 20 deletions(-)
diff --git a/devtools/gpsdfake b/devtools/gpsdfake
index 6a2e7ff51..a4744ba1c 100644
--- a/devtools/gpsdfake
+++ b/devtools/gpsdfake
@@ -3,26 +3,36 @@
"""
gpsdfake - a fake gpsd server that spews specified data at gpsd clients.
"""
+from __future__ import print_function
+import socket
+try:
+ import socketserver
+except:
+ import SocketServer as socketserver # until the true death of Python 2
+import sys
+import time
-import sys, SocketServer
-
-class FakeHandler(SocketServer.BaseRequestHandler):
+class FakeHandler(socketserver.BaseRequestHandler):
"Instantiated once per connection to the server."
def handle(self):
- global lines
- # self.request is the TCP socket connected to the client
- # Read the client's ?WATCH request.
- self.data = self.request.recv(1024).strip()
- # We'd like to send a fake banner to the client on startup,
- # but there's no (documented) method for that. We settle
- # for shipping on first request.
- self.request.send('{"class":"VERSION",'
- '"version":"gpsdfake","rev":"gpsdfake",'
- '"proto_major":3,"proto_minor":1}\r\n')
- # Perpetually resend the data we have specified
- while True:
- for line in lines:
- self.request.send(line)
+ try:
+ global lines
+ # self.request is the TCP socket connected to the client
+ # Read the client's ?WATCH request.
+ self.data = self.request.recv(1024).strip()
+ # We'd like to send a fake banner to the client on startup,
+ # but there's no (documented) method for that. We settle
+ # for shipping on first request.
+ self.request.send(b'{"class":"VERSION",'
+ b'"version":"gpsdfake-3","rev":"3",'
+ b'"proto_major":3,"proto_minor":1}\r\n')
+ # Perpetually resend the data we have specified
+ while True:
+ for line in lines:
+ self.request.send(line)
+ time.sleep(0.5)
+ except Exception:
+ pass
if __name__ == "__main__":
(HOST, PORT) = "localhost", 2947
@@ -32,16 +42,18 @@ if __name__ == "__main__":
sys.stderr.write("gpsdfake: requires a file argument.\n")
sys.exit(1)
- lines = open(sys.argv[1]).readlines()
+ lines = open(sys.argv[1], 'rb').readlines()
# Create the server, binding to localhost on port 2947
- server = SocketServer.TCPServer((HOST, PORT), FakeHandler)
+ server = socketserver.TCPServer((HOST, PORT), FakeHandler)
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()
except KeyboardInterrupt:
- pass
+ print()
+ except socket.error as e:
+ print(e.args[1])
sys.exit(0)
# The following sets edit modes for GNU EMACS
--
2.49.0

View file

@ -0,0 +1,72 @@
From 3185c5790c3e7e31c6cc80174940f0385cba2617 Mon Sep 17 00:00:00 2001
From: "Gary E. Miller" <gem@rellim.com>
Date: Thu, 5 Jun 2025 17:40:56 -0700
Subject: [PATCH] gpsd/gpsd.c: Fix empty gst[,] in POLL.
Fix issue 336.
---
gpsd/gpsd.c | 30 ++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/gpsd/gpsd.c b/gpsd/gpsd.c
index de32bb241..102247abf 100644
--- a/gpsd/gpsd.c
+++ b/gpsd/gpsd.c
@@ -1555,10 +1555,15 @@ static void handle_request(struct subscriber_t *sub, const char *buf,
for (devp = devices; devp < devices + MAX_DEVICES; devp++) {
if (allocated_device(devp) && subscribed(sub, devp)) {
if (0 != (devp->observed & GPS_TYPEMASK)) {
+ size_t rlen = strnlen(reply, replylen);
+
json_tpv_dump(NAVDATA_SET, devp, &sub->policy,
- reply + strnlen(reply, replylen),
- replylen - strnlen(reply, replylen));
+ reply + rlen, replylen - rlen);
rstrip(reply, replylen);
+ if (strnlen(reply, replylen) == rlen) {
+ // no data
+ continue;
+ }
(void)strlcat(reply, ",", replylen);
}
}
@@ -1568,10 +1573,15 @@ static void handle_request(struct subscriber_t *sub, const char *buf,
for (devp = devices; devp < devices + MAX_DEVICES; devp++) {
if (allocated_device(devp) && subscribed(sub, devp)) {
if (0 != (devp->observed & GPS_TYPEMASK)) {
- json_noise_dump(&devp->gpsdata,
- reply + strnlen(reply, replylen),
- replylen - strnlen(reply, replylen));
+ size_t rlen = strnlen(reply, replylen);
+
+ json_noise_dump(&devp->gpsdata, reply + rlen,
+ replylen - rlen);
rstrip(reply, replylen);
+ if (strnlen(reply, replylen) == rlen) {
+ // no data
+ continue;
+ }
(void)strlcat(reply, ",", replylen);
}
}
@@ -1581,10 +1591,14 @@ static void handle_request(struct subscriber_t *sub, const char *buf,
for (devp = devices; devp < devices + MAX_DEVICES; devp++) {
if (allocated_device(devp) && subscribed(sub, devp)) {
if (0 != (devp->observed & GPS_TYPEMASK)) {
- json_sky_dump(devp,
- reply + strnlen(reply, replylen),
- replylen - strnlen(reply, replylen));
+ size_t rlen = strnlen(reply, replylen);
+
+ json_sky_dump(devp, reply + rlen, replylen - rlen);
rstrip(reply, replylen);
+ if (strnlen(reply, replylen) == rlen) {
+ // no data
+ continue;
+ }
(void)strlcat(reply, ",", replylen);
}
}
--
2.49.0

View file

@ -0,0 +1,35 @@
From 4286d9dd7217db38c54a516dc95a06884a459e1d Mon Sep 17 00:00:00 2001
From: "Gary E. Miller" <gem@rellim.com>
Date: Wed, 25 Jun 2025 19:17:12 -0700
Subject: [PATCH] clients/cgps.c: Fix output of empty magnetic variance.
Was overrunning the window.
---
clients/cgps.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clients/cgps.c b/clients/cgps.c
index b0a043801..3bed0c698 100644
--- a/clients/cgps.c
+++ b/clients/cgps.c
@@ -1056,7 +1056,7 @@ static void update_gps_panel(struct gps_data_t *gpsdata, char *message,
gpsdata->fix.magnetic_track);
}
if (0 == isfinite(gpsdata->fix.magnetic_var)) {
- (void)strlcat(scr, " ", sizeof(scr));
+ (void)strlcpy(buf2, "n/a", sizeof(buf2));
} else {
(void)snprintf(buf2, sizeof(buf2), "%6.1f",
gpsdata->fix.magnetic_var);
@@ -1066,7 +1066,7 @@ static void update_gps_panel(struct gps_data_t *gpsdata, char *message,
(void)strlcpy(buf2, "n/a", sizeof(buf2));
}
(void)mvwprintw(datawin, row++, DATAWIN_DESC_OFFSET,
- "Track %-14s %6s,%6s deg", mag_str, buf1, buf2);
+ "Track %-14.14s %6.6s,%6.6s deg", mag_str, buf1, buf2);
// Fill in the rate of climb.
if (0 == isfinite(gpsdata->fix.climb)) {
--
2.50.0

View file

@ -1,20 +0,0 @@
Upstream supports ncursesw but doesn't properly detect it. Let's do things the
right way and allow optional clients to be built.
https://gitlab.com/gpsd/gpsd/-/merge_requests/295
diff --git a/SConscript b/SConscript
index 345ead71550069f8fe976fab3f529f56b9e59e2b..e9c22358e0834404b1f1cfbbb1a0fca3ff58b658 100644
--- a/SConscript
+++ b/SConscript
@@ -1023,6 +1023,10 @@ if not cleaning and not helping:
ncurseslibs = pkg_config('ncurses', rpath_hack=True)
if config.CheckPKG('tinfo'):
ncurseslibs += pkg_config('tinfo', rpath_hack=True)
+ elif config.CheckPKG('ncursesw'):
+ ncurseslibs = pkg_config('ncursesw', rpath_hack=True)
+ if config.CheckPKG('tinfo'):
+ ncurseslibs += pkg_config('tinfo', rpath_hack=True)
# It's not yet known whether rpath_hack is appropriate for
# ncurses5-config.
elif WhereIs('ncurses5-config'):

View file

@ -1,13 +1,13 @@
# Template file for 'gpsd' # Template file for 'gpsd'
pkgname=gpsd pkgname=gpsd
version=3.24 version=3.26.1
revision=4 revision=1
build_style=scons build_style=scons
make_build_args="dbus_export=0 gpsd_user=gpsd gpsd_group=gpsd make_build_args="dbus_export=0 gpsd_user=gpsd gpsd_group=gpsd
sbindir=/usr/bin CC=${CC} qt_versioned=5" sbindir=/usr/bin CC=${CC} qt_versioned=5"
make_install_args="$make_build_args" make_install_args="$make_build_args"
hostmakedepends="pkg-config bc python3-pyserial python3-setuptools libxslt hostmakedepends="pkg-config bc python3-pyserial python3-setuptools libxslt
xmlto asciidoc" xmlto"
makedepends="eudev-libudev-devel ntp libusb-devel ncurses-devel gtk+3-devel makedepends="eudev-libudev-devel ntp libusb-devel ncurses-devel gtk+3-devel
pps-tools-devel libcap-devel libbluetooth-devel qt5-devel" pps-tools-devel libcap-devel libbluetooth-devel qt5-devel"
short_desc="GPS/AIS receiver monitoring daemon" short_desc="GPS/AIS receiver monitoring daemon"
@ -16,7 +16,7 @@ license="BSD-3-Clause"
homepage="https://gpsd.gitlab.io/gpsd/" homepage="https://gpsd.gitlab.io/gpsd/"
changelog="https://gpsd.gitlab.io/gpsd/NEWS" changelog="https://gpsd.gitlab.io/gpsd/NEWS"
distfiles="https://download-mirror.savannah.gnu.org/releases/gpsd/gpsd-${version}.tar.xz" distfiles="https://download-mirror.savannah.gnu.org/releases/gpsd/gpsd-${version}.tar.xz"
checksum=dab45874c6da0ac604e3553b79fc228c25d6e71a32310a3467fb3bd9974e3755 checksum=45c0d4779324bd59a47cfcb7ac57180d2dbdf418603d398a079392dabf1f740c
python_version=3 # Must be same version as scons python_version=3 # Must be same version as scons
system_accounts="gpsd" system_accounts="gpsd"