Use nextbsd-kernel-extensions-graphics, failing loudly (#590)
nextbsd-kernel-extensions is now nextbsd-kernel-extensions-graphics
(nextbsd/nextbsd#551). Fetch the kexts and the Raspberry Pi 5 overlays
from the new name before the old one is reused, and fail when any of
them is missing instead of shipping an image without it
(nextbsd/nextbsd#552). README and issue refs follow.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Use nextbsd-kernel-extensions-graphics, failing loudly
nextbsd-kernel-extensions is now nextbsd-kernel-extensions-graphics
(nextbsd/nextbsd#551). Fetch the kexts and the Raspberry Pi 5 overlays
from the new name before the old one is reused, and fail when any of
them is missing instead of shipping an image without it
(nextbsd/nextbsd#552). README and issue refs follow.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
Fetch NVIDIA kexts from nextbsd-kernel-extensions-nvidia (#589)
Take nvidia-kexts-amd64.tar.gz from the NVIDIA repo instead of
nvidia-kexts.tar.gz from nextbsd-kernel-extensions, and fail when it is
missing instead of shipping an image without it (nextbsd/nextbsd#548).
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
Fetch NVIDIA kexts from nextbsd-kernel-extensions-nvidia
Take nvidia-kexts-amd64.tar.gz from the NVIDIA repo instead of
nvidia-kexts.tar.gz from nextbsd-kernel-extensions, and fail when it is
missing instead of shipping an image without it (nextbsd/nextbsd#548).
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
build.sh: keep shipping the FreeBSD ports repo in /usr/local/etc/pkg/repos
The image still ships /usr/local/etc/pkg/repos/FreeBSD.conf
(pkg.FreeBSD.org/latest) so FreeBSD ports packages install out of the
box. It sits below the NextBSD repo (priority 0 vs 100); NextBSD's pkg
never takes pkg from it and keeps its packages in /usr/local/ and /var/.
No /usr/local/etc/pkg.conf is written. Step 5b uses the same file again.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
build.sh: ship no pkg config of its own and no FreeBSD repo; pkg from NextBSD
NextBSD's pkg reads /private/etc/pkg.conf and /private/etc/pkg/, and
nextbsd-overlays now ships /private/etc/pkg.conf (IGNORE_OSVERSION only;
pkg detects FreeBSD:15:<arch> from /usr/bin/uname's ELF note) and
/private/etc/pkg/NextBSD.conf (continuous-${MACHINE}, priority 100).
- Step 5 no longer writes /usr/local/etc/pkg.conf or
/usr/local/etc/pkg/repos/{FreeBSD,NextBSD}.conf; it checks that the
overlay seed provided both files.
- pkglist.txt drops pkg: it comes from the NextBSD repo through
NextBSD-everything (nextbsd-pkg#19). The list is now empty.
- When pkglist.txt is not empty, the FreeBSD repo it needs is a build-only
REPOS_DIR under $WORK, as $NBREPO is, and is never written into the
image.
- The residue-clean notes name the new config paths.
Closes #545
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
Merge pull request #544 from nextbsd/fix/pkg-db-private-var
build.sh: lay the /private symlinks before pkg installs, so the package database lands in /private/var
Merge pull request #544 from nextbsd/fix/pkg-db-private-var
build.sh: lay the /private symlinks before pkg installs, so the package database lands in /private/var
build.sh: empty the package cache directory after pkg clean
pkg clean's failure is ignored and it leaves files it does not recognise,
so delete whatever remains in private/var/cache/pkg before the image is
baked. No downloaded package ships in the IMG or ISO.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
build.sh: empty the package cache directory after pkg clean
pkg clean's failure is ignored and it leaves files it does not recognise,
so delete whatever remains in private/var/cache/pkg before the image is
baked. No downloaded package ships in the IMG or ISO.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
build.sh: lay the /private symlinks before pkg installs, so the package database lands in /private/var
Step 3 moved the installed var into private/ after NextBSD-everything was
installed. Since nextbsd-userland#375, NextBSD-userland ships
/private/var/log/com.apple.launchd, so private/var already existed and
mv nested var inside it as private/var/var. The package database and the
package cache were stranded there: the image's pkg info listed only pkg,
and the 101 MiB cache escaped step 5b's clean.
Create private/{etc,var,tmp} and the relative etc/var/tmp symlinks at the
start of the pkg branch instead, and drop the move.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
build.sh: lay the /private symlinks before pkg installs, so the package database lands in /private/var
Step 3 moved the installed var into private/ after NextBSD-everything was
installed. Since nextbsd-userland#375, NextBSD-userland ships
/private/var/log/com.apple.launchd, so private/var already existed and
mv nested var inside it as private/var/var. The package database and the
package cache were stranded there: the image's pkg info listed only pkg,
and the 101 MiB cache escaped step 5b's clean.
Create private/{etc,var,tmp} and the relative etc/var/tmp symlinks at the
start of the pkg branch instead, and drop the move.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
build.sh: hide NextBSD live-ISO vfs.pivot output unless verbose boot
The pivot's sysctl prints a "vfs.pivot: ... -> ..." line on every
boot, which is the last [init]-phase progress output left on a quiet
NextBSD live-ISO boot. Send its stdout to /dev/null unless VERBOSE is
set. Its stderr still goes to the console, so a failed pivot is still
visible.
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
build.sh: gate live-ISO init [init] progress behind verbose boot
The live-ISO miniroot init printed its [init] progress trace on every
boot. Route the routine lines through a vlog helper that prints only
when debug.bootverbose is set (or init got -s). start_init() only ever
passes -s to init, never -v, so verbose mode comes from the sysctl
rather than $*. The MISSING/ABSENT/EMPTY error cases, the single-user
banner and resume line, the FATAL line and mount errors still always
print.
Closes #322
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
Assemble all images from nextbsd-pkg again; nextbsd-ci is boot-tests only
96e7330 made ASSEMBLY=artifacts the default for every CI lane, so every image
published since ships no pkg (no binary, no database, no in-image repo config):
pkg update 404s via the base bootstrapper and the installed OS is unowned
(#533). Restore pkg assembly for all images -- build matrix (amd64/arm64) and
the rpi5 lane -- via this repo's own build.sh, and stop checking out nextbsd-ci
for assembly. The img/iso boot tests keep the shared nextbsd-ci harness (the
tests/*-boot-test.sh scripts clone it at the pinned tag themselves), so
nextbsd-ci stays in this repo for boot testing only. The artifacts path remains
available as a manual opt-in.
T9+T11+T7: rename job, stop the ISO dispatch/schedule, redux sweep, harness v0.3.5
- T9 (nextbsd-ci#11): `name: ci` -> `Build NextBSD ISO/IMG` (the only generic
name left in the org).
- T11 (nextbsd-ci#13): remove the `repository_dispatch` (ISO) trigger and the
nightly `schedule`, and the `repository_dispatch` branch in the release
`if`. ISO is the expensive one (qemu, live boot, ISO boot test); the cheap
components it re-validated are all gated upstream (kernel continuous on
push, userland on push per T10, pkg manual-only), so the cascade had no
unique value. `workflow_dispatch` (manual ISO + release) and `pull_request`
(PR img lane) remain; img-test and release now fire on `pull_request` or
manual.
- T7 (nextbsd-ci#7): README `nextbsd-redux` -> `nextbsd`.
- Lockstep: harness pin v0.3.4 -> v0.3.5 (the T8 flake fixes: nextbsd#428
end-state hold, nextbsd#503 teardown, nextbsd#405 marker protocol).
Assemble CI images from the shared nextbsd-ci assembly, never pkg
ASSEMBLY=artifacts (the default; every CI lane) now lays the five
component continuous artifacts (base, kernel, userland, contrib, kexts)
into the rootfs via the SHARED assembly script that lives in nextbsd-ci
(checked out into the workspace at the pinned v0.3.1 release tag, rsynced
into the build VM). One recipe, all consumers: this lane, the userland PR
lane, and the kext lane share it. No pkg anywhere in a CI image — packages
are gated release artifacts.
The inline re-derivation of the same layout that was about to ship is gone:
the Apple /private layout, the overlays /etc seed, the runtime skeleton,
kext auth, offline DBs, and cert bundle all come from the shared script
(SKIP_ASSEMBLE=1 so this lane keeps its own 1.5G root + live ISO + rpi500
media tail). build.sh steps 3/3b are pkg-mode-only now (the shared script
already did them in artifacts mode); step 4 runs in both (idempotent DBs +
the certctl refresh the script can't do on a Linux runner).
ASSEMBLY=pkg (release images) is unchanged: pkg install
[10 lines not shown]
T6 lockstep: pin the shared boot harness to v0.3.0
v0.3.0 = v0.2.3 plus -device virtio-gpu-pci on the amd64 q35 shape (nextbsd/nextbsd-ci#15). The device is unbound and inert for the img/iso login-only boot gates (no graphics kext in the image); both lanes re-run on this PR to confirm.
T4: pin boot tests to shared harness v0.2.3 (banner→prompt login) (#513)
* T4: boot gates run on the shared nextbsd-ci harness @v0.2.1 (login-only)
img-boot-test.sh + iso-boot-test.sh become thin entry points onto the shared
harness (NB_LOGIN_ONLY; the live ISO adds NB_MEDIA=cd): they extract the
zipped artifact, check out nextbsd/nextbsd-ci at v0.2.1 (pinned tag = no drift),
and run harness/boot-test.sh. The loader un-mute dance, the arch-aware qemu
argv, login detection and teardown now come from the shared harness (one place,
every arch, kept green by its selftest) instead of the in-repo copies.
Delete the 1512-line tests/boot-test.sh monolith (nothing in CI invoked it) and
the in-repo tests/loader.exp.inc + tests/qemu-arch.sh (superseded by the
harness's contract.exp.inc + qemu-arch.sh). The jobs' serial-log dumps point at
the harness transcript. Both gates stay NON-GATING as before (not in release's
needs); the gate is the harness exit class.
* Bump the shared-harness pin to v0.2.2 in the thin img/iso boot wrappers
[4 lines not shown]
T4: boot gates run on the shared nextbsd-ci harness @v0.2.1 (login-only)
img-boot-test.sh + iso-boot-test.sh become thin entry points onto the shared
harness (NB_LOGIN_ONLY; the live ISO adds NB_MEDIA=cd): they extract the
zipped artifact, check out nextbsd/nextbsd-ci at v0.2.1 (pinned tag = no drift),
and run harness/boot-test.sh. The loader un-mute dance, the arch-aware qemu
argv, login detection and teardown now come from the shared harness (one place,
every arch, kept green by its selftest) instead of the in-repo copies.
Delete the 1512-line tests/boot-test.sh monolith (nothing in CI invoked it) and
the in-repo tests/loader.exp.inc + tests/qemu-arch.sh (superseded by the
harness's contract.exp.inc + qemu-arch.sh). The jobs' serial-log dumps point at
the harness transcript. Both gates stay NON-GATING as before (not in release's
needs); the gate is the harness exit class.
Bump the shared-harness pin to v0.2.2 in the thin img/iso boot wrappers
v0.2.2 = v0.2.1 (v0.2.0 + login-only) plus a capped post-banner login-wait
window (180s) that probes for a shell quickly instead of waiting out the whole
global budget on an autologin image (the arm64 30-min 'hang').