NetBSD Problem Report #58648
From www@netbsd.org Tue Aug 27 00:32:18 2024
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
client-signature RSA-PSS (2048 bits) client-digest SHA256)
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id 7A8131A9241
for <gnats-bugs@gnats.NetBSD.org>; Tue, 27 Aug 2024 00:32:18 +0000 (UTC)
Message-Id: <20240827003217.866CA1A9242@mollari.NetBSD.org>
Date: Tue, 27 Aug 2024 00:32:17 +0000 (UTC)
From: campbell+netbsd@mumble.net
Reply-To: campbell+netbsd@mumble.net
To: gnats-bugs@NetBSD.org
Subject: private shared libraries should go in /usr/lib/private, not /usr/lib
X-Send-Pr-Version: www-1.0
>Number: 58648
>Category: lib
>Synopsis: private shared libraries should go in /usr/lib/private, not /usr/lib
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: lib-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Aug 27 00:35:00 +0000 2024
>Last-Modified: Wed Apr 29 13:45:01 +0000 2026
>Originator: Taylor R Campbell
>Release: current, 10, 9, ...
>Organization:
The LibBSD Private Foundation
>Environment:
>Description:
NetBSD base ships with various shared libraries that are used internally by programs and daemons included in NetBSD but that really shouldn't be exposed as libraries -- this leads to unnecessary conflicts, e.g. with libsqlite3 or libssh.
Currently the only mechanism we have for hiding these is to statically link them, even if they are reused by multiple programs in base, like like libgmp.
We should be able to use shared libraries in base programs without also exposing them to pkgsrc.
>How-To-Repeat:
struggle with pkgsrc conflicts
>Fix:
1. Introduce /usr/lib/private.
2. Rule: Nothing in /usr/lib outside /usr/lib/private can link against anything in it. We can enforce this by simply not putting /usr/lib/private in any rpaths when linking libraries, and adding it only to the executables that do use /usr/lib/private.
3. Move various libraries such as libsqlite3 and libssh under /usr/lib/private.
>Audit-Trail:
From: Hauke Fath <hauke@Espresso.Rhein-Neckar.DE>
To: gnats-bugs@netbsd.org
Cc: lib-bug-people@netbsd.org, gnats-admin@NetBSD.org
Subject: Re: lib/58648: private shared libraries should go in
/usr/lib/private, not /usr/lib
Date: Tue, 27 Aug 2024 11:29:10 +0200
On Tue, 27 Aug 2024 00:35:01 +0000 (UTC), campbell+netbsd@mumble.net=20
wrote:
> 1. Introduce /usr/lib/private.
How about something like /usr/libpriv, similar to /usr/lib{data,exec}?
Cheerio,
Hau"bikeshedding"ke
--=20
Hauke Fath <hauke@Espresso.Rhein-Neckar.DE>
Linn=E9weg 7
64342 Seeheim-Jugenheim
Germany
From: Martin Husemann <martin@duskware.de>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: lib/58648: private shared libraries should go in
/usr/lib/private, not /usr/lib
Date: Tue, 27 Aug 2024 11:44:23 +0200
Can we create a full list of the affected binaries and applications using
them?
Maybe something like
/lib/private/{bind,ssh,dhcp,..}/
would make sense (but if the overall count is small it won't). And
obviously there can't be name clashes (at least with the current
state).
Martin
From: Christos Zoulas <christos@zoulas.com>
To: gnats-bugs@netbsd.org
Cc: lib-bug-people@netbsd.org,
gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org,
campbell+netbsd@mumble.net
Subject: Re: lib/58648: private shared libraries should go in
/usr/lib/private, not /usr/lib
Date: Tue, 27 Aug 2024 09:33:30 -0400
> On Aug 27, 2024, at 5:40=E2=80=AFAM, gnats-admin@netbsd.org wrote:
>=20
> The following reply was made to PR lib/58648; it has been noted by =
GNATS.
>=20
> From: Hauke Fath <hauke@Espresso.Rhein-Neckar.DE>
> To: gnats-bugs@netbsd.org
> Cc: lib-bug-people@netbsd.org, gnats-admin@NetBSD.org
> Subject: Re: lib/58648: private shared libraries should go in
> /usr/lib/private, not /usr/lib
> Date: Tue, 27 Aug 2024 11:29:10 +0200
>=20
> On Tue, 27 Aug 2024 00:35:01 +0000 (UTC), =
campbell+netbsd@mumble.net=3D20
> wrote:
>> 1. Introduce /usr/lib/private.
>=20
> How about something like /usr/libpriv, similar to /usr/lib{data,exec}?
>=20
I was even thinking /usr/private/lib /usr/private/include etc.
christos
From: matthew green <mrg@eterna23.net>
To: Christos Zoulas <christos@zoulas.com>
Cc: lib-bug-people@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, campbell+netbsd@mumble.net,
gnats-bugs@netbsd.org
Subject: re: lib/58648: private shared libraries should go in /usr/lib/private, not /usr/lib
Date: Wed, 28 Aug 2024 04:58:21 +1000
> I was even thinking /usr/private/lib /usr/private/include etc.
don't want to *install* headers. they're not for development,
not even with comp set installed.
those will remain private in the build itself, we only want this
to have a shared copy of relatively large libraries like gmp and
pals..
.mrg.
From: Christos Zoulas <christos@zoulas.com>
To: matthew green <mrg@eterna23.net>
Cc: lib-bug-people@netbsd.org,
gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org,
campbell+netbsd@mumble.net,
gnats-bugs@netbsd.org
Subject: Re: lib/58648: private shared libraries should go in
/usr/lib/private, not /usr/lib
Date: Tue, 27 Aug 2024 15:01:33 -0400
> On Aug 27, 2024, at 2:58=E2=80=AFPM, matthew green <mrg@eterna23.net> =
wrote:
>=20
>> I was even thinking /usr/private/lib /usr/private/include etc.
>=20
> don't want to *install* headers. they're not for development,
> not even with comp set installed.
>=20
> those will remain private in the build itself, we only want this
> to have a shared copy of relatively large libraries like gmp and
> pals..
>=20
But you need the headers for autoconf to find stuff and for other
internal users of the libraries. This is how we ended up with the
gdb gmp/mpfr/mpc mess copying headers (because some are
in the same dir as config.h and we can't just -I/path/to/gmpdoth).
christos=
From: Taylor R Campbell <riastradh@NetBSD.org>
To: Christos Zoulas <christos@zoulas.com>
Cc: matthew green <mrg@eterna23.net>, lib-bug-people@netbsd.org,
gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,
gnats-bugs@netbsd.org
Subject: Re: lib/58648: private shared libraries should go in
/usr/lib/private, not /usr/lib
Date: Tue, 27 Aug 2024 19:31:07 +0000
> Date: Tue, 27 Aug 2024 15:01:33 -0400
> From: Christos Zoulas <christos@zoulas.com>
>=20
> > On Aug 27, 2024, at 2:58=E2=80=AFPM, matthew green <mrg@eterna23.net> w=
rote:
> >=20
> >> I was even thinking /usr/private/lib /usr/private/include etc.
> >=20
> > don't want to *install* headers. they're not for development,
> > not even with comp set installed.
> >=20
> > those will remain private in the build itself, we only want this
> > to have a shared copy of relatively large libraries like gmp and
> > pals..
>=20
> But you need the headers for autoconf to find stuff and for other
> internal users of the libraries. This is how we ended up with the
> gdb gmp/mpfr/mpc mess copying headers (because some are
> in the same dir as config.h and we can't just -I/path/to/gmpdoth).
These must never be taken from the host system's libraries, so there
is no need to install them. They must always be taken from what we
built out of src; otherwise if you have, e.g., a too-old gmp in /usr,
you can't use build.sh to build a NetBSD with newer gmp/gdb/gcc/&c.
If `build.sh tools' even looks for a systemwide gmp.h or libgmp.so,
that's a serious bug in our build system.
The point is that absolutely nothing in an installed system should
ever look at /usr/lib/private, _except_ for executables that are
included in that system and linked against those libraries.
From: matthew green <mrg@eterna23.net>
To: Christos Zoulas <christos@zoulas.com>
Cc: lib-bug-people@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org, campbell+netbsd@mumble.net,
gnats-bugs@netbsd.org
Subject: re: lib/58648: private shared libraries should go in /usr/lib/private, not /usr/lib
Date: Wed, 28 Aug 2024 14:46:07 +1000
> But you need the headers for autoconf to find stuff and for other
> internal users of the libraries. This is how we ended up with the
> gdb gmp/mpfr/mpc mess copying headers (because some are
> in the same dir as config.h and we can't just -I/path/to/gmpdoth).
we can make that a "special mknative" feature.
don't install them for normal builds. it's only going to make
it 100% likely something will find and use them and the whole
point of this is to stop that happening.
.mrg.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src/usr.bin/crunch/crunchgen
Date: Tue, 16 Dec 2025 04:18:06 +0000
Module Name: src
Committed By: riastradh
Date: Tue Dec 16 04:18:06 UTC 2025
Modified Files:
src/usr.bin/crunch/crunchgen: crunchgen.c
Log Message:
crunchgen(1): Implement -L <lib-dir> option for real.
Pass it through via LDADD in the generated .mk output, before any -l
options.
The original logic -- which was disabled in 2001, apparently by
accident -- had a default libdir of /usr/lib. But it didn't do
anything with that string, so removing it as a default doesn't change
anything. But the linker doesn't need us to specify that path anyway
(and it would really have to be -L=/usr/lib rather than -L/usr/lib,
whereas we want -L/path/to/obj/lib/libfoo without the `=').
PR toolchain/59841: crunchgen(1) ignores -L argument
Will be needed for:
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.96 -r1.97 src/usr.bin/crunch/crunchgen/crunchgen.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src
Date: Tue, 16 Dec 2025 04:21:04 +0000
Module Name: src
Committed By: riastradh
Date: Tue Dec 16 04:21:03 UTC 2025
Modified Files:
src/distrib/sets/lists/base: mi
src/etc/mtree: NetBSD.dist.base
src/share/mk: bsd.README bsd.lib.mk bsd.prog.mk
Log Message:
Add logic for /usr/lib/private libraries.
New variables for makefiles to define:
<bsd.lib.mk> LIBSUBDIR -- If nonempty, install library into
${LIBDIR}/${LIBSUBDIR} instead of ${LIBDIR}. Typically set
either to empty or to `private'.
<bsd.lib.mk> LIBDPSUBDIRS -- List of subdirectories _subdir_ to add
-L${SHLIBDIR}/${_subdir_} -Wl,-R${SHLIBDIR}/${_subdir_} to
ldflags when linking library. Note: Should only be used inside
private libraries, not inside public libraries to link against
private libraries, which can't work -- see comment.
<bsd.prog.mk> PROGDPSUBDIRS -- List of subdirectories _subdir_ to add
-L${SHLIBDIR}/${_subdir_} -Wl,-R${SHLIBDIR}/${_subdir_} to
ldflags when linking program.
(XXX bsd.lib.mk/bsd.prog.mk should figure LIBDPSUBDIRS/PROGDPSUBDIRS
out automatically by LIBDPLIBS/PROGDPLIBS, but for now we don't have
that mechanism -- TBD in subsequent work.)
Libraries that we want to install because we use them in binaries we
ship, but that we want to keep private from applications so we don't
have to worry about ABI breakage or leakage into pkgsrc builds,
should generally set:
LIBSUBDIR= private # Install into /usr/lib/private.
NOCOMPAT= # defined # Don't build compat lib.
NOLINKLIB= # defined # Don't install .so link or .a lib.
(XXX Maybe we should have a `LIBISPRIVATE= installed' or something
for this combination of options, but for now I'm putting in the
minimal mechanism to implement this and we can condense a common
pattern later.)
Programs using the library will also have to set
PROGDPSUBDIRS+= private
so that they will get the rpath /usr/lib/private.
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.1370 -r1.1371 src/distrib/sets/lists/base/mi
cvs rdiff -u -r1.261 -r1.262 src/etc/mtree/NetBSD.dist.base
cvs rdiff -u -r1.456 -r1.457 src/share/mk/bsd.README
cvs rdiff -u -r1.422 -r1.423 src/share/mk/bsd.lib.mk
cvs rdiff -u -r1.357 -r1.358 src/share/mk/bsd.prog.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src
Date: Tue, 16 Dec 2025 04:32:05 +0000
Module Name: src
Committed By: riastradh
Date: Tue Dec 16 04:32:04 UTC 2025
Modified Files:
src/crypto/external/bsd/openssh: Makefile.inc
src/crypto/external/bsd/openssh/lib: Makefile
src/distrib/sets/lists/base: shl.mi
src/distrib/sets/lists/comp: mi shl.mi
src/distrib/sets/lists/debug: mi shl.mi
src/rescue: Makefile
src/share/mk: bsd.prog.mk
src/usr.sbin/wg-keygen: Makefile
Log Message:
openssh: Install libssh.so in /usr/lib/private.
This way it doesn't get exposed to applications accidentally, and we
don't need to worry about breaking ABI when updating openssh in base.
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/crypto/external/bsd/openssh/Makefile.inc
cvs rdiff -u -r1.44 -r1.45 src/crypto/external/bsd/openssh/lib/Makefile
cvs rdiff -u -r1.1018 -r1.1019 src/distrib/sets/lists/base/shl.mi
cvs rdiff -u -r1.2502 -r1.2503 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.361 -r1.362 src/distrib/sets/lists/comp/shl.mi
cvs rdiff -u -r1.493 -r1.494 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.379 -r1.380 src/distrib/sets/lists/debug/shl.mi
cvs rdiff -u -r1.42 -r1.43 src/rescue/Makefile
cvs rdiff -u -r1.358 -r1.359 src/share/mk/bsd.prog.mk
cvs rdiff -u -r1.1 -r1.2 src/usr.sbin/wg-keygen/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src/lib
Date: Tue, 16 Dec 2025 15:10:14 +0000
Module Name: src
Committed By: riastradh
Date: Tue Dec 16 15:10:14 UTC 2025
Modified Files:
src/lib: Makefile
Log Message:
openssh: Don't make compat libssh build.
libssh is now private, so it's not exposed for applications to link
against (with libssh.so installed only in /usr/lib/private, if at
all), so it's not useful to build as a compat library anyway.
Should fix problems like:
sparc64--netbsd-install: /home/builds/ab/HEAD/sparc64/20251216043204Z-dest/usr/libdata/debug/usr/lib/sparc/private/libssh.so.50.0.debug.inst.a4Bog4: mkstemp: No such file or directory
--- /home/builds/ab/HEAD/sparc64/20251216043204Z-dest/usr/libdata/debug/usr/lib/sparc/private/libssh.so.50.0.debug ---
*** Failed target: /home/builds/ab/HEAD/sparc64/20251216043204Z-dest/usr/libdata/debug/usr/lib/sparc/private/libssh.so.50.0.debug
*** In directory: /home/source/ab/HEAD/src/crypto/external/bsd/openssh/lib
*** Failed commands:
${_MKTARGET_INSTALL}
=> @# "install " /home/builds/ab/HEAD/sparc64/20251216043204Z-dest/usr/libdata/debug/usr/lib/sparc/private/libssh.so.50.0.debug
${INSTALL_FILE} -o ${DEBUGOWN} -g ${DEBUGGRP} -m ${DEBUGMODE} ${.ALLSRC} ${.TARGET}
=> /home/builds/ab/HEAD/sparc64/20251216043204Z-tools/bin/sparc64--netbsd-install -U -M /home/builds/ab/HEAD/sparc64/20251216043204Z-dest/METALOG -D /home/builds/ab/HEAD/sparc64/20251216043204Z-dest -h sha256 -N /home/source/ab/HEAD/src/etc -c -r -o root -g wheel -m 444 libssh.so.50.0.debug /home/builds/ab/HEAD/sparc64/20251216043204Z-dest/usr/libdata/debug/usr/lib/sparc/private/libssh.so.50.0.debug
*** [/home/builds/ab/HEAD/sparc64/20251216043204Z-dest/usr/libdata/debug/usr/lib/sparc/private/libssh.so.50.0.debug] Error code 1
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.308 -r1.309 src/lib/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src
Date: Wed, 17 Dec 2025 00:49:55 +0000
Module Name: src
Committed By: riastradh
Date: Wed Dec 17 00:49:55 UTC 2025
Modified Files:
src/crypto/external/bsd/openssh/lib: Makefile
src/distrib/sets/lists/base: mi shl.mi
src/distrib/sets/lists/debug: shl.mi
src/etc/mtree: NetBSD.dist.compat.in
src/lib: Makefile
src/lib/libpam/modules/pam_ssh: Makefile
Log Message:
openssh: Do build and install compat libssh after all.
Even though it's not exposed for applications to _link_ against, it
is used by the dynamically _loadable_ pam_ssh module, which exists as
a compat module and therefore needs libssh as a compat library to be
installed somewhere. That somewhere will be
/usr/lib/${COMPAT_ARCH}/private.
Should fix problems like:
dependall ===> compat/sparc64/sparc/../../../lib/libpam/modules/pam_ssh
nbmake[11]: don't know how to make /home/source/ab/HEAD/src/crypto/external/bsd/openssh/lib/libssh.a. Stop
Verified in an amd64 build that the compat i386 pam_ssh.so is linked
correctly:
(chroot HEAD)# ldd /usr/lib/i386/security/pam_ssh.so.4
/usr/lib/i386/security/pam_ssh.so.4:
-lssh.50 => /usr/lib/i386/private/libssh.so.50
-lcrypto.16 => /usr/lib/i386/libcrypto.so.16
-lcrypt.1 => /usr/lib/i386/libcrypt.so.1
-lgcc_s.1 => /usr/lib/i386/libgcc_s.so.1
-lc.12 => /usr/lib/i386/libc.so.12
-lz.1 => /usr/lib/i386/libz.so.1
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 src/crypto/external/bsd/openssh/lib/Makefile
cvs rdiff -u -r1.1371 -r1.1372 src/distrib/sets/lists/base/mi
cvs rdiff -u -r1.1019 -r1.1020 src/distrib/sets/lists/base/shl.mi
cvs rdiff -u -r1.380 -r1.381 src/distrib/sets/lists/debug/shl.mi
cvs rdiff -u -r1.8 -r1.9 src/etc/mtree/NetBSD.dist.compat.in
cvs rdiff -u -r1.309 -r1.310 src/lib/Makefile
cvs rdiff -u -r1.14 -r1.15 src/lib/libpam/modules/pam_ssh/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src/usr.sbin/wg-keygen
Date: Wed, 17 Dec 2025 04:43:00 +0000
Module Name: src
Committed By: riastradh
Date: Wed Dec 17 04:42:59 UTC 2025
Modified Files:
src/usr.sbin/wg-keygen: Makefile
Log Message:
wg-keygen(8): Find private libssh.so.
Should fix:
/usr/sbin/wg-keygen: Shared object "libssh.so.50" not found
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/usr.sbin/wg-keygen/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src/distrib/evbarm/instkernel/sshramdisk
Date: Wed, 17 Dec 2025 20:05:55 +0000
Module Name: src
Committed By: riastradh
Date: Wed Dec 17 20:05:54 UTC 2025
Modified Files:
src/distrib/evbarm/instkernel/sshramdisk: Makefile list
Log Message:
evbarm/instkernel/sshramdisk: Get libssh out of objdir now.
Should fix problems like:
--- ramdiskbin.link ---
# link sshramdisk/ramdiskbin.link
/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/bin/armv6eb--netbsdelf-eabihf-gcc --sysroot=/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest -static -o ramdiskbin.link ramdiskbin.o -Wl,-rpath-link,/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest/lib -L=/lib -L/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest/usr/lib cat.cro chmod.cro cp.cro dd.cro df.cro ed.cro ln.cro ls.cro mkdir.cro mv.cro pax.cro pwd.cro rm.cro rmdir.cro sh.cro stty.cro sync.cro sleep.cro chown.cro disklabel.cro fdisk.cro fsck.cro fsck_msdos.cro fsck_ffs.cro gpt.cro ifconfig.cro init.cro mknod.cro mount.cro mount_cd9660.cro mount_ext2fs.cro mount_ffs.cro mount_kernfs.cro mount_msdos.cro mount_nfs.cro mount_tmpfs.cro newfs.cro newfs_ext2fs.cro ping.cro reboot.cro restore.cro route.cro shutdown.cro slattach.cro swapctl.cro umount.cro ftp.cro tip.cro gzip.cro less.cro sed.cro tset.cro chroot.cro sshd.cro sysinst.cro progress.cro dhcpcd.cro libhack.o
-ledit -lutil -lcurses -lterminfo -lrmt -lcrypt -ll -lm -lz -lprop -lssh -lcrypto -lpthread
/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/lib/gcc/armv6eb--netbsdelf-eabihf/14.3.0/../../../../armv6eb--netbsdelf-eabihf/bin/ld: cannot find -lssh: No such file or directory
/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/lib/gcc/armv6eb--netbsdelf-eabihf/14.3.0/../../../../armv6eb--netbsdelf-eabihf/bin/ld: have you installed the static version of the ssh library ?
collect2: error: ld returned 1 exit status
*** Failed target: ramdiskbin.link
*** In directory: /home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-obj/home/source/ab/HEAD/src/distrib/evbarm/instkernel/sshramdisk
*** Failed commands:
${_MKTARGET_LINK}
=> @echo '# ' " link " sshramdisk/ramdiskbin.link
${_CCLINK.${:Uramdiskbin}} ${_LDFLAGS.${:Uramdiskbin}} ${_LDSTATIC.${:Uramdiskbin}} -o ${.TARGET} ${OBJS.${:Uramdiskbin}} ${_PROGLDOPTS} ${_LDADD.${:Uramdiskbin}}
=> /home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/bin/armv6eb--netbsdelf-eabihf-gcc --sysroot=/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest -static -o ramdiskbin.link ramdiskbin.o -Wl,-rpath-link,/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest/lib -L=/lib -L/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest/usr/lib cat.cro chmod.cro cp.cro dd.cro df.cro ed.cro ln.cro ls.cro mkdir.cro mv.cro pax.cro pwd.cro rm.cro rmdir.cro sh.cro stty.cro sync.cro sleep.cro chown.cro disklabel.cro fdisk.cro fsck.cro fsck_msdos.cro fsck_ffs.cro gpt.cro ifconfig.cro init.cro mknod.cro mount.cro mount_cd9660.cro mount_ext2fs.cro mount_ffs.cro mount_kernfs.cro mount_msdos.cro mount_nfs.cro mount_tmpfs.cro newfs.cro newfs_ext2fs.cro ping.cro reboot.cro restore.cro route.cro shutdown.cro slattach.cro swapctl.cro umount.cro ftp.cro tip.cro gzip.cro less.cro sed.cro tset.cro chroot.cro sshd.cro sysinst.cro progress.cro dhcpcd.cro
libhack.o -ledit -lutil -lcurses -lterminfo -lrmt -lcrypt -ll -lm -lz -lprop -lssh -lcrypto -lpthread
${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${:Uramdiskbin}}
=> /home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/bin/nbctfmerge -t -g -L VERSION -g -o ramdiskbin.link ramdiskbin.o
*** [ramdiskbin.link] Error code 1
PR lib/58648: private shared libraries should go in
/usr/lib/private, not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/distrib/evbarm/instkernel/sshramdisk/Makefile
cvs rdiff -u -r1.6 -r1.7 src/distrib/evbarm/instkernel/sshramdisk/list
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src/distrib/sets/lists/comp
Date: Thu, 18 Dec 2025 05:07:46 +0000
Module Name: src
Committed By: riastradh
Date: Thu Dec 18 05:07:46 UTC 2025
Modified Files:
src/distrib/sets/lists/comp: mi
Log Message:
distrib/sets/lists/comp: libssh is private for lint too.
Might fix:
checkflist ===> distrib/sets
====== 1 missing files in DESTDIR ========
Files in flist but missing from DESTDIR.
File wasn't installed ?
------------------------------------------
./usr/libdata/lint/llib-lssh.ln
======== end of 1 missing files ==========
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.2503 -r1.2504 src/distrib/sets/lists/comp/mi
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Christos Zoulas" <christos@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src
Date: Thu, 18 Dec 2025 22:07:27 -0500
Module Name: src
Committed By: christos
Date: Fri Dec 19 03:07:27 UTC 2025
Modified Files:
src/distrib/sets/lists/debug: mi shl.mi
src/distrib/sets/lists/xdebug: mi
src/share/mk: bsd.lib.mk
Log Message:
PR/58648: Fix MKDEBUG=yes build:
1. if NOLINKLIB is set don't install libfoo_g.a and libfoo_p.a libraries.
libfoo.a, libfoo_p.a were not being installed already, just make the
testing consistent
2. Move .a libraries from shl.mi to mi where they belong.
3. Make stray libfoo_g.a libraries that were install accidentally before
obsolete.
To generate a diff of this commit:
cvs rdiff -u -r1.494 -r1.495 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.381 -r1.382 src/distrib/sets/lists/debug/shl.mi
cvs rdiff -u -r1.51 -r1.52 src/distrib/sets/lists/xdebug/mi
cvs rdiff -u -r1.424 -r1.425 src/share/mk/bsd.lib.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src/rescue
Date: Sat, 20 Dec 2025 14:35:11 +0000
Module Name: src
Committed By: riastradh
Date: Sat Dec 20 14:35:11 UTC 2025
Modified Files:
src/rescue: list
Log Message:
rescue/list: Touch for CRUNCHGEN_FLAGS change for libssh.
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.55 -r1.56 src/rescue/list
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Martin Husemann" <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: [netbsd-11] src/usr.bin/crunch/crunchgen
Date: Thu, 22 Jan 2026 19:33:55 +0000
Module Name: src
Committed By: martin
Date: Thu Jan 22 19:33:54 UTC 2026
Modified Files:
src/usr.bin/crunch/crunchgen [netbsd-11]: crunchgen.c
Log Message:
Pull up following revision(s) (requested by snj in ticket #149):
usr.bin/crunch/crunchgen/crunchgen.c: revision 1.97
crunchgen(1): Implement -L <lib-dir> option for real.
Pass it through via LDADD in the generated .mk output, before any -l
options.
The original logic -- which was disabled in 2001, apparently by
accident -- had a default libdir of /usr/lib. But it didn't do
anything with that string, so removing it as a default doesn't change
anything. But the linker doesn't need us to specify that path anyway
(and it would really have to be -L=/usr/lib rather than -L/usr/lib,
whereas we want -L/path/to/obj/lib/libfoo without the `=').
PR toolchain/59841: crunchgen(1) ignores -L argument
Will be needed for:
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.96 -r1.96.4.1 src/usr.bin/crunch/crunchgen/crunchgen.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Martin Husemann" <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: [netbsd-11] src
Date: Thu, 22 Jan 2026 19:51:55 +0000
Module Name: src
Committed By: martin
Date: Thu Jan 22 19:51:55 UTC 2026
Modified Files:
src/crypto/external/bsd/openssh [netbsd-11]: Makefile.inc
src/crypto/external/bsd/openssh/lib [netbsd-11]: Makefile
src/distrib/evbarm/instkernel/sshramdisk [netbsd-11]: Makefile list
src/distrib/sets/lists/base [netbsd-11]: mi shl.mi
src/distrib/sets/lists/comp [netbsd-11]: mi shl.mi
src/distrib/sets/lists/debug [netbsd-11]: mi shl.mi
src/distrib/sets/lists/xdebug [netbsd-11]: mi
src/etc/mtree [netbsd-11]: NetBSD.dist.base NetBSD.dist.compat.in
src/lib/libpam/modules/pam_ssh [netbsd-11]: Makefile
src/rescue [netbsd-11]: Makefile list
src/share/mk [netbsd-11]: bsd.README bsd.lib.mk bsd.prog.mk
src/usr.sbin/wg-keygen [netbsd-11]: Makefile
Log Message:
Pull up following revision(s) (requested by snj in ticket #150):
distrib/sets/lists/debug/shl.mi: revision 1.380
crypto/external/bsd/openssh/lib/Makefile: revision 1.45
distrib/sets/lists/debug/shl.mi: revision 1.381
crypto/external/bsd/openssh/lib/Makefile: revision 1.46
distrib/sets/lists/debug/shl.mi: revision 1.382
distrib/evbarm/instkernel/sshramdisk/list: revision 1.7
share/mk/bsd.lib.mk: revision 1.423
share/mk/bsd.lib.mk: revision 1.425
distrib/sets/lists/comp/mi: revision 1.2503
distrib/sets/lists/comp/mi: revision 1.2504
distrib/evbarm/instkernel/sshramdisk/Makefile: revision 1.31
distrib/sets/lists/base/shl.mi: revision 1.1019
rescue/list: revision 1.56
etc/mtree/NetBSD.dist.compat.in: revision 1.9
distrib/sets/lists/debug/mi: revision 1.494
distrib/sets/lists/debug/mi: revision 1.495
distrib/sets/lists/base/mi: revision 1.1371
distrib/sets/lists/base/mi: revision 1.1372
distrib/sets/lists/comp/shl.mi: revision 1.362
etc/mtree/NetBSD.dist.base: revision 1.262
lib/libpam/modules/pam_ssh/Makefile: revision 1.15
share/mk/bsd.prog.mk: revision 1.358
share/mk/bsd.prog.mk: revision 1.359
usr.sbin/wg-keygen/Makefile: revision 1.2
usr.sbin/wg-keygen/Makefile: revision 1.3
distrib/sets/lists/base/shl.mi: revision 1.1020
share/mk/bsd.README: revision 1.457
crypto/external/bsd/openssh/Makefile.inc: revision 1.18
distrib/sets/lists/xdebug/mi: revision 1.52
rescue/Makefile: revision 1.43
Add logic for /usr/lib/private libraries.
New variables for makefiles to define:
<bsd.lib.mk> LIBSUBDIR -- If nonempty, install library into
${LIBDIR}/${LIBSUBDIR} instead of ${LIBDIR}. Typically set
either to empty or to `private'.
<bsd.lib.mk> LIBDPSUBDIRS -- List of subdirectories _subdir_ to add
-L${SHLIBDIR}/${_subdir_} -Wl,-R${SHLIBDIR}/${_subdir_} to
ldflags when linking library. Note: Should only be used inside
private libraries, not inside public libraries to link against
private libraries, which can't work -- see comment.
<bsd.prog.mk> PROGDPSUBDIRS -- List of subdirectories _subdir_ to add
-L${SHLIBDIR}/${_subdir_} -Wl,-R${SHLIBDIR}/${_subdir_} to
ldflags when linking program.
(XXX bsd.lib.mk/bsd.prog.mk should figure LIBDPSUBDIRS/PROGDPSUBDIRS
out automatically by LIBDPLIBS/PROGDPLIBS, but for now we don't have
that mechanism -- TBD in subsequent work.)
Libraries that we want to install because we use them in binaries we
ship, but that we want to keep private from applications so we don't
have to worry about ABI breakage or leakage into pkgsrc builds,
should generally set:
LIBSUBDIR= private # Install into /usr/lib/private.
NOCOMPAT= # defined # Don't build compat lib.
NOLINKLIB= # defined # Don't install .so link or .a lib.
(XXX Maybe we should have a `LIBISPRIVATE= installed' or something
for this combination of options, but for now I'm putting in the
minimal mechanism to implement this and we can condense a common
pattern later.)
Programs using the library will also have to set
PROGDPSUBDIRS+= private
so that they will get the rpath /usr/lib/private.
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
openssh: Install libssh.so in /usr/lib/private.
This way it doesn't get exposed to applications accidentally, and we
don't need to worry about breaking ABI when updating openssh in base.
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
openssh: Do build and install compat libssh after all.
Even though it's not exposed for applications to _link_ against, it
is used by the dynamically _loadable_ pam_ssh module, which exists as
a compat module and therefore needs libssh as a compat library to be
installed somewhere. That somewhere will be
/usr/lib/${COMPAT_ARCH}/private.
Should fix problems like:
dependall ===> compat/sparc64/sparc/../../../lib/libpam/modules/pam_ssh
nbmake[11]: don't know how to make /home/source/ab/HEAD/src/crypto/external/bsd/openssh/lib/libssh.a. Stop
Verified in an amd64 build that the compat i386 pam_ssh.so is linked
correctly:
(chroot HEAD)# ldd /usr/lib/i386/security/pam_ssh.so.4
/usr/lib/i386/security/pam_ssh.so.4:
-lssh.50 => /usr/lib/i386/private/libssh.so.50
-lcrypto.16 => /usr/lib/i386/libcrypto.so.16
-lcrypt.1 => /usr/lib/i386/libcrypt.so.1
-lgcc_s.1 => /usr/lib/i386/libgcc_s.so.1
-lc.12 => /usr/lib/i386/libc.so.12
-lz.1 => /usr/lib/i386/libz.so.1
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
wg-keygen(8): Find private libssh.so.
Should fix:
/usr/sbin/wg-keygen: Shared object "libssh.so.50" not found
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
evbarm/instkernel/sshramdisk: Get libssh out of objdir now.
Should fix problems like:
--- ramdiskbin.link ---
# link sshramdisk/ramdiskbin.link
/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/bin/armv6eb--netbsdelf-eabihf-gcc --sysroot=/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest -static -o
ramdiskbin.link ramdiskbin.o -Wl,-rpath-link,/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest/lib -L=/lib -L/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest/usr/lib cat.cro
chmod.cro cp.cro dd.cro df.cro ed.cro ln.cro ls.cro mkdir.cro mv.cro pax.cro pwd.cro rm.cro rmdir.cro sh.cro stty.cro sync.cro sleep.cro chown.cro disklabel.cro fdisk.cro fsck.cro fsck_msdos.cro
fsck_ffs.cro gpt.cro ifconfig.cro init.cro mknod.cro mount.cro mount_cd9660.cro mount_ext2fs.cro mount_ffs.cro mount_kernfs.cro mount_msdos.cro mount_nfs.cro mount_tmpfs.cro newfs.cro
newfs_ext2fs.cro ping.cro reboot.cro restore.cro route.cro shutdown.cro slattach.cro swapctl.cro umount.cro ftp.cro tip.cro gzip.cro less.cro sed.cro tset.cro chroot.cro sshd.cro sysinst.cro
progress.cro dhcpcd.cro libhack.o
-ledit -lutil -lcurses -lterminfo -lrmt -lcrypt -ll -lm -lz -lprop -lssh -lcrypto -lpthread
/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/lib/gcc/armv6eb--netbsdelf-eabihf/14.3.0/../../../../armv6eb--netbsdelf-eabihf/bin/ld: cannot find -lssh: No such file or directory
/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/lib/gcc/armv6eb--netbsdelf-eabihf/14.3.0/../../../../armv6eb--netbsdelf-eabihf/bin/ld: have you installed the static version of the
ssh library ?
collect2: error: ld returned 1 exit status
*** Failed target: ramdiskbin.link
*** In directory: /home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-obj/home/source/ab/HEAD/src/distrib/evbarm/instkernel/sshramdisk
*** Failed commands:
${_MKTARGET_LINK}
=> @echo '# ' " link " sshramdisk/ramdiskbin.link
${_CCLINK.${:Uramdiskbin}} ${_LDFLAGS.${:Uramdiskbin}} ${_LDSTATIC.${:Uramdiskbin}} -o ${.TARGET} ${OBJS.${:Uramdiskbin}} ${_PROGLDOPTS} ${_LDADD.${:Uramdiskbin}}
=> /home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/bin/armv6eb--netbsdelf-eabihf-gcc --sysroot=/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest -static -o
ramdiskbin.link ramdiskbin.o -Wl,-rpath-link,/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest/lib -L=/lib -L/home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-dest/usr/lib cat.cro
chmod.cro cp.cro dd.cro df.cro ed.cro ln.cro ls.cro mkdir.cro mv.cro pax.cro pwd.cro rm.cro rmdir.cro sh.cro stty.cro sync.cro sleep.cro chown.cro disklabel.cro fdisk.cro fsck.cro fsck_msdos.cro
fsck_ffs.cro gpt.cro ifconfig.cro init.cro mknod.cro mount.cro mount_cd9660.cro mount_ext2fs.cro mount_ffs.cro mount_kernfs.cro mount_msdos.cro mount_nfs.cro mount_tmpfs.cro newfs.cro
newfs_ext2fs.cro ping.cro reboot.cro restore.cro route.cro shutdown.cro slattach.cro swapctl.cro umount.cro ftp.cro tip.cro gzip.cro less.cro sed.cro tset.cro chroot.cro sshd.cro sysinst.cro
progress.cro dhcpcd.cro
libhack.o -ledit -lutil -lcurses -lterminfo -lrmt -lcrypt -ll -lm -lz -lprop -lssh -lcrypto -lpthread
${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${:Uramdiskbin}}
=> /home/builds/ab/HEAD/evbarm-earmv6hfeb/20251217070550Z-tools/bin/nbctfmerge -t -g -L VERSION -g -o ramdiskbin.link ramdiskbin.o
*** [ramdiskbin.link] Error code 1
PR lib/58648: private shared libraries should go in
/usr/lib/private, not /usr/lib
distrib/sets/lists/comp: libssh is private for lint too.
Might fix:
checkflist ===> distrib/sets
====== 1 missing files in DESTDIR ========
Files in flist but missing from DESTDIR.
File wasn't installed ?
------------------------------------------
./usr/libdata/lint/llib-lssh.ln
======== end of 1 missing files ==========
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
PR/58648: Fix MKDEBUG=yes build:
1. if NOLINKLIB is set don't install libfoo_g.a and libfoo_p.a libraries.
libfoo.a, libfoo_p.a were not being installed already, just make the
testing consistent
2. Move .a libraries from shl.mi to mi where they belong.
3. Make stray libfoo_g.a libraries that were install accidentally before
obsolete.
rescue/list: Touch for CRUNCHGEN_FLAGS change for libssh.
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.16.4.1 src/crypto/external/bsd/openssh/Makefile.inc
cvs rdiff -u -r1.42 -r1.42.2.1 src/crypto/external/bsd/openssh/lib/Makefile
cvs rdiff -u -r1.28 -r1.28.4.1 \
src/distrib/evbarm/instkernel/sshramdisk/Makefile
cvs rdiff -u -r1.6 -r1.6.2.1 src/distrib/evbarm/instkernel/sshramdisk/list
cvs rdiff -u -r1.1367 -r1.1367.2.1 src/distrib/sets/lists/base/mi
cvs rdiff -u -r1.1008.2.2 -r1.1008.2.3 src/distrib/sets/lists/base/shl.mi
cvs rdiff -u -r1.2497.2.3 -r1.2497.2.4 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.359 -r1.359.2.1 src/distrib/sets/lists/comp/shl.mi
cvs rdiff -u -r1.485.2.6 -r1.485.2.7 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.367.2.3 -r1.367.2.4 src/distrib/sets/lists/debug/shl.mi
cvs rdiff -u -r1.51 -r1.51.2.1 src/distrib/sets/lists/xdebug/mi
cvs rdiff -u -r1.259 -r1.259.4.1 src/etc/mtree/NetBSD.dist.base
cvs rdiff -u -r1.8 -r1.8.4.1 src/etc/mtree/NetBSD.dist.compat.in
cvs rdiff -u -r1.14 -r1.14.2.1 src/lib/libpam/modules/pam_ssh/Makefile
cvs rdiff -u -r1.42 -r1.42.10.1 src/rescue/Makefile
cvs rdiff -u -r1.55 -r1.55.6.1 src/rescue/list
cvs rdiff -u -r1.455 -r1.455.2.1 src/share/mk/bsd.README
cvs rdiff -u -r1.419.2.1 -r1.419.2.2 src/share/mk/bsd.lib.mk
cvs rdiff -u -r1.356.2.1 -r1.356.2.2 src/share/mk/bsd.prog.mk
cvs rdiff -u -r1.1 -r1.1.10.1 src/usr.sbin/wg-keygen/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/58648 CVS commit: src/crypto/external/bsd/openssh/lib
Date: Wed, 29 Apr 2026 13:41:38 +0000
Module Name: src
Committed By: riastradh
Date: Wed Apr 29 13:41:38 UTC 2026
Modified Files:
src/crypto/external/bsd/openssh/lib: Makefile
Log Message:
libssh/Makefile: Fix comment about compat libssh.
We _do_ create a private compat libssh, not for the benefit of
applications linked against it (there aren't any, or if there were it
would be a bug) but for the benefit of applications loading
pam_ssh.so which is legitimately linked against libssh.
When I made the change a few months ago to restore building compat
libssh (by not defining NOCOMPAT) I explained this in the commit
message but neglected to update the comment.
PR lib/58648: private shared libraries should go in /usr/lib/private,
not /usr/lib
To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 src/crypto/external/bsd/openssh/lib/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
(Contact us)
$NetBSD: query-full-pr,v 1.51 2026/08/10 02:28:17 riastradh Exp $
$NetBSD: gnats_config.sh,v 1.10 2026/05/13 22:00:09 riastradh Exp $
Copyright © 1994-2026
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.