42 lines
1.2 KiB
Bash
Executable File
42 lines
1.2 KiB
Bash
Executable File
#!/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}"
|