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
+17
-20
@@ -1,34 +1,31 @@
|
||||
pkgbase = concat-bin
|
||||
pkgdesc = Free and open-source CapCut replacement, a Tauri video editor with a Rust engine (upstream binary)
|
||||
pkgver = 0.2.0alpha.21
|
||||
pkgdesc = Free and open-source CapCut replacement, a video editor with a Rust engine (upstream binary)
|
||||
pkgver = 0.2.1
|
||||
pkgrel = 1
|
||||
url = https://github.com/jub0t/Concat
|
||||
arch = x86_64
|
||||
license = MPL-2.0
|
||||
depends = webkit2gtk-4.1
|
||||
depends = gtk3
|
||||
depends = glib2
|
||||
depends = libsoup3
|
||||
depends = gdk-pixbuf2
|
||||
depends = cairo
|
||||
depends = dbus
|
||||
depends = glib-networking
|
||||
license = AGPL-3.0-or-later
|
||||
license = GPL-3.0-or-later
|
||||
depends = alsa-lib
|
||||
depends = ffmpeg
|
||||
depends = fontconfig
|
||||
depends = freetype2
|
||||
depends = libglvnd
|
||||
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
|
||||
noextract = concat-bin-0.2.0alpha.21.deb
|
||||
options = !strip
|
||||
options = !debug
|
||||
source = concat-bin-0.2.0alpha.21.deb::https://github.com/jub0t/Concat/releases/download/v0.2.0-alpha.21/WolfCut_0.2.0_amd64.deb
|
||||
source = LICENSE-0.2.0alpha.21::https://raw.githubusercontent.com/jub0t/Concat/v0.2.0-alpha.21/LICENSE
|
||||
sha256sums = 1cc6855a2936f7c56898aa58bce69141f7349ee6728cca0f1f8c26063b5f3d3e
|
||||
sha256sums = 0d96a4ff68ad6d4b6f1f30f713b18d5184912ba8dd389f86aa7710db079abcb0
|
||||
source = concat-bin-0.2.1.tar.gz::https://github.com/jub0t/Concat/releases/download/v0.2.1/Concat-0.2.1-linux-x86_64.tar.gz
|
||||
sha256sums = 949c30dee52ba779d5d91777510cfd57580b67467d841bd2957956219886df6f
|
||||
|
||||
pkgname = concat-bin
|
||||
+46
-55
@@ -3,72 +3,63 @@
|
||||
# https://github.com/Felitendo/PKGBUILDS
|
||||
|
||||
pkgname=concat-bin
|
||||
pkgver=0.2.0alpha.21
|
||||
pkgver=0.2.1
|
||||
pkgrel=1
|
||||
pkgdesc="Free and open-source CapCut replacement, a Tauri video editor with a Rust engine (upstream binary)"
|
||||
pkgdesc="Free and open-source CapCut replacement, a video editor with a Rust engine (upstream binary)"
|
||||
arch=('x86_64')
|
||||
url="https://github.com/jub0t/Concat"
|
||||
license=('MPL-2.0')
|
||||
# What the binary links against, plus what it reaches for at run time:
|
||||
# glib-networking is the webview's TLS backend, and the ffmpeg pair is
|
||||
# spawned by every media operation - see the resources note in package().
|
||||
# The model downloads carry their own TLS (rustls), so openssl is not needed.
|
||||
depends=('webkit2gtk-4.1' 'gtk3' 'glib2' 'libsoup3' 'gdk-pixbuf2' 'cairo'
|
||||
'dbus' 'glib-networking' 'alsa-lib' 'ffmpeg' 'gcc-libs' 'glibc'
|
||||
'hicolor-icon-theme')
|
||||
# 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')
|
||||
# The binary is Concat under the AGPL; the FFmpeg libraries it ships beside
|
||||
# itself are a BtbN GPL build. Both licence texts land in the package: the
|
||||
# repository's LICENSE, and upstream's notices file, which is what names the
|
||||
# terms of everything linked in - FFmpeg, Slint under its GPL option,
|
||||
# whisper.cpp, sherpa-onnx.
|
||||
license=('AGPL-3.0-or-later' 'GPL-3.0-or-later')
|
||||
# Nothing is spawned at run time any more: FFmpeg is linked, whisper.cpp and
|
||||
# sherpa-onnx are compiled in. What is left is what the binary loads - the
|
||||
# ALSA backend of cpal, fontconfig and freetype for text, and the windowing
|
||||
# libraries winit and the renderer open by name: EGL, Wayland, X11 and
|
||||
# xkbcommon. dbus is the XDG portal, which is how the file dialogs and
|
||||
# "reveal in file manager" work without a toolkit.
|
||||
depends=('alsa-lib' 'fontconfig' 'freetype2' 'libglvnd' 'libxkbcommon'
|
||||
'libxkbcommon-x11' 'libx11' 'libxcursor' 'libxi' 'libxrender'
|
||||
'wayland' 'dbus' 'gcc-libs' 'glibc' 'hicolor-icon-theme')
|
||||
provides=('concat')
|
||||
conflicts=('concat')
|
||||
# !strip: upstream's binary is already stripped, and the FFmpeg libraries
|
||||
# beside it are theirs to ship as they are.
|
||||
options=('!strip' '!debug')
|
||||
# Upstream has no stable release yet. The build workflow publishes a
|
||||
# v<version>-alpha.<n> prerelease for every green push to main, so /latest is
|
||||
# empty and the newest versioned release is picked by publication date; see
|
||||
# pkg.sh. The asset name carries tauri.conf.json's version rather than the
|
||||
# tag (every alpha of 0.2.0 ships WolfCut_0.2.0_amd64.deb), so it is resolved
|
||||
# through the GitHub API and synced here along with the checksums.
|
||||
# Upstream's Linux release is one self-contained folder: the binary, the
|
||||
# FFmpeg 8.1 runtime libraries it was linked against, a desktop entry and an
|
||||
# icon. The libraries have to come along - the binary needs libavcodec.so.62
|
||||
# and Arch is on FFmpeg 9 (libavcodec.so.63) - so the whole folder is
|
||||
# installed under /usr/lib/$pkgname, where the binary's own rpath
|
||||
# ($ORIGIN/lib) finds them.
|
||||
#
|
||||
# pkgver drops the hyphens from the tag (v0.2.0-alpha.15 -> 0.2.0alpha.15).
|
||||
# pacman sorts that older than a later plain 0.2.0 (`vercmp 0.2.0alpha.15
|
||||
# 0.2.0` is -1, the trailing alphabetic segment loses), so the prereleases
|
||||
# upgrade to the eventual stable release on their own and no epoch is needed.
|
||||
_tag="v0.2.0-alpha.21"
|
||||
_asset="WolfCut_0.2.0_amd64.deb"
|
||||
source=("${pkgname}-${pkgver}.deb::https://github.com/jub0t/Concat/releases/download/${_tag}/${_asset}"
|
||||
"LICENSE-${pkgver}::https://raw.githubusercontent.com/jub0t/Concat/${_tag}/LICENSE")
|
||||
noextract=("${pkgname}-${pkgver}.deb")
|
||||
sha256sums=('1cc6855a2936f7c56898aa58bce69141f7349ee6728cca0f1f8c26063b5f3d3e' '0d96a4ff68ad6d4b6f1f30f713b18d5184912ba8dd389f86aa7710db079abcb0')
|
||||
# The asset name carries the workspace's version rather than the tag (a
|
||||
# prerelease of 0.2.2 ships Concat-0.2.2-linux-x86_64.tar.gz whatever its tag
|
||||
# says), so it is resolved through the GitHub API and synced here along with
|
||||
# the checksum; see pkg.sh.
|
||||
_tag="v0.2.1"
|
||||
_asset="Concat-0.2.1-linux-x86_64.tar.gz"
|
||||
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/jub0t/Concat/releases/download/${_tag}/${_asset}")
|
||||
sha256sums=('949c30dee52ba779d5d91777510cfd57580b67467d841bd2957956219886df6f')
|
||||
|
||||
package() {
|
||||
# /usr/bin/wolfcut-desktop, the desktop entry, the icons and the staged
|
||||
# resources in /usr/lib/WolfCut - the project is mid-rename, the binary and
|
||||
# every path it installs still carry the old name.
|
||||
bsdtar -xOf "$srcdir/${pkgname}-${pkgver}.deb" 'data.tar.*' \
|
||||
| bsdtar -xpf - -C "$pkgdir" ./usr
|
||||
cd "${_asset%.tar.gz}"
|
||||
|
||||
# Upstream stages a static ffmpeg/ffprobe pair (180 MB) and whisper-cli
|
||||
# inside the bundle so the app runs on a machine with nothing installed.
|
||||
# Both lookups fall back to PATH when the staged copy is missing (desktop
|
||||
# `use_bundled_ffmpeg`, `transcribe::find_binary`), so the packaged Arch
|
||||
# copies are used instead of shipping a second ffmpeg. Named explicitly
|
||||
# rather than dropping the whole resource directory: anything else upstream
|
||||
# stages there is a resource the app needs, and a rename fails here loudly.
|
||||
rm -r "$pkgdir/usr/lib/WolfCut/ffmpeg" "$pkgdir/usr/lib/WolfCut/whisper"
|
||||
rmdir --ignore-fail-on-non-empty "$pkgdir/usr/lib/WolfCut" "$pkgdir/usr/lib"
|
||||
install -Dm755 concat "$pkgdir/usr/lib/$pkgname/concat"
|
||||
# cp, not install: lib/ is the usual set of FFmpeg soname symlinks beside
|
||||
# the real files, and only a copy that preserves them keeps it working.
|
||||
cp -a lib "$pkgdir/usr/lib/$pkgname/lib"
|
||||
|
||||
# Tauri emits the entry with an empty Categories=, which keeps the editor
|
||||
# out of the application menu. Same categories upstream's Nix build sets.
|
||||
sed -i 's|^Categories=.*|Categories=AudioVideo;AudioVideoEditing;|' \
|
||||
"$pkgdir/usr/share/applications/WolfCut.desktop"
|
||||
install -d "$pkgdir/usr/bin"
|
||||
ln -s "/usr/lib/$pkgname/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"
|
||||
install -Dm644 concat.desktop "$pkgdir/usr/share/applications/concat.desktop"
|
||||
install -Dm644 concat.png \
|
||||
"$pkgdir/usr/share/icons/hicolor/256x256/apps/concat.png"
|
||||
|
||||
install -Dm644 "$srcdir/LICENSE-${pkgver}" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
install -Dm644 THIRD_PARTY_NOTICES.md \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/THIRD_PARTY_NOTICES.md"
|
||||
}
|
||||
+37
-32
@@ -1,35 +1,37 @@
|
||||
# concat-bin - Concat (https://github.com/jub0t/Concat), a free and
|
||||
# open-source CapCut replacement: a Tauri 2 shell around a Rust video engine.
|
||||
# open-source CapCut replacement.
|
||||
#
|
||||
# Upstream publishes a Linux .deb per release, so there is no build step
|
||||
# here: on a new version only pkgver, the asset name and the checksums are
|
||||
# refreshed and the PKGBUILD repackages the .deb.
|
||||
# Upstream publishes a self-contained Linux tarball per release, so there is
|
||||
# no build step here: on a new version only pkgver, the asset name and the
|
||||
# checksum are refreshed and the PKGBUILD repackages the tarball.
|
||||
#
|
||||
# The project has no stable release yet. Its build workflow publishes a
|
||||
# "v<version>-alpha.<n>" prerelease for every green push to main, so /latest
|
||||
# is empty and every tag is a prerelease - the alphas are what there is to
|
||||
# package. They arrive several times a day, which is also how often this
|
||||
# package can move.
|
||||
# 0.2.1 is the first release of the rewrite: the Tauri shell and its .deb are
|
||||
# gone, and the app is now one Rust binary (Slint over the engine crates)
|
||||
# shipped as Concat-<version>-linux-<arch>.tar.gz. The tag is what changed
|
||||
# least - see below.
|
||||
#
|
||||
# The release list is not ordered by version: GitHub sorts it by creation
|
||||
# time, and upstream's alpha numbering has already run out of step with it
|
||||
# (v0.2.0-alpha.10 sits between alpha.2 and alpha.1). The newest release is
|
||||
# therefore picked by publication date rather than by list position.
|
||||
# time, and upstream's alpha numbering has run out of step with it before
|
||||
# (v0.2.0-alpha.10 sat between alpha.2 and alpha.1). The newest release is
|
||||
# therefore picked by publication date rather than by list position. Only
|
||||
# tags that start with a version are considered, which is also what keeps the
|
||||
# rolling "nightly" prerelease out.
|
||||
#
|
||||
# The asset name carries tauri.conf.json's version, not the tag - every alpha
|
||||
# of 0.2.0 ships WolfCut_0.2.0_amd64.deb - so it cannot be derived from
|
||||
# pkgver and is resolved through the API into the _asset variable.
|
||||
# The asset name carries the workspace's version, not the tag - a prerelease
|
||||
# of 0.2.2 ships Concat-0.2.2-linux-x86_64.tar.gz whatever its tag says - so
|
||||
# it cannot be derived from pkgver and is resolved through the API into the
|
||||
# _asset variable.
|
||||
#
|
||||
# pkgver drops the hyphens from the tag (v0.2.0-alpha.15 -> 0.2.0alpha.15).
|
||||
# pacman sorts that older than a later plain 0.2.0 (`vercmp 0.2.0alpha.15
|
||||
# 0.2.0` is -1), so the prereleases upgrade to the eventual stable release on
|
||||
# their own and no epoch is needed.
|
||||
# pkgver drops the hyphens from the tag (v0.2.2-alpha.1 -> 0.2.2alpha.1).
|
||||
# pacman sorts that older than a later plain 0.2.2 (`vercmp 0.2.2alpha.1
|
||||
# 0.2.2` is -1), so prereleases upgrade to the eventual release on their own
|
||||
# and no epoch is needed.
|
||||
|
||||
# Not on the AUR yet. concat-git goes up first; these two follow once the
|
||||
# alpha-per-push release cadence has been lived with for a while - upstream
|
||||
# publishes several a day, and each one is an AUR push (and, for concat, a
|
||||
# full Rust build in CI). Flip this to true to publish; until then the
|
||||
# PKGBUILD is still kept current and test-built here.
|
||||
# release cadence has been lived with for a while - upstream published
|
||||
# several alphas a day before 0.2.1, and each one is an AUR push (and, for
|
||||
# concat, a full Rust build in CI). Flip this to true to publish; until then
|
||||
# the PKGBUILD is still kept current and test-built here.
|
||||
AUR_PUBLISH=false
|
||||
|
||||
UPSTREAM_REPO="jub0t/Concat"
|
||||
@@ -52,7 +54,7 @@ latest_version() {
|
||||
# refresh_checksums <version> <pkgbuild-path>
|
||||
refresh_checksums() {
|
||||
local ver="$1" pkgbuild="$2"
|
||||
local tag asset sha_deb sha_license
|
||||
local tag asset sha
|
||||
|
||||
tag="$(latest_tag)"
|
||||
if [[ "$(tag_to_pkgver <<< "$tag")" != "$ver" ]]; then
|
||||
@@ -60,20 +62,23 @@ refresh_checksums() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# e.g. WolfCut_0.2.0_amd64.deb - the version is tauri.conf.json's, not the tag's
|
||||
# e.g. Concat-0.2.1-linux-x86_64.tar.gz - the version is the workspace's,
|
||||
# not the tag's
|
||||
# `|| true`, so that a release that stops carrying the asset says so here
|
||||
# instead of ending the run on grep's exit status with nothing printed.
|
||||
asset="$(gh api "repos/$UPSTREAM_REPO/releases/tags/$tag" --jq '.assets[].name' \
|
||||
| grep -E '_amd64\.deb$')"
|
||||
[[ "$(wc -l <<< "$asset")" -eq 1 ]] || { echo "expected exactly one amd64 .deb, got: $asset" >&2; return 1; }
|
||||
| grep -E '^Concat-.*-linux-x86_64\.tar\.gz$' || true)"
|
||||
if [[ -z "$asset" || "$(wc -l <<< "$asset")" -ne 1 ]]; then
|
||||
echo "expected exactly one linux-x86_64 tarball in $tag, got: ${asset:-none}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
sha_deb="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/$tag/$asset" \
|
||||
| sha256sum | cut -d' ' -f1)"
|
||||
# the .deb ships no copyright file, so the license comes from the tag
|
||||
sha_license="$(curl -sfL "https://raw.githubusercontent.com/$UPSTREAM_REPO/$tag/LICENSE" \
|
||||
sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/$tag/$asset" \
|
||||
| sha256sum | cut -d' ' -f1)"
|
||||
|
||||
sed -i \
|
||||
-e "s|^_tag=.*|_tag=\"$tag\"|" \
|
||||
-e "s|^_asset=.*|_asset=\"$asset\"|" \
|
||||
-e "s|^sha256sums=.*|sha256sums=('$sha_deb' '$sha_license')|" \
|
||||
-e "s|^sha256sums=.*|sha256sums=('$sha')|" \
|
||||
"$pkgbuild"
|
||||
}
|
||||
Reference in new issue
Block a user