CI / build (pull_request) Successful in 13s
slim now works with any Containerfile by injecting distro-agnostic scripts at build time: - /slim/init: mounts special filesystems, configures networking (static QEMU slirp), sets up cgroup2, timezone, and rootless container prereqs. Parses slim.cmd=<base64> from the kernel cmdline for runtime overrides, otherwise execs /slim/exec. - /slim/exec: generated from the image's CMD/ENTRYPOINT (via podman image inspect), overridable via --cmd at build and run time. Changes: - New src/inject.rs: inspect image config, infer command, generate /slim/exec script, inject /slim/ into mounted rootfs - New src/scripts/slim-init.sh: the universal init script (include_str!) - build.rs: rename --init to --cmd, inject scripts before packing, drop Meta::save, restructure to ensure unmount always runs - qemu.rs: hardcode init=/slim/init, add --cmd (base64 on cmdline), drop Meta::load, add -no-reboot - Remove src/meta.rs and meta.toml (no longer needed) - Cargo.toml: add serde_json + base64, remove unused walkdir + cpio + toml - Example Containerfiles simplified to plain FROM + CMD - New example/test.sh for manual verification - README updated for new workflow
18 lines
327 B
TOML
18 lines
327 B
TOML
[package]
|
|
name = "slim"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
[dependencies]
|
|
anyhow = "1.0.104"
|
|
base64 = "0.22"
|
|
clap = { version = "4.6.6", features = ["derive"] }
|
|
flate2 = "1.1.9"
|
|
serde = { version = "1.0.229", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
xdg = "3.0.0"
|
|
tempfile = "3.27.0"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3.27.0"
|