Files
wind_power_cal/package.sh
T
2026-07-14 15:43:18 +08:00

90 lines
3.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# =====================================================
# package.sh — 编译并把 wind_power 产物整理到 runtime/wind_power/
#
# 输出目录结构:
# runtime/wind_power/
# ├── wind_server # 后端可执行
# ├── config/ # server_config.json 等静态配置
# ├── web/ # 前端静态资源(vite build 产物)
# ├── libs/ # 运行期依赖库(libdrogon/libtrantor .so
# └── logs/ # 日志目录(运行时写入)
#
# 用法:
# ./package.sh # 默认 Release
# ./package.sh --build-type Debug
# ./package.sh --publish # 额外打包到 publish/wind_power-<ver>.tar.gz
#
# 参考: edge_collector/package.sh
# =====================================================
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RUNTIME_DIR="${ROOT_DIR}/runtime/wind_power"
PUBLISH_DIR="${ROOT_DIR}/publish"
PKG_BUILD="${ROOT_DIR}/build_package"
BUILD_TYPE="Release"
PACKAGE_VERSION="0.1.0"
PUBLISH=false
# ---- 参数解析 ----
while [ $# -gt 0 ]; do
case "$1" in
--build-type) BUILD_TYPE="$2"; shift 2 ;;
--version) PACKAGE_VERSION="$2"; shift 2 ;;
--publish|publish) PUBLISH=true; shift ;;
*) echo "[package] 未知参数: $1"; exit 1 ;;
esac
done
# ---- 颜色 ----
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $1"; }
step() { echo -e "${CYAN}[STEP]${NC} $1"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
# 1. 确保 Drogon 已从源码编译(产物存在则秒过)
step "1/5 确保 Drogon ..."
THIRD_PARTY="${ROOT_DIR}/third_party" source "${ROOT_DIR}/third_party/ensure_third_party.sh"
ARCH="${TARGET_ARCH}"
info "target arch = ${ARCH}, drogon install = ${DROGON_INSTALL}"
# 2. 构建后端
step "2/5 构建后端 (${BUILD_TYPE}) ..."
cmake -S "${ROOT_DIR}/backend" -B "${PKG_BUILD}" -DCMAKE_BUILD_TYPE="${BUILD_TYPE}"
cmake --build "${PKG_BUILD}" -j"$(nproc)"
# 3. 构建前端
step "3/5 构建前端 ..."
( cd "${ROOT_DIR}/frontend/web_app"
[ -d node_modules ] || npm install --silent
npm run build )
# 4. 整理 runtime 目录
step "4/5 整理 runtime/wind_power/ ..."
rm -rf "${RUNTIME_DIR}"
mkdir -p "${RUNTIME_DIR}"/{config,web,libs,logs}
cp "${PKG_BUILD}/wind_server" "${RUNTIME_DIR}/"
cp -r "${ROOT_DIR}"/backend/config/* "${RUNTIME_DIR}/config/"
rsync -a --delete "${ROOT_DIR}/frontend/web_app/dist/" "${RUNTIME_DIR}/web/"
# 运行期动态库(部署机无需安装 Drogon)
cp "${DROGON_INSTALL}"/libs/libdrogon.so* "${RUNTIME_DIR}/libs/"
cp "${DROGON_INSTALL}"/libs/libtrantor.so* "${RUNTIME_DIR}/libs/"
# 只保留实际文件,去掉会随版本变化的开发符号链接末级
info "runtime libs: $(ls "${RUNTIME_DIR}/libs/")"
# 5. 可选:打包为 tar.gz
if [ "${PUBLISH}" = true ]; then
step "5/5 打包 publish/wind_power-${PACKAGE_VERSION}.tar.gz ..."
mkdir -p "${PUBLISH_DIR}"
tar -czf "${PUBLISH_DIR}/wind_power-${PACKAGE_VERSION}.tar.gz" -C "${ROOT_DIR}/runtime" wind_power
info "✅ ${PUBLISH_DIR}/wind_power-${PACKAGE_VERSION}.tar.gz"
else
info "跳过打包(加 --publish 可生成 tar.gz"
fi
info "✅ 打包完成 → ${RUNTIME_DIR}"