Files
ctask/justfile
T
typebasedio 103307218e fix(v0.5.1): force CGO_ENABLED=0 in cross-build targets
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".
2026-05-07 19:22:54 -04:00

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