Files
Hermes Agent 7f91a2a68e
iperf3 static musl build / build-and-release (push) Successful in 21s
jq static musl build / build-and-release (push) Successful in 15s
feat: add jq static build
2026-05-08 13:43:24 +00:00

50 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
set -eu
VERSION="${1:?usage: build_jq.sh <version> [output_dir]}"
OUTPUT_DIR="${2:-$PWD/dist}"
VERSION="${VERSION#v}"
PREFIX_NAME="jq-${VERSION}-linux-amd64-musl-static"
mkdir -p "$OUTPUT_DIR"
apk add --no-cache \
build-base \
curl \
file \
tar \
xz
SRCDIR="${TMPDIR:-/tmp}/jq-src-${VERSION}"
rm -rf "$SRCDIR"
mkdir -p "$SRCDIR"
curl -fsSL "https://github.com/jqlang/jq/releases/download/jq-${VERSION}/jq-${VERSION}.tar.gz" \
| tar -xz -C "$SRCDIR" --strip-components=1
cd "$SRCDIR"
./configure \
--disable-docs \
--with-oniguruma=builtin \
--enable-all-static \
CFLAGS='-O2 -pipe'
make -j"$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2)"
cp jq "$OUTPUT_DIR/$PREFIX_NAME"
strip "$OUTPUT_DIR/$PREFIX_NAME" 2>/dev/null || true
(
cd "$OUTPUT_DIR"
tar -czf "${PREFIX_NAME}.tar.gz" "$PREFIX_NAME"
sha256sum "$PREFIX_NAME" "${PREFIX_NAME}.tar.gz" > "${PREFIX_NAME}.sha256"
)
file "$OUTPUT_DIR/$PREFIX_NAME"
ldd "$OUTPUT_DIR/$PREFIX_NAME" || true
if file "$OUTPUT_DIR/$PREFIX_NAME" | grep -qi 'dynamically linked'; then
echo "error: output binary is still dynamically linked" >&2
exit 1
fi
echo "build OK: $OUTPUT_DIR/$PREFIX_NAME"