fthr-clips-git
LOW
maintainer Ransom
0 votes
scanned 2026-09-19 11:30:33.287899
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>
2
pkgname=fthr-clips-git
3
pkgver=1.1.0alpha0.r3.g64a7b0b
4
pkgrel=1
5
pkgdesc='Instant replay capture and clip management (upstream Linux development branch)'
6
arch=('x86_64')
7
url='https://github.com/FTHR-Community/FTHR-Clips'
8
license=('GPL-3.0-only' 'MIT' 'LGPL-3.0-or-later' 'OFL-1.1' 'PSF-2.0' 'Apache-2.0' 'BSD-3-Clause' 'Zlib' '0BSD')
9
depends=('python' 'pyside6' 'qt6-multimedia' 'python-numpy' 'python-opencv'
10
'python-keyboard' 'glibc' 'gcc-libs' 'libpulse' 'wayland' 'ca-certificates')
11
makedepends=('git' 'cmake' 'pkgconf' 'patchelf' 'licenses' 'python-installer' 'python-packaging' 'python-setuptools')
12
checkdepends=('python-pytest' 'python-pytest-qt' 'python-typing_extensions')
13
optdepends=(
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
)
27
provides=("fthr-clips=$pkgver")
28
conflicts=('fthr-clips')
29
# Preserve the upstream per-library hashes and the sealed uploader payload.
30
options=('!strip' '!debug')
31
_ffmpeg=ffmpeg-n8.1.2-34-g9b6c8969e0-linux64-lgpl-shared-8.1
32
source=(
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
)
43
noextract=("${_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')
45
sha256sums=('SKIP'
46
'c882a80f06617149198a98a07a0880a7e881953ae9f9cb931f5be09a4f93caae'
47
'a0fc5f6b3c55aa54353f0c74ffa59b1115433c1850c6f655d62b461a2ed6cbbe'
48
'1de1a5e49a878122010b88c7e295502bc69776c157c4a4dc78741a4e6178b00f'
49
'f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597'
50
'4a351c53faee8b004fae2a1b31d24bdbae444534996013f0e184ae9d3b367fc2'
51
'090ef9fa5b6ac5de8a7fdf2be24f0d8bbc43c241375c76d7b23d9ccc4bed714a'
52
'248fc13c182338eced319efdaa0137334f9a773fedaaf0380f35a28a65c40f2a'
53
'0b01625d853911cd0e2e088dcfb743261034a091bb379246cb25a14cc4c74bf1')
54
55
pkgver() {
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
76
prepare() {
77
python prepare-ffmpeg.py FTHR-Clips "${_ffmpeg}.tar.xz"
78
}
79
80
build() {
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
103
check() {
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
113
package() {
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) | Severity | Rules |
|---|---|---|
| 2026-09-19 11:30:33 | Low | 1 |