1
1

Refactor build script for robustness

This commit is contained in:
2026-08-19 12:42:54 +02:00
parent ea922a5a93
commit 6cb9a62131
+25 -16
View File
@@ -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}"