pat/make.bash
Martin Hebnes Pedersen 10f9e9c31f Avoid hardcoding executable name in make.bash
That incorrectly produced `pat` instead of `pat.exe` on Windows.
2025-12-20 12:45:31 +01:00

84 lines
2.8 KiB
Bash
Executable file
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -e
if [ -d $GOOS ]; then OS=$(go env GOOS); else OS=$GOOS; fi
if [ -d $CGO_ENABLED ]; then CGO_ENABLED=$(go env CGO_ENABLED); else OS=$CGO_ENABLED; fi
VERSION=$(grep "Version =" internal/buildinfo/VERSION.go|cut -d '"' -f2)
# Go 1.24 or later is required
GO_POINT_VERSION=$(go version| perl -ne 'm/go1\.(\d+)/; print $1;')
[ "$GO_POINT_VERSION" -lt "24" ] && echo "Go 1.24 or later required" && exit 1;
AX25VERSION="0.0.12-rc4"
AX25DIST="libax25-${AX25VERSION}"
AX25DIST_URL="https://ubuntu.hi.no/ubuntu/pool/universe/liba/libax25/libax25_${AX25VERSION}.orig.tar.gz"
function install_libax25 {
mkdir -p .build && cd .build
[[ -f "${AX25DIST}" ]] || curl -LSsf "${AX25DIST_URL}" | tar zx
cd "${AX25DIST}/" && ./configure --prefix=/ && make && cd ../../
}
function build_web {
bash web/make.bash
}
function embed {
curl -LSsf "https://www.sidc.be/SILSO/FORECASTS/KFprediCM.txt" > internal/propagation/silso/KFprediCM.txt && go test ./internal/propagation/silso
curl -LSsf 'https://api.winlink.org/gateway/status.json?key=1880278F11684B358F36845615BD039A&mode=AnyAll&HistoryHours=48&ServiceCodes=PUBLIC' | gzip -9 > internal/cmsapi/gateway_status.json.gz && go test ./internal/cmsapi
}
function pre_release {
build_web > /dev/null
embed
go tool govulncheck ./...
}
[[ "$1" == "libax25" ]] && { install_libax25; exit $?; }
[[ "$1" == "web" ]] && { build_web; exit $?; }
[[ "$1" == "embed" ]] && { embed; exit $?; }
[[ "$1" == "pre-release" ]] && { pre_release; exit $?; }
# Link against libax25 (statically) on Linux
if [[ "$OS" == "linux"* ]] && [[ "$CGO_ENABLED" == "1" ]]; then
TAGS="libax25 $TAGS"
LIB=".build/${AX25DIST}/.libs/libax25.a"
if [[ -z "$CGO_LDFLAGS" ]] && [[ -f "$LIB" ]]; then
export CGO_CFLAGS="-I$(pwd)/.build/${AX25DIST}"
export CGO_LDFLAGS="$(pwd)/${LIB}"
fi
if [[ -z "$CGO_LDFLAGS" ]]; then
echo "WARNING: No static libax25 library available."
echo " Linking against shared library instead. To fix"
echo " this issue, set CGO_LDFLAGS to the full path of"
echo " libax25.a, or run 'make.bash libax25' to download"
echo " and compile ${AX25DIST} in .build/"
else
TAGS="static $TAGS"
fi
else
if [[ "$OS" == "linux"* ]]; then
echo "WARNING: CGO unavailable. libax25 (ax25+linux) will not be supported with this build."
fi
fi
echo -e "Downloading Go dependencies..."
go mod download
echo "Running tests..."
if [[ "$SKIP_TESTS" == "1" ]]; then
echo "Skipping."
else
go test -tags "$TAGS" ./... github.com/la5nta/wl2k-go/...
fi
echo
echo "Building Pat v$VERSION..."
go build -tags "$TAGS"
# Build macOS pkg
if [[ "$OS" == "darwin"* ]] && command -v packagesbuild >/dev/null 2>&1; then
ARCH=$(go env GOARCH)
echo "Generating macOS installer package..."
packagesbuild osx/pat.pkgproj
mv 'Pat :: A Modern Winlink Client.pkg' "pat_${VERSION}_darwin_${ARCH}_unsigned.pkg"
fi
echo -e "Enjoy!"