ooni-probe-cli/CLI/go-build-cross
Simone Basso 37632f60d9
fix: repair releasing miniooni and ooniprobe-windows (#900)
It seems several CI builds failed for [v3.16.0-alpha](https://github.com/ooni/probe-cli/releases/tag/v3.16.0-alpha). Let's aim to repair miniooni and ooniprobe-windows for now. The other failing builds seem more tricky. (Android fails with an unsupported NDK while Linux fails with issues accessing the git repository from Docker, probably because the  the user running inside Docker is not the user that owns the repository.)
2022-08-29 00:48:46 +02:00

65 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
if [[ $# -ne 3 ]]; then
echo "" 1>&2
echo "Cross-compiler for a Go PACKAGE producing GOOS/OONIARCH binaries." 1>&2
echo "" 1>&2
echo "usage: $0 GOOS OONIARCH PACKAGE" 1>&2
echo "" 1>&2
echo "GOOS must be one of: android, darwin, linux, windows." 1>&2
echo "" 1>&2
echo "OONIARCH must be one of: 386, amd64, arm64, armv6, armv7." 1>&2
echo "" 1>&2
echo "Features:" 1>&2
echo "" 1>&2
echo "* automatically sets -tags=ooni_psiphon_config when possible;" 1>&2
echo "" 1>&2
echo "* if GOLANG_EXTRA_FLAGS is set, pass it to the Go compiler." 1>&2
echo "" 1>&2
echo "Example:" 1>&2
echo "" 1>&2
echo " ./CLI/go-build-cross linux armv7 ./internal/cmd/miniooni" 1>&2
echo "" 1>&2
exit 1
fi
GOOS=$1
OONIARCH=$2
PACKAGE=$3
if [[ $OONIARCH == armv7 ]]; then
GOARCH=arm
GOARM=7
elif [[ $OONIARCH == armv6 ]]; then
GOARCH=arm
GOARM=6
else
GOARCH=$OONIARCH
GOARM=
fi
if [[ -f ./internal/engine/psiphon-config.json.age &&
-f ./internal/engine/psiphon-config.key ]]; then
OONI_PSIPHON_TAGS=ooni_psiphon_config
else
OONI_PSIPHON_TAGS=""
fi
EXT=
if [[ $GOOS == "windows" ]]; then
EXT=.exe
fi
PRODUCT=$(basename $PACKAGE)
set -x
export CGO_ENABLED=0
export GOOS=$GOOS
export GOARCH=$GOARCH
export GOARM=$GOARM
go build -tags=$OONI_PSIPHON_TAGS -ldflags="-s -w" \
-o ./CLI/$PRODUCT-$GOOS-$OONIARCH$EXT ${GOLANG_EXTRA_FLAGS:-} \
$PACKAGE