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:
@@ -213,6 +213,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cp flake.lock release/flake.lock
|
cp flake.lock release/flake.lock
|
||||||
cp packaging/arch/PKGBUILD release/PKGBUILD
|
cp packaging/arch/PKGBUILD release/PKGBUILD
|
||||||
|
cp packaging/arch/PKGBUILD-from-source release/PKGBUILD-from-source
|
||||||
|
|
||||||
- uses: softprops/action-gh-release@v2
|
- uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
|
|||||||
+2
-2
@@ -57,7 +57,7 @@ packaging/rpm/build-rpm.sh
|
|||||||
|
|
||||||
## Arch/pacman
|
## 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
|
## Nix flake
|
||||||
|
|
||||||
@@ -72,6 +72,6 @@ flake 使用 nixpkgs 的 Electron,Node 依赖由 `pnpm-lock.yaml` 和固定输
|
|||||||
|
|
||||||
- 发布前确认仓库地址和许可证元数据;
|
- 发布前确认仓库地址和许可证元数据;
|
||||||
- 明确项目许可证,并替换临时的 `LicenseRef-Proprietary`/Nix license;
|
- 明确项目许可证,并替换临时的 `LicenseRef-Proprietary`/Nix license;
|
||||||
- 生成 Arch 源码归档真实 SHA-256;
|
- 生成 Arch bin 版 deb 和源码版源码归档的真实 SHA-256;
|
||||||
- 在干净的 Debian、RPM、Arch 和 Nix 构建环境逐一构建、安装、卸载;
|
- 在干净的 Debian、RPM、Arch 和 Nix 构建环境逐一构建、安装、卸载;
|
||||||
- 验证 Fcitx5 能发现 addon,桌面菜单/托盘图标、自启动开关和包升级均正常。
|
- 验证 Fcitx5 能发现 addon,桌面菜单/托盘图标、自启动开关和包升级均正常。
|
||||||
|
|||||||
+19
-36
@@ -2,49 +2,32 @@ pkgname=tama-asr
|
|||||||
pkgver=1.0.1
|
pkgver=1.0.1
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc='Web-backed voice input for Fcitx5'
|
pkgdesc='Web-backed voice input for Fcitx5'
|
||||||
arch=('x86_64')
|
arch=('x86_64' 'aarch64')
|
||||||
url='https://github.com/Melorise/TamaASR'
|
url='https://github.com/Melorise/TamaASR'
|
||||||
license=('MPL2')
|
license=('MPL2')
|
||||||
depends=('fcitx5' 'gtk3' 'nss' 'libxss' 'mesa' 'alsa-lib')
|
depends=('fcitx5' 'gtk3' 'nss' 'libxss' 'mesa' 'alsa-lib')
|
||||||
conflicts=('meloasr')
|
conflicts=('meloasr')
|
||||||
provides=('meloasr')
|
provides=('meloasr')
|
||||||
replaces=('meloasr')
|
replaces=('meloasr')
|
||||||
makedepends=('nodejs' 'pnpm' 'cmake' 'gcc' 'nlohmann-json')
|
options=('!strip')
|
||||||
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
source_x86_64=("${pkgname}-${pkgver}-x86_64.deb::${url}/releases/download/v${pkgver}/${pkgname}_${pkgver}_amd64.deb")
|
||||||
sha256sums=('SKIP')
|
source_aarch64=("${pkgname}-${pkgver}-aarch64.deb::${url}/releases/download/v${pkgver}/${pkgname}_${pkgver}_arm64.deb")
|
||||||
|
sha256sums_x86_64=('SKIP')
|
||||||
_source_dir="TamaASR-${pkgver}"
|
sha256sums_aarch64=('SKIP')
|
||||||
|
noextract=("${pkgname}-${pkgver}-x86_64.deb" "${pkgname}-${pkgver}-aarch64.deb")
|
||||||
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() {
|
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"
|
rm -rf -- "${deb_root}"
|
||||||
cp -a release/linux-unpacked/. "${pkgdir}/opt/tama-asr/"
|
mkdir -p "${deb_root}"
|
||||||
install -Dm755 packaging/assets/tama-asr-wrapper "${pkgdir}/usr/bin/tama-asr"
|
bsdtar -xf "${deb_file}" -C "${deb_root}"
|
||||||
install -Dm644 packaging/assets/tama-asr.desktop \
|
data_archives=("${deb_root}"/data.tar.*)
|
||||||
"${pkgdir}/usr/share/applications/tama-asr.desktop"
|
if (( ${#data_archives[@]} != 1 )) || [[ ! -f "${data_archives[0]}" ]]; then
|
||||||
install -Dm644 packaging/assets/tama-asr-autostart.desktop \
|
error '无法从 deb 包中找到唯一的 data.tar.* 归档'
|
||||||
"${pkgdir}/etc/xdg/autostart/tama-asr.desktop"
|
return 1
|
||||||
install -Dm644 packaging/assets/tama-asr.metainfo.xml \
|
fi
|
||||||
"${pkgdir}/usr/share/metainfo/tama-asr.metainfo.xml"
|
bsdtar -xf "${data_archives[0]}" -C "${pkgdir}"
|
||||||
install -Dm644 src/assets/logo.png \
|
|
||||||
"${pkgdir}/usr/share/pixmaps/tama-asr.png"
|
|
||||||
|
|
||||||
DESTDIR="${pkgdir}" cmake --install build/fcitx5
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
```bash
|
||||||
curl --fail --location --remote-name \
|
curl --fail --location --remote-name \
|
||||||
@@ -8,4 +12,16 @@ curl --fail --location --remote-name \
|
|||||||
makepkg --syncdeps --cleanbuild
|
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