ghost-downloader-git
maintainer zxp19821005
· 0 votes
· scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged
The PKGBUILD runs 'pip install' on external Python packages from requirements.txt within a venv during prepare(), introducing a supply-chain risk if the dependencies are swapped or the host is compromised, despite building from a legitimate git source.
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:63
pip install --timeout=300 -r requirements.txt -
PKGBUILD:64
pip install -U nuitka
MEDIUM
AI review
llm_review
An AI model (qwen/qwen3-235b-a22b-07-25) reviewed this and agrees it is MEDIUM (confidence 90%): The PKGBUILD runs 'pip install' on external Python packages from requirements.txt within a venv during prepare(), introducing a supply-chain risk if the dependencies are swapped or the host is compromised, despite building from a legitimate git source.
PKGBUILD
2 offending line(s) highlighted
1
# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
2
pkgname=ghost-downloader-git
3
_pkgname=Ghost-Downloader
4
pkgver=4.0.1.r0.g82b6536
5
pkgrel=1
6
pkgdesc="A multi-threading async downloader with QThread based on PyQt/PySide.多线程下载器 协程下载器."
7
arch=('any')
8
url="https://github.com/XiaoYouChR/Ghost-Downloader-3"
9
license=('GPL-3.0-only')
10
provides=("${pkgname%-git}")
11
conflicts=("${pkgname%-git}")
12
depends=(
13
'xcb-util-cursor'
14
'xcb-util-renderutil'
15
'xcb-util-keysyms'
16
'xcb-util-wm'
17
'xcb-util-image'
18
'gtk3'
19
'libxkbcommon-x11'
20
'qt6-base'
21
'ffmpeg'
22
'libtorrent-rasterbar'
23
'libimagequant'
24
'python-loguru'
25
'libraqm'
26
'libavif'
27
'libxslt'
28
)
29
makedepends=(
30
'git'
31
'python-pip'
32
'gendesk'
33
'patchelf'
34
'libtorrent-rasterbar'
35
)
36
source=(
37
"${pkgname%-git}.git::git+${url}"
38
"${pkgname%-git}.sh"
39
)
40
sha256sums=('SKIP'
41
'b0592310f06c0ad828c080f34159209e8bb04d2228faf8f3461502de0d4d41ff')
42
pkgver() {
43
cd "${srcdir}/${pkgname%-git}.git"
44
set -o pipefail
45
git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/v//g' ||
46
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
47
}
48
prepare() {
49
cd "${srcdir}/${pkgname%-git}.git"
50
sed -i -e "
51
s/@appname@/${pkgname%-git}/g
52
s/@runname@/${_pkgname}-3.bin/g
53
" "${srcdir}/${pkgname%-git}.sh"
54
gendesk -q -f -n \
55
--pkgname="${pkgname%-git}" \
56
--pkgdesc="${pkgdesc}" \
57
--categories="Network" \
58
--name="${_pkgname}" \
59
--exec="${pkgname%-git} %U"
60
python -m venv --system-site-packages ./
61
source ./bin/activate
62
sed -i '/^libtorrent/d' requirements.txt
63
pip install --timeout=300 -r requirements.txt
64
pip install -U nuitka
65
}
66
build() {
67
cd "${srcdir}/${pkgname%-git}.git"
68
source ./bin/activate
69
python scripts/deploy.py
70
}
71
package() {
72
install -Dm755 "${srcdir}/${pkgname%-git}.sh" "${pkgdir}/usr/bin/${pkgname%-git}"
73
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname%-git}/plugins"
74
cp -a "${srcdir}/${pkgname%-git}.git/dist/${_pkgname}-3.dist/"* "${pkgdir}/usr/lib/${pkgname%-git}"
75
install -Dm644 "${srcdir}/${pkgname%-git}.git/${pkgname%-git}.desktop" -t "${pkgdir}/usr/share/applications"
76
install -Dm644 "${srcdir}/${pkgname%-git}.git/app/assets/logo.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-git}.png"
77
install -Dm644 "${srcdir}/${pkgname%-git}.git/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}"
78
}
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 |