thermalright-trcc-git

maintainer honjow · 0 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged The PKGBUILD uses `pip install --no-deps uvicorn` during package() to fetch uvicorn directly from PyPI at build time and install it into the package tree. This is a genuine supply-chain concern: the version installed is unspecified (always latest), there is no hash/checksum verification, and the package is fetched from PyPI rather than being declared as a proper versioned source with integrity checking. While PyPI is a legitimate ecosystem mirror and uvicorn is a well-known package, bundling a live pip-fetched dependency without pinning or checksumming means the installed binary code is not reproducible and could silently change between builds. The comment acknowledges this is intentional because python-uvicorn is not in the official Arch repos. This is a real (if not malicious) supply-chain risk — an unversioned, unchecksumed executable Python package injected into the final package — which correctly rates as MEDIUM rather than clean or high.

Triggered rules

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:74 python -m pip install --root="${pkgdir}" --prefix=/usr --no-deps uvicorn
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD uses `pip install --no-deps uvicorn` during package() to fetch uvicorn directly from PyPI at build time and install it into the package tree. This is a genuine supply-chain concern: the version installed is unspecified (always latest), there is no hash/checksum verification, and the package is fetched from PyPI rather than being declared as a proper versioned source with integrity checking. While PyPI is a legitimate ecosystem mirror and uvicorn is a well-known package, bundling a live pip-fetched dependency without pinning or checksumming means the installed binary code is not reproducible and could silently change between builds. The comment acknowledges this is intentional because python-uvicorn is not in the official Arch repos. This is a real (if not malicious) supply-chain risk — an unversioned, unchecksumed executable Python package injected into the final package — which correctly rates as MEDIUM rather than clean or high.

PKGBUILD

1 offending line(s) highlighted
1#!/usr/bin/env bash
2# shellcheck shell=bash disable=SC2034,SC2154
3# Maintainer: TRCC Linux Contributors <noreply@github.com>
4
5pkgname=thermalright-trcc-git
6_pkgname=thermalright-trcc-linux
7pkgver=8.3.7.r3.gc9c9c8a
8pkgrel=1
9pkgdesc="Thermalright LCD/LED Control Center for Linux (git version)"
10arch=('any')
11url="https://github.com/Lexonight1/thermalright-trcc-linux"
12license=('GPL-3.0-or-later')
13depends=(
14 'python'
15 'pyside6'
16 'python-pillow'
17 'python-numpy'
18 'python-psutil'
19 'python-pyusb'
20 'python-click'
21 'python-typer'
22 'python-fastapi'
23 'libusb'
24 'sg3_utils'
25 'p7zip'
26)
27# python-uvicorn not in official Arch repos — bundled via pip in package()
28optdepends=(
29 'python-pynvml: NVIDIA GPU sensor support'
30 'python-dbus: Wayland session support'
31 'python-gobject: Wayland session support'
32 'python-hidapi: Alternative HID transport'
33)
34makedepends=(
35 'git'
36 'python-build'
37 'python-installer'
38 'python-hatchling'
39 'python-pip'
40)
41provides=('thermalright-trcc')
42conflicts=('thermalright-trcc')
43source=("git+${url}.git")
44sha256sums=('SKIP')
45
46pkgver() {
47 cd "${srcdir}/${_pkgname}" || return 1
48
49 local _tag_raw _tag _rev _hash
50 _tag_raw="$(git describe --tags --abbrev=0 2>/dev/null || true)"
51 _hash="$(git rev-parse --short=7 HEAD)"
52
53 if [[ -n "${_tag_raw}" ]]; then
54 _tag="${_tag_raw#v}"
55 _rev="$(git rev-list --count "${_tag_raw}"..HEAD)"
56 printf '%s.r%s.g%s\n' "${_tag}" "${_rev}" "${_hash}"
57 else
58 _rev="$(git rev-list --count HEAD)"
59 printf '0.r%s.g%s\n' "${_rev}" "${_hash}"
60 fi
61}
62
63build() {
64 cd "${srcdir}/${_pkgname}" || return 1
65 python -m build --wheel --no-isolation
66}
67
68package() {
69 cd "${srcdir}/${_pkgname}" || return 1
70
71 python -m installer --destdir="${pkgdir}" --prefix=/usr dist/trcc_linux-*.whl
72
73 # Bundle deps not in official Arch repos.
74 python -m pip install --root="${pkgdir}" --prefix=/usr --no-deps uvicorn
75
76 # udev rules
77 install -Dm644 packaging/udev/99-trcc-lcd.rules \
78 "${pkgdir}/usr/lib/udev/rules.d/99-trcc-lcd.rules"
79 # modprobe config (USB storage quirks)
80 install -Dm644 packaging/modprobe/trcc-lcd.conf \
81 "${pkgdir}/usr/lib/modprobe.d/trcc-lcd.conf"
82 # modules-load (SCSI generic)
83 install -Dm644 packaging/modprobe/trcc-sg.conf \
84 "${pkgdir}/usr/lib/modules-load.d/trcc-sg.conf"
85 # desktop entry
86 install -Dm644 src/trcc/assets/trcc-linux.desktop \
87 "${pkgdir}/usr/share/applications/trcc-linux.desktop"
88 # polkit policy
89 install -Dm644 src/trcc/assets/com.github.lexonight1.trcc.policy \
90 "${pkgdir}/usr/share/polkit-1/actions/com.github.lexonight1.trcc.policy"
91 # systemd service
92 install -Dm644 src/trcc/assets/trcc-quirk-fix.service \
93 "${pkgdir}/usr/lib/systemd/system/trcc-quirk-fix.service"
94
95 # app icons
96 local size
97 for size in 256 128 64 48 32 24 16; do
98 install -Dm644 "src/trcc/assets/icons/trcc_${size}x${size}.png" \
99 "${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/trcc.png"
100 done
101
102 # license
103 install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
104}
105

Scan history

Scanned at (UTC)SeverityRules
2026-08-03 00:08:14 MEDIUM 2
2026-08-02 00:16:08 MEDIUM 2
2026-08-01 00:11:18 MEDIUM 2
2026-07-31 00:14:10 MEDIUM 2
2026-07-30 00:17:23 MEDIUM 2
2026-07-29 00:25:53 MEDIUM 2
2026-07-28 00:07:28 MEDIUM 2
2026-07-27 00:24:32 MEDIUM 2
2026-07-26 00:07:32 MEDIUM 2
2026-07-25 00:13:44 MEDIUM 2
2026-07-24 00:02:28 MEDIUM 2
2026-07-23 00:14:47 MEDIUM 2
2026-07-22 00:29:32 MEDIUM 2
2026-07-21 00:24:15 MEDIUM 2
2026-07-20 00:19:49 MEDIUM 2
2026-07-19 00:17:08 MEDIUM 2
2026-07-18 00:14:48 MEDIUM 2
2026-07-17 00:06:16 MEDIUM 2
2026-07-16 00:05:41 MEDIUM 2
2026-07-15 00:09:25 MEDIUM 2

Report a package

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

0 / 4000
Your suggestion