复现已有算法
This commit is contained in:
Executable
+89
@@ -0,0 +1,89 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user