GrabBag/GrabBagPrj/pkg_belttearingserver.sh
2025-09-10 00:31:27 +08:00

158 lines
5.1 KiB
Bash
Raw Permalink 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
# BeltTearingServer 版本配置
PKG_NAME="BeltTearingServer"
PKG_ARCH="arm64"
# 从Version.h文件中读取版本信息
VERSION_FILE="../BeltTearingServer/Version.h"
if [ -f "${VERSION_FILE}" ]; then
# 读取版本号(从 BELT_TEARING_SERVER_VERSION_STRING 中提取)
PKG_VERSION=$(grep '#define BELT_TEARING_SERVER_VERSION_STRING' ${VERSION_FILE} | sed 's/.*"\(.*\)".*/\1/')
# 读取构建号(从 BELT_TEARING_SERVER_VERSION_BUILD 中提取)
BUILD_NUMBER=$(grep '#define BELT_TEARING_SERVER_VERSION_BUILD' ${VERSION_FILE} | sed 's/.*"\(.*\)".*/\1/')
echo "${VERSION_FILE} 读取版本信息:"
echo " 版本号: ${PKG_VERSION}"
echo " 构建号: ${BUILD_NUMBER}"
# 如果读取失败,使用默认值
if [ -z "${PKG_VERSION}" ]; then
PKG_VERSION="1.0.0"
echo "警告: 无法读取版本号,使用默认值: ${PKG_VERSION}"
fi
if [ -z "${BUILD_NUMBER}" ]; then
BUILD_NUMBER="1"
echo "警告: 无法读取构建号,使用默认值: ${BUILD_NUMBER}"
fi
else
# Version.h文件不存在时的默认值
PKG_VERSION="1.0.0"
BUILD_NUMBER="1"
echo "警告: ${VERSION_FILE} 文件不存在,使用默认版本信息"
echo " 版本号: ${PKG_VERSION}"
echo " 构建号: ${BUILD_NUMBER}"
fi
PKG_PATH=$HOME/BeltTearingServerPkg
CODE_PATH=../
RELEASE_PATH=../Publish
echo "=========================================="
echo "开始打包 BeltTearingServer 应用程序 v${PKG_VERSION}..."
echo "=========================================="
if [ -d "${PKG_PATH}" ];then
echo "清理旧的打包目录..."
rm -irf ${PKG_PATH}
fi
echo "创建打包目录结构..."
mkdir -p ${PKG_PATH}/DEBIAN
mkdir -p ${PKG_PATH}/usr/lib
mkdir -p ${PKG_PATH}/etc/profile.d
mkdir -p ${PKG_PATH}/opt/belttearingserver
echo "复制 Qt 运行时环境..."
#QT depend
QT_PKG_PATH=/opt/firefly_qt5.15_arm64_20.04
cp -rfd ${QT_PKG_PATH}/ext ${PKG_PATH}/opt/firefly_qt5.15
cp ${QT_PKG_PATH}/target_qtEnv.sh ${PKG_PATH}/etc/profile.d/
echo "复制依赖库文件..."
#depend
cp -a ${CODE_PATH}/SDK/OpenCV320/Arm/aarch64/*opencv_core*.so* ${PKG_PATH}/usr/lib/
cp -a ${CODE_PATH}/SDK/OpenCV320/Arm/aarch64/*opencv_imgproc*.so* ${PKG_PATH}/usr/lib/
cp -a ${CODE_PATH}/SDK/OpenCV320/Arm/aarch64/*opencv_highgui*.so* ${PKG_PATH}/usr/lib/
cp ${CODE_PATH}/SDK/bagPosition/Arm/aarch64/*.so ${PKG_PATH}/usr/lib/
cp ${CODE_PATH}/SDK/VzNLSDK/Arm/aarch64/*.so ${PKG_PATH}/usr/lib/
# 复制 BeltTearingServer 目录下的所有内容到 /opt
echo "复制 BeltTearingServer 内容到 /opt/..."
#APP
cp ${CODE_PATH}/GrabBagPrj/buildarm/BeltTearingServer/BeltTearingServer ${PKG_PATH}/opt/belttearingserver/
echo "生成 control 文件..."
#control
CONTROL_PATH=${PKG_PATH}/DEBIAN/control
echo "Package: ${PKG_NAME}" > ${CONTROL_PATH}
echo "Version: ${PKG_VERSION}" >> ${CONTROL_PATH}
echo "Section: belttearingserver" >> ${CONTROL_PATH}
echo "Architecture: ${PKG_ARCH}" >> ${CONTROL_PATH}
echo "Priority: optional" >> ${CONTROL_PATH}
echo "Maintainer: BeltTearingServer Team <support@belttearing.com>" >> ${CONTROL_PATH}
echo "Description: BeltTearingServer application" >> ${CONTROL_PATH}
echo "生成安装后脚本..."
#postinst install exec script
POSTINST_PATH=${PKG_PATH}/DEBIAN/postinst
cat > ${POSTINST_PATH} << 'EOF'
#!/bin/bash
echo "配置 BeltTearingServer 应用程序..."
# 安装并启用 belttearingserver.service
if [ -f /opt/belttearingserver/belttearingserver.service ]; then
echo "安装 belttearingserver.service..."
cp /opt/belttearingserver/belttearingserver.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable belttearingserver.service
systemctl start belttearingserver.service
echo "belttearingserver.service 已安装并设置为开机自启"
else
echo "错误: 未找到 belttearingserver.service 文件"
fi
EOF
chmod +x ${POSTINST_PATH}
echo "生成卸载脚本..."
#postrm uninstall exec script
POSTRM_PATH=${PKG_PATH}/DEBIAN/postrm
cat > ${POSTRM_PATH} << 'EOF'
#!/bin/bash
echo "卸载 BeltTearingServer 应用程序..."
# 停止并禁用 belttearingserver.service
systemctl stop belttearingserver.service 2>/dev/null || true
systemctl disable belttearingserver.service 2>/dev/null || true
rm -f /etc/systemd/system/belttearingserver.service
# 重新加载systemd
systemctl daemon-reload
# 清理 /opt/belttearingserver 目录
rm -rf /opt/belttearingserver
echo "BeltTearingServer 应用程序卸载完成!"
EOF
chmod +x ${POSTRM_PATH}
echo "设置文件权限..."
# 设置opt目录权限不包括DEBIAN
chmod -R 755 ${PKG_PATH}/opt
# 确保publish目录存在
mkdir -p ${RELEASE_PATH}
# 生成带时间戳和构建号的包文件名
TIMESTAMP=$(date +%Y%m%d%H%M%S)
DEB_FILENAME="${RELEASE_PATH}/${PKG_NAME}_${PKG_VERSION}_${BUILD_NUMBER}_${PKG_ARCH}_${TIMESTAMP}.deb"
# 开始构建 DEB 包
fakeroot dpkg -b ${PKG_PATH} ${DEB_FILENAME}
echo "=========================================="
echo "打包完成!"
echo "生成的包文件: ${DEB_FILENAME}"
echo "文件大小: $(ls -lh ${DEB_FILENAME} | awk '{print $5}')"
echo "=========================================="