[Homebrew/Runtime] Read bottle prefixes from their descriptors - #1209
[Homebrew/Runtime] Read bottle prefixes from their descriptors#1209brandonpayton wants to merge 1 commit into
Conversation
51bfd14 to
008d2e0
Compare
008d2e0 to
b8086e4
Compare
Derive deferred-tree relocation from the authenticated receipt destination instead of the runtime default. Keep eager and lazy producers explicit about their planned prefix. Preserve exact metadata checks and cover the published rev22 Dash receipt alongside the current Kandelo layout.
b8086e4 to
8a66801
Compare
Phase B-1 matrix build status —
|
| Package | Arch | Status | Sha |
|---|---|---|---|
| kandelo-sdk | wasm32 | failed | — |
| mariadb-test | wasm32 | failed | — |
| mariadb-vfs | wasm32 | failed | — |
| mariadb-vfs | wasm64 | failed | — |
| redis-vfs | wasm32 | failed | — |
| rootfs | wasm32 | failed | — |
Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.
|
Architectural follow-up Keep this PR focused and preserve its tested head. In a separate The VFS should own only general authenticated materialization, path The follow-up must preserve the digest, relocated-size, hard-link, |
Why
A published bottle tree records the exact guest paths and file sizes it
was built to create. Those values are part of the artifact contract.
The immutable rev22 shell uses the older
/home/linuxbrew/.linuxbrewprefix. Its Dash receipt starts at 929 bytes and becomes 943 bytes after
Homebrew placeholder relocation.
PR #1188 changed Kandelo's default prefix to
/opt/kandelo/homebrew.Current host code then relocated the same old receipt to the new prefix,
which produces 938 bytes. The VFS correctly rejected that result
because it did not match the descriptor's recorded 943-byte size. In
the shell demo this surfaced as
/bin/sh: I/O error.The runtime default should choose paths for new artifacts. It must not
reinterpret an immutable artifact that already records a different path.
What changes
each tree descriptor.
to stay under that descriptor-owned package prefix.
the corrected shared host inputs.
The generated package identities changed because the legacy recipes
list the shared host VFS files as build inputs. The runtime fix itself
does not require package rebuilds. Legacy staging still rebuilt six
cache identities because those recipes broadly include shared host/VFS
files. Those outputs are transition bookkeeping, not inputs to the
rev22 proof. Regenerating the projection records the new source
identity; regenerating the bundled resolver keeps installed and
source-checkout resolution in sync.
This compatibility behavior does not make Linuxbrew Kandelo's default.
It only honors already-published immutable metadata. Newly built
artifacts continue to use
/opt/kandelo/homebrew.Validation
d7540878breproduces the exact rev22 failure with thepublic Dash bottle.
600,761 bytes and its relocated receipt is the expected 943 bytes.
git diff --checkpassed.This changes shared host/VFS behavior. It does not change the kernel or
the Kandelo ABI.