130 lines
5.6 KiB
Bash
Executable File
130 lines
5.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Manual: one-command HEVC recovery runway after Theia comes back online.
|
|
# Not part of CI: this coordinates local preflights, passwordless Theia deploy,
|
|
# and hardware-in-the-loop RCT calibration.
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
|
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd)"
|
|
STAMP="$(date +%Y%m%d-%H%M%S)"
|
|
|
|
OUTPUT_DIR="${LESAVKA_HEVC_POST_REBOOT_OUTPUT_DIR:-/tmp/lesavka-hevc-post-reboot-${STAMP}}"
|
|
RUN_LOG="${OUTPUT_DIR}/hevc-post-reboot-sequence.log"
|
|
REMOTE_HOST="${LESAVKA_HEVC_POST_REBOOT_REMOTE_HOST:-${LESAVKA_HEVC_REENTRY_HOST:-theia}}"
|
|
REMOTE_REPO="${LESAVKA_HEVC_POST_REBOOT_REMOTE_REPO:-${LESAVKA_HEVC_REENTRY_REMOTE_REPO:-/home/theia/Development/lesavka-codex}}"
|
|
WAIT_SECONDS="${LESAVKA_HEVC_POST_REBOOT_WAIT_SECONDS:-900}"
|
|
WAIT_INTERVAL_SECONDS="${LESAVKA_HEVC_POST_REBOOT_WAIT_INTERVAL_SECONDS:-15}"
|
|
|
|
RUN_LOCAL_PREFLIGHTS="${LESAVKA_HEVC_POST_REBOOT_RUN_LOCAL_PREFLIGHTS:-1}"
|
|
RUN_REENTRY="${LESAVKA_HEVC_POST_REBOOT_RUN_REENTRY:-1}"
|
|
RUN_STATIC_MATRIX="${LESAVKA_HEVC_POST_REBOOT_RUN_STATIC_MATRIX:-1}"
|
|
RUN_FINAL_SANITY="${LESAVKA_HEVC_POST_REBOOT_RUN_FINAL_SANITY:-0}"
|
|
|
|
REENTRY_MODE="${LESAVKA_HEVC_POST_REBOOT_REENTRY_MODE:-1280x720@30}"
|
|
PENDING_MODES="${LESAVKA_HEVC_POST_REBOOT_PENDING_MODES:-1280x720@30,1280x720@20}"
|
|
FINAL_SANITY_MODES="${LESAVKA_HEVC_POST_REBOOT_FINAL_MODES:-1280x720@20,1280x720@30,1920x1080@20,1920x1080@30}"
|
|
RECONFIGURE_COMMAND="${LESAVKA_HEVC_POST_REBOOT_RECONFIGURE_COMMAND:-ssh ${REMOTE_HOST} sudo -n /usr/local/sbin/lesavka-dev-install reconfigure \"\$LESAVKA_MODE\" hevc}"
|
|
|
|
mkdir -p "${OUTPUT_DIR}"
|
|
|
|
echo "==> HEVC post-reboot sequence"
|
|
echo " ↪ output_dir=${OUTPUT_DIR}"
|
|
echo " ↪ run_log=${RUN_LOG}"
|
|
echo " ↪ remote_host=${REMOTE_HOST}"
|
|
echo " ↪ remote_repo=${REMOTE_REPO}"
|
|
echo " ↪ wait_seconds=${WAIT_SECONDS} wait_interval_seconds=${WAIT_INTERVAL_SECONDS}"
|
|
echo " ↪ local_preflights=${RUN_LOCAL_PREFLIGHTS} reentry=${RUN_REENTRY} static_matrix=${RUN_STATIC_MATRIX} final_sanity=${RUN_FINAL_SANITY}"
|
|
echo " ↪ pending_modes=${PENDING_MODES}"
|
|
echo " ↪ final_sanity_modes=${FINAL_SANITY_MODES}"
|
|
echo " ↪ sudo is non-interactive only; no password prompt path is used"
|
|
|
|
run_local_preflights() {
|
|
echo "== local HEVC bundle audit =="
|
|
LESAVKA_LOCAL_HEVC_BUNDLE_AUDIT_OUTPUT_DIR="${OUTPUT_DIR}/local-bundle-audit" \
|
|
"${SCRIPT_DIR}/run_local_hevc_bundle_audit.sh"
|
|
|
|
echo "== local HEVC encoder preflight =="
|
|
LESAVKA_LOCAL_HEVC_ENCODER_PREFLIGHT_OUTPUT_DIR="${OUTPUT_DIR}/local-encoder-preflight" \
|
|
"${SCRIPT_DIR}/run_local_hevc_encoder_preflight.sh"
|
|
}
|
|
|
|
run_remote_reentry() {
|
|
echo "== remote HEVC re-entry =="
|
|
LESAVKA_HEVC_REENTRY_HOST="${REMOTE_HOST}" \
|
|
LESAVKA_HEVC_REENTRY_REMOTE_REPO="${REMOTE_REPO}" \
|
|
LESAVKA_HEVC_REENTRY_MODE="${REENTRY_MODE}" \
|
|
LESAVKA_HEVC_REENTRY_CODEC=hevc \
|
|
LESAVKA_HEVC_REENTRY_SYNC=1 \
|
|
LESAVKA_HEVC_REENTRY_BUILD=1 \
|
|
LESAVKA_HEVC_REENTRY_DEPLOY=1 \
|
|
LESAVKA_HEVC_REENTRY_RECONFIGURE=1 \
|
|
LESAVKA_HEVC_REENTRY_WAIT_SECONDS="${WAIT_SECONDS}" \
|
|
LESAVKA_HEVC_REENTRY_WAIT_INTERVAL_SECONDS="${WAIT_INTERVAL_SECONDS}" \
|
|
LESAVKA_HEVC_REENTRY_OUTPUT_DIR="${OUTPUT_DIR}/remote-reentry" \
|
|
"${SCRIPT_DIR}/run_hevc_remote_reentry_check.sh"
|
|
}
|
|
|
|
run_hevc_static_matrix() {
|
|
echo "== pending HEVC static calibration matrix =="
|
|
LOCAL_OUTPUT_DIR="${OUTPUT_DIR}" \
|
|
REMOTE_PULSE_CAPTURE_TOOL="${REMOTE_PULSE_CAPTURE_TOOL:-gst}" \
|
|
REMOTE_PULSE_VIDEO_MODE="${REMOTE_PULSE_VIDEO_MODE:-mjpeg-cfr}" \
|
|
LESAVKA_SERVER_RC_PROFILE=hevc \
|
|
LESAVKA_SERVER_RC_MODES="${PENDING_MODES}" \
|
|
LESAVKA_SERVER_RC_REPEAT_COUNT="${LESAVKA_HEVC_POST_REBOOT_REPEAT_COUNT:-3}" \
|
|
LESAVKA_SERVER_RC_STATIC_MIN_RUNS="${LESAVKA_HEVC_POST_REBOOT_STATIC_MIN_RUNS:-3}" \
|
|
LESAVKA_SERVER_RC_VERBOSE_PROBES="${LESAVKA_SERVER_RC_VERBOSE_PROBES:-0}" \
|
|
LESAVKA_SERVER_RC_RECONFIGURE=1 \
|
|
LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY=0 \
|
|
LESAVKA_SERVER_RC_RECONFIGURE_COMMAND="${RECONFIGURE_COMMAND}" \
|
|
CAPTURE_SECONDS="${CAPTURE_SECONDS:-90}" \
|
|
PROBE_TIMEOUT_SECONDS="${PROBE_TIMEOUT_SECONDS:-160}" \
|
|
PROBE_DURATION_SECONDS="${PROBE_DURATION_SECONDS:-20}" \
|
|
PROBE_WARMUP_SECONDS="${PROBE_WARMUP_SECONDS:-4}" \
|
|
"${SCRIPT_DIR}/run_server_to_rc_mode_matrix.sh"
|
|
}
|
|
|
|
run_hevc_final_sanity() {
|
|
echo "== final all-mode HEVC sanity matrix =="
|
|
LOCAL_OUTPUT_DIR="${OUTPUT_DIR}" \
|
|
REMOTE_PULSE_CAPTURE_TOOL="${REMOTE_PULSE_CAPTURE_TOOL:-gst}" \
|
|
REMOTE_PULSE_VIDEO_MODE="${REMOTE_PULSE_VIDEO_MODE:-mjpeg-cfr}" \
|
|
LESAVKA_SERVER_RC_PROFILE=hevc \
|
|
LESAVKA_SERVER_RC_MODES="${FINAL_SANITY_MODES}" \
|
|
LESAVKA_SERVER_RC_REPEAT_COUNT=1 \
|
|
LESAVKA_SERVER_RC_VERBOSE_PROBES="${LESAVKA_SERVER_RC_VERBOSE_PROBES:-0}" \
|
|
LESAVKA_SERVER_RC_RECONFIGURE=1 \
|
|
LESAVKA_SERVER_RC_TUNE_DELAYS=0 \
|
|
LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY=0 \
|
|
LESAVKA_SERVER_RC_RECONFIGURE_COMMAND="${RECONFIGURE_COMMAND}" \
|
|
CAPTURE_SECONDS="${CAPTURE_SECONDS:-90}" \
|
|
PROBE_TIMEOUT_SECONDS="${PROBE_TIMEOUT_SECONDS:-160}" \
|
|
PROBE_DURATION_SECONDS="${PROBE_DURATION_SECONDS:-20}" \
|
|
PROBE_WARMUP_SECONDS="${PROBE_WARMUP_SECONDS:-4}" \
|
|
"${SCRIPT_DIR}/run_server_to_rc_mode_matrix.sh"
|
|
}
|
|
|
|
(
|
|
cd "${REPO_ROOT}"
|
|
|
|
if [[ "${RUN_LOCAL_PREFLIGHTS}" == "1" ]]; then
|
|
run_local_preflights
|
|
fi
|
|
|
|
if [[ "${RUN_REENTRY}" == "1" ]]; then
|
|
run_remote_reentry
|
|
fi
|
|
|
|
if [[ "${RUN_STATIC_MATRIX}" == "1" ]]; then
|
|
run_hevc_static_matrix
|
|
fi
|
|
|
|
if [[ "${RUN_FINAL_SANITY}" == "1" ]]; then
|
|
run_hevc_final_sanity
|
|
fi
|
|
) 2>&1 | tee "${RUN_LOG}"
|
|
|
|
echo "==> done"
|
|
echo "artifact_dir: ${OUTPUT_DIR}"
|
|
echo "run_log: ${RUN_LOG}"
|