fthr-clips-git

LOW
maintainer Ransom 0 votes scanned 2026-09-19 11:30:33.287899
View on AUR
Why flagged

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

PKGBUILD

1# Maintainer: Vaspyyy <lolbautz2 at gmail dot com>
2pkgname=fthr-clips-git
3pkgver=1.1.0alpha0.r3.g64a7b0b
4pkgrel=1
5pkgdesc='Instant replay capture and clip management (upstream Linux development branch)'
6arch=('x86_64')
7url='https://github.com/FTHR-Community/FTHR-Clips'
8license=('GPL-3.0-only' 'MIT' 'LGPL-3.0-or-later' 'OFL-1.1' 'PSF-2.0' 'Apache-2.0' 'BSD-3-Clause' 'Zlib' '0BSD')
9depends=('python' 'pyside6' 'qt6-multimedia' 'python-numpy' 'python-opencv'
10 'python-keyboard' 'glibc' 'gcc-libs' 'libpulse' 'wayland' 'ca-certificates')
11makedepends=('git' 'cmake' 'pkgconf' 'patchelf' 'licenses' 'python-installer' 'python-packaging' 'python-setuptools')
12checkdepends=('python-pytest' 'python-pytest-qt' 'python-typing_extensions')
13optdepends=(
14 'python-sounddevice: microphone recording and level meter (uses PortAudio)'
15 'pipewire-pulse: desktop audio through PipeWire'
16 'pulseaudio: alternative desktop audio server'
17 'grim: screenshots on supported Wayland compositors'
18 'openbsd-netcat: compositor hotkey socket commands'
19 'xdg-utils: open the clips folder'
20 'xorg-xwayland: run the UI with QT_QPA_PLATFORM=xcb when native Wayland fails'
21 'libva-mesa-driver: AMD VA-API encoding'
22 'nvidia-utils: NVIDIA NVENC encoding'
23 'xdotool: X11 window detection'
24 'xorg-xprop: X11 fullscreen detection'
25 'xorg-xrandr: native X11 monitor geometry'
26)
27provides=("fthr-clips=$pkgver")
28conflicts=('fthr-clips')
29# Preserve the upstream per-library hashes and the sealed uploader payload.
30options=('!strip' '!debug')
31_ffmpeg=ffmpeg-n8.1.2-34-g9b6c8969e0-linux64-lgpl-shared-8.1
32source=(
33 'FTHR-Clips::git+https://github.com/FTHR-Community/FTHR-Clips.git#branch=linux'
34 "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-07-31-14-10/${_ffmpeg}.tar.xz"
35 'https://files.pythonhosted.org/packages/53/60/b8db5f1a4b0fb228175f2ea0aa33f949adcc097fbe981cc524f9faf85777/pyinstaller-6.19.0-py3-none-manylinux2014_x86_64.whl'
36 'https://files.pythonhosted.org/packages/88/f4/035fb8c06deff827f540a9a4ed9122c54e5376fca3e42eddf0c263730775/pyinstaller_hooks_contrib-2026.4-py3-none-any.whl'
37 'https://files.pythonhosted.org/packages/a9/ba/000a1996d4308bc65120167c21241a3b205464a2e0b58deda26ae8ac21d1/altgraph-0.17.5-py2.py3-none-any.whl'
38 'prepare-ffmpeg.py'
39 'fthr-clips'
40 'collect-uploader-licenses.py'
41 'liblzma-0BSD.txt'
42)
43noextract=("${_ffmpeg}.tar.xz" 'pyinstaller-6.19.0-py3-none-manylinux2014_x86_64.whl'
44 'pyinstaller_hooks_contrib-2026.4-py3-none-any.whl' 'altgraph-0.17.5-py2.py3-none-any.whl')
45sha256sums=('SKIP'
46 'c882a80f06617149198a98a07a0880a7e881953ae9f9cb931f5be09a4f93caae'
47 'a0fc5f6b3c55aa54353f0c74ffa59b1115433c1850c6f655d62b461a2ed6cbbe'
48 '1de1a5e49a878122010b88c7e295502bc69776c157c4a4dc78741a4e6178b00f'
49 'f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597'
50 '4a351c53faee8b004fae2a1b31d24bdbae444534996013f0e184ae9d3b367fc2'
51 '090ef9fa5b6ac5de8a7fdf2be24f0d8bbc43c241375c76d7b23d9ccc4bed714a'
52 '248fc13c182338eced319efdaa0137334f9a773fedaaf0380f35a28a65c40f2a'
53 '0b01625d853911cd0e2e088dcfb743261034a091bb379246cb25a14cc4c74bf1')
54
55pkgver() {
56 cd FTHR-Clips
57 # Keep alpha/beta/rc attached to the numeric release so pacman orders them
58 # below stable. Limit tags to the release vocabulary we deliberately support.
59 local description release stage number revision commit
60 description=$(git describe --tags --long --abbrev=7 --match 'v[0-9]*')
61 if [[ $description =~ ^v([0-9]+\.[0-9]+\.[0-9]+)(-(alpha|beta|rc)(\.?[0-9]+)?)?-([0-9]+)-g([0-9a-f]+)$ ]]; then
62 release=${BASH_REMATCH[1]} stage=${BASH_REMATCH[3]} number=${BASH_REMATCH[4]#.}
63 revision=${BASH_REMATCH[5]} commit=${BASH_REMATCH[6]}
64 # An explicit zero for an unnumbered prerelease keeps alpha0.rN below
65 # alpha1/alpha2. Pacman otherwise ranks alpha.rN above alpha2.
66 if [[ -n $stage ]]; then
67 release+="${stage}${number:-0}"
68 fi
69 printf '%s.r%s.g%s\n' "$release" "$revision" "$commit"
70 else
71 printf 'Unrecognized upstream release tag: %s\n' "$description" >&2
72 return 1
73 fi
74}
75
76prepare() {
77 python prepare-ffmpeg.py FTHR-Clips "${_ffmpeg}.tar.xz"
78}
79
80build() {
81 cd FTHR-Clips
82 cmake -S FTHRcapture_linux -B FTHRcapture_linux/build \
83 -DCMAKE_BUILD_TYPE=Release -DFTHR_FFMPEG_ROOT="$PWD/FTHRcapture_linux/third_party/ffmpeg" \
84 -DBUILD_TESTING=ON
85 cmake --build FTHRcapture_linux/build --parallel "$(nproc)"
86 # Only the optional, consent-gated uploader is frozen, exactly as upstream.
87 # All build tools are declared wheels; no pip or remote fetch runs here.
88 rm -rf "$srcdir/build-tools"
89 python -m installer --destdir="$srcdir/build-tools" --no-compile-bytecode \
90 "$srcdir/pyinstaller-6.19.0-py3-none-manylinux2014_x86_64.whl" \
91 "$srcdir/pyinstaller_hooks_contrib-2026.4-py3-none-any.whl" \
92 "$srcdir/altgraph-0.17.5-py2.py3-none-any.whl"
93 PYTHONPATH="$srcdir/build-tools$(python -c 'import sysconfig; print(sysconfig.get_path("purelib"))')" \
94 PYTHONNOUSERSITE=1 PYINSTALLER_CONFIG_DIR="$srcdir/pyinstaller-cache" \
95 python tools/build_linux_uploader.py --python /usr/bin/python
96 rm -rf "$srcdir/uploader-licenses"
97 python "$srcdir/collect-uploader-licenses.py" "$PWD" \
98 "$srcdir/build-tools$(python -c 'import sysconfig; print(sysconfig.get_path("purelib"))')" \
99 "$srcdir/uploader-licenses"
100 python tools/verify_release_licenses.py --tree .
101}
102
103check() {
104 cd FTHR-Clips
105 ctest --test-dir FTHRcapture_linux/build --output-on-failure
106 # Headless suite: compositor/GPU qualification belongs to the real desktop
107 # smoke test, not an automatic build. Keep test state out of the user's home.
108 mkdir -p "$srcdir/check-home"
109 env -u DISPLAY -u WAYLAND_DISPLAY HOME="$srcdir/check-home" \
110 QT_QPA_PLATFORM=offscreen python -m pytest -o addopts='' -q
111}
112
113package() {
114 cd FTHR-Clips
115 local root="$pkgdir/usr/lib/fthr-clips"
116 install -d "$root/FTHRcapture_linux/build" "$root/FTHRcapture_linux/third_party/ffmpeg"
117 cp -a FTHR_UI "$root/"
118 find "$root/FTHR_UI" -type d -name __pycache__ -prune -exec rm -rf {} +
119 install -m755 FTHRcapture_linux/build/FTHRclips FTHRcapture_linux/build/libFTHRPlaybackMixer.so \
120 "$root/FTHRcapture_linux/build/"
121 cp -a FTHRcapture_linux/third_party/ffmpeg/lib "$root/FTHRcapture_linux/third_party/ffmpeg/"
122 rm -rf "$root/FTHRcapture_linux/third_party/ffmpeg/lib/pkgconfig"
123 install -d "$root/FTHRcapture_linux/third_party/ffmpeg/bin"
124 install -m755 FTHRcapture_linux/third_party/ffmpeg/bin/{ffmpeg,ffprobe} \
125 "$root/FTHRcapture_linux/third_party/ffmpeg/bin/"
126 # BtbN's tools carry the broken relative RPATH "-Wl:../lib". Relocate only
127 # these executables; upstream's checksum-pinned shared libraries stay intact.
128 local tool
129 for tool in ffmpeg ffprobe; do
130 patchelf --force-rpath --set-rpath '$ORIGIN/../lib' \
131 "$root/FTHRcapture_linux/third_party/ffmpeg/bin/$tool"
132 done
133 install -Dm644 plugin-packages/FTHR-Uploader-linux.fthrplugin \
134 "$root/plugin-packages/FTHR-Uploader-linux.fthrplugin"
135 install -Dm755 "$srcdir/fthr-clips" "$pkgdir/usr/bin/fthr-clips"
136 install -Dm644 AppDir/fthr-clips.desktop "$pkgdir/usr/share/applications/fthr-clips.desktop"
137 # Only adapt the AppImage executable to the installed command. Preserve
138 # upstream categories/identity; pending desktop PRs are not included.
139 sed -i 's/^Exec=AppRun$/Exec=fthr-clips/' "$pkgdir/usr/share/applications/fthr-clips.desktop"
140 install -Dm644 AppDir/fthr-clips.png "$pkgdir/usr/share/icons/hicolor/512x512/apps/fthr-clips.png"
141 install -d "$pkgdir/usr/share/licenses/$pkgname"
142 cp -a LICENSE COPYRIGHT.md THIRD_PARTY_NOTICES.md licenses/. "$pkgdir/usr/share/licenses/$pkgname/"
143 cp -a "$srcdir/uploader-licenses" "$pkgdir/usr/share/licenses/$pkgname/"
144 install -m644 FTHRcapture_linux/third_party/ffmpeg/LICENSE.txt \
145 "$pkgdir/usr/share/licenses/$pkgname/FFmpeg-distribution-LICENSE.txt"
146 install -Dm644 tools/ffmpeg_manifest_linux.json "$pkgdir/usr/share/doc/$pkgname/ffmpeg_manifest_linux.json"
147}
148

Scan history

Scanned at (UTC)SeverityRules
2026-09-19 11:30:33 Low 1

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion