#!/usr/bin/env bash set -euo pipefail WORK_DIR="${MONTANAOS_WORK:-$HOME/montanaos-build}" DEVICE="${DEVICE:-komodo}" MONTANAOS_ROOT="$(cd "$(dirname "$0")/.." && pwd)" LOCK_FILE="$MONTANAOS_ROOT/MONTANAOS_VERSIONS.lock" if [[ ! -f "$LOCK_FILE" ]]; then echo "ERROR: $LOCK_FILE not found. Phase 1 of ROADMAP must close first." exit 1 fi cd "$WORK_DIR/grapheneos" KERNEL_DIR="kernel/google/$DEVICE" DEVICE_DIR="device/google/$DEVICE" if [[ ! -d "$KERNEL_DIR" ]]; then echo "ERROR: kernel directory not found: $KERNEL_DIR" echo "Did you run sync-grapheneos.sh successfully?" exit 1 fi for patch in "$MONTANAOS_ROOT/kernel/patches"/*.patch; do [[ -f "$patch" ]] || continue echo "Checking $(basename "$patch") against $KERNEL_DIR" if git -C "$KERNEL_DIR" apply --check "$patch" 2>/dev/null; then git -C "$KERNEL_DIR" apply "$patch" echo " applied" else echo " WARN: $(basename "$patch") did not apply cleanly, manual merge required" echo " Note: until Phase 2 of ROADMAP closes, kernel patches are sketches," echo " not expected to apply against current upstream." fi done cp "$MONTANAOS_ROOT/system/init.montana-node.rc" "$DEVICE_DIR/init.montana-node.rc" cp "$MONTANAOS_ROOT/system/montana-watchdog.sh" "$DEVICE_DIR/montana-watchdog.sh" DEVICE_MK="$DEVICE_DIR/device.mk" if ! grep -q "init.montana-node.rc" "$DEVICE_MK" 2>/dev/null; then cat >> "$DEVICE_MK" <