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