Add redis workload with OCI image
Add a simple redis workload to the CI pipeline, such that we can ensure future changes are not breaking features used by real software. Please see https://github.com/sysprog21/elfuse/pull/259
Do not merge this PR before https://github.com/sysprog21/elfuse/pull/259 is merged. Currently, the PR stack is oci/setup -> elfuse-redis-server (https://github.com/sysprog21/elfuse/pull/259) -> this PR https://github.com/sysprog21/elfuse/pull/270
Summary by cubic
Adds end-to-end OCI image support with the elfuse-oci CLI and a macOS case‑sensitive APFS sparsebundle rootfs with per‑run COW clones. Includes Linux‑compatible /proc/self/{maps,smaps} to pass Redis BGSAVE fork/COW checks, and CI that boots real images under HVF plus layout conformance and interop.
-
New Features
elfuse-ociCLI:pull,inspect,list,unpack,run,rmi,prune, with a spec‑compliant OCI image‑layout store, ref pinning, and reachability GC; lifecycle commands protect live runs and--keepclones via per‑digest advisory locks.- Darwin case‑sensitive rootfs via APFS sparsebundles with per‑run COW clones;
--plain-rootfskeeps a directory mode for portability. runresolves Entrypoint/Cmd/User/Env/WorkingDir, guarantees a sane PATH, injects host‑truth/etc/{resolv.conf,hosts,hostname}, and execselfuse; non‑Darwin reports a clear error without--plain-rootfs.elfuseadds--user,--workdir, and--env, with bring‑up factored intoelfuse_launchand reused byelfuse-oci.- CI: OCI store conformance/interop (
crane/skopeo/umoci), darwin sparsebundle tests, run/exec checks (AF_UNIX pathname sockets and dynamic‑interpreter resolution), and per‑image workloads (python/node/go/jvm/c/redis) that boot under HVF.
-
Migration
- Go is required to build
elfuse-oci;makebuilds it whengois on PATH (otherwise it’s skipped). - Default store is
$ELFUSE_OCI_STOREor~/.local/share/elfuse/oci; self‑hosted macOS runners keep a warm store per workload.
- Go is required to build