Skip to content

feat(prebuilt): add krb5-gss, a runtime-only GSSAPI shim - #4

Merged
jing2uo merged 1 commit into
mainfrom
add/krb5-gss
Aug 20, 2026
Merged

feat(prebuilt): add krb5-gss, a runtime-only GSSAPI shim#4
jing2uo merged 1 commit into
mainfrom
add/krb5-gss

Conversation

@jing2uo

@jing2uo jing2uo commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

com.interactivebrokers.ibkrdesktop bundles Qt 6.8.3, and IBKR's build of libQt6Network carries a hard DT_NEEDED on libgssapi_krb5.so.2:

$ readelf -d libQt6Network.so.6.8.3 | grep NEEDED
 (NEEDED)  Shared library: [libgssapi_krb5.so.2]

org.freedesktop.Platform//25.08 ships no krb5 at all, so without it the loader fails on libQt6Network and the app never draws a window — a link-time dependency, unrelated to whether anyone authenticates with Kerberos.

Today that app compiles krb5 from source on every build and ships the result inside its OSTree commit. This stack replaces that.

Scope. Only the load-time closure of libgssapi_krb5.so.2:

libgssapi_krb5.so.2 -> libkrb5.so.3, libk5crypto.so.3, libcom_err.so.3, libkrb5support.so.0

A full make install also lays down the KDC/kadmin libraries (libkdb5, libkadm5srv, libkadm5clnt, libgssrpc, libkrad, libverto), the lib/krb5 plugin tree, headers, man pages, pkg-config files and translations — none of which a client-side GSSAPI consumer opens. Dropping them: ~13 MB -> 6.6 MB (1.9 MB compressed).

Consumed as extra-data, not as an archive build module, so the archive is fetched from this repository's release at install time and never enters FlatPark's OSTree repository. With a single consumer, content addressing has nothing to deduplicate, so keeping it out of the repo is the only way to not pay for it. The README gains a section on the two consumption modes.

Verified locally against org.freedesktop.Sdk//25.08:

  • built tree is exactly the ten files above, 6.6 MB
  • every NEEDED outside the set is libresolv/libc, both in the Platform
  • no RPATH/RUNPATH on any library, so LD_LIBRARY_PATH governs cleanly
  • with the archive unpacked at /app/extra/krb5-gss/, IBKR's libQt6Network resolves libgssapi_krb5.so.2 => /app/extra/krb5-gss/lib/libgssapi_krb5.so.2, and the app launches

🤖 Generated with Claude Code

A payload that bundles its own Qt built with the GSSAPI feature carries a hard
DT_NEEDED on libgssapi_krb5.so.2 in libQt6Network, and
org.freedesktop.Platform//25.08 ships no krb5 at all — the loader fails on
libQt6Network and the app never starts, whether or not anything ever
authenticates with Kerberos. First consumer: com.interactivebrokers.ibkrdesktop.

The stack ships only the load-time closure of libgssapi_krb5.so.2. A full
`make install` also lays down the KDC and kadmin libraries, the lib/krb5 plugin
tree, headers, man pages and translations; dropping them takes it from ~13 MB
to 6.6 MB.

Meant to be consumed as extra-data rather than as a build-time archive module,
so the bytes travel over GitHub's bandwidth at install time instead of entering
FlatPark's OSTree repository — documented in the README.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jing2uo
jing2uo merged commit 4f153dd into main Aug 20, 2026
1 check passed
@jing2uo
jing2uo deleted the add/krb5-gss branch August 20, 2026 09:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant