firmware/update_fw.sh: собирать из копии конфига, не трогая файлы репозитория

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-03 05:02:32 +03:00
parent 83e079c24e
commit d95eb40516
+8 -2
View File
@@ -78,6 +78,7 @@ on_err() {
}
on_exit() {
local rc=$?
rm -rf "${BUILD_TMP:-}"
if [ "$KLIPPER_STOPPED" = 1 ]; then
echo; echo "=== Запуск klipper ==="
sudo systemctl start klipper || echo "!!! Не удалось запустить klipper — запустите вручную: sudo systemctl start klipper" >&2
@@ -156,10 +157,15 @@ if [ "$BUILD_ONLY" = 0 ]; then
fi
# ---------- Сборка ----------
BUILD_TMP=$(mktemp -d)
build() { # build <цель> <конфиг> <артефакт: bin|elf>
local name=$1 cfg=$CONFIG_DIR/$2 ext=$3
local name=$1 ext=$3
STAGE="сборка $name"
section "Сборка $name ($2)"
# Собираем из копии: olddefconfig переписывает конфиг и создаёт <конфиг>.old,
# а файлы в репозитории должны оставаться нетронутыми
local cfg="$BUILD_TMP/$2"
cp "$CONFIG_DIR/$2" "$cfg"
make -C "$KLIPPER" clean KCONFIG_CONFIG="$cfg" >/dev/null
make -C "$KLIPPER" olddefconfig KCONFIG_CONFIG="$cfg"
make -C "$KLIPPER" -j"$JOBS" KCONFIG_CONFIG="$cfg"
@@ -192,7 +198,7 @@ if want host; then
STAGE="прошивка host MCU"
section "Прошивка host (klipper-mcu)"
# flash-linux.sh копирует out/klipper.elf в /usr/local/bin/klipper_mcu и перезапускает klipper-mcu
make -C "$KLIPPER" flash KCONFIG_CONFIG="$CONFIG_DIR/$HOST_CFG"
make -C "$KLIPPER" flash KCONFIG_CONFIG="$BUILD_TMP/$HOST_CFG"
[ "$(stat -c %Y "$HOST_BIN")" -ge "$START_TS" ] || die "$HOST_BIN не обновился"
wait_for 10 "klipper-mcu не запустился" systemctl is-active --quiet klipper-mcu
echo "klipper-mcu: $(systemctl is-active klipper-mcu), $HOST_BIN обновлён"