From fc08fb0be4712b9296826d3a435addb3533c7c7a Mon Sep 17 00:00:00 2001 From: Alessio Date: Mon, 27 May 2024 14:50:57 -0700 Subject: [PATCH] Statically link libc (musl) so the binaries are fully portable --- .woodpecker/docker/go.dockerfile | 2 +- cmd/compile.sh | 9 +++++++-- cmd/windows-compile.sh | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.woodpecker/docker/go.dockerfile b/.woodpecker/docker/go.dockerfile index fa95958..8a87fb6 100644 --- a/.woodpecker/docker/go.dockerfile +++ b/.woodpecker/docker/go.dockerfile @@ -1,6 +1,6 @@ from ubuntu:jammy -run apt update && apt install -y sudo curl wget build-essential sqlite3 jq git +run apt update && apt install -y sudo curl wget build-essential sqlite3 jq git musl-dev musl-tools # Install go and golangci-lint run wget https://go.dev/dl/go1.20.4.linux-amd64.tar.gz && tar -C /usr/local -xzf go1.20.4.linux-amd64.tar.gz diff --git a/cmd/compile.sh b/cmd/compile.sh index 306c160..f2758a8 100755 --- a/cmd/compile.sh +++ b/cmd/compile.sh @@ -3,9 +3,14 @@ set -x set -e +export CGO_ENABLED=1 +export CC=musl-gcc + +FLAGS="-s -w -linkmode=external -extldflags=-static -X gitlab.com/offline-twitter/twitter_offline_engine/internal/webserver.use_embedded=true" + if [[ -n "$1" ]]; then - go build -ldflags="-s -w -X main.version_string=$1 -X gitlab.com/offline-twitter/twitter_offline_engine/internal/webserver.use_embedded=true" -o tw ./twitter + go build -ldflags="$FLAGS -X main.version_string=$1" -o tw ./twitter else - go build -ldflags="-s -w -X gitlab.com/offline-twitter/twitter_offline_engine/internal/webserver.use_embedded=true" -o tw ./twitter + go build -ldflags="$FLAGS" -o tw ./twitter fi chmod +x tw diff --git a/cmd/windows-compile.sh b/cmd/windows-compile.sh index 64aea86..9622889 100755 --- a/cmd/windows-compile.sh +++ b/cmd/windows-compile.sh @@ -13,4 +13,4 @@ if [[ -z "$1" ]]; then exit 1 fi -go build -ldflags="-linkmode external -extldflags -static -s -w -X main.version_string=$1 -X gitlab.com/offline-twitter/twitter_offline_engine/internal/webserver.use_embedded=true" -buildvcs=false -o twitter.exe ./twitter +go build -ldflags="-linkmode external -extldflags -static -s -w -X main.version_string=$1 -X gitlab.com/offline-twitter/twitter_offline_engine/internal/webserver.use_embedded=true" -o twitter.exe ./twitter