Files
Nomi/build_kindle.sh
2025-10-24 15:22:19 +02:00

42 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
CONTAINER_NAME=kindle_go_builder
WORKDIR=/src
OUTFILE=kindle_fbink_go
if ! docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}\$"; then
echo "[sh] Creating container"
docker run -dit --name ${CONTAINER_NAME} debian:bookworm sleep infinity
fi
echo "[sh] Installing toolchain inside container"
docker exec ${CONTAINER_NAME} bash -c "
set -e
apt-get update
apt-get install -y golang-go curl xz-utils build-essential gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
if [ ! -d /usr/local/arm-linux-musleabi-cross ]; then
echo '[sh] Downloading musl cross toolchain...'
cd /usr/local
curl -L https://musl.cc/arm-linux-musleabi-cross.tgz | tar xz
fi
"
echo "[sh] Copying project into container"
docker exec ${CONTAINER_NAME} rm -rf ${WORKDIR}
docker cp ./go ${CONTAINER_NAME}:${WORKDIR}
echo "[sh] Building for ARMv7 soft-float (musl static)"
docker exec ${CONTAINER_NAME} bash -c "
set -e
export PATH=/usr/local/arm-linux-musleabi-cross/bin:\$PATH
cd ${WORKDIR}
export GOOS=linux GOARCH=arm GOARM=5 CGO_ENABLED=1 CC=arm-linux-gnueabi-gcc
go build -ldflags '-linkmode external -extldflags "-static"' -o kindle_fbink_go .
"
echo "[sh] Copying binary back to hsot"
docker cp ${CONTAINER_NAME}:${WORKDIR}/${OUTFILE} ./${OUTFILE}
echo "[sh] Build complete: ${OUTFILE}"