Files
navop/script/install-linux.sh
T
胡飞 46a5978443 refactor(product-split): main 目录归位 crates/navop_app,包名统一 navop_app
产品装配移出后 main 已只剩库,却仍占着仓库根目录、与 apps/* 并列,看起来像一个
产品。本次把它落回 crate 层:

- git mv main crates/navop_app;package name 由 main 改为 navop_app(与 lib 名
  一致),删掉冗余的 [lib] 块;根 members 同步。
- 三个 app 改为直接相对路径依赖 navop_app = { path = "../../crates/navop_app" },
  不进 workspace.dependencies(Cargo 不允许再关继承来的 default-features)。
- 26 处逃出 crate 根的 include_str! 各加一层 ../(resources/*、core/build.rs、
  apps/* 与 crates/*_view 的 Cargo.toml、app_kit 源码);build.rs 的 icon/manifest
  路径同步。
- env_file.rs 与 i18n_locale_keys_contract 的「工作区根」改为上两级;
  cross-crate 源码断言(core/window_close、db_view、one_ui、windows_rdp_host)指向
  新路径。
- locales/main.yml 保持原名:i18n 命名空间与全仓 t!() key 绑定,改名是另一件事。
- 发布链路同步:release_pr.py(MANIFEST_PATH、lock_app_version、报错文案)、
  beta-release.sh 版本包名集合、release-tag.sh / ci.yml / release.yml /
  .github/RELEASE.md / AGENTS.md / CLAUDE.md 等文档的路径与 -p navop_app。
- 顺带修两处未推送提交遗留的 CI 红线:app_kit::install 的
  expected_binary_name cfg 过宽(macOS dead_code)、测试里多余的
  is_supported_app_bundle import;release PR 测试夹具补齐四个 manifest;
  windows_rdp_host 的 ALLOWED_FILES 断言对齐 release_pr.py 现状。

验证:cargo test -p navop_app(595 lib + 4 集成契约)、-p app_kit(149)、
one-ui/windows_rdp_host 契约、三个 app cargo build、cargo check --all-targets
全通过;script/tests 32 项、release-packaging 与 scripts/ai 的 node 测试全绿。
2026-11-01 00:52:04 +08:00

89 lines
2.7 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
set -e
# 说明:`webkit2gtk-4.1` 开发包只服务于可选的 `embedded-webview` feature(AI 对话里的
# HTML 预览弹窗),它默认关闭、三平台一致,原因见 `crates/navop_app/Cargo.toml`。默认构建不装它
# 也编得过,这里仍然装上只是为了 `cargo build --features embedded-webview` 能开箱即用。
# 官方发布包不带它 —— 带 WebKitGTK 4.1 的发行版与发布包的 glibc 2.28 基线不相配,
# 也没法随依赖包提供。
detect_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
echo "$ID"
elif [ -f /etc/fedora-release ]; then
echo "fedora"
elif [ -f /etc/debian_version ]; then
echo "debian"
else
echo "unknown"
fi
}
DISTRO=$(detect_distro)
echo "检测到发行版: $DISTRO"
case "$DISTRO" in
ubuntu|debian|linuxmint|pop)
echo "安装 Ubuntu/Debian 依赖..."
sudo apt update
# Test on Ubuntu 24.04
sudo apt install -y \
libudev-dev \
gcc g++ clang libfontconfig-dev libwayland-dev \
libwebkit2gtk-4.1-dev libxkbcommon-x11-dev libx11-xcb-dev \
libssl-dev libzstd-dev \
vulkan-validationlayers libvulkan1
;;
fedora|rhel|rocky|almalinux|centos)
echo "安装 Fedora/RHEL 依赖..."
if command -v dnf &> /dev/null; then
PKG_MANAGER="dnf"
else
PKG_MANAGER="yum"
fi
sudo $PKG_MANAGER install -y \
systemd-devel \
gcc gcc-c++ clang fontconfig-devel wayland-devel \
webkit2gtk4.1-devel libxkbcommon-x11-devel libxcb-devel \
openssl-devel libzstd-devel \
vulkan-validation-layers vulkan-loader
;;
arch|manjaro|endeavouros)
echo "安装 Arch Linux 依赖..."
sudo pacman -Sy --noconfirm \
systemd \
gcc clang fontconfig wayland \
webkit2gtk-4.1 libxkbcommon-x11 libxcb \
openssl zstd \
vulkan-validation-layers vulkan-icd-loader
;;
opensuse*)
echo "安装 openSUSE 依赖..."
sudo zypper install -y \
systemd-devel \
gcc gcc-c++ clang fontconfig-devel wayland-devel \
libwebkit2gtk-4_1-0 libxkbcommon-x11-devel libxcb-devel \
libopenssl-devel libzstd-devel \
vulkan-validation-layers libvulkan1
;;
*)
echo "错误: 不支持的发行版 '$DISTRO'"
echo "请手动安装以下依赖:"
echo " - gcc, g++, clang"
echo " - fontconfig 开发包"
echo " - wayland 开发包"
echo " - webkit2gtk-4.1 开发包(可选,只有显式开启 embedded-webview 时才需要)"
echo " - libxkbcommon-x11 开发包"
echo " - libx11-xcb 或 libxcb 开发包"
echo " - openssl 开发包"
echo " - libzstd 开发包"
echo " - vulkan 相关包"
exit 1
;;
esac
echo "依赖安装完成!"