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>
2pkgname=streamcontroller-git
3_pkgname=${pkgname%-git}
4_reponame=StreamController
5pkgver=r1856.0967bb2a
6pkgrel=1
7pkgdesc="An elegant Linux app for the Elgato Stream Deck with support for plugins"
8arch=('any')
9url="https://github.com/StreamController/StreamController"
10license=('GPL-3')
11depends=('python' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk' 'libportal' 'libportal-gtk4' 'libadwaita' 'gobject-introspection')
12makedepends=('git' 'python-pip' 'sed')
13provides=('streamcontroller')
14conflicts=('streamcontroller')
15source=("git+https://github.com/StreamController/StreamController.git")
16sha256sums=('SKIP')
17
18pkgver() {
19 cd "$srcdir/$_reponame"
20 printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
21}
22
23package() {
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
60clean() {
61 cd "$srcdir"
62 rm -rf "$_reponame"
63}
64

Scan history

Scanned at (UTC)SeverityRules
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

Report a package

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

0 / 4000
Your suggestion