Files
navop/script/install-linux.sh
胡飞 0b3a5c0a9b build: HTML 预览的 embedded-webview 改为全平台默认关闭
- `main` 与 `crates/ai_chat_view` 的 `default` 都去掉 `embedded-webview`,
  需要时显式 `--features embedded-webview` 打开
- 删除 `script/linux-release-features.sh`:Linux 不再需要专属 feature 列表,
  三个平台发同一种形态,`release.yml` 的 Linux 分支回到默认构建
- 移除 `NAVOP_LINUX_EMBEDDED_WEBVIEW` 开关;Windows 32 位的显式列表
  (默认集减 shell-plugins)同步去掉该 feature,避免 win32 成为唯一的另一种形态
- `ci.yml` 补编 opt-in 形态(`cargo check -p main --features embedded-webview`
  与 `cargo check -p ai_chat_view --features embedded-webview --tests`):
  默认形态由 `cargo test --all` 覆盖,两个半边都得有地方编到
- `test-release-packaging.mjs` 改为锁「没有平台构建打开该 feature」+ opt-in 形态有 CI 覆盖
- 注释同步:`main/Cargo.toml`(原因与降级行为)、`install-linux.sh`、
  `package-linux-gpu-stack.py`、`AGENTS.md`

动机:WebKitGTK 4.1 无法随 Linux 发布包提供(带它的发行版都在 glibc 2.39+ 上、
`WebKitWebProcess` 按编译期路径解析),而只让 Linux 关掉会让三个平台各发一种形态,
需要多测一套、多维护一个平台专属列表。关闭后 HTML 预览弹窗降级为
「无法创建 HTML 预览 webview,已保留源码视图」,「用浏览器打开」「下载 HTML」不受影响。

验证:`cargo check -p main`(默认形态)、`cargo check -p main --features embedded-webview`、
`cargo check -p ai_chat_view --features embedded-webview --tests` 三者均通过;
`node --test script/test-release-packaging.mjs` 29/29;两个 workflow YAML 解析通过。
2026-09-22 17:24:06 +08:00

89 lines
2.7 KiB
Bash
Executable File
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.
#!/usr/bin/env bash
set -e
# 说明:`webkit2gtk-4.1` 开发包只服务于可选的 `embedded-webview` feature(AI 对话里的
# HTML 预览弹窗),它默认关闭、三平台一致,原因见 `main/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 "依赖安装完成!"