FDS/OS 1.0 fixes
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Clean upstream and writable Void workspace
|
||||
|
||||
FDS keeps upstream source separate from its build state:
|
||||
|
||||
| Path | Ownership and purpose |
|
||||
| --- | --- |
|
||||
| `vendor/void-packages/` | Clean upstream Git submodule at `VOID_PACKAGES_COMMIT` |
|
||||
| `packages/` | Authoritative FDS base-package sources, including Dasung |
|
||||
| `examples/software/*/void/` | Authoritative example PROGRAM package sources |
|
||||
| `.host/void-packages/` | Generated writable checkout, package copies, local configuration, caches and build container |
|
||||
|
||||
`make bootstrap` creates the build checkout locally at the pinned commit. It
|
||||
copies Git objects independently; there is no network fetch for this step, no
|
||||
Git alternates dependency and no hardlinks into the upstream source. Normal
|
||||
package bootstrap still uses its configured repositories.
|
||||
|
||||
`tools/prepare-void` copies FDS package overlays into the writable checkout and
|
||||
retains the existing checks against replacing upstream packages or overwriting
|
||||
changed generated copies. Workstation builds default to the same checkout.
|
||||
Explicitly selecting a Git submodule with `--void-packages` is rejected before
|
||||
source files or build state can be written there.
|
||||
|
||||
The workspace helper migrates old, matching generated files and build caches by
|
||||
renaming them. It compares every file, mode and symlink in each known source
|
||||
copy first. Unknown upstream files, staged changes, independent edits and
|
||||
conflicting destinations stop migration. Run builds and migration sequentially.
|
||||
The workspace lock prevents two preparations from changing the layout together.
|
||||
Python is already a build-host prerequisite; this introduces no new dependency.
|
||||
|
||||
For this checkout, the 58 staged additions matched the main-repository sources.
|
||||
Their local commit `47580322e801ef195c9bf279fd1fe4d8a1f723e9` and both staged
|
||||
patches were saved under `.host/backups/void-overlays-20260922-134611/` before
|
||||
unstaging those copies. The parent gitlink was restored to upstream commit
|
||||
`02a3cbc132c3c4a3a9d59e9b98f517af5dd11cd1`, matching the declared pin. All eleven
|
||||
package directories, `hostdir`, `masterdir-x86_64` and `etc/conf` were moved into
|
||||
the build checkout. No upstream tracked source was changed.
|
||||
|
||||
An explicit future pin update advances the writable checkout without replacing
|
||||
its caches. Git refuses updates that would overwrite local files. Continue to
|
||||
record the parent gitlink and `VOID_PACKAGES_COMMIT` together.
|
||||
|
||||
Frozen-input creation uses the separate build checkout. New restores recreate
|
||||
that layout. Older saved projects retain their
|
||||
original layout and scripts; the frozen 0.1.0 release is untouched. Restore
|
||||
compatibility tests do not imply a new reproducibility or physical-hardware claim.
|
||||
|
||||
## Validation
|
||||
|
||||
Fresh checks for this change passed:
|
||||
|
||||
- `make bootstrap`, `make smoke-test`, and `make check`: migrated container use,
|
||||
ARM/glibc package compilation, static-musl compilation, clean upstream state,
|
||||
exact overlay/cache preservation, shallow pin updates, rejection of independent
|
||||
edits and source conflicts, and cleanup protections.
|
||||
- `make workstation-test`: `out/workstation-images.ckkodex6`; real Void source
|
||||
builds from `.host/void-packages`, image validation and confirmed file write/readback.
|
||||
Selecting the upstream submodule as a build target is rejected without writes.
|
||||
- `make emulator-test`: `out/emu-test.op5azhlm`; full twelve-bay PROGRAM/DATA,
|
||||
foreground terminal, eject/unplug, legacy reading and service-restart checks.
|
||||
- `make release-contract-test`: `out/m12-release-contracts.wmsfrcl0`; both separate
|
||||
and legacy frozen-layout restores, retained source caches, local offline
|
||||
repositories and existing tamper/release-comparison checks.
|
||||
- Documentation links, formatting, Python syntax and a final empty upstream Git
|
||||
status, including ignored files, were checked.
|
||||
|
||||
Logs are in `out/logs/void-workspace/`; source and log hashes, pins, native binary
|
||||
hashes and fixture results are recorded in `out/manifests/void-workspace-acceptance.json`.
|
||||
The optional host-native ARM execution shortcut was skipped in smoke-test. ARM
|
||||
execution was exercised by the full emulator suite. Physical hardware was not used.
|
||||
|
||||
The first emulator attempt (`out/emu-test.463emq8u`) failed on an empty cartridge
|
||||
IPC response during initial discovery in its admin VM. The complete rerun passed
|
||||
without target-system changes. SYSTEM, kernel and initramfs hashes matched the
|
||||
previous accepted inputs. The cause of that first response failure was not
|
||||
established; its command/serial logs are retained. Future failures now collect
|
||||
live service diagnostics before VM shutdown, without retrying failed commands
|
||||
or relaxing their acceptance conditions.
|
||||
Reference in New Issue
Block a user