# Convention: illumos ELF and RUNPATH illumos linking is not Linux linking. Recipes that assume glibc/Linux behaviour break. - **libc is illumos libc**, not glibc. Don't assume glibc-only symbols, headers, or `/lib/x86_64-linux-gnu` layouts. - **Library resolution is via RUNPATH** in the ELF. Set it correctly so the binary finds its own closure. `$ORIGIN` is supported and is the right tool for relocatable `$out/lib` layouts. - **`NEEDED` must be satisfiable** from the recorded references. The cache classifier won't publish a leaf whose closure can't resolve. - **Build inputs legitimately reference `/usr`.** Seeds and the gate-proto point at `/usr` by design — that's correct for a build input, not a defect. They are a protected durability class and are **not** judged by the leaf-installability gate. If you're packaging an input, don't try to scrub `/usr` out of it. - **Sections differ.** illumos man pages use sections like `1m` (admin), `3c`/`3*`, `7d`, `9*`. Ship them under `share/man/manN` accordingly. The publication validator does **not** enforce RUNPATH/NEEDED itself — that audit is the build team's. But if the closure doesn't resolve on a real system, the package is not installable and won't survive classification.