mirror of
https://github.com/Melorise/TamaASR.git
synced 2026-11-07 14:39:32 +00:00
build: 迁移依赖管理至 pnpm
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:
+7
-7
@@ -1,6 +1,6 @@
|
||||
# Linux 分发打包
|
||||
|
||||
MeloASR 0.1.15 的系统包由两部分组成:
|
||||
MeloASR 0.1.16 的系统包由两部分组成:
|
||||
|
||||
- Electron 应用安装到 `/opt/meloasr`,命令入口为 `/usr/bin/meloasr`;
|
||||
- Fcitx5 常驻 addon 由目标发行版中的 CMake/Fcitx5 开发包编译,并安装到该环境报告的 addon 目录。
|
||||
@@ -12,7 +12,7 @@ MeloASR 0.1.15 的系统包由两部分组成:
|
||||
deb、rpm 和 Arch 配置期望项目提供:
|
||||
|
||||
```bash
|
||||
npm run build:linux:dir
|
||||
pnpm run build:linux:dir
|
||||
```
|
||||
|
||||
该命令应在 `release/linux-unpacked/` 生成可直接运行的 Electron 目录,并且主程序名必须是 `meloasr`。仓库提供的 `electron-builder.yml` 只生成这一中间目录;deb/rpm/Arch 的系统文件仍由各自脚本管理,避免用安装钩子复制未被包管理器追踪的 Fcitx5 文件。
|
||||
@@ -21,7 +21,7 @@ npm run build:linux:dir
|
||||
|
||||
```json
|
||||
{
|
||||
"build:linux:dir": "npm run build && electron-builder --config packaging/electron-builder.yml --linux dir"
|
||||
"build:linux:dir": "pnpm run build && electron-builder --config packaging/electron-builder.yml --linux dir"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -36,18 +36,18 @@ packaging/scripts/stage-linux.sh release/linux-unpacked packaging/out/root
|
||||
在 Debian/Ubuntu 对应目标环境中安装 Node.js 构建依赖、CMake、C++ 编译器、Fcitx5 开发包与 nlohmann-json 开发包,然后执行:
|
||||
|
||||
```bash
|
||||
npm run build:linux:dir
|
||||
pnpm run build:linux:dir
|
||||
packaging/deb/build-deb.sh
|
||||
```
|
||||
|
||||
产物位于 `packaging/out/meloasr_0.1.15_<arch>.deb`。依赖名称按 Debian/Ubuntu 系列填写,但尚未在各发行版完成安装验证。
|
||||
产物位于 `packaging/out/meloasr_0.1.16_<arch>.deb`。依赖名称按 Debian/Ubuntu 系列填写,但尚未在各发行版完成安装验证。
|
||||
|
||||
## rpm
|
||||
|
||||
在目标 RPM 发行版中准备相同的编译依赖和 `rpmbuild`,然后执行:
|
||||
|
||||
```bash
|
||||
npm run build:linux:dir
|
||||
pnpm run build:linux:dir
|
||||
packaging/rpm/build-rpm.sh
|
||||
```
|
||||
|
||||
@@ -64,7 +64,7 @@ nix build
|
||||
nix run
|
||||
```
|
||||
|
||||
flake 使用 nixpkgs 的 Electron,Node 依赖由 `package-lock.json` 的 integrity 数据导入,不需要手写固定输出 hash。仓库首次确定发布地址后,需要锁定并提交 `flake.lock`。当前环境没有 Nix,尚未实际执行上述命令。
|
||||
flake 使用 nixpkgs 的 Electron,Node 依赖由 `pnpm-lock.yaml` 和固定输出的 pnpm store 导入。仓库首次确定发布地址后,需要锁定并提交 `flake.lock`。
|
||||
|
||||
## 发布前必须完成
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
pkgname=meloasr
|
||||
pkgver=0.1.15
|
||||
pkgver=0.1.16
|
||||
pkgrel=1
|
||||
pkgdesc='Web-backed voice input for Fcitx5'
|
||||
arch=('x86_64')
|
||||
url='https://github.com/Melorise/MeloASR'
|
||||
license=('MPL2')
|
||||
depends=('fcitx5' 'gtk3' 'nss' 'libxss' 'mesa' 'alsa-lib')
|
||||
makedepends=('nodejs' 'npm' 'cmake' 'gcc' 'nlohmann-json')
|
||||
makedepends=('nodejs' 'pnpm' 'cmake' 'gcc' 'nlohmann-json')
|
||||
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||
sha256sums=('SKIP')
|
||||
|
||||
@@ -14,8 +14,8 @@ _source_dir="MeloASR-${pkgver}"
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${_source_dir}"
|
||||
npm ci
|
||||
npm run build:linux: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
|
||||
@@ -24,7 +24,7 @@ build() {
|
||||
|
||||
check() {
|
||||
cd "${srcdir}/${_source_dir}"
|
||||
npm test
|
||||
pnpm test
|
||||
ctest --test-dir build/fcitx5 --output-on-failure
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
```bash
|
||||
curl --fail --location --remote-name \
|
||||
https://github.com/Melorise/MeloASR/releases/download/v0.1.15/PKGBUILD
|
||||
https://github.com/Melorise/MeloASR/releases/download/v0.1.16/PKGBUILD
|
||||
makepkg --syncdeps --cleanbuild
|
||||
```
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
<binary>meloasr</binary>
|
||||
</provides>
|
||||
<releases>
|
||||
<release version="0.1.16" date="2026-08-26"/>
|
||||
<release version="0.1.15" date="2026-08-26"/>
|
||||
<release version="0.1.14" date="2026-08-26"/>
|
||||
<release version="0.1.13" date="2026-08-24"/>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
project_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
version="${MELOASR_VERSION:-0.1.15}"
|
||||
version="${MELOASR_VERSION:-0.1.16}"
|
||||
arch="${MELOASR_DEB_ARCH:-$(dpkg --print-architecture)}"
|
||||
app_dir="${1:-${MELOASR_ELECTRON_APP_DIR:-${project_dir}/release/linux-unpacked}}"
|
||||
work_dir="${project_dir}/packaging/out/deb-root"
|
||||
|
||||
+16
-12
@@ -1,7 +1,9 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, importNpmLock
|
||||
, fetchPnpmDeps
|
||||
, nodejs
|
||||
, pnpm_11
|
||||
, pnpmConfigHook
|
||||
, electron
|
||||
, cmake
|
||||
, pkg-config
|
||||
@@ -10,19 +12,26 @@
|
||||
, nlohmann_json
|
||||
}:
|
||||
|
||||
let
|
||||
pnpm = pnpm_11;
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "meloasr";
|
||||
version = (builtins.fromJSON (builtins.readFile ../../package.json)).version;
|
||||
|
||||
src = ../..;
|
||||
|
||||
npmDeps = importNpmLock {
|
||||
npmRoot = finalAttrs.src;
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-KoxRIhZVhshxTpl5rzzfUnaSAuGo3gCvFD2FsltN1gc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
importNpmLock.npmConfigHook
|
||||
pnpm
|
||||
pnpmConfigHook
|
||||
cmake
|
||||
pkg-config
|
||||
makeWrapper
|
||||
@@ -30,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
buildInputs = [ fcitx5 nlohmann_json ];
|
||||
|
||||
# 保留 npmConfigHook 的 postConfigure 生命周期,但不对项目根目录运行默认 CMake 配置。
|
||||
# 保留 pnpmConfigHook 的 postConfigure 生命周期,但不对项目根目录运行默认 CMake 配置。
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
runHook postConfigure
|
||||
@@ -38,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
npm run build
|
||||
pnpm run build
|
||||
cmake -S linux/fcitx5 -B build/fcitx5 \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_PREFIX="$out" \
|
||||
@@ -49,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
npm test
|
||||
pnpm test
|
||||
ctest --test-dir build/fcitx5 --output-on-failure
|
||||
runHook postCheck
|
||||
'';
|
||||
@@ -65,11 +74,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cp package.json "$appDir/"
|
||||
cp -r dist "$appDir/"
|
||||
if [ -d node_modules ]; then
|
||||
npm prune --omit=dev --ignore-scripts
|
||||
cp -r node_modules "$appDir/"
|
||||
fi
|
||||
|
||||
install -Dm644 packaging/assets/meloasr.desktop \
|
||||
"$out/share/applications/meloasr.desktop"
|
||||
install -Dm644 packaging/assets/meloasr-autostart.desktop \
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
project_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
version="${MELOASR_VERSION:-0.1.15}"
|
||||
version="${MELOASR_VERSION:-0.1.16}"
|
||||
app_dir="${1:-${MELOASR_ELECTRON_APP_DIR:-${project_dir}/release/linux-unpacked}}"
|
||||
stage_dir="${project_dir}/packaging/out/rpm-root"
|
||||
top_dir="${project_dir}/packaging/out/rpmbuild"
|
||||
|
||||
@@ -36,6 +36,9 @@ tar -C %{buildroot} -xzf %{SOURCE0}
|
||||
/etc/xdg/autostart/meloasr.desktop
|
||||
|
||||
%changelog
|
||||
* Wed Aug 26 2026 MeloASR contributors - 0.1.16-1
|
||||
- Migrate dependency installation and build commands from npm to pnpm.
|
||||
|
||||
* Wed Aug 26 2026 MeloASR contributors - 0.1.15-1
|
||||
- Download the Arch package source directly from the matching GitHub release tag.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user