thermalright-trcc
The package bundles 'uvicorn' via pip install at package time, which is an unverifiable, prebuilt external Python package not available in official Arch repos, creating a supply-chain risk if the PyPI source is compromised.
Triggered rules
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
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 95%): The package bundles 'uvicorn' via pip install at package time, which is an unverifiable, prebuilt external Python package not available in official Arch repos, creating a supply-chain risk if the PyPI source is compromised.
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.11.1
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=('c28e0461f528583fc32b624e5cd68378edc409f50ef6db6e6e38d78722438c29')
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-10-21 13:31+++ PKGBUILD @ 2026-11-01 00:21@@ -3,7 +3,7 @@ # Maintainer: TRCC Linux Contributors <noreply@github.com> pkgname=thermalright-trcc-pkgver=9.10.9+pkgver=9.11.1 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=('60911dfce46b513b22dfab9835f7ff30618c42eb5291221d17d3d9fc003eeebb')+sha256sums=('c28e0461f528583fc32b624e5cd68378edc409f50ef6db6e6e38d78722438c29') build() { cd "${srcdir}/thermalright-trcc-linux-${pkgver}" || return 1Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 2 |
| 2026-10-31 00:07:41 | Medium | 2 |
| 2026-10-30 00:29:30 | Medium | 2 |
| 2026-10-29 00:13:55 | Medium | 2 |
| 2026-10-28 00:06:54 | Medium | 2 |
| 2026-10-27 00:23:28 | Medium | 2 |
| 2026-10-26 00:12:40 | Medium | 2 |
| 2026-10-25 00:20:48 | Medium | 2 |
| 2026-10-24 00:14:55 | Medium | 2 |
| 2026-10-23 00:02:19 | Medium | 2 |
| 2026-10-22 00:13:10 | Medium | 2 |
| 2026-10-21 17:32:44 | Medium | 2 |
| 2026-10-21 13:31:17 | Medium | 1 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |