streamcontroller-git
maintainer NOSDuco
· 3 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The pip install runs on requirements.txt from the project's own source repository, which is a normal and safe part of building the application from its official source.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The pip install runs on requirements.txt from the project's own source repository, which is a normal and safe part of building the application from its official source.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
pip install of an external package
pip_install_external
`pip install <package>` fetches an unpinned package from PyPI at build time, outside source=() and makepkg's checksums.
-
PKGBUILD:29
pip install -r requirements.txt
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: nosduco <nosduco at gmail dot com>
2
pkgname=streamcontroller-git
3
_pkgname=${pkgname%-git}
4
_reponame=StreamController
5
pkgver=r1856.0967bb2a
6
pkgrel=1
7
pkgdesc="An elegant Linux app for the Elgato Stream Deck with support for plugins"
8
arch=('any')
9
url="https://github.com/StreamController/StreamController"
10
license=('GPL-3')
11
depends=('python' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk' 'libportal' 'libportal-gtk4' 'libadwaita' 'gobject-introspection')
12
makedepends=('git' 'python-pip' 'sed')
13
provides=('streamcontroller')
14
conflicts=('streamcontroller')
15
source=("git+https://github.com/StreamController/StreamController.git")
16
sha256sums=('SKIP')
17
18
pkgver() {
19
cd "$srcdir/$_reponame"
20
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
21
}
22
23
package() {
24
# Create virtualenv with dependencies
25
mkdir -p "$pkgdir/usr/local/lib/$_pkgname"
26
python -m venv "$pkgdir/usr/local/lib/$_pkgname"
27
source "$pkgdir/usr/local/lib/$_pkgname/bin/activate"
28
cd "$srcdir/$_reponame"
29
pip install -r requirements.txt
30
deactivate
31
32
# Ensure correct venv is used after install
33
cd "$pkgdir/usr/local/lib/$_pkgname/bin"
34
sed -i "s|$pkgdir||g" *
35
cd "$srcdir/$_reponame"
36
37
# Install source files
38
cd "$srcdir"
39
mkdir -p "$pkgdir/usr/lib/$_pkgname"
40
install -d "$_reponame" "$pkgdir/usr/lib/$_pkgname/"
41
cp -r "$_reponame"/* "$pkgdir/usr/lib/$_pkgname/"
42
43
# Install launch script to /usr/bin
44
mkdir -p "$pkgdir/usr/bin"
45
echo "#!/bin/bash" > "$pkgdir/usr/bin/$_pkgname"
46
echo "cd /usr/lib/$_pkgname" >> "$pkgdir/usr/bin/$_pkgname"
47
echo "source /usr/local/lib/$_pkgname/bin/activate" >> "$pkgdir/usr/bin/$_pkgname"
48
echo "python main.py \$@" >> "$pkgdir/usr/bin/$_pkgname"
49
chmod +x "$pkgdir/usr/bin/$_pkgname"
50
51
# Install application entry (use upstream desktop file with corrected Exec and StartupWMClass)
52
sed 's|Exec=.*|Exec=streamcontroller|' "$srcdir/$_reponame/flatpak/launch.desktop" > /tmp/sc.desktop
53
echo "StartupWMClass=com.core447.StreamController" >> /tmp/sc.desktop
54
install -Dm644 /tmp/sc.desktop "$pkgdir/usr/share/applications/com.core447.StreamController.desktop"
55
56
# Install icon under reverse-domain name matching the app's GApplication ID
57
install -Dm644 "$srcdir/$_reponame/flatpak/icon_256.png" "$pkgdir/usr/share/icons/hicolor/256x256/apps/com.core447.StreamController.png"
58
}
59
60
clean() {
61
cd "$srcdir"
62
rm -rf "$_reponame"
63
}
64
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |