42 lines
1.3 KiB
Bash
Executable File
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}"
|