Clarify local runtime bundle bootstrap
Stop presenting make runtime-bundle as a turnkey fresh-checkout bootstrap\nwhen the checked-in manifest is intentionally empty. The manifest comments,\nruntimebundle error messages, Make help, README, and AGENTS docs now all\ndescribe the same local-first flow: stage an archive, use a separate local\nmanifest copy with url/sha256, then bootstrap ./runtime from that manifest.\n\nKeep the existing package/fetch commands intact, and add a small runtimebundle\nregression test so the local-manifest guidance does not drift again.\n\nValidated with make help and GOCACHE=/tmp/banger-gocache go test\n./internal/runtimebundle.
This commit is contained in:
parent
ccba07ec68
commit
617f677c9b
6 changed files with 66 additions and 17 deletions
46
README.md
46
README.md
|
|
@ -30,22 +30,43 @@ The bundle contains:
|
|||
- `id_ed25519`
|
||||
- the helper scripts used by image builds and installs
|
||||
|
||||
Bootstrap a source checkout explicitly:
|
||||
Bootstrap a source checkout from a local or published runtime archive. The
|
||||
checked-in [`runtime-bundle.toml`](/home/thales/projects/personal/banger/runtime-bundle.toml)
|
||||
is a template and intentionally ships with empty `url` and `sha256`.
|
||||
|
||||
If you need to create a local archive first, do that from a checkout or machine
|
||||
that already has a populated `./runtime/` tree:
|
||||
```bash
|
||||
make runtime-bundle
|
||||
make runtime-package
|
||||
cp dist/banger-runtime.tar.gz /path/to/fresh-checkout/dist/
|
||||
```
|
||||
|
||||
`make runtime-bundle` reads [`runtime-bundle.toml`](/home/thales/projects/personal/banger/runtime-bundle.toml),
|
||||
downloads the published bundle, verifies its SHA256, and unpacks it into
|
||||
`./runtime/`. `make install` will not fetch artifacts for you. The manifest
|
||||
must point at a published or locally staged bundle before bootstrap can work.
|
||||
In the fresh checkout:
|
||||
```bash
|
||||
cp runtime-bundle.toml runtime-bundle.local.toml
|
||||
```
|
||||
|
||||
Edit `runtime-bundle.local.toml` to point at the staged archive and checksum:
|
||||
```toml
|
||||
url = "./dist/banger-runtime.tar.gz"
|
||||
sha256 = "<sha256 printed by make runtime-package>"
|
||||
```
|
||||
|
||||
Then bootstrap `./runtime/` with the local manifest copy:
|
||||
```bash
|
||||
make runtime-bundle RUNTIME_MANIFEST=runtime-bundle.local.toml
|
||||
```
|
||||
|
||||
`url` may be a relative path, absolute path, `file:///...` URL, or HTTP(S)
|
||||
URL. `make install` will not fetch artifacts for you.
|
||||
|
||||
## Build
|
||||
```bash
|
||||
make runtime-bundle
|
||||
make build
|
||||
```
|
||||
|
||||
Run `make build` after `./runtime/` has been bootstrapped.
|
||||
|
||||
Install into `~/.local/bin` by default, with the runtime bundle under
|
||||
`~/.local/lib/banger`:
|
||||
```bash
|
||||
|
|
@ -206,16 +227,19 @@ make rootfs
|
|||
is not available, pass an explicit `--base-rootfs` to `./make-rootfs.sh`.
|
||||
|
||||
## Maintaining The Runtime Bundle
|
||||
Maintain the checked-in manifest in [`runtime-bundle.toml`](/home/thales/projects/personal/banger/runtime-bundle.toml)
|
||||
with the published bundle URL, SHA256, and `bundle_metadata` defaults.
|
||||
The checked-in [`runtime-bundle.toml`](/home/thales/projects/personal/banger/runtime-bundle.toml)
|
||||
is a template. Keep `bundle_metadata` accurate there, but use a separate local
|
||||
manifest copy when you need concrete `url` and `sha256` values for bootstrap
|
||||
testing or publication.
|
||||
|
||||
Package a local `./runtime/` tree for publication:
|
||||
Package a local `./runtime/` tree into an archive:
|
||||
```bash
|
||||
make runtime-package
|
||||
```
|
||||
|
||||
That writes `dist/banger-runtime.tar.gz` and prints its SHA256 so you can update
|
||||
the manifest before publishing or testing bootstrap changes.
|
||||
a local manifest copy before testing bootstrap changes or publishing the
|
||||
archive elsewhere.
|
||||
|
||||
## Remaining Shell Helpers
|
||||
The runtime VM lifecycle is managed through `banger`. The remaining shell scripts are not the primary user interface:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue