rpcs3-bin
maintainer italoghost
· 48 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads and extracts an official AppImage from the project's own GitHub releases, which is a normal and expected method for distributing prebuilt binaries; the execution of the AppImage during build is necessary for extraction and is not malicious.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this HIGH, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads and extracts an official AppImage from the project's own GitHub releases, which is a normal and expected method for distributing prebuilt binaries; the execution of the AppImage during build is necessary for extraction and is not malicious.
1 higher static finding superseded - not the current verdict (shown for transparency)
HIGH
Downloaded file is executed
download_then_exec
A file fetched with curl/wget (not part of source=(), so never checksum-verified) is later made executable or run — a fetch-and-execute pattern split across statements.
-
PKGBUILD:52
chmod +x "${srcdir}/rpcs3.AppImage"
PKGBUILD
1 offending line(s) highlighted
1
# Creator: Sanpi <sanpi+aur@homecomputing.fr>
2
# Maintainer: italoghost <eduprodive at posteo dot me>
3
# Maintainer: Kaleb
4
pkgname=rpcs3-bin
5
_pkgname=rpcs3
6
pkgver=0.0.41.19508
7
pkgrel=1
8
pkgdesc='Open-source Sony PlayStation 3 Emulator (Latest Binary)'
9
arch=('x86_64')
10
url='https://rpcs3.net/'
11
license=('GPL-2.0-only')
12
provides=("$_pkgname")
13
conflicts=("$_pkgname")
14
options=('!strip' '!zipman' '!emptydirs' '!debug')
15
depends=(
16
'glibc'
17
'libgcc'
18
'zlib'
19
'bash'
20
'libx11'
21
'libxcb'
22
'vulkan-icd-loader'
23
'libglvnd'
24
'alsa-lib'
25
'fontconfig'
26
'freetype2'
27
'e2fsprogs'
28
'libstdc++'
29
'gmp'
30
'libdrm'
31
'libgpg-error'
32
)
33
optdepends=('wayland')
34
makedepends=('curl' 'jq')
35
36
# Source the GitHub API to trigger the build, the actual AppImage is fetched in prepare()
37
source=("${_pkgname}::https://api.github.com/repos/RPCS3/rpcs3-binaries-linux/releases/latest")
38
sha256sums=('SKIP')
39
40
pkgver() {
41
# Cleanly fetch the latest tag name from GitHub API and format it
42
curl -s "https://api.github.com/repos/RPCS3/rpcs3-binaries-linux/releases/latest" | \
43
jq -r '(.name | gsub("-"; "."))'
44
}
45
46
prepare() {
47
# Dynamically find the download URL for the AppImage asset
48
_appimage_url=$(curl -s "https://api.github.com/repos/RPCS3/rpcs3-binaries-linux/releases/latest" | \
49
awk -F'"' '/browser_download_url.*rpcs3.*AppImage/ {print $4}')
50
msg2 "Downloading the actual AppImage..."
51
curl -L "$_appimage_url" -o "${srcdir}/rpcs3.AppImage"
52
chmod +x "${srcdir}/rpcs3.AppImage"
53
}
54
55
build() {
56
cd "${srcdir}"
57
# Extracting AppImage content into squashfs-root
58
./rpcs3.AppImage --appimage-extract
59
# Patch AppRun to point to the fixed installation directory in /opt
60
sed -i "s|this_dir=\"\$(readlink -f \"\$(dirname \"\$0\")\")\"|this_dir=\"/opt/${_pkgname}\"|" "$srcdir/squashfs-root/AppRun"
61
}
62
63
package() {
64
# Core directories
65
install -dm755 "$pkgdir/opt/${_pkgname}"
66
cp -rp "$srcdir"/squashfs-root/* "$pkgdir/opt/${_pkgname}/"
67
# Symlink the launcher to /usr/bin
68
install -dm755 "$pkgdir/usr/bin"
69
ln -sf "/opt/${_pkgname}/AppRun" "$pkgdir/usr/bin/${_pkgname}"
70
# Install Icon, Desktop and Metainfo
71
install -Dm644 "$srcdir/squashfs-root/${_pkgname}.svg" "$pkgdir/usr/share/pixmaps/${_pkgname}.svg"
72
install -Dm644 "$srcdir/squashfs-root/${_pkgname}.desktop" "$pkgdir/usr/share/applications/${_pkgname}.desktop"
73
install -Dm644 "$srcdir/squashfs-root/usr/share/metainfo/${_pkgname}.metainfo.xml" "$pkgdir/usr/share/metainfo/${_pkgname}.metainfo.xml"
74
# Permissions
75
chmod -R u+rwX,go+rX,go-w "${pkgdir}/opt/${_pkgname}"
76
}
77
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |