mirror of
https://github.com/Melorise/TamaASR.git
synced 2026-11-07 14:39:32 +00:00
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:
+2
-2
@@ -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
@@ -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}"
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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 包。
|
||||
|
||||
Reference in New Issue
Block a user