krita-ai-diffusion
The pip install is part of building the plugin from its own source in a controlled venv for packaging; it installs declared dependencies from the project's requirements.txt, not arbitrary external code, and the final install is pure Python/Qt data placed in Krita's plugin directory.
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 is part of building the plugin from its own source in a controlled venv for packaging; it installs declared dependencies from the project's requirements.txt, not arbitrary external code, and the final install is pure Python/Qt data placed in Krita's plugin directory.
2 higher static findings 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:47
uv pip install -r requirements.txt
alt_pkg_manager_install
A non-pip/npm package manager (pipx, uv, poetry, cargo install, go install, gem, conda…) fetches and builds an external package at build time, outside source=() and makepkg's checksums.
-
PKGBUILD:47
uv pip install -r requirements.txt
PKGBUILD
1 offending line(s) highlighted# Maintainer: Julian Reyes <contacto@julianreyes.co>
# Contributor: Roald Clark <roaldclark@gmail.com>
pkgname=krita-ai-diffusion
pkgver=1.53.0.r6.gdda58d1
pkgrel=1
pkgdesc="A plugin to use generative AI in image painting and editing workflows from within Krita"
arch=('any')
url="https://github.com/Acly/krita-ai-diffusion"
license=('GPL-3.0-or-later')
depends=(
'krita'
'python-pyqt6'
'qt6-imageformats'
)
makedepends=(
'git'
'git-lfs'
'uv'
)
checkdepends=(
'openssl'
)
install=krita-ai-diffusion.install
_commit=dda58d1c63e361207ccec085efbc34dbd32f1654
source=("${pkgname}::git+${url}.git#commit=${_commit}"
"fix-it-json-syntax.patch")
sha256sums=('cc8354e0d0e19a417950e6825bb9974fe9cb3dc34c5206c0f4dcec12c3781025'
'55fdda2a4349e4a271cf7dc5bd5d2171d6a1c18ab19bad58f0d033e0a8cf51ef')
# If `git lfs install` was run before, `makepkg` may error
# Set this env var to resolve
export GIT_LFS_SKIP_SMUDGE=1
prepare() {
# The plugin itself will run inside Krita's embedded Python,
# and only has access to the Python standard library and Qt5
cd "${srcdir}/${pkgname}"
patch -Np1 -i ../fix-it-json-syntax.patch
git submodule update --init --recursive
git lfs install --local
git remote add network-origin "${url}.git"
git lfs fetch network-origin
git lfs checkout
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -r requirements.txt
}
build() {
cd "${srcdir}/${pkgname}"
source .venv/bin/activate
python scripts/package.py
}
check() {
cd "${srcdir}/${pkgname}"
source .venv/bin/activate
if [[ $(vercmp "${pkgver}" "1.21.0") -gt 0 ]]; then
python scripts/download_models.py --minimal scripts/downloads
else
python scripts/download_models.py --minimal scripts/docker/downloads
fi
python -m pytest tests/test_server.py -vs --test-install
python -m pytest tests -vs --ci
}
package() {
cd "${srcdir}/${pkgname}"/scripts/.package
install -d -m 755 "${pkgdir}"/usr/share/krita/pykrita/
cp -r {ai_diffusion,ai_diffusion.desktop} "${pkgdir}"/usr/share/krita/pykrita/
install -D -m 644 ai_diffusion/ai_diffusion.action -t "${pkgdir}"/usr/share/krita/actions/
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 3 |
| 2026-09-16 00:03:17 | Low | 3 |
| 2026-09-15 00:25:31 | Low | 3 |
| 2026-09-14 00:27:57 | Low | 3 |
| 2026-09-13 00:19:54 | Low | 3 |
| 2026-09-12 00:25:17 | Low | 3 |
| 2026-09-11 00:19:22 | Low | 3 |
| 2026-09-10 00:22:44 | Low | 3 |
| 2026-09-09 00:04:09 | Low | 3 |
| 2026-09-08 00:18:08 | Low | 3 |
| 2026-09-07 00:30:15 | Low | 3 |
| 2026-09-06 00:17:06 | Low | 3 |
| 2026-09-05 00:16:27 | Low | 3 |
| 2026-09-04 00:03:13 | Low | 3 |
| 2026-09-03 00:15:47 | Low | 3 |
| 2026-09-02 00:02:31 | Low | 3 |
| 2026-09-01 00:11:19 | Low | 3 |
| 2026-08-31 00:19:57 | Low | 3 |
| 2026-08-30 00:04:14 | Low | 3 |
| 2026-08-29 00:29:17 | Low | 3 |