refactor: 升级依赖版本并优化构建系统

- 升级核心依赖 (axum 0.8, tower-http 0.6, alsa 0.11 等)
- 简化交叉编译配置,切换至 Debian 11 提高兼容性
- 新增 Debian 包打包支持 (debuerreotype 模板)
- 移除独立的 mjpeg 解码器,简化视频模块
- 静态链接 libx264/libx265/libopus 到二进制
This commit is contained in:
mofeng-git
2026-01-10 10:59:00 +08:00
parent 3fa91772f0
commit e670f1ffd1
46 changed files with 893 additions and 1156 deletions

80
build/build-images.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/bin/bash
# Build cross-compiled binaries using cross with custom Dockerfiles
# Usage: ./build/build-images.sh [arch]
# Example: ./build/build-images.sh x86_64
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
# Supported architectures (Rust target)
ARCH_MAP=(
"x86_64-unknown-linux-gnu"
"aarch64-unknown-linux-gnu"
"armv7-unknown-linux-gnueabihf"
)
# Build for specific architecture using cross
build_arch() {
local rust_target="$1"
echo "=== Building: $rust_target (via cross with custom Dockerfile) ==="
cross build --release --target "$rust_target"
}
# Main
case "${1:-all}" in
all)
for target in "${ARCH_MAP[@]}"; do
build_arch "$target"
done
;;
x86_64|arm64|armv7)
case "$1" in
x86_64) build_arch "x86_64-unknown-linux-gnu" ;;
arm64) build_arch "aarch64-unknown-linux-gnu" ;;
armv7) build_arch "armv7-unknown-linux-gnueabihf" ;;
esac
;;
help|--help|-h)
echo "Usage: $0 [arch|help]"
echo ""
echo "Commands:"
echo " all (default) Build all architectures"
echo " x86_64 Build only x86_64"
echo " arm64 Build only arm64"
echo " armv7 Build only ARMv7"
echo ""
echo "Examples:"
echo " $0 # Build all"
echo " $0 x86_64 # Build x86_64 only"
exit 0
;;
*)
echo "Error: Unknown argument: $1"
exit 1
;;
esac
echo ""
echo "Binaries built:"
for target in "${ARCH_MAP[@]}"; do
if [ -f "$PROJECT_DIR/target/$target/release/one-kvm" ]; then
echo " $target: OK"
fi
done
echo ""
echo "Static libraries:"
for target in "${ARCH_MAP[@]}"; do
case "$target" in
x86_64-unknown-linux-gnu) gnu_target="x86_64-linux-gnu" ;;
aarch64-unknown-linux-gnu) gnu_target="aarch64-linux-gnu" ;;
armv7-unknown-linux-gnueabihf) gnu_target="armv7-linux-gnueabihf" ;;
esac
if [ -d "$PROJECT_DIR/target/one-kvm-libs/$gnu_target/lib" ]; then
echo " $gnu_target: OK"
fi
done
echo ""
echo "Next step: ./build/package-docker.sh or ./build/package-deb.sh"