31 lines
1.0 KiB
YAML
31 lines
1.0 KiB
YAML
name: 'Build Static Binary'
|
|
description: 'Build a statically-linked Linux binary using musl'
|
|
|
|
runs:
|
|
using: 'composite'
|
|
steps:
|
|
- name: Install dependencies
|
|
shell: sh
|
|
run: |
|
|
apk add --no-cache \
|
|
musl-dev libpcap-dev pkgconfig build-base perl \
|
|
elfutils-dev zlib-dev zlib-static zstd-dev zstd-static \
|
|
clang llvm linux-headers git
|
|
rustup component add rustfmt
|
|
|
|
- name: Build static binary
|
|
shell: sh
|
|
env:
|
|
# -C strip=symbols: Strip debug symbols for smaller binary
|
|
# -C link-arg=-l:libzstd.a: Fix elfutils 0.189+ zstd dependency (libbpf/bpftool#152)
|
|
RUSTFLAGS: "-C strip=symbols -C link-arg=-l:libzstd.a"
|
|
run: cargo build --release
|
|
|
|
- name: Verify static linking
|
|
shell: sh
|
|
run: |
|
|
file target/release/rustnet
|
|
# Use file command to verify (ldd behaves differently inside Alpine)
|
|
file target/release/rustnet | grep -q "static.* linked" || \
|
|
(echo "ERROR: Binary is not statically linked" && exit 1)
|