Re: git is broken because curl is broken which stops me in my tracks

From: Mark Millard <marklmi_at_yahoo.com>
Date: Mon, 15 Sep 2025 15:42:09 UTC
Dennis Clarke <dclarke_at_blastwave.org> wrote on
Date: Mon, 15 Sep 2025 10:13:47 UTC :

> On 9/14/25 23:15, Mark Millard wrote:
> > [Note: do not have access to a riscv64 context,
> > limiting my ability to detect expected
> > differences.]
> > 
> > Dennis Clarke <dclarke_at_blastwave.org> wrote on
> > Date: Mon, 15 Sep 2025 01:00:06 UTC :
> > 
> >> Well I am not sure how to get around this mess :
> > 
> > uname -apKU output for the failing context? For
> > the poudriere jail's world?
> > 
> 
> Both the system itself and the poudriere jail are based on the same
> sources.

Same /etc/src.conf content and same /etc/make.conf content?
Same /etc/src-env.conf content? [poudriere(-devel) has its
own places for such files.]

Is WITH_MITKRB5 set explicitly? WITHOUT_MITKRB5 ? Has it
been left implicit?

Do you build using WITH_META_MODE ? If not, how have you
been handling the change to have WITHOUT_CLEAN by default:

20250819:
        The CLEAN option has been switched back from default-on to default-off.
        This reverts the 20250808 change below, which had reverted the 20240729
        change before it.  Note that some src.conf(5) options are known to break
        ABI or compatibility in ways that may require a clean build initially
        when switched.

Have you force a complete rebuild of your
boot environment after the change?

> enceladus# uname -apKU
> FreeBSD enceladus 15.0-PRERELEASE FreeBSD 15.0-PRERELEASE 
> main-n279980-004ce88ad1ef GENERIC riscv riscv64 1500063 1500063
> enceladus#
> enceladus# poudriere jails -l
> JAILNAME VERSION ARCH METHOD TIMESTAMP 
> PATH
> 150rv64 15.0-PRERELEASE 1500063 riscv.riscv64 src=/usr/src 2025-09-02 
> 17:06:01 /poudriere/jails/150rv64
> enceladus#
> 
> 
> > On main 16 for amd64, for example:
> > 
> > /usr/lib/libkrb5.so.122
> > 
> > Does that file exist in your failing context?
> 
> Well this is funny. The file exists in the poudriere jail and NOT on
> the system itself :
> 
> enceladus# ls -l /usr/lib/libkrb5.so.122
> ls: /usr/lib/libkrb5.so.122: No such file or directory
> enceladus#
> 
> enceladus# ls -l /poudriere/jails/150rv64/usr/lib/libkrb5.so.122
> -r--r--r-- 1 root wheel 723424 Sep 4 07:51 
> /poudriere/jails/150rv64/usr/lib/libkrb5.so.122
> enceladus#

That makes it appear that you have a mix of a
boot environment using WITHOUT_MITKRB5 and
a poudriere(-devel) jail using WITH_MITKRB5 .

Which do you want to be using?

Do you have the likes of:

/usr/lib/libheimntlm.so*
/usr/lib/libheimbase.so*
/usr/lib/libgssapi.so*
/usr/lib/libprivateheimipcc.so*
/usr/lib/libhx509.so*

? Those would indicate WITHOUT_MITKRB5 was in use,
if I understand right.

> > So, presuming use of the system libraries for such,
> > not a ports-build of such a library, the missing
> > or unloadble library is a system library. Are
> > you in fact trying to use the system library?
> >
> 
> I am ( in fact ) using packages built with poudriere on this machine
> with that jail.

All of the following are possibilities:

) Using MITKRB5 from the system, not from a port-package.
) Using KTH Heimdal from the system, not from a port-package.
) Using a port-package instead.

I'm still not sure which of the 3 you are intending for the
boot environment to be based on. Which do you intend to be
using?

Note: I've never tried to the port-packages for such
      so I'm not familiar with the details of doing
      such.

> > Are you sure that you have your system and your
> > poudriere jail's world configurations matching,
> > such as for WITH_MITKRB5 vs. WITHOUT_MITKRB5 ?
> 
> I am not aware of any such tweaks and where would they hide?

An explanation for the lack of MITKRB5 in the boot
context is needed. If you intend to use the default
system MITKRB5, then getting it built and installed
will be needed.

> >> enceladus# cd /usr/src
> >> enceladus# git pull origin main
> >> ld-elf.so.1: Shared object "libkrb5.so.122" not found, required by
> >> "libcurl.so.4"
> >> fatal: remote helper 'https' aborted session
> > 
> > I'll note that "ldd -a PATH" gives a lot more
> > information about the dependency structure
> > that causes libraries to be listed. Sometimes
> > that is handy.
> 
> yep .. the package built last night for git and curl is broken
> as far as the system is concerned :

If you intend to use the default system MITKRB5, then
your existing system build is either:

) incomplete
) built and installed for WITHOUT_MITKRB5

and getting the configuration for MITKRB5 use as what
is built and installed would then be needed.

> enceladus#
> enceladus# ls -l /usr/local/bin/curl
> -rwxr-xr-x 1 root wheel 245688 Sep 14 22:07 /usr/local/bin/curlenceladus# ldd -a /usr/local/bin/curl
> /usr/local/bin/curl:
>          libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x6afcc6000)
>          libnghttp2.so.14 => /usr/local/lib/libnghttp2.so.14 (0x6b0a8a000)
>          libidn2.so.0 => /usr/local/lib/libidn2.so.0 (0x6b18d6000)
>          libssh2.so.1 => /usr/local/lib/libssh2.so.1 (0x6af328000)
>          libpsl.so.5 => /usr/local/lib/libpsl.so.5 (0x6b3107000)
>          libssl.so.35 => /usr/lib/libssl.so.35 (0x6b2867000)
>          libcrypto.so.35 => /lib/libcrypto.so.35 (0x6b3a20000)
>          libzstd.so.1 => /usr/local/lib/libzstd.so.1 (0x6b4a01000)
>          libbrotlidec.so.1 => /usr/local/lib/libbrotlidec.so.1 (0x6b6152000)
>          libbrotlicommon.so.1 => /usr/local/lib/libbrotlicommon.so.1 
> (0x6b52f8000)
>          libz.so.6 => /lib/libz.so.6 (0x6b7235000)
>          libkrb5.so.122 => not found (0)
>          libgssapi_krb5.so.122 => not found (0)
>          libthr.so.3 => /lib/libthr.so.3 (0x6b66f7000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/local/lib/libcurl.so.4:
>          libnghttp2.so.14 => /usr/local/lib/libnghttp2.so.14 (0x6b0a8a000)
>          libidn2.so.0 => /usr/local/lib/libidn2.so.0 (0x6b18d6000)
>          libssh2.so.1 => /usr/local/lib/libssh2.so.1 (0x6af328000)
>          libpsl.so.5 => /usr/local/lib/libpsl.so.5 (0x6b3107000)
>          libssl.so.35 => /usr/lib/libssl.so.35 (0x6b2867000)
>          libcrypto.so.35 => /lib/libcrypto.so.35 (0x6b3a20000)
>          libzstd.so.1 => /usr/local/lib/libzstd.so.1 (0x6b4a01000)
>          libbrotlidec.so.1 => /usr/local/lib/libbrotlidec.so.1 (0x6b6152000)
>          libbrotlicommon.so.1 => /usr/local/lib/libbrotlicommon.so.1 
> (0x6b52f8000)
>          libz.so.6 => /lib/libz.so.6 (0x6b7235000)
>          libkrb5.so.122 => not found (0)
>          libgssapi_krb5.so.122 => not found (0)
>          libthr.so.3 => /lib/libthr.so.3 (0x6b66f7000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/local/lib/libnghttp2.so.14:
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/local/lib/libidn2.so.0:
>          libunistring.so.5 => /usr/local/lib/libunistring.so.5 (0x6b9849000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/local/lib/libssh2.so.1:
>          libcrypto.so.35 => /lib/libcrypto.so.35 (0x6b3a20000)
>          libz.so.6 => /lib/libz.so.6 (0x6b7235000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/local/lib/libpsl.so.5:
>          libidn2.so.0 => /usr/local/lib/libidn2.so.0 (0x6b18d6000)
>          libunistring.so.5 => /usr/local/lib/libunistring.so.5 (0x6b9849000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/lib/libssl.so.35:
>          libcrypto.so.35 => /lib/libcrypto.so.35 (0x6b3a20000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /lib/libcrypto.so.35:
>          libthr.so.3 => /lib/libthr.so.3 (0x6b66f7000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/local/lib/libzstd.so.1:
>          libthr.so.3 => /lib/libthr.so.3 (0x6b66f7000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/local/lib/libbrotlidec.so.1:
>          libm.so.5 => /lib/libm.so.5 (0x6ba323000)
>          libbrotlicommon.so.1 => /usr/local/lib/libbrotlicommon.so.1 
> (0x6b52f8000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /usr/local/lib/libbrotlicommon.so.1:
>          libm.so.5 => /lib/libm.so.5 (0x6ba323000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /lib/libz.so.6:
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /lib/libthr.so.3:
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
>          libsys.so.7 => /lib/libsys.so.7 (0x6bb012000)
> /lib/libc.so.7:
>          libsys.so.7 => /lib/libsys.so.7 (0x6bb012000)
> /usr/local/lib/libunistring.so.5:
>          libthr.so.3 => /lib/libthr.so.3 (0x6b66f7000)
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> /lib/libm.so.5:
>          libc.so.7 => /lib/libc.so.7 (0x6b86c8000)
> enceladus#
> 
> >>
> >> I am not sure how to dig out of this rathole.
> > 
> 
> The problem that I ponder over coffee this morning is that I have
> a system built from sources. From the stuff in /usr/src which I use
> git to fetch. That works.
> 
> Then I build a new jail from those same sources. That works.
> 
> Then I build packages with poudriere using the jail. That works
> with a pile of exceptions because RISC-V is just a lab bench experiment.
> 
> Then I run "pkg upgrade -Ffy" followed closely by "pkg upgrade -fy".
> 
> At this point I have packages that are self hosted on this board and I 
> expect things to "just work" within those packages.
> 
> That does not work.
> 
> This is the problem I ponder over coffee this morning.

Your boot environment and your poudriere(-devel) jail
environment do not match so the installed port-package
does not match the environment it is being installed
into.

Which type of environment do you actually want to be
using in your boot environment? (Potentially both
could be not what you intend.) The one that does not
match your intent needs to be be updated to match
your intent and the build/installs updated. (Wording
presumes one of them is as-intended.)

===
Mark Millard
marklmi at yahoo.com