Summary
mcpp toolchain install llvm 22.1.8 on a bare machine produces binaries that cannot exec: the xim llvm payload is patchelf'd with an ELF interpreter (and RUNPATH) pointing into …/registry/data/xpkgs/xim-x-glibc/2.39/…, but the install does not pull the xim-x-glibc runtime package. First use then fails with exit 127 (ENOENT on the interpreter):
error: 'env LD_LIBRARY_PATH=…/xim-x-llvm/22.1.8/lib:… …/xim-x-llvm/22.1.8/bin/clang++ --version 2>&1' exited with status 127
Seen on GitHub ubuntu-latest (opencv-m CI, mcpp 0.0.101 release tarball flow — run 29822673295, job linux-llvm-22). Local machines never notice because something else (e.g. an earlier mcpp toolchain install gcc) already parked the glibc runtime.
Evidence (local, same payloads):
$ file -L …/xpkgs/xim-x-llvm/22.1.8/bin/clang++
ELF 64-bit LSB pie executable … interpreter …/xpkgs/xim-x-glibc/2.39/lib64/ld-linux-x86-64.so.2
$ readelf -d clang | grep RUNPATH
…/xim-x-llvm/22.1.8/lib:…/xim-x-glibc/2.39/lib64:…/xim-x-zlib/1.3.1/lib:…/xim-x-libxml2/2.13.5/lib:…
xim-x-gcc binaries have the same interpreter, and the gcc install path evidently DOES provide the runtime (the long-standing gcc CI legs work on bare runners) — so this looks like a missing runtime dependency in the llvm xim package (glibc, possibly zlib/libxml2 from the RUNPATH too), not an engine problem.
Repro
# bare linux runner, mcpp 0.0.101 release tarball on PATH
mcpp toolchain install llvm 22.1.8
mcpp toolchain default llvm@22.1.8
mcpp build # -> clang++ --version probe exits 127
Workaround
Install gcc first (mcpp toolchain install gcc 16.1.0) — it parks xim-x-glibc and the llvm binaries start working. opencv-m CI does this now (comment links here).
Environment: mcpp 0.0.101 release tarball, ubuntu-latest (24.04).
Summary
mcpp toolchain install llvm 22.1.8on a bare machine produces binaries that cannot exec: the xim llvm payload is patchelf'd with an ELF interpreter (and RUNPATH) pointing into…/registry/data/xpkgs/xim-x-glibc/2.39/…, but the install does not pull thexim-x-glibcruntime package. First use then fails with exit 127 (ENOENT on the interpreter):Seen on GitHub
ubuntu-latest(opencv-m CI, mcpp 0.0.101 release tarball flow — run 29822673295, job linux-llvm-22). Local machines never notice because something else (e.g. an earliermcpp toolchain install gcc) already parked the glibc runtime.Evidence (local, same payloads):
xim-x-gccbinaries have the same interpreter, and the gcc install path evidently DOES provide the runtime (the long-standing gcc CI legs work on bare runners) — so this looks like a missing runtime dependency in the llvm xim package (glibc, possibly zlib/libxml2 from the RUNPATH too), not an engine problem.Repro
Workaround
Install gcc first (
mcpp toolchain install gcc 16.1.0) — it parks xim-x-glibc and the llvm binaries start working. opencv-m CI does this now (comment links here).Environment: mcpp 0.0.101 release tarball, ubuntu-latest (24.04).