From 6cb9a621313ccc7e134d6001118d511d854b77f2 Mon Sep 17 00:00:00 2001 From: Erick Ahmed Date: Wed, 19 Aug 2026 12:42:54 +0200 Subject: [PATCH] Refactor build script for robustness --- build.sh | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/build.sh b/build.sh index 12b0b879..379d75c5 100755 --- a/build.sh +++ b/build.sh @@ -1,32 +1,41 @@ #!/bin/bash - -set -e +set -u IMAGE_NAME="zyxel-openwrt-builder" CONTAINER_NAME="openwrt-builder-container" -FIRMWARE_PATH="/home/builder/openwrt/bin/brcm963xx/zyxel/ras.bin" +OPENWRT_DIR="/home/builder/openwrt" +FIRMWARE_PATH="${OPENWRT_DIR}/bin/brcm963xx/zyxel/ras.bin" echo "Building Docker image ${IMAGE_NAME}..." -docker build --platform linux/amd64 -t ${IMAGE_NAME} . +docker build --platform linux/amd64 -t "${IMAGE_NAME}" . -echo "Starting container..." -docker run --platform linux/amd64 --cpus="1" -it --name "${CONTAINER_NAME}" -e TERM=vt100 "${IMAGE_NAME}" /bin/bash -c \ - "cd /home/builder/openwrt && \ - ./scripts/feeds update -a && \ - ./scripts/feeds install -a && \ +docker rm -f "${CONTAINER_NAME}" >/dev/null 2>&1 || true + +docker run --platform linux/amd64 --cpus="1" --name "${CONTAINER_NAME}" \ + --dns 1.1.1.1 --dns 8.8.8.8 \ + -e TERM=vt100 -e PROJECT=brcm963xx \ + "${IMAGE_NAME}" /bin/bash -c \ + "cd ${OPENWRT_DIR} && \ + cp -f configs/vmg8825_b50b.defconfig .config && \ + make PROJECT=brcm963xx defconfig && \ make PROJECT=brcm963xx clean && \ make PROJECT=brcm963xx -j1 V=sc" +BUILD_RC=$? -docker cp ${CONTAINER_NAME}:.config ./.config-build -docker cp ${CONTAINER_NAME}:defconfig.log ./defconfig-build.log +docker cp "${CONTAINER_NAME}:${OPENWRT_DIR}/.config" ./.config-build || true -if docker cp ${CONTAINER_NAME}:${FIRMWARE_PATH} ./build/ras.bin 2>/dev/null; then +if [ ${BUILD_RC} -ne 0 ]; then + echo "ERROR: build failed (exit ${BUILD_RC})." + echo "Inspect: docker start -ai ${CONTAINER_NAME}" + exit ${BUILD_RC} +fi + +mkdir -p ./build +if docker cp "${CONTAINER_NAME}:${FIRMWARE_PATH}" ./build/ras.bin 2>/dev/null; then echo "Firmware copied to ./build/ras.bin" else - echo "ERROR: Firmware not found at ${FIRMWARE_PATH}" - echo "The build may have failed or the output path is not ${FIRMWARE_PATH}" - echo "You can inspect the container manually: docker start -ai ${CONTAINER_NAME}" + echo "ERROR: firmware not found at ${FIRMWARE_PATH}" exit 1 fi -docker rm ${CONTAINER_NAME} +docker rm "${CONTAINER_NAME}"