The Publish container workflow on main fails at the final link. After fixing 6 real build bugs (below), the build compiles everything and dies only on llama.cpp's own HTTP downloader.
Root cause (llama.cpp, not JIC code)
libcommon.a ships common/download.cpp, which calls cpp-httplib (httplib::Client/httplib::Response) for model downloads. In tag b8250 this is unconditional — LLAMA_CURL=ON does not remove it. The bundled cpp-httplib doesn't link in JIC's fully-static build and additionally wants OpenSSL (Could NOT find OpenSSL), so the final link fails with undefined reference to httplib::Client::....
Already fixed (on main via #7 and #9)
- cpp-httplib download URL 404 → raw tagged single-header
- missing
unzip in the build stage
- sqlite-vec amalgamation extracted nothing (
--strip-components=1 on a flat tarball)
SQLITE_CORE defined globally (sqlite3ext.h) — sqlite link clean
- OpenMP undefined refs → link
libgomp
--recurse-submodules on the llama.cpp clone
Recommended fix (needs a maintainer call)
JIC bundles GGUF models locally and never uses llama's downloader, so the cleanest path is one of:
- Pin an llama.cpp tag that predates the in-tree cpp-httplib downloader (older tags use libcurl / have no in-tree HTTP). Lowest-risk, but verify the llama API JIC's
server.cpp uses is unchanged.
- Or compile cpp-httplib as a real implementation TU with
CPPHTTPLIB_OPENSSL_SUPPORT and link OpenSSL.
Either removes the link error. Once a target llama tag is chosen I can finish the Docker/CMake wiring. Everything else (amd64 image, screenshot gate, GHCR publish) is in place and works.
Note: ci-just-in-case is intentionally amd64-only (cross-compiling llama.cpp under QEMU-arm64 is impractical; the fleet is x86_64).
The
Publish containerworkflow onmainfails at the final link. After fixing 6 real build bugs (below), the build compiles everything and dies only on llama.cpp's own HTTP downloader.Root cause (llama.cpp, not JIC code)
libcommon.ashipscommon/download.cpp, which calls cpp-httplib (httplib::Client/httplib::Response) for model downloads. In tag b8250 this is unconditional —LLAMA_CURL=ONdoes not remove it. The bundled cpp-httplib doesn't link in JIC's fully-static build and additionally wants OpenSSL (Could NOT find OpenSSL), so the final link fails withundefined reference to httplib::Client::....Already fixed (on
mainvia #7 and #9)unzipin the build stage--strip-components=1on a flat tarball)SQLITE_COREdefined globally (sqlite3ext.h) — sqlite link cleanlibgomp--recurse-submoduleson the llama.cpp cloneRecommended fix (needs a maintainer call)
JIC bundles GGUF models locally and never uses llama's downloader, so the cleanest path is one of:
server.cppuses is unchanged.CPPHTTPLIB_OPENSSL_SUPPORTand link OpenSSL.Either removes the link error. Once a target llama tag is chosen I can finish the Docker/CMake wiring. Everything else (amd64 image, screenshot gate, GHCR publish) is in place and works.
Note: ci-just-in-case is intentionally amd64-only (cross-compiling llama.cpp under QEMU-arm64 is impractical; the fleet is x86_64).