- ci/Dockerfile:基础镜像 20.04 → 22.04(板卡实测为 Orange Pi Jammy, 旧 focal 镜像保留为 h100-power-manager-ci:arm64-focal) - scripts/build-arm64-image.sh:arm64 镜像构建(支持 --force 重建) - scripts/build-arm64.sh:日常交叉编译(产物输出 bin/arm64/,与本地隔离) - scripts/deploy.sh:板卡部署(推送二进制+mission,安装 3 个 systemd 服务) - missions/h100.moos:板卡专用 mission 配置 - .gitignore:忽略 build-arm64/、webassets_gen.h 等构建产物
43 lines
1.4 KiB
Bash
Executable File
43 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
||
#=======================================================================
|
||
# FILE: scripts/build-arm64.sh
|
||
# DESC: 交叉编译为 RK3588 (aarch64) / Ubuntu 22.04 二进制,用法同 build.sh。
|
||
# 在 arm64 镜像(h100-power-manager-ci:arm64)内跑 cmake + make,
|
||
# 产物输出到 bin/arm64/,与本地 x86_64 的 bin/、build/ 互不影响。
|
||
#
|
||
# 用法:
|
||
# ./scripts/build-arm64.sh
|
||
#
|
||
# 前置(一次性,构建 arm64 镜像):
|
||
# CI_TOKEN=xxx ./scripts/build-arm64-image.sh
|
||
#=======================================================================
|
||
|
||
set -euo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
PROJECT_ROOT="$(dirname "${SCRIPT_DIR}")"
|
||
|
||
IMAGE="h100-power-manager-ci:arm64"
|
||
JOBS="${JOBS:-$(nproc)}"
|
||
|
||
if ! docker image inspect "${IMAGE}" >/dev/null 2>&1; then
|
||
echo "错误: 本地不存在镜像 ${IMAGE}" >&2
|
||
echo " 请先执行: CI_TOKEN=xxx ./scripts/build-arm64-image.sh" >&2
|
||
exit 1
|
||
fi
|
||
|
||
mkdir -p "${PROJECT_ROOT}/build-arm64" "${PROJECT_ROOT}/bin/arm64"
|
||
|
||
docker run --rm --platform linux/arm64 \
|
||
-u "$(id -u):$(id -g)" \
|
||
-v "${PROJECT_ROOT}":/src \
|
||
-w /src/build-arm64 \
|
||
"${IMAGE}" \
|
||
/bin/sh -c "cmake -DCMAKE_BUILD_TYPE=Release \
|
||
-DEXECUTABLE_OUTPUT_PATH=/src/bin/arm64 \
|
||
-DRUNTIME_OUTPUT_DIRECTORY=/src/bin/arm64 .. && make -j${JOBS}"
|
||
|
||
echo ""
|
||
echo ">>> 完成。产物:"
|
||
file "${PROJECT_ROOT}/bin/arm64/pPowerManger"
|