Details
- Reviewers
cy dch ivy - Group Reviewers
security krb5 - Commits
- rG771ee17c8810: mit-krb5.pc: Add missing -lkrb5profile
rG2d9fd2c573c3: mit-krb5.pc: Add missing -lkrb5profile
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
This seems to be revealed with the recent switch to MIT version. For example, 15-CURRENT back in March had this:
# ldd /usr/lib/libkrb5.so /usr/lib/libkrb5.so: libasn1.so.11 => /usr/lib/libasn1.so.11 (0x36e32d570000) libcom_err.so.5 => /usr/lib/libcom_err.so.5 (0x36e309956000) libcrypt.so.5 => /lib/libcrypt.so.5 (0x36e30a44a000) libcrypto.so.30 => /lib/libcrypto.so.30 (0x36e30a600000) libhx509.so.11 => /usr/lib/libhx509.so.11 (0x36e339780000) libroken.so.11 => /usr/lib/libroken.so.11 (0x36e30ac5a000) libwind.so.11 => /usr/lib/libwind.so.11 (0x36e33bec0000) libheimbase.so.11 => /usr/lib/libheimbase.so.11 (0x36e30834e000) libprivateheimipcc.so.11 => /usr/lib/libprivateheimipcc.so.11 (0x36e30ba76000) libc.so.7 => /lib/libc.so.7 (0x36e308e00000) libmd.so.7 => /lib/libmd.so.7 (0x36e30c885000) libthr.so.3 => /lib/libthr.so.3 (0x36e30d741000) libsys.so.7 => /lib/libsys.so.7 (0x36e318150000)
Now 15.0-ALPHA4 has this lib:
# ldd /usr/lib/libkrb5.so /usr/lib/libkrb5.so: libkrb5profile.so.122 => /usr/lib/libkrb5profile.so.122 (0x12673284f000) libk5crypto.so.122 => /usr/lib/libk5crypto.so.122 (0x126733923000) libcom_err.so.122 => /usr/lib/libcom_err.so.122 (0x1267340f3000) libkrb5support.so.122 => /usr/lib/libkrb5support.so.122 (0x12673215e000) libc.so.7 => /lib/libc.so.7 (0x126733400000) libcrypto.so.35 => /lib/libcrypto.so.35 (0x126736200000) libthr.so.3 => /lib/libthr.so.3 (0x126735808000) libsys.so.7 => /lib/libsys.so.7 (0x12673a870000)
The upcoming new net-mgmt/simplomon port (https://reviews.freebsd.org/D49277) was fine before, but recently it has faced this:
... [100% 40/40] /usr/local/llvm18/bin/clang++ -o simplomon simplomon.p/simplomon.cc.o simplomon.p/notifiers.cc.o simplomon.p/minicurl.cc.o simplomon.p/dnsmon.cc.o simplomon.p/record-types.cc.o simplomon.p/dnsmessages.cc.o simplomon.p/dns-storage.cc.o simplomon.p/netmon.cc.o simplomon.p/luabridge.cc.o simplomon.p/webservice.cc.o simplomon.p/support.cc.o simplomon.p/promon.cc.o simplomon.p/mailmon.cc.o simplomon.p/nonblocker.cc.o -Wl,--as-needed -Wl,--no-undefined -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -Wl,--start-group subprojects/simplesockets/libsimplesockets.a subprojects/sqlitewriter/libsqlitewriter.a -L/usr/local/lib -lfmt -pthread /usr/lib/libssl.a /usr/lib/libcrypto.a /usr/lib/libz.a -L/usr/local/lib -lbrotlicommon -L/usr/local/lib -lbrotlidec -lbrotlicommon -L/usr/local/lib -lbrotlienc -lbrotlicommon /usr/local/lib/liblua-5.3.a -lm /usr/local/lib/libcurl.a /usr/lib/libgssapi_krb5.a /usr/local/lib/libzstd.a /usr/lib/libkrb5.a /usr/lib/libk5crypto.a /usr/lib/libcom_err.a /usr/lib/libkrb5support.a /usr/local/lib/libpsl.a /usr/local/lib/libidn2.a -R/usr/local/lib /usr/local/lib/libnghttp2.a -L/usr/local/lib -L/lib -lssh2 -lbrotlidec -lbrotlicommon -lunistring -L/usr/local/lib -lsqlite3 -L/usr/local/lib -lfmt -L/usr/local/lib -lsqlite3 -Wl,--end-group FAILED: simplomon /usr/local/llvm18/bin/clang++ -o simplomon simplomon.p/simplomon.cc.o simplomon.p/notifiers.cc.o simplomon.p/minicurl.cc.o simplomon.p/dnsmon.cc.o simplomon.p/record-types.cc.o simplomon.p/dnsmessages.cc.o simplomon.p/dns-storage.cc.o simplomon.p/netmon.cc.o simplomon.p/luabridge.cc.o simplomon.p/webservice.cc.o simplomon.p/support.cc.o simplomon.p/promon.cc.o simplomon.p/mailmon.cc.o simplomon.p/nonblocker.cc.o -Wl,--as-needed -Wl,--no-undefined -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -Wl,--start-group subprojects/simplesockets/libsimplesockets.a subprojects/sqlitewriter/libsqlitewriter.a -L/usr/local/lib -lfmt -pthread /usr/lib/libssl.a /usr/lib/libcrypto.a /usr/lib/libz.a -L/usr/local/lib -lbrotlicommon -L/usr/local/lib -lbrotlidec -lbrotlicommon -L/usr/local/lib -lbrotlienc -lbrotlicommon /usr/local/lib/liblua-5.3.a -lm /usr/local/lib/libcurl.a /usr/lib/libgssapi_krb5.a /usr/local/lib/libzstd.a /usr/lib/libkrb5.a /usr/lib/libk5crypto.a /usr/lib/libcom_err.a /usr/lib/libkrb5support.a /usr/local/lib/libpsl.a /usr/local/lib/libidn2.a -R/usr/local/lib /usr/local/lib/libnghttp2.a -L/usr/local/lib -L/lib -lssh2 -lbrotlidec -lbrotlicommon -lunistring -L/usr/local/lib -lsqlite3 -L/usr/local/lib -lfmt -L/usr/local/lib -lsqlite3 -Wl,--end-group ld: error: undefined symbol: profile_get_string >>> referenced by rc_base.c:54 (/usr/src/crypto/krb5/src/lib/krb5/rcache/rc_base.c:54) >>> rc_base.o:(k5_rc_default) in archive /usr/lib/libkrb5.a >>> referenced by sn2princ.c:66 (/usr/src/crypto/krb5/src/lib/krb5/os/sn2princ.c:66) >>> sn2princ.o:(expand_hostname) in archive /usr/lib/libkrb5.a >>> referenced by locate_kdc.c:58 (/usr/src/crypto/krb5/src/lib/krb5/os/locate_kdc.c:58) >>> locate_kdc.o:(_krb5_use_dns_kdc) in archive /usr/lib/libkrb5.a >>> referenced 22 more times ld: error: undefined symbol: profile_release_string >>> referenced by rc_base.c:58 (/usr/src/crypto/krb5/src/lib/krb5/rcache/rc_base.c:58) >>> rc_base.o:(k5_rc_default) in archive /usr/lib/libkrb5.a >>> referenced by sn2princ.c:83 (/usr/src/crypto/krb5/src/lib/krb5/os/sn2princ.c:83) >>> sn2princ.o:(expand_hostname) in archive /usr/lib/libkrb5.a >>> referenced by locate_kdc.c:71 (/usr/src/crypto/krb5/src/lib/krb5/os/locate_kdc.c:71) >>> locate_kdc.o:(_krb5_use_dns_kdc) in archive /usr/lib/libkrb5.a >>> referenced 14 more times [ and so on... ]
Looks good.
Please list the PR or the ports that are fixed by this in the commit log message (the why). Thanks.
i'm not opposed to this, but i don't understand why it's required. is this an upstream bug, or are we building libkrb5 wrongly?
ld: error: undefined symbol: profile_get_string >>> referenced by rc_base.c:54 (/usr/src/crypto/krb5/src/lib/krb5/rcache/rc_base.c:54) >>> rc_base.o:(k5_rc_default) in archive /usr/lib/libkrb5.a
i see, it's explicitly linking against a bunch of static libraries for some reason.
Yes, I plan to provide upstream with the same patch eventually. It's just a "15.0 doors closing" situation.
ld: error: undefined symbol: profile_get_string >>> referenced by rc_base.c:54 (/usr/src/crypto/krb5/src/lib/krb5/rcache/rc_base.c:54) >>> rc_base.o:(k5_rc_default) in archive /usr/lib/libkrb5.ai see, it's explicitly linking against a bunch of static libraries for some reason.
That's why it was spotted after /usr/lib/libkrb5.so lib switch, the simplomon port tries to statically link as much dependencies as possible (to be useful with minimal OCI images), while usually we don't do that.