OpenRiot v8.0.2: Ask the Disk First
“The machine had learned to check the door, but it still walked the whole hallway every morning, opening every lock, reading every label, and announcing each room before it knew whether anything had changed. The rooms were the same. The labels were the same. Only the walking was new. So we taught it to ask one question first: is the disk already what we think it is? When the answer was yes, it stopped walking.” – The OpenRiot Crew, v8.0.2
Release Overview
OpenRiot 8.0.2 is a maintenance release for the setup path. It does not change the desktop. It changes how much work setup does before it knows whether work is needed.
The package update was the biggest offender. Every setup.sh run
executed pkg_add -Iu, which scans the full package index and can
take up to an hour even when every pinned package is already installed.
The installer now asks whether the installed packages match the pins
first. If they do, the update is skipped. If they do not, the full
update runs once.
The release also finishes the setup output cleanup: package messages
now use the same [INFO] and [WARN] prefixes as the rest of the
installer, and the documentation no longer tells users to run
pkg_add -u when setup already does it.
Total changes: one fast package check, one conditional update, and documentation that stops repeating the work.
Ask the Disk First
The old flow was unconditional:
pkg_add -Iu
That command is correct after a base upgrade. It is wasteful on the next run. Version matching scans the package index, resolves dependencies, and reports every package before deciding most of them are already current.
The new command is silent and local:
openriot --packages-current
It compares install/packages.yaml against pkg_info and exits:
0when every pin is installed at the exact version1when any pin is missing or different
Setup now runs the full update only when the check fails:
if ! run_openriot --packages-current "$LOG_FILE"; then
run_openriot --pkg-update "$LOG_FILE"
fi
The first 8.0 setup still runs the full update. The next setup on the same release skips it. An 8.1 release changes the pins, so the check fails once and the update runs again.
Somewhere a vendor is reinstalling the same packages every launch and calling it a feature. We ask the disk first.
The Package Line Learns Its Prefix
The update message was the only line in setup without a prefix:
Updating packages from OpenBSD 8.0 stable...
It now matches the rest of the output:
[INFO] Updating packages from OpenBSD 8.0 stable...
[WARN] This can take up to an hour.
The warning is honest about the worst case. The shorter message fits a normal terminal without wrapping.
The Manual Tells the Truth
The upgrade guide had three corrections:
- Backup is optional. The heading now says so, and the text says skipping it removes the only rollback path.
- The 1.1G figure stays. That is OpenBSD’s official
/usrrequirement. The sets are smaller, but the guide’s margin is the number to use. pkg_add -uis not a user step. Setup runspkg_add -Iubefore installing pins. The manual now says so instead of asking the user to repeat it.
sysmerge remains recommended. fw_update remains optional.
pkg_add -u remains the fallback when setup cannot complete.
🧾 Files Changed
| File | Change |
|---|---|
setup.sh |
Conditional package update |
source/installer/cmd.go |
NEW PackagesCurrent check |
source/commands/commands.go |
NEW --packages-current command |
[INFO] package update line |
|
| Shorter one-hour warning | |
install/openriot |
Rebuilt with the new check |
README.md |
Backup optional, setup handles packages |
docs/Migration-8.0.md |
Backup optional, package steps corrected |
🗣️ Final Words
“The disk had not changed, but the machine kept asking anyway, because asking was the only motion it knew. So we gave it a question it could answer in one breath: are the pins already here? When the answer was yes, the hallway stayed dark and the morning stayed short. The people who sell busywork will call that skipping. We call it knowing when the work is already done.” – The OpenRiot Crew, v8.0.2