shroomie-git
The PKGBUILD pulls pexpect from PyPI via pip during build(), but this is a well-known, widely-used Python package on the official PyPI registry, not an unofficial or personal host. The real issue is that it's redundant and sloppy: python-pexpect is already listed as a runtime dependency (which means it's available from the official Arch repos), so the pip install is unnecessary and installs a duplicate copy into the package. There's no checksum on the pip-installed package, which is mildly concerning from a supply-chain hygiene standpoint, but PyPI is a standard, trusted ecosystem mirror for Python packages. This is a packaging quality issue (redundant pip install of an already-declared dependency, no hash pinning) rather than a genuine supply-chain threat. The source is a git repo with SKIP checksum, which is standard for -git packages. Overall: sloppy packaging, not a security risk.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed the full PKGBUILD and judged it LOW (confidence 85%): The PKGBUILD pulls pexpect from PyPI via pip during build(), but this is a well-known, widely-used Python package on the official PyPI registry, not an unofficial or personal host. The real issue is that it's redundant and sloppy: python-pexpect is already listed as a runtime dependency (which means it's available from the official Arch repos), so the pip install is unnecessary and installs a duplicate copy into the package. There's no checksum on the pip-installed package, which is mildly concerning from a supply-chain hygiene standpoint, but PyPI is a standard, trusted ecosystem mirror for Python packages. This is a packaging quality issue (redundant pip install of an already-declared dependency, no hash pinning) rather than a genuine supply-chain threat. The source is a git repo with SKIP checksum, which is standard for -git packages. Overall: sloppy packaging, not a security risk.
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:22
python -m pip install --no-deps --ignore-installed --target="${srcdir}/python-packages" pexpect>=4.9.0
PKGBUILD
1 offending line(s) highlighted# Maintainer: snow-arc
pkgname=shroomie-git
pkgver=r22.f7545c4
pkgrel=1
pkgdesc="A friendly AUR package manager with a simple GUI"
arch=('x86_64')
url="https://github.com/snow-arc/shroomie"
license=('MIT')
depends=('python>=3.8' 'python-pip' 'python-pyqt6' 'python-pexpect' 'git' 'base-devel')
makedepends=('python-setuptools' 'python-wheel')
source=("git+${url}.git")
sha256sums=('SKIP')
pkgver() {
cd "${srcdir}/shroomie"
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
build() {
cd "${srcdir}/shroomie"
# Create temporary directory for Python packages
mkdir -p "${srcdir}/python-packages"
python -m pip install --no-deps --ignore-installed --target="${srcdir}/python-packages" pexpect>=4.9.0
}
package() {
cd "${srcdir}/shroomie"
# Create directories
install -dm755 "${pkgdir}/usr/bin"
install -dm755 "${pkgdir}/usr/lib/shroomie"
# Copy Python packages from build
cp -r "${srcdir}/python-packages"/* "${pkgdir}/usr/lib/shroomie/"
# Copy project files
cp -r components config models resources services ui utils "${pkgdir}/usr/lib/shroomie/"
install -Dm755 main.py "${pkgdir}/usr/lib/shroomie/"
install -Dm644 README.md "${pkgdir}/usr/share/doc/shroomie/README.md"
install -Dm644 "${startdir}/requirements.txt" "${pkgdir}/usr/share/doc/shroomie/requirements.txt"
# Create launcher script with python3
cat > "${pkgdir}/usr/bin/shroomie" << EOF
#!/bin/sh
exec python3 /usr/lib/shroomie/main.py "\$@"
EOF
chmod 755 "${pkgdir}/usr/bin/shroomie"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |
| 2026-08-29 00:29:17 | Low | 2 |