thermalright-trcc
The pip install bundles 'uvicorn', a missing dependency from official repos, into the package; this is a legitimate build step to include required software, not malicious remote code execution.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The pip install bundles 'uvicorn', a missing dependency from official repos, into the package; this is a legitimate build step to include required software, not malicious remote code execution.
1 higher static finding superseded - not the current verdict (shown for transparency)
pip_install_external
`pip install <package>` fetches an unpinned package from PyPI at build time, outside source=() and makepkg's checksums.
-
PKGBUILD:56
python -m pip install --root="${pkgdir}" --prefix=/usr --no-deps uvicorn
PKGBUILD
1 offending line(s) highlighted#!/usr/bin/env bash
# shellcheck shell=bash disable=SC2034,SC2154
# Maintainer: TRCC Linux Contributors <noreply@github.com>
pkgname=thermalright-trcc
pkgver=9.10.0
pkgrel=1
pkgdesc="Thermalright LCD/LED Control Center for Linux"
arch=('any')
url="https://github.com/Lexonight1/thermalright-trcc-linux"
license=('GPL-3.0-or-later')
depends=(
'python'
'pyside6'
'python-pillow'
'python-numpy'
'python-psutil'
'python-pyusb'
'python-click'
'python-typer'
'python-fastapi'
'libusb'
'sg3_utils'
'p7zip'
)
# python-uvicorn not in official Arch repos — bundled via pip in package()
optdepends=(
'python-pynvml: NVIDIA GPU sensor support'
'python-dbus: Wayland session support'
'python-gobject: Wayland session support'
'python-hidapi: Alternative HID transport'
)
makedepends=(
'python-build'
'python-installer'
'python-hatchling'
'python-pip'
)
conflicts=('thermalright-trcc-git')
source=(
"thermalright-trcc-linux-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz"
)
sha256sums=('da4a5f367ea3bfc132066545cc69ab87c585ba3df44839c1d7287d5dcfb98452')
build() {
cd "${srcdir}/thermalright-trcc-linux-${pkgver}" || return 1
python -m build --wheel --no-isolation
}
package() {
cd "${srcdir}/thermalright-trcc-linux-${pkgver}" || return 1
python -m installer --destdir="${pkgdir}" --prefix=/usr dist/trcc_linux-*.whl
# Bundle deps not in official Arch repos.
python -m pip install --root="${pkgdir}" --prefix=/usr --no-deps uvicorn
# udev rules
install -Dm644 packaging/udev/99-trcc-lcd.rules \
"${pkgdir}/usr/lib/udev/rules.d/99-trcc-lcd.rules"
# modprobe config (USB storage quirks)
install -Dm644 packaging/modprobe/trcc-lcd.conf \
"${pkgdir}/usr/lib/modprobe.d/trcc-lcd.conf"
# modules-load (SCSI generic)
install -Dm644 packaging/modprobe/trcc-sg.conf \
"${pkgdir}/usr/lib/modules-load.d/trcc-sg.conf"
# desktop entry
install -Dm644 src/trcc/assets/trcc-linux.desktop \
"${pkgdir}/usr/share/applications/trcc-linux.desktop"
# polkit policy
install -Dm644 src/trcc/assets/com.github.lexonight1.trcc.policy \
"${pkgdir}/usr/share/polkit-1/actions/com.github.lexonight1.trcc.policy"
# systemd service
install -Dm644 src/trcc/assets/trcc-quirk-fix.service \
"${pkgdir}/usr/lib/systemd/system/trcc-quirk-fix.service"
# app icons
local size
for size in 256 128 64 48 32 24 16; do
install -Dm644 "src/trcc/assets/icons/trcc_${size}x${size}.png" \
"${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/trcc.png"
done
# license
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Changes since previous scan
--- PKGBUILD @ 2026-09-16 00:03+++ PKGBUILD @ 2026-09-17 00:27@@ -3,7 +3,7 @@ # Maintainer: TRCC Linux Contributors <noreply@github.com> pkgname=thermalright-trcc-pkgver=9.9.12+pkgver=9.10.0 pkgrel=1 pkgdesc="Thermalright LCD/LED Control Center for Linux" arch=('any')@@ -40,7 +40,7 @@ source=( "thermalright-trcc-linux-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz" )-sha256sums=('ab06d9c0a23f60264c57414e8ce7d5b6bc7ec3f4562ecd183a8d8063db2569ae')+sha256sums=('da4a5f367ea3bfc132066545cc69ab87c585ba3df44839c1d7287d5dcfb98452') build() { cd "${srcdir}/thermalright-trcc-linux-${pkgver}" || return 1Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 05:21:26 | Medium | 1 |
| 2026-09-16 00:03:17 | Medium | 2 |
| 2026-09-15 00:25:31 | Medium | 2 |
| 2026-09-14 00:27:57 | Medium | 2 |
| 2026-09-13 00:19:54 | Medium | 2 |
| 2026-09-12 00:25:17 | Medium | 2 |
| 2026-09-11 00:19:22 | Medium | 2 |
| 2026-09-10 00:22:44 | Medium | 2 |
| 2026-09-09 00:04:09 | Medium | 2 |
| 2026-09-08 00:18:08 | Medium | 2 |
| 2026-09-07 00:30:15 | Medium | 2 |
| 2026-09-06 00:17:06 | Medium | 2 |
| 2026-09-05 00:16:27 | Medium | 2 |
| 2026-09-04 00:03:13 | Medium | 2 |
| 2026-09-03 00:15:47 | Medium | 2 |
| 2026-09-02 00:02:31 | Medium | 2 |
| 2026-09-01 00:11:19 | Medium | 2 |
| 2026-08-31 23:46:20 | Medium | 2 |
| 2026-08-31 00:19:57 | Low | 2 |