From 348a1447c8e5b5998d62291f5c7a531ab24f680c Mon Sep 17 00:00:00 2001 From: jianf <2198972886@qq.com> Date: Sun, 19 Jul 2026 11:40:21 +0800 Subject: [PATCH] feat: add package/build.sh cross-platform build script for plugindev - Supports linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64, and 'all' for matrix build --- package/build.sh | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 package/build.sh diff --git a/package/build.sh b/package/build.sh new file mode 100755 index 0000000..490ad04 --- /dev/null +++ b/package/build.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash +set -euo pipefail + +PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)" +BUILD_DIR="${PROJECT_ROOT}/build" +VERSION="${VERSION:-$(git -C "$PROJECT_ROOT" describe --tags --dirty 2>/dev/null || echo "0.7.1")}" +GO="${GO:-$(command -v go 2>/dev/null || echo "/home/jianf/go1.26.5/go/bin/go")}" +GOCACHE="${GOCACHE:-}" +GOPATH="${GOPATH:-}" + +TARGET="${1:-native}" +COMPONENT="${2:-all}" + +case "$TARGET" in + native) GOOS="" GOARCH="" ;; + linux/amd64) GOOS=linux GOARCH=amd64 ;; + linux/arm64) GOOS=linux GOARCH=arm64 ;; + darwin/amd64) GOOS=darwin GOARCH=amd64 ;; + darwin/arm64) GOOS=darwin GOARCH=arm64 ;; + windows/amd64) GOOS=windows GOARCH=amd64 ;; + all) + "$0" linux/amd64 "$COMPONENT" + "$0" linux/arm64 "$COMPONENT" + "$0" darwin/amd64 "$COMPONENT" + "$0" darwin/arm64 "$COMPONENT" + "$0" windows/amd64 "$COMPONENT" + exit 0 + ;; + *) + echo "Unknown target: $TARGET" + echo "Usage: $0 [native|linux/amd64|linux/arm64|darwin/amd64|darwin/arm64|windows/amd64|all] [all|plugindev]" + exit 1 +esac + +if [ -n "${GOOS:-}" ]; then + SUFFIX="${GOOS}_${GOARCH}" + export GOOS GOARCH +fi +export CGO_ENABLED=0 +[ -n "$GOCACHE" ] && export GOCACHE +[ -n "$GOPATH" ] && export GOPATH + +mkdir -p "$BUILD_DIR" + +build_plugindev() { + local src="tools/plugindev" + local out="$BUILD_DIR/plugindev${SUFFIX:+_$SUFFIX}" + if [ "$GOOS" = "windows" ]; then out="${out}.exe"; fi + + echo "[BUILD] plugindev ${GOOS:-linux}/${GOARCH:-amd64} → $out" + cd "$PROJECT_ROOT/$src" + "$GO" build -trimpath -ldflags "-X gitcode.com/JianFeeeee/homeagent-sdk/meta.Version=${VERSION}" \ + -o "$out" . + echo " OK ($(du -h "$out" | cut -f1))" + cd "$PROJECT_ROOT" +} + +case "$COMPONENT" in + all|plugindev) build_plugindev ;; + *) + echo "Unknown component: $COMPONENT" + exit 1 +esac