Files
qingjian/apps/linux/scripts/package.sh
T
yenharvey f8b1167434 chore: 合并 main 到 refactor/render-engine
- 菜单编号:macOS 设置 5、符号面板 6;Windows 符号面板 7、旧版设置 8
- Linux 打包带上设置程序与 hicolor 八档图标
- 用户文档里的设置指路改成新设置的页名,内容取 main 的
2026-10-15 15:20:10 +08:00

36 lines
2.3 KiB
Bash
Executable File
Raw 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.
#!/usr/bin/env bash
# //! 打预编译包 target/linux-package/qingjian-<版本>-linux-<cpu>.tar.gz:Server、设置程序、Fcitx5 插件、产品数据与安装脚本。
# //! 先跑 tools/release/data-fetch.sh;包里按仓库相对路径放文件,解开后的 install.sh 与源码安装共用 files.py 的清单与校验。
set -euo pipefail
root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../../.." && pwd)
cd "$root"
version=$(sed -n 's/^version = "\(.*\)"/\1/p' apps/linux/server/Cargo.toml | head -1)
if [[ "$version" == *-dev ]]; then
version+="-$(git rev-parse --short=7 HEAD)"
git diff --quiet HEAD || version+='+'
fi
tools/release/data-fetch.sh --verify
[[ -f data/models/hanzhang-zhiwei/hanzhang-zhiwei-small.qjm && -f data/models/hanzhang-tongbian/hanzhang-tongbian-small.qjm && -f data/generated/dict.qj ]] || { echo '缺少产品数据或含章模型,先运行 tools/release/data-fetch.sh' >&2; exit 1; }
cargo_output=$(realpath -m -- "${CARGO_TARGET_DIR:-$root/target}")
cargo build --release --locked -p qingjian-linux-server -p qingjian-settings --target-dir "$cargo_output"
cmake_output="$root/target/fcitx5-package"
cmake -S apps/linux/fcitx5 -B "$cmake_output" -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF
cmake --build "$cmake_output" --parallel "${CMAKE_BUILD_PARALLEL_LEVEL:-2}"
name="qingjian-$version-linux-$(uname -m)"
out="$root/target/linux-package"
stage="$out/$name"
rm -rf "$stage" "$out/$name.tar.gz"
mkdir -p "$stage/bin" "$stage/lib"
install -m 755 "$cargo_output/release/qingjian-linux-server" "$cargo_output/release/qingjian-settings" "$stage/bin/"
install -m 755 "$cmake_output/qingjian.so" "$stage/lib/"
install -m 755 apps/linux/scripts/package-install.sh "$stage/install.sh"
install -m 755 apps/linux/scripts/uninstall.sh "$stage/"
install -m 644 apps/linux/scripts/files.py "$stage/"
# 产品数据只带压缩包,install.sh 装前解开(files.py 按 data.lock 校验压缩包,再按包内摘要逐个校验解出的文件)
cp -r --parents LICENSE apps/settings/linux assets/icon/linux/hicolor assets/stroke/LICENSE-CNS11643.txt apps/linux/fcitx5/data assets/sample assets/glossary assets/levels assets/emoji \
tools/release/data.lock target/release-data/qingjian-data.tar.gz "$stage/"
tar -C "$out" -czf "$out/$name.tar.gz" "$name"
echo "已打包:$out/$name.tar.gz"