concat, concat-bin, concat-git: follow the 0.2.1 rewrite; fluxer-bin: stay on stable
This commit is contained in:
1 parent
97de80f1c2
commit
0dd9d17cf4
12 files changed
+326
-310
No files matched your search
+18
-16
@@ -1,30 +1,32 @@
|
||||
pkgbase = concat-git
|
||||
pkgdesc = Free and open-source CapCut replacement, a Tauri video editor with a Rust engine (git)
|
||||
pkgver = 0.2.0.alpha.16.r0.g8938ec3
|
||||
pkgdesc = Free and open-source CapCut replacement, a video editor with a Rust engine (git)
|
||||
pkgver = 0.2.1.r12.geef4579
|
||||
pkgrel = 1
|
||||
url = https://github.com/jub0t/Concat
|
||||
arch = x86_64
|
||||
license = MPL-2.0
|
||||
license = AGPL-3.0-or-later
|
||||
makedepends = rust
|
||||
makedepends = npm
|
||||
makedepends = cmake
|
||||
makedepends = clang
|
||||
makedepends = pkgconf
|
||||
makedepends = git
|
||||
depends = webkit2gtk-4.1
|
||||
depends = gtk3
|
||||
depends = glib2
|
||||
depends = libsoup3
|
||||
depends = gdk-pixbuf2
|
||||
depends = cairo
|
||||
depends = dbus
|
||||
depends = glib-networking
|
||||
depends = alsa-lib
|
||||
depends = ffmpeg
|
||||
depends = alsa-lib
|
||||
depends = fontconfig
|
||||
depends = freetype2
|
||||
depends = libglvnd
|
||||
depends = vulkan-icd-loader
|
||||
depends = libxkbcommon
|
||||
depends = libxkbcommon-x11
|
||||
depends = libx11
|
||||
depends = libxcursor
|
||||
depends = libxi
|
||||
depends = libxrender
|
||||
depends = wayland
|
||||
depends = dbus
|
||||
depends = gcc-libs
|
||||
depends = glibc
|
||||
depends = hicolor-icon-theme
|
||||
optdepends = whisper-cpp: on-device auto-captions and transcription
|
||||
optdepends = vulkan-icd-loader: Vulkan compositor backend
|
||||
optdepends = libglvnd: OpenGL compositor backend
|
||||
provides = concat
|
||||
conflicts = concat
|
||||
options = !debug
|
||||
|
||||
+55
-62
@@ -3,34 +3,34 @@
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=concat-git
|
||||
pkgver=0.2.0.alpha.16.r0.g8938ec3
|
||||
pkgver=0.2.1.r12.geef4579
|
||||
pkgrel=1
|
||||
pkgdesc="Free and open-source CapCut replacement, a Tauri video editor with a Rust engine (git)"
|
||||
pkgdesc="Free and open-source CapCut replacement, a video editor with a Rust engine (git)"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/jub0t/Concat"
|
||||
license=('MPL-2.0')
|
||||
# glib-networking is what gives the webview a TLS backend; alsa-lib is the
|
||||
# engine's cpal playback backend; every media operation spawns the ffmpeg
|
||||
# pair - see the WOLFCUT_SYSTEM_TOOLS note below. The model downloads carry
|
||||
# their own TLS (rustls), so nothing here links openssl.
|
||||
depends=('webkit2gtk-4.1' 'gtk3' 'glib2' 'libsoup3' 'gdk-pixbuf2' 'cairo'
|
||||
'dbus' 'glib-networking' 'alsa-lib' 'ffmpeg' 'gcc-libs' 'glibc'
|
||||
'hicolor-icon-theme')
|
||||
makedepends=('rust' 'npm' 'pkgconf' 'git')
|
||||
# wgpu picks its backend at run time: Vulkan first, GL as the fallback. Both
|
||||
# loaders come from the driver stack every desktop already has, so neither is
|
||||
# a hard dependency of the editor.
|
||||
optdepends=('whisper-cpp: on-device auto-captions and transcription'
|
||||
'vulkan-icd-loader: Vulkan compositor backend'
|
||||
'libglvnd: OpenGL compositor backend')
|
||||
license=('AGPL-3.0-or-later')
|
||||
# Nothing is spawned at run time: FFmpeg is linked, whisper.cpp and
|
||||
# sherpa-onnx are compiled in. alsa-lib is cpal's playback backend;
|
||||
# fontconfig and freetype are the font side of the renderer; libglvnd and
|
||||
# vulkan-icd-loader are the two backends wgpu picks between, and the rest is
|
||||
# what winit opens by name for whichever session the user is in. dbus is the
|
||||
# XDG portal, which is how the file dialogs and "reveal in file manager"
|
||||
# work without a toolkit.
|
||||
depends=('ffmpeg' 'alsa-lib' 'fontconfig' 'freetype2' 'libglvnd'
|
||||
'vulkan-icd-loader' 'libxkbcommon' 'libxkbcommon-x11' 'libx11'
|
||||
'libxcursor' 'libxi' 'libxrender' 'wayland' 'dbus' 'gcc-libs'
|
||||
'glibc' 'hicolor-icon-theme')
|
||||
# clang: bindgen (FFmpeg headers, whisper.cpp) needs libclang.
|
||||
# cmake: whisper.cpp is compiled in, by its own CMake build.
|
||||
makedepends=('rust' 'cmake' 'clang' 'pkgconf' 'git')
|
||||
provides=('concat')
|
||||
conflicts=('concat')
|
||||
# !debug: the release profile already sets strip = true, so there is nothing
|
||||
# left to split into a debug package.
|
||||
# !debug: the app profile strips symbols itself, so there is nothing left to
|
||||
# split into a debug package.
|
||||
# !lto: makepkg's lto puts -flto=auto into CFLAGS, and ring - the crypto
|
||||
# behind the model downloads' TLS - compiles hand-written assembly through
|
||||
# cc, which comes out as bitcode and links to nothing. Rust's own LTO is set
|
||||
# in the release profile and is unaffected.
|
||||
# in the app profile and is unaffected.
|
||||
options=('!debug' '!lto')
|
||||
source=("${pkgname}::git+https://github.com/jub0t/Concat.git")
|
||||
sha256sums=('SKIP')
|
||||
@@ -42,73 +42,66 @@ pkgver() {
|
||||
}
|
||||
|
||||
prepare() {
|
||||
cd "$pkgname/desktop"
|
||||
|
||||
# the frontend toolchain (vite, tsc, tailwind) and the crate registry
|
||||
npm ci --cache "$srcdir/npm-cache"
|
||||
cd "$pkgname/engine"
|
||||
|
||||
export RUSTUP_TOOLCHAIN=stable
|
||||
cd src-tauri
|
||||
cargo fetch --locked --target "$(rustc -vV | sed -n 's/^host: //p')"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "$pkgname/desktop"
|
||||
cd "$pkgname/engine"
|
||||
|
||||
export RUSTUP_TOOLCHAIN=stable
|
||||
export CARGO_TARGET_DIR=target
|
||||
# ggml (whisper.cpp's kernels) tunes itself to the machine it is compiled
|
||||
# on unless told otherwise. A package is not always built on the machine it
|
||||
# runs on, and a binary that faults on a CPU without AVX-512 is a bad trade
|
||||
# for kernels nobody measured. Off, it compiles to the portable baseline.
|
||||
export GGML_NATIVE=OFF
|
||||
|
||||
# build.rs refuses a release build without a staged ffmpeg/whisper-cli,
|
||||
# because a bundle that ships without them is broken when launched from a
|
||||
# desktop file with no PATH to fall back on. A distribution package is the
|
||||
# documented exception: the lookups fall back to PATH, and ffmpeg and
|
||||
# whisper-cpp are packaged for Arch already.
|
||||
export WOLFCUT_SYSTEM_TOOLS=1
|
||||
|
||||
# vite build -> desktop/dist, which tauri-build embeds into the binary
|
||||
npm run build
|
||||
|
||||
cd src-tauri
|
||||
# --features wgpu: FemtoVG over wgpu instead of the default Skia renderer.
|
||||
# skia-bindings downloads prebuilt binaries from its build script, which a
|
||||
# package cannot do; the wgpu renderer is pure Rust. This is the same
|
||||
# choice, for the same reason, that upstream's flake.nix makes.
|
||||
#
|
||||
# --profile app: upstream's shipping profile - fat LTO, panic=abort,
|
||||
# stripped. See engine/Cargo.toml for what each knob is for.
|
||||
#
|
||||
# sherpa-onnx-sys, the text-to-speech backend, ships no C++ build: its build
|
||||
# script downloads a prebuilt static-lib archive from its own release page.
|
||||
# concat pins that archive as a checksummed source; here the version moves
|
||||
# with main, so the build script fetches it - build() needs the network.
|
||||
cargo build --release --frozen
|
||||
cargo build --profile app -p concat --frozen \
|
||||
--no-default-features --features wgpu
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$pkgname"
|
||||
|
||||
# same paths the upstream .deb installs: the project is mid-rename and its
|
||||
# executable, desktop entry and icons all still carry the old name
|
||||
install -Dm755 "desktop/src-tauri/target/release/wolfcut-desktop" \
|
||||
"$pkgdir/usr/bin/wolfcut-desktop"
|
||||
install -Dm755 "engine/target/app/concat" "$pkgdir/usr/bin/concat"
|
||||
|
||||
# the AUR package is named after the project, the executable after what the
|
||||
# project used to be called - keep it reachable under both
|
||||
ln -s wolfcut-desktop "$pkgdir/usr/bin/concat"
|
||||
|
||||
# tauri only writes a desktop entry when it bundles, and the one it puts in
|
||||
# the .deb has an empty Categories=. This is that entry with the categories
|
||||
# upstream's Nix build sets.
|
||||
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/WolfCut.desktop" <<'EOF'
|
||||
# The desktop entry upstream's release workflow writes into the Linux
|
||||
# tarball; there is none in the tree, because the Nix build generates its
|
||||
# own. Reproduced here so this package and concat-bin install the same one.
|
||||
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/concat.desktop" <<'EOF'
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=WolfCut
|
||||
Comment=Free and open source video editor
|
||||
Exec=wolfcut-desktop
|
||||
Icon=wolfcut-desktop
|
||||
Name=Concat
|
||||
Comment=Video editor
|
||||
Exec=concat
|
||||
Icon=concat
|
||||
Categories=AudioVideo;Video;
|
||||
Terminal=false
|
||||
Categories=AudioVideo;AudioVideoEditing;
|
||||
StartupWMClass=wolfcut-desktop
|
||||
EOF
|
||||
|
||||
install -Dm644 "desktop/src-tauri/icons/32x32.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/32x32/apps/wolfcut-desktop.png"
|
||||
install -Dm644 "desktop/src-tauri/icons/128x128.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/128x128/apps/wolfcut-desktop.png"
|
||||
install -Dm644 "desktop/src-tauri/icons/128x128@2x.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/256x256@2/apps/wolfcut-desktop.png"
|
||||
install -Dm644 "assets/icons/concat_logo_256.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/256x256/apps/concat.png"
|
||||
install -Dm644 "assets/concat_logo_512.png" \
|
||||
"$pkgdir/usr/share/icons/hicolor/512x512/apps/concat.png"
|
||||
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
install -Dm644 LICENSE-EXCEPTIONS.md \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE-EXCEPTIONS.md"
|
||||
install -Dm644 THIRD_PARTY_NOTICES.md \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/THIRD_PARTY_NOTICES.md"
|
||||
}
|
||||
+9
-10
@@ -1,7 +1,7 @@
|
||||
# concat-git - Concat (https://github.com/jub0t/Concat) built from the main
|
||||
# branch. Same build as concat, see that package for why the Tauri binary
|
||||
# needs nothing but a JS toolchain and cargo, and why WOLFCUT_SYSTEM_TOOLS=1
|
||||
# is the right switch for a distribution package.
|
||||
# branch. Same build as concat, see that package for why the editor needs
|
||||
# cargo, cmake and clang and nothing else, and why the FemtoVG-over-wgpu
|
||||
# renderer is the one a distribution package can build.
|
||||
#
|
||||
# The one difference: concat pins the prebuilt sherpa-onnx static-lib archive
|
||||
# as a checksummed source, which it can because the version comes from a
|
||||
@@ -10,18 +10,17 @@
|
||||
#
|
||||
# VCS packages are not version-tracked here on purpose. The AUR copy of a -git
|
||||
# PKGBUILD carries only a snapshot of pkgver; the real version comes from
|
||||
# pkgver() when the user builds it. Upstream publishes an alpha release for
|
||||
# every green push to main, several times a day, so following main here would
|
||||
# mean several AUR pushes a day that change nothing for anyone.
|
||||
# latest_version() therefore reports the pkgver that is already in the
|
||||
# PKGBUILD, which makes the update run a no-op: the package is rebuilt,
|
||||
# re-checked and pushed only when the packaging itself changes.
|
||||
# pkgver() when the user builds it. Following main here would mean AUR pushes
|
||||
# that change nothing for anyone. latest_version() therefore reports the
|
||||
# pkgver that is already in the PKGBUILD, which makes the update run a no-op:
|
||||
# the package is rebuilt, re-checked and pushed only when the packaging
|
||||
# itself changes.
|
||||
#
|
||||
# When that happens, makepkg refreshes the pkgver snapshot in the PKGBUILD as
|
||||
# part of the test build, so the committed snapshot follows along by itself.
|
||||
|
||||
# Installed in CI (pacman) before the makepkg test build.
|
||||
BUILD_DEPS=(rust npm git webkit2gtk-4.1 gtk3 libsoup3 alsa-lib)
|
||||
BUILD_DEPS=(rust cmake clang pkgconf git ffmpeg alsa-lib fontconfig freetype2)
|
||||
|
||||
latest_version() {
|
||||
grep -Po '^pkgver=\K.*' "$(dirname "${BASH_SOURCE[0]}")/PKGBUILD"
|
||||
|
||||
Reference in new issue
Block a user