92 lines
4.3 KiB
Markdown
92 lines
4.3 KiB
Markdown
# Reclaim build space
|
|
|
|
Run these from the repository root after stopping builds and test VMs:
|
|
|
|
```sh
|
|
make clean-preview
|
|
make clean
|
|
```
|
|
|
|
The preview lists every selected directory, its combined allocated footprint,
|
|
and the generated directories being kept. It does not delete files. `make clean`
|
|
recalculates the selection and deletes it without a confirmation prompt. Repeat
|
|
it whenever old build/test workspaces accumulate. It needs Python 3, Git and GNU
|
|
`du`, already used by the build host; it needs no Rust compilation, downloads,
|
|
root privileges or new Python packages.
|
|
|
|
## What is removed
|
|
|
|
- Old generated rootfs, kernel, initramfs, SYSTEM, boot, recovery and internal
|
|
image workspaces that are no longer referenced by published output links.
|
|
- Old generated integration-test directories, including their disk images,
|
|
disposable test DATA overlays and local diagnostic logs. The current results
|
|
referenced by `*-latest` links or workstation current-pointer files are kept.
|
|
- Old generated package staging copies and service compilation directories.
|
|
- This checkout's `target/` Rust compilation output. Exported executables in
|
|
`out/` and `out/workstation/` remain available. The next Rust build recompiles
|
|
as needed using the retained Cargo source cache.
|
|
|
|
The command recognizes the specific temporary-directory names produced by the
|
|
repository's builders and tests. It never treats all of `out/` as disposable.
|
|
Unknown names are left alone, including ad hoc diagnostic experiments.
|
|
|
|
## What is kept
|
|
|
|
- Current rootfs archives for every profile, kernel, initramfs, boot, recovery,
|
|
internal disk and SYSTEM images, through their published symlinks. Links in
|
|
`out/manifests/` and links within retained workspaces also retain their targets.
|
|
- Latest published test runs, the current workstation image/emulator fixtures,
|
|
the current Dasung s6 database, and the newest `m9-images.*` fixture needed by
|
|
the media tests. These can still occupy tens of GiB.
|
|
- Signed releases such as `out/fds-os-0.1.0/`, input snapshots such as
|
|
`out/inputs-m12-v5/`, and independent restored trees such as
|
|
`out/rebuild-m12-v5-a/`. These remain available for release reproduction.
|
|
- User-created cartridge images, installed software trees and personal emulator sessions
|
|
such as `out/my-emulator/`, including their persistent DATA overlays.
|
|
- `out/logs/`, `out/manifests/`, packages, downloads, `out/cache/`, `.host/`, the
|
|
writable Void checkout/build container under `.host/void-packages/`, and
|
|
Cargo/Rustup caches outside this checkout.
|
|
- Git-tracked files and any recognized workspace containing a `.fds-keep` entry.
|
|
|
|
To retain an older generated workspace for investigation, put a marker in it
|
|
before cleaning:
|
|
|
|
```sh
|
|
touch out/m8-vm.YOUR_RUN/.fds-keep
|
|
make clean-preview
|
|
```
|
|
|
|
Replace `YOUR_RUN` with the actual directory suffix. Remove that marker when the
|
|
workspace is disposable again. Reserve the generated names for the build/test
|
|
tools; store personal sessions and images under your own names.
|
|
|
|
## Build-space management
|
|
|
|
Image builds and VM suites retain workspaces for diagnosis and preserve the last
|
|
successful published image. Repeat `make clean-preview` and `make clean` after
|
|
completed build batches. Cleanup is explicit; there is no automatic retention
|
|
limit during a build. Full image builds require tens of GiB per independent tree.
|
|
|
|
## Running safely and rebuilding
|
|
|
|
Use cleanup sequentially, just like the existing shared-container builds. It
|
|
holds the existing rootfs/base-package/image-tool locks, excludes another
|
|
cleanup, and refuses mounted candidate paths or observable active build/VM
|
|
processes. These checks are safeguards, not permission to start a separate build
|
|
while cleanup is running. It never follows a candidate symlink into another
|
|
directory, and refuses a symlinked `out/` entirely. Only the checkout containing
|
|
the script is eligible; there is no arbitrary deletion-path option.
|
|
|
|
Existing published images and native tools remain usable after cleanup. To
|
|
refresh exported binaries, run `make tooling` or `make workstation`. To rebuild
|
|
the smoke-test artifacts and rerun build checks:
|
|
|
|
```sh
|
|
make smoke-test
|
|
make check
|
|
```
|
|
|
|
After cleanup, run the smoke test before `make check`, since the checks need its
|
|
rebuilt executable. Cleanup implementation and validation details are in the
|
|
[developer notes](developer/cleanup.md).
|