qtgmc-6ui
LOW
maintainer jogai
0 votes
scanned 2026-10-22 15:35:25.555348
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: jogai <wouter@jogai.nl>
2
# Design, release steps and maintenance notes: PKGBUILD.md (next to this file).
3
# Generated blocks are rewritten by packaging/sync-pkgbuild.py; do not edit them by hand.
4
5
pkgname=qtgmc-6ui
6
pkgver=0.3.0
7
pkgrel=1
8
pkgdesc="QTGMC deinterlacer for archival video (VapourSynth) with a Qt6 GUI"
9
arch=(x86_64)
10
url="https://github.com/jogai/qtgmc-6ui"
11
# BEGIN generated: licenses (packaging/sync-pkgbuild.py)
12
license=('GPL-2.0-only' 'Apache-2.0' 'GPL-2.0-or-later' 'GPL-3.0-or-later' 'LGPL-2.1-only' 'LGPL-3.0-only' 'MIT' 'WTFPL')
13
_extra_licenses=('zimg-1ad1895d5ff0bbe69c61243f9996aede713d1b5f.tar.gz|COPYING|resize2/zimg-COPYING'
14
'graphengine-cb5b2ce13384ec2491f0c37256ea210034799f69.tar.gz|COPYING|resize2/graphengine-COPYING'
15
'graphengine-7bb77a5c062c610e7f44df6a59155cc3ab3e452a.tar.gz|COPYING|znedi3/graphengine-COPYING'
16
'vsxx-11eb026af5517d69e1d3d6258d1b2c2040c508e7.tar.gz|COPYING.LGPLv2.1|znedi3/vsxx-COPYING.LGPLv2.1'
17
'vapoursynth-zig-344caabeae1f4168b69ea6975d6ef244583e7c63.tar.gz|LICENSE|zsmooth/vapoursynth-zig-LICENSE'
18
'adworacz-fftw-579b516e6b39a2a96200d248fc3c96d1ad7d9841.tar.gz|LICENSE|zsmooth/fftw-zig-LICENSE'
19
'fftw-3.3.11.tar.gz|COPYRIGHT|zsmooth/fftw-COPYRIGHT'
20
'vapoursynth_dfttest2_cpu-11.1.0.tar.gz|vs-dfttest2/cpu_source/vectorclass/LICENSE|dfttest2/vectorclass-LICENSE')
21
# END generated: licenses
22
23
# BEGIN generated: plugin-deps (packaging/sync-pkgbuild.py from packaging/plugins/plugins.json)
24
_plugin_set=all
25
_plugin_depends=(fftw libgcc libstdc++ glibc llvm22-libs zimg)
26
_plugin_makedepends=(cmake llvm22 make meson ninja patch)
27
# END generated: plugin-deps
28
29
# Python-level and runtime-loaded deps namcap cannot see: see PKGBUILD.md "namcap".
30
depends=(
31
python
32
vapoursynth
33
vapoursynth-plugin-bestsource
34
ffmpeg
35
pyside6
36
python-cattrs
37
python-numpy
38
python-platformdirs
39
python-psutil
40
python-rich
41
python-tomli-w
42
python-typing_extensions
43
qt6-svg
44
hicolor-icon-theme
45
bash
46
"${_plugin_depends[@]}"
47
)
48
makedepends=(
49
uv
50
python-build
51
python-hatchling
52
"${_plugin_makedepends[@]}"
53
)
54
optdepends=(
55
'kvazaar: HEVC encoder for viewing copies (not available through FFmpeg)'
56
'sox: high-quality audio resampling/dithering for viewing copies'
57
)
58
options=(!debug !lto) # !lto: plugin build.sh is tested without LTO (per-ISA SIMD kernels)
59
60
_venv=/usr/lib/$pkgname/venv
61
_srcname=$pkgname-$pkgver
62
63
# QTGMC6UI_LOCAL_SRC: working-tree tarball instead of the release (packaging/local-build.sh)
64
if [[ -n ${QTGMC6UI_LOCAL_SRC:-} ]]; then
65
source=("$_srcname.tar.gz::file://$QTGMC6UI_LOCAL_SRC")
66
else
67
source=("$_srcname.tar.gz::$url/archive/v$pkgver.tar.gz")
68
fi
69
# set by sync-pkgbuild.py --project-sha256 (never updpkgsums)
70
_project_sha256='b99844b32bcb6e5ac5c1ff9ad0c631f6a873a91c590e9ca280dbb5ba6cc7bbc5'
71
sha256sums=("$_project_sha256")
72
73
# BEGIN generated: plugin-sources (packaging/sync-pkgbuild.py from packaging/plugins/plugins.json)
74
source+=('akarin-v1.5.0.tar.gz::https://github.com/Jaded-Encoding-Thaumaturgy/akarin-vapoursynth-plugin/archive/refs/tags/v1.5.0.tar.gz') # akarin
75
sha256sums+=('83852c90feef47510b866b8244af035af00ea6b77118b95697eef362266fcb5b')
76
noextract+=('akarin-v1.5.0.tar.gz')
77
source+=('resize2-0.5.1.tar.gz::https://github.com/Jaded-Encoding-Thaumaturgy/vapoursynth-resize2/archive/refs/tags/0.5.1.tar.gz') # resize2
78
sha256sums+=('54d01057818fd0794218ab43147461f803225eeea55766073b7b9aaa3093fe00')
79
noextract+=('resize2-0.5.1.tar.gz')
80
source+=('zimg-1ad1895d5ff0bbe69c61243f9996aede713d1b5f.tar.gz::https://github.com/sekrit-twc/zimg/archive/1ad1895d5ff0bbe69c61243f9996aede713d1b5f.tar.gz') # resize2
81
sha256sums+=('264e545f54c8ed564e00ea11865b7e4391563a297dbd3935c611c24a8eee9a46')
82
noextract+=('zimg-1ad1895d5ff0bbe69c61243f9996aede713d1b5f.tar.gz')
83
source+=('graphengine-cb5b2ce13384ec2491f0c37256ea210034799f69.tar.gz::https://github.com/sekrit-twc/graphengine/archive/cb5b2ce13384ec2491f0c37256ea210034799f69.tar.gz') # resize2
84
sha256sums+=('663bc958094280e3dabfa76a408296a51f5222f56115fd7782eae737edeaa179')
85
noextract+=('graphengine-cb5b2ce13384ec2491f0c37256ea210034799f69.tar.gz')
86
source+=('mvutensils-v9.tar.gz::https://github.com/myrsloik/mvutensils/archive/refs/tags/v9.tar.gz') # mvutensils
87
sha256sums+=('5b4fa7dc6e6278c3bd2acd15be222e253e47c30cfa898619c2a02effd6de7dff')
88
noextract+=('mvutensils-v9.tar.gz')
89
source+=('znedi3-r3.3.tar.gz::https://github.com/sekrit-twc/znedi3/archive/refs/tags/r3.3.tar.gz') # znedi3
90
sha256sums+=('206ac0e98f6152a7dc852e004c00c4294900deea77a6b53102e6e5d50e78f77c')
91
noextract+=('znedi3-r3.3.tar.gz')
92
source+=('graphengine-7bb77a5c062c610e7f44df6a59155cc3ab3e452a.tar.gz::https://github.com/sekrit-twc/graphengine/archive/7bb77a5c062c610e7f44df6a59155cc3ab3e452a.tar.gz') # znedi3
93
sha256sums+=('8a73a9ee1cbb2e62e182b0501365d71969165157e8ef6308cf76e2e053e44102')
94
noextract+=('graphengine-7bb77a5c062c610e7f44df6a59155cc3ab3e452a.tar.gz')
95
source+=('vsxx-11eb026af5517d69e1d3d6258d1b2c2040c508e7.tar.gz::https://github.com/sekrit-twc/vsxx/archive/11eb026af5517d69e1d3d6258d1b2c2040c508e7.tar.gz') # znedi3
96
sha256sums+=('2f0a453543b62386ef6050d56d12a991507d733f15aae0b5e1930ac4bcb2f0e7')
97
noextract+=('vsxx-11eb026af5517d69e1d3d6258d1b2c2040c508e7.tar.gz')
98
source+=('zsmooth-0.20.0.tar.gz::https://github.com/adworacz/zsmooth/archive/refs/tags/0.20.0.tar.gz') # zsmooth
99
sha256sums+=('218d141fe0b0e1cac2c6a16f2d653dd2fb4ea6f0b8d0792232dbbe2107469600')
100
noextract+=('zsmooth-0.20.0.tar.gz')
101
source+=('vapoursynth-zig-344caabeae1f4168b69ea6975d6ef244583e7c63.tar.gz::https://github.com/dnjulek/vapoursynth-zig/archive/344caabeae1f4168b69ea6975d6ef244583e7c63.tar.gz') # zsmooth
102
sha256sums+=('385dd211a8e98d0cfd78199d5e1cb93ff442558d4fec789aef247310ca974689')
103
noextract+=('vapoursynth-zig-344caabeae1f4168b69ea6975d6ef244583e7c63.tar.gz')
104
source+=('adworacz-fftw-579b516e6b39a2a96200d248fc3c96d1ad7d9841.tar.gz::https://github.com/adworacz/fftw/archive/579b516e6b39a2a96200d248fc3c96d1ad7d9841.tar.gz') # zsmooth
105
sha256sums+=('b92b046271bacec5d2015bc6fd1e5425b23479d295dc26dfa08615c1598f28b9')
106
noextract+=('adworacz-fftw-579b516e6b39a2a96200d248fc3c96d1ad7d9841.tar.gz')
107
source+=('fftw-3.3.11.tar.gz::https://www.fftw.org/fftw-3.3.11.tar.gz') # zsmooth
108
sha256sums+=('5630c24cdeb33b131612f7eb4b1a9934234754f9f388ff8617458d0be6f239a1')
109
noextract+=('fftw-3.3.11.tar.gz')
110
source+=('zig-x86_64-linux-0.16.0.tar.xz::https://ziglang.org/download/0.16.0/zig-x86_64-linux-0.16.0.tar.xz') # zsmooth
111
sha256sums+=('70e49664a74374b48b51e6f3fdfbf437f6395d42509050588bd49abe52ba3d00')
112
noextract+=('zig-x86_64-linux-0.16.0.tar.xz')
113
source+=('vapoursynth_dfttest2_cpu-11.1.0.tar.gz::https://files.pythonhosted.org/packages/13/a6/ab2b5ff13a13584fd46133711747646a525e80fea7703b1c4a4021870976/vapoursynth_dfttest2_cpu-11.1.0.tar.gz') # dfttest2
114
sha256sums+=('656b91c77b097ac521de89d216be34cea94164c2c7cb51c6baad149981859c49')
115
noextract+=('vapoursynth_dfttest2_cpu-11.1.0.tar.gz')
116
source+=('dfttest2-11.0.0-py3-none-any.whl::https://files.pythonhosted.org/packages/cc/97/861b986073c4a44d32d045878c762f13cad76609b6bef8b336faeed688de/dfttest2-11.0.0-py3-none-any.whl') # dfttest2
117
sha256sums+=('869067bb309a8ffb4f5c5b8fe6a96cca164ac59879502ef4cb029505f8b7e4cc')
118
noextract+=('dfttest2-11.0.0-py3-none-any.whl')
119
# END generated: plugin-sources
120
121
# BEGIN generated: python (packaging/sync-pkgbuild.py from uv.lock)
122
source+=('jetpytools-3.1.2-py3-none-any.whl::https://files.pythonhosted.org/packages/2f/f5/501254ac5e0c01e3755b480e9d0c96bd654c6fc408ec8adcd950da4b728d/jetpytools-3.1.2-py3-none-any.whl') # jetpytools 3.1.2
123
sha256sums+=('7a7f2cfb89615269e28451b17effd9ae81c01135de70ef463093b9916a368008')
124
noextract+=('jetpytools-3.1.2-py3-none-any.whl')
125
source+=('vsjetpack-2.2.6-py3-none-any.whl::https://files.pythonhosted.org/packages/50/32/9359de2b97f25528a62c666f21eaf80893787db468658f3c4bcb52b5aa4f/vsjetpack-2.2.6-py3-none-any.whl') # vsjetpack 2.2.6
126
sha256sums+=('5835d0a4011555ea29bbba15055fbf605d5668b8bd6832f36866ef0c56e0e335')
127
noextract+=('vsjetpack-2.2.6-py3-none-any.whl')
128
# END generated: python
129
130
build() {
131
cd "$_srcname"
132
rm -rf "$srcdir"/{plugins-out,plugin-licenses,dist} # stale output of an earlier makepkg run
133
# Bundled native plugins (offline, from the pinned tarballs above); -jN from MAKEFLAGS.
134
local jobs=${QTGMC6UI_JOBS:-}
135
[[ -n $jobs || ! ${MAKEFLAGS:-} =~ -j[[:space:]]*([0-9]+) ]] || jobs=${BASH_REMATCH[1]}
136
QTGMC6UI_JOBS=${jobs:-$(nproc)} PYTHON=/usr/bin/python3 QTGMC6UI_LICENSE_DIR="$srcdir/plugin-licenses" \
137
bash packaging/plugins/build.sh "$_plugin_set" "$srcdir" "$srcdir/plugins-out"
138
# The application wheel.
139
python -m build --wheel --no-isolation --outdir "$srcdir/dist"
140
}
141
142
package() {
143
cd "$_srcname"
144
local root="$pkgdir/usr/lib/$pkgname" venv="$pkgdir$_venv"
145
local pyver
146
pyver=$(python3 -c 'import sys; print("%d.%d" % sys.version_info[:2])')
147
148
install -d "$root/plugins"
149
cp -a --no-preserve=ownership "$srcdir/plugins-out/." "$root/plugins/"
150
151
# Offline venv on the versioned system python with system site-packages (Arch provides
152
# vapoursynth/PySide6/numpy): hash-pinned wheels from source=(), then the app wheel.
153
export UV_NO_CONFIG=1 UV_OFFLINE=1 UV_NO_PROGRESS=1 UV_LINK_MODE=copy \
154
UV_PYTHON_DOWNLOADS=never UV_PYTHON_PREFERENCE=only-system \
155
UV_CACHE_DIR="$srcdir/uv-cache"
156
rm -rf "$UV_CACHE_DIR" # a cache kept from an earlier makepkg run would serve a stale app wheel
157
uv venv --python "/usr/bin/python$pyver" --system-site-packages --no-project "$venv"
158
uv export --frozen --offline --no-emit-project --no-header --no-dev \
159
-o "$srcdir/requirements.txt" >/dev/null
160
uv pip install --python "$venv/bin/python" --no-deps --no-index --require-hashes \
161
--find-links "$srcdir" --no-compile -r "$srcdir/requirements.txt"
162
# Python side of the bundled plugins (plugins.json python_wheels, e.g. dfttest2).
163
local whl wheels
164
mapfile -t wheels < <(python3 -I packaging/plugins/manifest.py sources "$_plugin_set" | cut -f2 | grep '\.whl$' || true)
165
for whl in "${wheels[@]}"; do
166
uv pip install --python "$venv/bin/python" --no-deps --no-index --no-compile "$srcdir/$whl"
167
done
168
uv pip install --python "$venv/bin/python" --no-deps --no-index --no-compile \
169
"$srcdir"/dist/qtgmc_6ui-"$pkgver"-py3-none-any.whl
170
171
# ABI record for `qtgmc-6ui doctor` (loads every plugin once; fails the build if one is broken).
172
"$venv/bin/python" -I -B packaging/write-build-info.py \
173
--out "$root/build-info.json" --plugin-dir "$root/plugins" \
174
--manifest packaging/plugins/manifest.py --plugin-set "$_plugin_set" \
175
--site-packages "$venv/lib/python$pyver/site-packages" \
176
--pkgver "$pkgver" --pkgrel "$pkgrel" --march "${QTGMC6UI_MARCH:-x86-64}"
177
178
# Relocation + reproducibility clean-up. venv/bin keeps only the python symlinks (entry
179
# scripts carry $pkgdir shebangs; /usr/bin/qtgmc-6ui is the only entry point).
180
rm -rf "$venv"/{.lock,.gitignore,CACHEDIR.TAG}
181
find "$venv/bin" -mindepth 1 ! -name 'python*' -delete
182
find "$venv" -name __pycache__ -prune -exec rm -rf {} +
183
local d
184
for d in "$venv"/lib/python*/site-packages/*.dist-info; do
185
rm -f "$d"/{direct_url.json,uv_cache.json}
186
sed -i -e '/^[^,]*direct_url\.json,/d' -e '/^[^,]*uv_cache\.json,/d' \
187
-e '/^\.\.\/\.\.\/\.\.\/bin\//d' "$d/RECORD"
188
done
189
SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH:-0} "$venv/bin/python" -I -m compileall -q -f -j1 \
190
--invalidation-mode unchecked-hash -s "$pkgdir" -p / "$venv/lib"
191
192
install -Dm755 packaging/qtgmc-6ui.launcher "$pkgdir/usr/bin/qtgmc-6ui"
193
install -Dm644 packaging/qtgmc-6ui.desktop -t "$pkgdir/usr/share/applications"
194
install -Dm644 src/qtgmc_6ui/gui/resources/qtgmc-6ui.svg -t "$pkgdir/usr/share/icons/hicolor/scalable/apps"
195
install -d "$pkgdir/usr/share/licenses/$pkgname"
196
cp -r --no-preserve=ownership "$srcdir/plugin-licenses/." "$pkgdir/usr/share/licenses/$pkgname/"
197
# licence texts of sub-sources (generated _extra_licenses: tarball|member|dest)
198
local entry file member dest top
199
for entry in "${_extra_licenses[@]}"; do
200
IFS='|' read -r file member dest <<<"$entry"
201
top=$(bsdtar -tf "$srcdir/$file" | head -n1 | cut -d/ -f1)
202
install -d "$(dirname "$pkgdir/usr/share/licenses/$pkgname/$dest")"
203
bsdtar -xOf "$srcdir/$file" "$top/$member" >"$pkgdir/usr/share/licenses/$pkgname/$dest"
204
chmod 644 "$pkgdir/usr/share/licenses/$pkgname/$dest"
205
done
206
local lic dist
207
for lic in "$venv"/lib/python*/site-packages/*.dist-info/licenses; do
208
dist=$(basename "$(dirname "$lic")"); dist=${dist%%-[0-9]*}
209
[[ $dist == qtgmc_6ui ]] && continue
210
ln -s "${lic#"$pkgdir"}" "$pkgdir/usr/share/licenses/$pkgname/python-$dist"
211
done
212
}
213
Changes since previous scan
--- PKGBUILD @ 2026-10-13 00:23+++ PKGBUILD @ 2026-10-22 15:35@@ -3,7 +3,7 @@ # Generated blocks are rewritten by packaging/sync-pkgbuild.py; do not edit them by hand. pkgname=qtgmc-6ui-pkgver=0.2.0+pkgver=0.3.0 pkgrel=1 pkgdesc="QTGMC deinterlacer for archival video (VapourSynth) with a Qt6 GUI" arch=(x86_64)@@ -23,7 +23,7 @@ # BEGIN generated: plugin-deps (packaging/sync-pkgbuild.py from packaging/plugins/plugins.json) _plugin_set=all _plugin_depends=(fftw libgcc libstdc++ glibc llvm22-libs zimg)-_plugin_makedepends=(cmake llvm22 make meson ninja patch zig)+_plugin_makedepends=(cmake llvm22 make meson ninja patch) # END generated: plugin-deps # Python-level and runtime-loaded deps namcap cannot see: see PKGBUILD.md "namcap".@@ -33,9 +33,12 @@ vapoursynth-plugin-bestsource ffmpeg pyside6+ python-cattrs python-numpy+ python-platformdirs python-psutil python-rich+ python-tomli-w python-typing_extensions qt6-svg hicolor-icon-theme@@ -64,7 +67,7 @@ source=("$_srcname.tar.gz::$url/archive/v$pkgver.tar.gz") fi # set by sync-pkgbuild.py --project-sha256 (never updpkgsums)-_project_sha256='0752127b533635ce32c3e74615d05afdf70eb737a1f90f7599024b757b19afb8'+_project_sha256='b99844b32bcb6e5ac5c1ff9ad0c631f6a873a91c590e9ca280dbb5ba6cc7bbc5' sha256sums=("$_project_sha256") # BEGIN generated: plugin-sources (packaging/sync-pkgbuild.py from packaging/plugins/plugins.json)@@ -104,6 +107,9 @@ source+=('fftw-3.3.11.tar.gz::https://www.fftw.org/fftw-3.3.11.tar.gz') # zsmooth sha256sums+=('5630c24cdeb33b131612f7eb4b1a9934234754f9f388ff8617458d0be6f239a1') noextract+=('fftw-3.3.11.tar.gz')+source+=('zig-x86_64-linux-0.16.0.tar.xz::https://ziglang.org/download/0.16.0/zig-x86_64-linux-0.16.0.tar.xz') # zsmooth+sha256sums+=('70e49664a74374b48b51e6f3fdfbf437f6395d42509050588bd49abe52ba3d00')+noextract+=('zig-x86_64-linux-0.16.0.tar.xz') source+=('vapoursynth_dfttest2_cpu-11.1.0.tar.gz::https://files.pythonhosted.org/packages/13/a6/ab2b5ff13a13584fd46133711747646a525e80fea7703b1c4a4021870976/vapoursynth_dfttest2_cpu-11.1.0.tar.gz') # dfttest2 sha256sums+=('656b91c77b097ac521de89d216be34cea94164c2c7cb51c6baad149981859c49') noextract+=('vapoursynth_dfttest2_cpu-11.1.0.tar.gz')Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-22 15:35:25 | Low | 1 |
| 2026-10-13 00:23:45 | Clean | 2 |
| 2026-10-12 15:13:59 | Low | 1 |
| 2026-10-11 00:26:05 | Clean | 2 |
| 2026-10-10 14:14:18 | Low | 1 |