On Mon, 17 Nov 2025, Gary E. Miller wrote:

Any updates?  You are the blocking item to release.

Sorry. Stuff on Saturday took longer than expected, and I was tied up all day yesterday.

On Fri, 14 Nov 2025 14:27:52 -0800 (PST)
Fred Wright <[email protected]> wrote:

Could you be more specific?  What "strnlen() fallback"?  Which
commit?

Commit 6cb4d38f removed the strlen() fallback (introduced in commit
e9e15e6e), as well as fixing a bug introduced by commit 27610cbc
(not mentioned in the commit message).

The commit message:

   SConstruct: REmove strnlen() test, it is POSIX 2008.

gpsd requires POSIX 2008.  What system do you have that does not have
that?  If this is the only POSIX 2008 issue, we can retore  the
strnlen() fallback.

There's now one other - commit d672ea91 added a use of stpncpy(), which has the same availability issue. BTW, the "p =" in the subsequent stpcpy() call is superfluous, though it's probably optimized out, anyway.

Those calls coud be handled on the Mac by using MacPorts legacy-support,
but that wouldn't help BSD, and would require non-MacPorts builds to
incorporate the additional dependency. Just adding the fallback seems more straightforward. The one I've added is a fairly simple version,
that doesn't try to do multi-character parallelism for speed.  This use
case isn't performance-critical, anyway.

[...]
It might only take a modest amount of work to fix the version
selection and/or the Qt5 build, but that's not appropriate right
before a release. And all the Qt stuff is a big mess in general, for
multiple reasons.  My current fix is just a minimal fix to unbreak
the Qt4 case.

Fix what you can, without taking a lot of risk.  Release can wait a
bit longer.  This is the sort of thing that often triggers a .1.


At this point, I've done all the testing I plan to do, with a handful of fixes:

The Qt detection and setup now allows Qt4, in the pecking order "6, 5, 4".

The change in gpsutils to accomodate Qt6 (actually Qt5.8+) is now appropriately conditioned on the Qt version. Although this is in gpsutils, it's within a USE_QT conditional, so it can't affect anything not Qt-related.

Some '{0}' structure initializers are changed to '{{0}}' to avoid warnings from some compilers.

Some format warnings in log messages are fixed.

The fallback for strnlen() is reinstated, and a fallback for stpncpy() is added. Although these impact core code, they only affect cases that would otherwise have failed to build altogether.

Missing stddef includes have been added to the strlcat()/strlcpy() fallbacks, for size_t. For some reason, the need for this seems to depend on the architecture.

The droproot error when (successfully) running as non-root is now just a warning, avoiding 194 error messages from the tests.

When having successfully opened a terminal line as non-root unsuccessfully attempts to unnecessarily change its permissions to allow future non-root opens, that's now just a warning instead of an error.

The bottom line is that none of these changes should have any impact on testing that others have already done.


Most of my testing has been just building and running the regression tests, but I did spot-check a few cases with a real receiver. For the most part, receiver-dependent issues tend not to depend on the OS, CPU, or compiler.

Cases I tested:

macOS:

10.5 ppc
10.5 ppc64
10.5-10.6 i386
10.5-12.x x86_64
11.x-26.x arm64

Linux:

Ubuntu 14.04 and 22.04
CentOS 7
Fedora 25

BSD:

FreeBSD 10.3.6
OpenBSD 5.6.6
NetBSD 6.1.5

Pythons:

Python 2.7
Python 3.3-3.14

Compilers:

gcc 4.2
gcc 4.9
gcc 5-14
clang 3.3
clang 3.7
clang 5-18


I'll push the changes now.

Fred Wright

Reply via email to