103307218e
A native Linux build of build-linux defaulted to CGO_ENABLED=1 and produced a glibc-linked binary, which would not run in minimal containers (Alpine, distroless, scratch). The Windows cross-compile was already pure-Go because Go disables cgo when no host C toolchain is available; making CGO_ENABLED=0 explicit keeps both targets statically linked regardless of build host. Verified on WSL: file reports "statically linked", ldd reports "not a dynamic executable".
41 lines
1.3 KiB
Makefile
41 lines
1.3 KiB
Makefile
# ctask developer task runner
|
|
# Requires: Go 1.26+, PowerShell 7+ (for install/uninstall)
|
|
# Install just: winget install Casey.Just
|
|
|
|
# Default: show available targets
|
|
default:
|
|
@just --list
|
|
|
|
# Compile ctask from the local repo
|
|
build:
|
|
go build -o ctask.exe .
|
|
|
|
# Cross-compile a Linux amd64 binary into dist/. CGO_ENABLED=0 forces a
|
|
# pure-Go static link so the binary works in minimal containers (Alpine,
|
|
# distroless, scratch). Without this, native Linux builds default to
|
|
# CGO_ENABLED=1 and link against the host glibc.
|
|
build-linux:
|
|
mkdir -p dist
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o dist/ctask-linux-amd64 ./
|
|
|
|
# Cross-compile a Windows amd64 binary into dist/. CGO_ENABLED=0 keeps
|
|
# the artifact pure Go, matching the spec's "no cgo" rule.
|
|
build-windows:
|
|
mkdir -p dist
|
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o dist/ctask-windows-amd64.exe ./
|
|
|
|
# Build both Windows and Linux artifacts into dist/
|
|
build-all: build-windows build-linux
|
|
|
|
# Run the full test suite
|
|
test:
|
|
go test ./... -v -count=1
|
|
|
|
# Install ctask to %LOCALAPPDATA%\ctask\bin (Windows, PowerShell)
|
|
install:
|
|
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install.ps1
|
|
|
|
# Uninstall ctask from %LOCALAPPDATA%\ctask\bin (Windows, PowerShell)
|
|
uninstall:
|
|
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/uninstall.ps1
|