From d95eb40516db151d28e9d85974f7fc41419c527e Mon Sep 17 00:00:00 2001 From: Mikhail Shahovalov Date: Thu, 3 Sep 2026 05:02:32 +0300 Subject: [PATCH] =?UTF-8?q?firmware/update=5Ffw.sh:=20=D1=81=D0=BE=D0=B1?= =?UTF-8?q?=D0=B8=D1=80=D0=B0=D1=82=D1=8C=20=D0=B8=D0=B7=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D0=B8=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0?= =?UTF-8?q?,=20=D0=BD=D0=B5=20=D1=82=D1=80=D0=BE=D0=B3=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D1=80=D0=B5=D0=BF=D0=BE=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D0=BE=D1=80=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 --- firmware/update_fw.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/firmware/update_fw.sh b/firmware/update_fw.sh index c760df7..d06c65a 100755 --- a/firmware/update_fw.sh +++ b/firmware/update_fw.sh @@ -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 обновлён"