761e0d9de7
The literal task 'build ALL KDE packages' cannot be 100% completed because 12 packages require upstream dependencies not available on Redox: - kirigami + plasma* (4): QML JIT disabled — no QQuickWindow/QQmlEngine - kwin real build (1): Qt6::Sensors port needed - breeze + kf6-kio + kf6-knewstuff + kde-cli-tools (4): source issues - plasma extras (3): transitive blockers What WAS completed: - Cookbook topological sort fix (root cause — all deps now correct order) - kf6-attica recipe (183 files, 2.4MB pkgar) - 12 I2C/GPIO/UCSI daemons archived as durable patches - Source archival system (make sources) - Config + all docs synced, no contradictions
75 lines
2.8 KiB
Bash
Executable File
75 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# validate-vm-network-baseline.sh - Validate the Red Bear OS Phase 2 VM network baseline
|
|
#
|
|
# This is a repo-level validation helper for the minimal boot networking chain:
|
|
# pcid-spawner -> smolnetd -> dhcpd -> netctl --boot
|
|
#
|
|
# It verifies the config and init surfaces that must be present for the default
|
|
# wired DHCP profile to come up in a QEMU/virtio-net baseline image.
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
|
|
fail() {
|
|
printf '❌ %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
pass() {
|
|
printf '✅ %s\n' "$1"
|
|
}
|
|
|
|
require_file() {
|
|
local path="$1"
|
|
[[ -f "$ROOT/$path" ]] || fail "missing file: $path"
|
|
}
|
|
|
|
require_pattern() {
|
|
local path="$1"
|
|
local pattern="$2"
|
|
local message="$3"
|
|
grep -Eq "$pattern" "$ROOT/$path" || fail "$message ($path)"
|
|
}
|
|
|
|
printf '=== Red Bear OS VM Network Baseline Validation ===\n'
|
|
printf 'Root: %s\n\n' "$ROOT"
|
|
|
|
require_file "config/redbear-minimal.toml"
|
|
require_file "config/redbear-netctl.toml"
|
|
require_file "recipes/core/base/source/init.d/00_pcid-spawner.service"
|
|
require_file "recipes/core/base/source/init.d/10_smolnetd.service"
|
|
require_file "recipes/core/base/source/init.d/10_dhcpd.service"
|
|
require_file "recipes/core/base/recipe.toml"
|
|
|
|
require_pattern "config/redbear-minimal.toml" 'path = "/etc/netctl/active"' \
|
|
'redbear-minimal must install /etc/netctl/active'
|
|
require_pattern "config/redbear-minimal.toml" 'data = "wired-dhcp\\n"' \
|
|
'redbear-minimal must enable wired-dhcp by default'
|
|
pass 'redbear-minimal enables the wired-dhcp profile by default'
|
|
|
|
require_pattern "config/redbear-netctl.toml" 'path = "/usr/lib/init.d/12_netctl.service"' \
|
|
'redbear-netctl config must install the boot service'
|
|
require_pattern "config/redbear-netctl.toml" '"10_smolnetd.service"' \
|
|
'netctl boot service must reference smolnetd'
|
|
require_pattern "config/redbear-netctl.toml" '"10_dhcpd.service"' \
|
|
'netctl boot service must reference dhcpd'
|
|
require_pattern "config/redbear-netctl.toml" 'args = \["--boot"\]' \
|
|
'netctl boot service must run netctl --boot'
|
|
pass 'netctl boot service wiring is present'
|
|
|
|
require_pattern "recipes/core/base/source/init.d/10_smolnetd.service" '"00_pcid-spawner.service"' \
|
|
'smolnetd must start after pcid-spawner'
|
|
require_pattern "recipes/core/base/source/init.d/10_dhcpd.service" '"10_smolnetd.service"' \
|
|
'dhcpd must start after smolnetd'
|
|
pass 'base init ordering links pcid-spawner -> smolnetd -> dhcpd'
|
|
|
|
require_pattern "recipes/core/base/recipe.toml" 'virtio-netd' \
|
|
'base recipe must build virtio-netd for VM networking'
|
|
pass 'base recipe includes virtio-netd'
|
|
|
|
printf '\nValidation chain:\n'
|
|
printf ' pcid-spawner -> smolnetd -> dhcpd -> netctl --boot -> wired-dhcp\n'
|
|
printf '\nAll required Phase 2 VM-network baseline surfaces are present.\n'
|