#!/bin/bash set -u IMAGE_NAME="zyxel-openwrt-builder" CONTAINER_NAME="openwrt-builder-container" OPENWRT_DIR="/home/builder/openwrt" FIRMWARE_PATH="${OPENWRT_DIR}/bin/brcm963xx-glibc/zyxel/ras.bin" echo "Building Docker image ${IMAGE_NAME}..." docker build --platform linux/amd64 -t "${IMAGE_NAME}" . 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}:${OPENWRT_DIR}/.config" ./.config-build || true 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}" exit 1 fi docker rm "${CONTAINER_NAME}"