build: 调整 Arch 包为 deb 重打包

默认 PKGBUILD 改为复用官方 deb,并保留 PKGBUILD-from-source 源码构建入口。

AI-assisted-by: Codex
AI-model: gpt-5.6-sol
AI-reasoning-effort: medium
Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
2026-09-01 22:58:01 +08:00
co-authored by Codex
parent 22784a38e7
commit e9f7bc99e9
5 changed files with 91 additions and 41 deletions
+1
View File
@@ -213,6 +213,7 @@ jobs:
run: |
cp flake.lock release/flake.lock
cp packaging/arch/PKGBUILD release/PKGBUILD
cp packaging/arch/PKGBUILD-from-source release/PKGBUILD-from-source
- uses: softprops/action-gh-release@v2
with:
+2 -2
View File
@@ -57,7 +57,7 @@ packaging/rpm/build-rpm.sh
## Arch/pacman
参见 [`arch/README.md`](arch/README.md)。PKGBUILD 在干净 chroot 中从源码构建 Electron 应用和 Fcitx5 addon。
参见 [`arch/README.md`](arch/README.md)。默认 `PKGBUILD` 解包同版本官方 deb 并重打包为 pacman 包;`PKGBUILD-from-source` 保留在干净 chroot 中构建 Electron 应用和 Fcitx5 addon 的原有流程。
## Nix flake
@@ -72,6 +72,6 @@ flake 使用 nixpkgs 的 Electron,Node 依赖由 `pnpm-lock.yaml` 和固定输
- 发布前确认仓库地址和许可证元数据;
- 明确项目许可证,并替换临时的 `LicenseRef-Proprietary`/Nix license;
- 生成 Arch 源码归档真实 SHA-256;
- 生成 Arch bin 版 deb 和源码版源码归档的真实 SHA-256;
- 在干净的 Debian、RPM、Arch 和 Nix 构建环境逐一构建、安装、卸载;
- 验证 Fcitx5 能发现 addon,桌面菜单/托盘图标、自启动开关和包升级均正常。
+19 -36
View File
@@ -2,49 +2,32 @@ pkgname=tama-asr
pkgver=1.0.1
pkgrel=1
pkgdesc='Web-backed voice input for Fcitx5'
arch=('x86_64')
arch=('x86_64' 'aarch64')
url='https://github.com/Melorise/TamaASR'
license=('MPL2')
depends=('fcitx5' 'gtk3' 'nss' 'libxss' 'mesa' 'alsa-lib')
conflicts=('meloasr')
provides=('meloasr')
replaces=('meloasr')
makedepends=('nodejs' 'pnpm' 'cmake' 'gcc' 'nlohmann-json')
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
sha256sums=('SKIP')
_source_dir="TamaASR-${pkgver}"
build() {
cd "${srcdir}/${_source_dir}"
pnpm install --frozen-lockfile
pnpm run build:linux:dir
cmake -S linux/fcitx5 -B build/fcitx5 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr
cmake --build build/fcitx5 --parallel
}
check() {
cd "${srcdir}/${_source_dir}"
pnpm test
ctest --test-dir build/fcitx5 --output-on-failure
}
options=('!strip')
source_x86_64=("${pkgname}-${pkgver}-x86_64.deb::${url}/releases/download/v${pkgver}/${pkgname}_${pkgver}_amd64.deb")
source_aarch64=("${pkgname}-${pkgver}-aarch64.deb::${url}/releases/download/v${pkgver}/${pkgname}_${pkgver}_arm64.deb")
sha256sums_x86_64=('SKIP')
sha256sums_aarch64=('SKIP')
noextract=("${pkgname}-${pkgver}-x86_64.deb" "${pkgname}-${pkgver}-aarch64.deb")
package() {
cd "${srcdir}/${_source_dir}"
local deb_file="${srcdir}/${pkgname}-${pkgver}-${CARCH}.deb"
local deb_root="${srcdir}/deb-root"
local data_archives
install -d "${pkgdir}/opt/tama-asr"
cp -a release/linux-unpacked/. "${pkgdir}/opt/tama-asr/"
install -Dm755 packaging/assets/tama-asr-wrapper "${pkgdir}/usr/bin/tama-asr"
install -Dm644 packaging/assets/tama-asr.desktop \
"${pkgdir}/usr/share/applications/tama-asr.desktop"
install -Dm644 packaging/assets/tama-asr-autostart.desktop \
"${pkgdir}/etc/xdg/autostart/tama-asr.desktop"
install -Dm644 packaging/assets/tama-asr.metainfo.xml \
"${pkgdir}/usr/share/metainfo/tama-asr.metainfo.xml"
install -Dm644 src/assets/logo.png \
"${pkgdir}/usr/share/pixmaps/tama-asr.png"
DESTDIR="${pkgdir}" cmake --install build/fcitx5
rm -rf -- "${deb_root}"
mkdir -p "${deb_root}"
bsdtar -xf "${deb_file}" -C "${deb_root}"
data_archives=("${deb_root}"/data.tar.*)
if (( ${#data_archives[@]} != 1 )) || [[ ! -f "${data_archives[0]}" ]]; then
error '无法从 deb 包中找到唯一的 data.tar.* 归档'
return 1
fi
bsdtar -xf "${data_archives[0]}" -C "${pkgdir}"
}
+50
View File
@@ -0,0 +1,50 @@
pkgname=tama-asr
pkgver=1.0.1
pkgrel=1
pkgdesc='Web-backed voice input for Fcitx5'
arch=('x86_64')
url='https://github.com/Melorise/TamaASR'
license=('MPL2')
depends=('fcitx5' 'gtk3' 'nss' 'libxss' 'mesa' 'alsa-lib')
conflicts=('meloasr')
provides=('meloasr')
replaces=('meloasr')
makedepends=('nodejs' 'pnpm' 'cmake' 'gcc' 'nlohmann-json')
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
sha256sums=('SKIP')
_source_dir="TamaASR-${pkgver}"
build() {
cd "${srcdir}/${_source_dir}"
pnpm install --frozen-lockfile
pnpm run build:linux:dir
cmake -S linux/fcitx5 -B build/fcitx5 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr
cmake --build build/fcitx5 --parallel
}
check() {
cd "${srcdir}/${_source_dir}"
pnpm test
ctest --test-dir build/fcitx5 --output-on-failure
}
package() {
cd "${srcdir}/${_source_dir}"
install -d "${pkgdir}/opt/tama-asr"
cp -a release/linux-unpacked/. "${pkgdir}/opt/tama-asr/"
install -Dm755 packaging/assets/tama-asr-wrapper "${pkgdir}/usr/bin/tama-asr"
install -Dm644 packaging/assets/tama-asr.desktop \
"${pkgdir}/usr/share/applications/tama-asr.desktop"
install -Dm644 packaging/assets/tama-asr-autostart.desktop \
"${pkgdir}/etc/xdg/autostart/tama-asr.desktop"
install -Dm644 packaging/assets/tama-asr.metainfo.xml \
"${pkgdir}/usr/share/metainfo/tama-asr.metainfo.xml"
install -Dm644 src/assets/logo.png \
"${pkgdir}/usr/share/pixmaps/tama-asr.png"
DESTDIR="${pkgdir}" cmake --install build/fcitx5
}
+19 -3
View File
@@ -1,6 +1,10 @@
# Arch Linux 构建
# Arch Linux 打包
远程 Release 会附带当前版本的 `PKGBUILD`。下载后直接运行:
## 默认:从官方 deb 重打包
远程 Release 附带的 `PKGBUILD` 是 bin 版。它根据当前 Arch 架构下载同一 Release 中的 `amd64.deb` 或 `arm64.deb`,解出已经构建好的 Electron 应用、桌面文件和 Fcitx5 addon,再交给 `makepkg` 生成 pacman 包,不会在本地重复编译源码。
下载后直接运行:
```bash
curl --fail --location --remote-name \
@@ -8,4 +12,16 @@ curl --fail --location --remote-name \
makepkg --syncdeps --cleanbuild
```
`PKGBUILD` 会根据 `pkgver` 直接下载 GitHub Release 标签对应的源码归档,无需手动下载、重命名或放置源码包。源码地址固定为 `https://github.com/Melorise/TamaASR/archive/refs/tags/v${pkgver}.tar.gz`,因此同一份 `PKGBUILD` 可以重复构建该版本。
`x86_64` 使用 `tama-asr_<version>_amd64.deb`,`aarch64` 使用 `tama-asr_<version>_arm64.deb`。这两个 deb 与 Arch 包来自同一版本的官方 Release。
## 可选:从源码构建
需要完整源码构建时,使用 Release 同时附带的 `PKGBUILD-from-source`:
```bash
curl --fail --location --remote-name \
https://github.com/Melorise/TamaASR/releases/download/v1.0.1/PKGBUILD-from-source
makepkg --syncdeps --cleanbuild -p PKGBUILD-from-source
```
源码版保留原有流程:下载对应 Git 标签的源码归档,安装锁文件依赖,构建 Electron 应用和 Fcitx5 addon,运行测试后再生成 pacman 包。