arch-script-gen
Triggered rules
pip_install_external
`pip install <package>` fetches an unpinned package from PyPI at build time, outside source=() and makepkg's checksums.
-
PKGBUILD:25
pip install groq --target="$pkgdir/usr/lib/$pkgname/lib" --no-deps 2>/dev/null || true -
PKGBUILD:26
pip install groq --target="$pkgdir/usr/lib/$pkgname/lib" 2>/dev/null || true
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): The PKGBUILD runs `pip install groq` twice at package() time, pulling the 'groq' Python library directly from PyPI with no pinned version and no checksum verification. This is a genuine supply-chain concern: the groq package on PyPI is not under Arch's control, its version is not locked, and it is fetched and installed into the package tree at build time rather than declared as a proper AUR/pacman dependency. If the PyPI package were compromised or typosquatted, the installed package would silently contain malicious code. The double pip invocation (first with --no-deps, then without) is also unusual and suggests the maintainer is not fully in control of the dependency resolution. The main source tarball is from the official GitHub release with a sha256sum, which is fine, but the unverified pip install of an external library into pkgdir is a real medium-severity supply-chain risk consistent with AUR packaging guidelines violations.
PKGBUILD
2 offending line(s) highlighted# Maintainer: Chitransh <chitranshSingh4174@gmail.com>
pkgname=arch-script-gen
pkgver=1.1.1
pkgrel=1
pkgdesc="A PyQt6 GUI app that generates Arch Linux configuration bash scripts using the Groq API"
arch=('any')
url="https://github.com/ChitranshSingh-ind/ArchScriptGen"
license=('MIT')
depends=(
'python'
'python-pyqt6'
'python-requests'
'qt6-base'
)
makedepends=('python-pip')
optdepends=()
source=("$pkgname-$pkgver.tar.gz::https://github.com/ChitranshSingh-ind/ArchScriptGen/archive/refs/tags/v1.1.1.tar.gz")
sha256sums=('f4c1a9a76848d09ec04815cd2b2a1c468be7fd256d9e8ff99aa8fc9cd9dcfb13')
package() {
cd "$srcdir/ArchScriptGen-1.1.1"
# Install python-groq (not in official repos)
pip install groq --target="$pkgdir/usr/lib/$pkgname/lib" --no-deps 2>/dev/null || true
pip install groq --target="$pkgdir/usr/lib/$pkgname/lib" 2>/dev/null || true
# Create app directory
install -dm755 "$pkgdir/usr/lib/$pkgname"
# Install main script
install -Dm755 main.py "$pkgdir/usr/lib/$pkgname/main.py"
# Install assets
cp -r themes "$pkgdir/usr/lib/$pkgname/"
cp -r cursors "$pkgdir/usr/lib/$pkgname/"
cp -r DesktopEnvironment "$pkgdir/usr/lib/$pkgname/"
# Install icon
install -Dm644 logo.ico "$pkgdir/usr/share/pixmaps/$pkgname.ico"
# Create launcher script
install -dm755 "$pkgdir/usr/bin"
cat > "$pkgdir/usr/bin/$pkgname" << EOF
#!/bin/bash
export PYTHONPATH="/usr/lib/$pkgname/lib:\$PYTHONPATH"
cd /usr/lib/$pkgname
exec python main.py "\$@"
EOF
chmod +x "$pkgdir/usr/bin/$pkgname"
# Install desktop entry
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/$pkgname.desktop" << EOF
[Desktop Entry]
Name=Arch Script Generator
Comment=Generate Arch Linux configuration scripts
Exec=$pkgname
Icon=$pkgname
Terminal=false
Type=Application
Categories=System;Utility;
Keywords=arch;linux;bash;script;
EOF
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 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 |