mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-02-04 09:51:37 +08:00
update:添加构建deb脚本与debian文件
This commit is contained in:
91
build-deb-both.sh
Executable file
91
build-deb-both.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Spark Store - 构建 Qt5 和 Qt6 两个版本的 DEB 包
|
||||
# Build both Qt5 and Qt6 versions of DEB packages
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$SCRIPT_DIR"
|
||||
|
||||
echo "========================================="
|
||||
echo "Spark Store - 双版本 DEB 构建"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
echo "项目目录: $PROJECT_ROOT"
|
||||
echo ""
|
||||
|
||||
# 检查脚本存在
|
||||
if [ ! -f "$PROJECT_ROOT/build-deb-qt5.sh" ] || [ ! -f "$PROJECT_ROOT/build-deb-qt6.sh" ]; then
|
||||
echo "错误: 构建脚本不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查 debian 目录存在
|
||||
if [ ! -d "$PROJECT_ROOT/debian" ]; then
|
||||
echo "错误: debian 目录不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 构建 Qt5
|
||||
echo "================================"
|
||||
echo "第一步:构建 Qt5 版本..."
|
||||
echo "================================"
|
||||
cd "$PROJECT_ROOT"
|
||||
./build-deb-qt5.sh
|
||||
|
||||
# 检查输出
|
||||
if ! ls ../*_qt5_amd64.deb 2>/dev/null | grep -q . ; then
|
||||
echo "错误: Qt5 构建失败,未找到输出文件"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
QT5_DEB=$(ls -t ../*_qt5_amd64.deb 2>/dev/null | head -1)
|
||||
echo "✓ Qt5 版本已构建: $QT5_DEB"
|
||||
echo ""
|
||||
|
||||
# 清理构建文件以进行下一次构建
|
||||
echo "清理构建环境..."
|
||||
cd "$PROJECT_ROOT"
|
||||
rm -rf build-*/spark-update-tool build-*/src build-*/Makefile
|
||||
|
||||
# 构建 Qt6
|
||||
echo "================================"
|
||||
echo "第二步:构建 Qt6 版本..."
|
||||
echo "================================"
|
||||
cd "$PROJECT_ROOT"
|
||||
./build-deb-qt6.sh
|
||||
|
||||
# 检查输出
|
||||
if ! ls ../*_qt6_amd64.deb 2>/dev/null | grep -q . ; then
|
||||
echo "错误: Qt6 构建失败,未找到输出文件"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
QT6_DEB=$(ls -t ../*_qt6_amd64.deb 2>/dev/null | head -1)
|
||||
echo "✓ Qt6 版本已构建: $QT6_DEB"
|
||||
echo ""
|
||||
|
||||
# 显示最终结果
|
||||
echo "========================================="
|
||||
echo "✓ 构建完成!"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
echo "输出文件:"
|
||||
ls -lh "$QT5_DEB" "$QT6_DEB" 2>/dev/null
|
||||
echo ""
|
||||
|
||||
# 显示版本信息
|
||||
echo "验证 Qt5 版本:"
|
||||
dpkg -I "$QT5_DEB" | grep -E "Description:|Package:" | head -2
|
||||
echo ""
|
||||
|
||||
echo "验证 Qt6 版本:"
|
||||
dpkg -I "$QT6_DEB" | grep -E "Description:|Package:" | head -2
|
||||
echo ""
|
||||
|
||||
echo "========================================="
|
||||
echo "安装选项:"
|
||||
echo " Qt5: sudo apt install $QT5_DEB"
|
||||
echo " Qt6: sudo apt install $QT6_DEB"
|
||||
echo "========================================="
|
||||
61
build-deb-qt5.sh
Executable file
61
build-deb-qt5.sh
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Spark Store - Qt5 DEB Package Builder
|
||||
# 构建 Qt5 版本的 DEB 包
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$SCRIPT_DIR"
|
||||
|
||||
echo "========================================="
|
||||
echo "构建 Spark Store - Qt5 版本"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
# 检查 debian 目录是否存在
|
||||
if [ ! -d "$PROJECT_ROOT/debian" ]; then
|
||||
echo "错误: $PROJECT_ROOT/debian 目录不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查必要的文件
|
||||
if [ ! -f "$PROJECT_ROOT/debian/control" ] || [ ! -f "$PROJECT_ROOT/debian/rules" ]; then
|
||||
echo "错误: debian 目录中缺少必要的文件"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "使用 Qt5 构建..."
|
||||
echo "Debian 配置目录: $PROJECT_ROOT/debian"
|
||||
echo ""
|
||||
|
||||
# 构建 DEB 包,传递 Qt 版本标志
|
||||
cd "$PROJECT_ROOT"
|
||||
echo "开始构建..."
|
||||
QT_VERSION=qt5 dpkg-buildpackage -us -uc -b
|
||||
|
||||
BUILD_STATUS=$?
|
||||
|
||||
if [ $BUILD_STATUS -eq 0 ]; then
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "✓ Qt5 DEB 包构建成功!"
|
||||
echo "========================================="
|
||||
|
||||
# 重命名 DEB 文件以包含 qt5 标识
|
||||
DEB_FILE=$(find "$PROJECT_ROOT/.." -maxdepth 1 -name "spark-store_*_$(dpkg-architecture -qDEB_BUILD_ARCH).deb" -type f -printf '%T@ %p\n' | sort -rn | head -1 | cut -d' ' -f2-)
|
||||
if [ -n "$DEB_FILE" ] && [ -f "$DEB_FILE" ]; then
|
||||
DEB_DIR=$(dirname "$DEB_FILE")
|
||||
DEB_BASENAME=$(basename "$DEB_FILE")
|
||||
DEB_NEW_NAME=$(echo "$DEB_BASENAME" | sed 's/_\([^_]*\)\.deb$/_qt5_\1.deb/')
|
||||
DEB_NEW_PATH="$DEB_DIR/$DEB_NEW_NAME"
|
||||
mv "$DEB_FILE" "$DEB_NEW_PATH"
|
||||
echo "DEB 文件已重命名为: $DEB_NEW_NAME"
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "✗ Qt5 DEB 包构建失败"
|
||||
echo "========================================="
|
||||
exit 1
|
||||
fi
|
||||
61
build-deb-qt6.sh
Executable file
61
build-deb-qt6.sh
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Spark Store - Qt6 DEB Package Builder
|
||||
# 构建 Qt6 版本的 DEB 包
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$SCRIPT_DIR"
|
||||
|
||||
echo "========================================="
|
||||
echo "构建 Spark Store - Qt6 版本"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
# 检查 debian 目录是否存在
|
||||
if [ ! -d "$PROJECT_ROOT/debian" ]; then
|
||||
echo "错误: $PROJECT_ROOT/debian 目录不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查必要的文件
|
||||
if [ ! -f "$PROJECT_ROOT/debian/control" ] || [ ! -f "$PROJECT_ROOT/debian/rules" ]; then
|
||||
echo "错误: debian 目录中缺少必要的文件"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "使用 Qt6 构建..."
|
||||
echo "Debian 配置目录: $PROJECT_ROOT/debian"
|
||||
echo ""
|
||||
|
||||
# 构建 DEB 包,传递 Qt 版本标志
|
||||
cd "$PROJECT_ROOT"
|
||||
echo "开始构建..."
|
||||
QT_VERSION=qt6 dpkg-buildpackage -us -uc -b
|
||||
|
||||
BUILD_STATUS=$?
|
||||
|
||||
if [ $BUILD_STATUS -eq 0 ]; then
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "✓ Qt6 DEB 包构建成功!"
|
||||
echo "========================================="
|
||||
|
||||
# 重命名 DEB 文件以包含 qt6 标识
|
||||
DEB_FILE=$(find "$PROJECT_ROOT/.." -maxdepth 1 -name "spark-store_*_$(dpkg-architecture -qDEB_BUILD_ARCH).deb" -type f -printf '%T@ %p\n' | sort -rn | head -1 | cut -d' ' -f2-)
|
||||
if [ -n "$DEB_FILE" ] && [ -f "$DEB_FILE" ]; then
|
||||
DEB_DIR=$(dirname "$DEB_FILE")
|
||||
DEB_BASENAME=$(basename "$DEB_FILE")
|
||||
DEB_NEW_NAME=$(echo "$DEB_BASENAME" | sed 's/_\([^_]*\)\.deb$/_qt6_\1.deb/')
|
||||
DEB_NEW_PATH="$DEB_DIR/$DEB_NEW_NAME"
|
||||
mv "$DEB_FILE" "$DEB_NEW_PATH"
|
||||
echo "DEB 文件已重命名为: $DEB_NEW_NAME"
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "✗ Qt6 DEB 包构建失败"
|
||||
echo "========================================="
|
||||
exit 1
|
||||
fi
|
||||
16
debian/control
vendored
16
debian/control
vendored
@@ -5,14 +5,14 @@ Priority: optional
|
||||
Build-Depends:
|
||||
debhelper (>= 9),
|
||||
pkg-config,
|
||||
qtchooser (>= 55-gc9562a1-1~) | qt5-default,
|
||||
qtbase5-dev | qtbase6-dev,
|
||||
qtchooser (>= 55-gc9562a1-1~) | qt5-default | qt6-base-dev,
|
||||
qtbase5-dev | qt6-base-dev,
|
||||
libqt5svg5-dev | libqt6svg6-dev,
|
||||
qttools5-dev-tools | qt6-tools-dev,
|
||||
qtwebengine5-dev | qt6-webengine-dev,
|
||||
libdtkcore-dev (>= 5.0),
|
||||
libdtkgui-dev (>= 5.0),
|
||||
libdtkwidget-dev (>= 5.0)
|
||||
libdtkcore-dev (>= 5.0) | libdtk6core-dev (>= 6.0),
|
||||
libdtkgui-dev (>= 5.0) | libdtk6gui-dev (>= 6.0),
|
||||
libdtkwidget-dev (>= 5.0) | libdtk6widget-dev (>= 6.0)
|
||||
Standards-Version: 4.1.7
|
||||
Homepage: https://www.spark-app.store/
|
||||
|
||||
@@ -20,6 +20,9 @@ Package: spark-store
|
||||
Architecture: any
|
||||
Provides: spark-store-console-in-container
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends},
|
||||
libdtkcore5 (>= 5.0) | libdtk6core (>= 6.0),
|
||||
libdtkgui5 (>= 5.0) | libdtk6gui (>= 6.0),
|
||||
libdtkwidget5 (>= 5.0) | libdtk6widget (>= 6.0),
|
||||
dde-qt5integration | dde-qt6integration,
|
||||
curl,
|
||||
openssl,
|
||||
@@ -28,9 +31,10 @@ Depends: ${shlibs:Depends}, ${misc:Depends},
|
||||
zenity,
|
||||
policykit-1 | pkexec,
|
||||
libnotify-bin,
|
||||
qtwayland5,
|
||||
qtwayland5 | qt6-wayland,
|
||||
desktop-file-utils,
|
||||
dpkg-dev,
|
||||
lsb-release,
|
||||
Description: Spark Store
|
||||
A community powered app store, based on DTK.
|
||||
Supports both Qt5 and Qt6 versions.
|
||||
|
||||
1
debian/debhelper-build-stamp
vendored
Normal file
1
debian/debhelper-build-stamp
vendored
Normal file
@@ -0,0 +1 @@
|
||||
spark-store
|
||||
18
debian/rules
vendored
18
debian/rules
vendored
@@ -1,6 +1,18 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
export QT_SELECT = qt5
|
||||
# Determine Qt version based on QT_VERSION environment variable
|
||||
# Default to Qt5 if not specified
|
||||
# Usage: QT_VERSION=qt6 dpkg-buildpackage -us -uc -b
|
||||
QT_VERSION ?= qt5
|
||||
|
||||
ifeq ($(QT_VERSION),qt6)
|
||||
export QT_SELECT = qt6
|
||||
QMAKE_CMD = qmake6
|
||||
else
|
||||
export QT_SELECT = qt5
|
||||
QMAKE_CMD = qmake
|
||||
endif
|
||||
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
include /usr/share/dpkg/default.mk
|
||||
|
||||
@@ -22,7 +34,7 @@ override_dh_auto_clean:
|
||||
override_dh_auto_configure:
|
||||
mkdir -p $(CURDIR)/build-$(DEB_HOST_MULTIARCH)
|
||||
|
||||
qmake BUILD_VERSION=$(DEB_VERSION_UPSTREAM) spark-store-project.pro \
|
||||
$(QMAKE_CMD) BUILD_VERSION=$(DEB_VERSION_UPSTREAM) spark-store-project.pro \
|
||||
-spec linux-g++ CONFIG+=force_debug_info \
|
||||
-o $(CURDIR)/build-$(DEB_HOST_MULTIARCH)/
|
||||
|
||||
@@ -34,7 +46,7 @@ override_dh_auto_install:
|
||||
INSTALL_ROOT=$(CURDIR)/debian/spark-store
|
||||
|
||||
# Ignore the dpkg-shlibdeps: warning (it uses none of the library's symbols)
|
||||
# Qt Mutidedia lib will ref to network libraray.
|
||||
# Qt Multimedia lib will ref to network library.
|
||||
override_dh_shlibdeps:
|
||||
dh_shlibdeps --dpkg-shlibdeps-params=--warnings=0 --exclude=opt/durapps/spark-store/bin/ss-feedback/
|
||||
override_dh_strip:
|
||||
|
||||
93
verify-debian-merge.sh
Executable file
93
verify-debian-merge.sh
Executable file
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Debian 合并后的验证脚本
|
||||
# Verification script for merged Debian configuration
|
||||
|
||||
echo "========================================="
|
||||
echo "Spark Store - Debian 配置验证"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
# 检查文件存在
|
||||
echo "[1/4] 检查文件结构..."
|
||||
if [ ! -d "debian" ]; then
|
||||
echo " ✗ debian 目录不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "debian/control" ]; then
|
||||
echo " ✗ debian/control 不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "debian/rules" ]; then
|
||||
echo " ✗ debian/rules 不存在"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo " ✓ 文件结构完整"
|
||||
echo ""
|
||||
|
||||
# 检查是否有旧目录残留
|
||||
echo "[2/4] 检查是否清理了冗余目录..."
|
||||
if [ -d "debian-qt5" ] || [ -d "debian-qt6" ]; then
|
||||
echo " ⚠ 警告: 仍然存在 debian-qt5 或 debian-qt6 目录"
|
||||
else
|
||||
echo " ✓ 已清理冗余目录"
|
||||
fi
|
||||
|
||||
if [ -f "debian-qt5-qt6-backup.tar.gz" ]; then
|
||||
echo " ✓ 已创建备份: debian-qt5-qt6-backup.tar.gz"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# 检查 control 文件支持两个版本
|
||||
echo "[3/4] 检查 debian/control 的版本支持..."
|
||||
if grep -q "qt5-default | qt6-base-dev" debian/control; then
|
||||
echo " ✓ control 文件支持 Qt5 和 Qt6 选择"
|
||||
else
|
||||
echo " ⚠ control 文件可能未正确配置"
|
||||
fi
|
||||
|
||||
if grep -q "libdtk6core-dev" debian/control && grep -q "libdtk6core[^-]" debian/control; then
|
||||
echo " ✓ control 文件包含 Qt6 DTK 依赖"
|
||||
else
|
||||
echo " ⚠ control 文件可能缺少 Qt6 DTK 依赖"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# 检查 rules 文件支持版本切换
|
||||
echo "[4/4] 检查 debian/rules 的版本切换支持..."
|
||||
if grep -q "QT_VERSION ?= qt5" debian/rules; then
|
||||
echo " ✓ rules 文件支持 QT_VERSION 变量(默认 qt5)"
|
||||
else
|
||||
echo " ✗ rules 文件缺少 QT_VERSION 变量定义"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if grep -q "ifeq.*QT_VERSION.*qt6" debian/rules; then
|
||||
echo " ✓ rules 文件支持 qt6 条件配置"
|
||||
else
|
||||
echo " ⚠ rules 文件可能缺少 qt6 条件"
|
||||
fi
|
||||
|
||||
if grep -q "QMAKE_CMD = qmake6" debian/rules; then
|
||||
echo " ✓ rules 文件支持 qmake6 选择"
|
||||
else
|
||||
echo " ⚠ rules 文件可能缺少 qmake6 支持"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# 最终结果
|
||||
echo "========================================="
|
||||
echo "✓ 验证完成!Debian 配置已正确合并"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
echo "使用方法:"
|
||||
echo " 构建 Qt5: ./build-deb-qt5.sh"
|
||||
echo " 构建 Qt6: ./build-deb-qt6.sh"
|
||||
echo " 构建两个版本: ./build-deb-both.sh"
|
||||
echo ""
|
||||
echo "或手动指定版本:"
|
||||
echo " QT_VERSION=qt5 dpkg-buildpackage -us -uc -b"
|
||||
echo " QT_VERSION=qt6 dpkg-buildpackage -us -uc -b"
|
||||
Reference in New Issue
Block a user