fix(local-tool): Linux build 支援 webkit2gtk-4.1(Ubuntu 22.10+ / Debian 12+)
使用者在 Linux build 看到:
pkg-config --cflags ... webkit2gtk-4.0
Package 'webkit2gtk-4.0' not found
根因:Wails v2.11 預設 cgo pkg-config 指定 webkit2gtk-4.0,但 Ubuntu
22.10 之後的版本已經把系統 package 從 webkit2gtk-4.0 改名為 4.1
(API 大致相容)。使用者 bootstrap 裝的是 libwebkit2gtk-4.1-dev,
pkg-config 找不到 4.0.pc 就 fail。
修法:
1. Makefile wails-linux target 自動偵測 webkit2gtk 版本
- 優先 pkg-config --exists webkit2gtk-4.1 → wails build -tags webkit2_41
(Wails v2.10+ 支援的 build tag,切換到 4.1 的 cgo 宣告)
- 退回 pkg-config --exists webkit2gtk-4.0 → wails build 預設
- 兩者都沒有 → 清楚錯誤訊息 + 建議安裝指令
2. scripts/bootstrap-linux.sh 裝 webkit2gtk dev package 時也做版本偵測
- apt-cache show 優先查 4.1,退回 4.0
- Ubuntu 22.04 及之前 repo 有 4.0;22.10+ / 24.04 repo 只有 4.1
- 兩個都試過才 err
驗證:
- make -n wails-linux dry-run 正常 parse
- bash -n scripts/bootstrap-linux.sh 語法 OK
- macOS 端 make dmg 仍 work(未改 darwin target)
使用者待做:Linux 端 git pull 拉新版 → 重跑 bootstrap-linux.sh
(確保 webkit2gtk-4.1-dev 安裝)→ make appimage。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f5655e38b1
commit
fbd585ab73
@ -490,7 +490,23 @@ wails-linux: payload-linux ## ⚠️ 必須在 Linux runner 上執行:wails bu
|
|||||||
echo ""; \
|
echo ""; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
cd visiona-local && wails build -platform linux/amd64 -clean
|
# webkit2gtk-4.0 從 Ubuntu 22.10+ / Debian 12+ 起被 webkit2gtk-4.1 取代。
|
||||||
|
# 偵測 pkg-config 哪個存在:優先用 4.1(加 -tags webkit2_41),4.0 則
|
||||||
|
# 不加 tag(Wails 預設)。
|
||||||
|
@if pkg-config --exists webkit2gtk-4.1 2>/dev/null; then \
|
||||||
|
echo "==> webkit2gtk-4.1 detected → wails build with -tags webkit2_41"; \
|
||||||
|
cd visiona-local && wails build -platform linux/amd64 -clean -tags webkit2_41; \
|
||||||
|
elif pkg-config --exists webkit2gtk-4.0 2>/dev/null; then \
|
||||||
|
echo "==> webkit2gtk-4.0 detected → wails build (default)"; \
|
||||||
|
cd visiona-local && wails build -platform linux/amd64 -clean; \
|
||||||
|
else \
|
||||||
|
echo ""; \
|
||||||
|
echo "❌ 找不到 webkit2gtk-4.0 或 webkit2gtk-4.1 dev header"; \
|
||||||
|
echo " 請執行:sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev"; \
|
||||||
|
echo " (舊版 Ubuntu 20.04 可改用 libwebkit2gtk-4.0-dev)"; \
|
||||||
|
echo ""; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
@du -sh visiona-local/build/bin/visiona-local
|
@du -sh visiona-local/build/bin/visiona-local
|
||||||
|
|
||||||
# ── 安裝檔打包 ─────────────────────────────────────────────────────
|
# ── 安裝檔打包 ─────────────────────────────────────────────────────
|
||||||
|
|||||||
@ -25,10 +25,22 @@ log "[1/5] 安裝系統套件(需要 sudo)"
|
|||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install -y \
|
sudo apt install -y \
|
||||||
git curl ca-certificates build-essential pkg-config \
|
git curl ca-certificates build-essential pkg-config \
|
||||||
libgtk-3-dev libwebkit2gtk-4.1-dev \
|
libgtk-3-dev \
|
||||||
python3 python3-pip python3-venv \
|
python3 python3-pip python3-venv \
|
||||||
file desktop-file-utils fuse libfuse2
|
file desktop-file-utils fuse libfuse2
|
||||||
|
|
||||||
|
# webkit2gtk:優先 4.1(Ubuntu 22.10+ / Debian 12+),退回 4.0(Ubuntu 20.04 / 22.04)。
|
||||||
|
# Makefile wails-linux target 會偵測已安裝的版本並自動加 -tags webkit2_41。
|
||||||
|
if apt-cache show libwebkit2gtk-4.1-dev >/dev/null 2>&1; then
|
||||||
|
log " → 偵測到 libwebkit2gtk-4.1-dev 可用,安裝中"
|
||||||
|
sudo apt install -y libwebkit2gtk-4.1-dev
|
||||||
|
elif apt-cache show libwebkit2gtk-4.0-dev >/dev/null 2>&1; then
|
||||||
|
log " → 偵測到 libwebkit2gtk-4.0-dev 可用,安裝中"
|
||||||
|
sudo apt install -y libwebkit2gtk-4.0-dev
|
||||||
|
else
|
||||||
|
err "找不到 libwebkit2gtk-4.1-dev 或 libwebkit2gtk-4.0-dev。請手動安裝對應的 webkit2gtk dev package(Ubuntu: sudo apt install libwebkit2gtk-4.1-dev)"
|
||||||
|
fi
|
||||||
|
|
||||||
log "[2/5] 安裝 Go $GO_VERSION"
|
log "[2/5] 安裝 Go $GO_VERSION"
|
||||||
if ! command -v go >/dev/null || [[ "$(go version 2>/dev/null)" != *"go$GO_VERSION"* ]]; then
|
if ! command -v go >/dev/null || [[ "$(go version 2>/dev/null)" != *"go$GO_VERSION"* ]]; then
|
||||||
curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -o /tmp/go.tar.gz
|
curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -o /tmp/go.tar.gz
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user