etlegacy32
maintainer belst
· 7 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The non-standard host (etlegacy.com) hosts a precompiled mod file, but it is a standard part of the project's release and used only for bundling; the source code is from GitHub, and the file is checksummed, reducing supply-chain risk.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The non-standard host (etlegacy.com) hosts a precompiled mod file, but it is a standard part of the project's release and used only for bundling; the source code is from GitHub, and the file is checksummed, reducing supply-chain risk.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:17
"https://www.etlegacy.com/download/file/716")
PKGBUILD
1 offending line(s) highlighted
1
# ET:Legacy is provided as a cross-compiled 32 bit version for compatibility reason with existing 32 bit mods.
2
# On a 64 bits system, [multilib] must be enabled and multilib-devel installed for 32 bits cross-compilation.
3
# The engine is dynamically compiled, while the official precompiled mod libraries are provided.
4
5
_pkgbase=etlegacy
6
pkgbase=etlegacy32
7
pkgname=('etlegacy32' 'etlegacy32-mod')
8
pkgver=2.84.0
9
pkgrel=1
10
arch=('i686' 'x86_64')
11
url="http://www.etlegacy.com/"
12
license=('GPL3' 'custom')
13
makedepends=('cmake' 'zip')
14
makedepends_i686=('alsa-lib' 'curl' 'freetype2' 'gcc-libs' 'glew' 'libjpeg-turbo' 'libvorbis' 'sdl2' 'minizip' 'openal' 'libtheora' 'sqlite' 'cjson')
15
makedepends_x86_64=('lib32-alsa-lib' 'lib32-curl' 'lib32-freetype2' 'lib32-gcc-libs' 'lib32-glew' 'lib32-libjpeg-turbo' 'lib32-libvorbis' 'lib32-sdl2' 'lib32-minizip' 'lib32-openal' 'lib32-libtheora' 'lib32-sqlite' 'lib32-cjson')
16
source=("https://github.com/etlegacy/etlegacy/archive/v$pkgver.tar.gz"
17
"https://www.etlegacy.com/download/file/716")
18
sha256sums=('8857ff04d8d632e75e0b3ebb2715cc5cb35f9ebf24699806bbdea3979434bffc'
19
'a446d5a374214f3adadc373b33ddfd9448c736eb56f15dc04fa34711bfb3cace')
20
21
build() {
22
cd "$_pkgbase-$pkgver"
23
24
# fix for https://archlinux.org/todo/prepare-packages-for-d_fortify_source3/
25
export CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
26
export CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
27
28
if [[ "$CARCH" == "i686" ]]; then
29
cmakeopts+=(
30
'-DCMAKE_LIBRARY_PATH=/usr/lib'
31
'-DCMAKE_PREFIX_PATH=/usr/lib/cmake'
32
'-DCROSS_COMPILE32=0'
33
)
34
else
35
cmakeopts+=(
36
'-DCMAKE_LIBRARY_PATH=/usr/lib32'
37
'-DCMAKE_PREFIX_PATH=/usr/lib32/cmake'
38
'-DCROSS_COMPILE32=1'
39
)
40
fi
41
42
echo "OPTS" ${cmakeopts[@]}
43
44
cmake . ${cmakeopts[@]} \
45
-DCMAKE_BUILD_TYPE=Release \
46
-DCMAKE_INSTALL_PREFIX=/usr \
47
-DINSTALL_DEFAULT_BASEDIR=/usr/lib/etlegacy\
48
-DINSTALL_DEFAULT_BINDIR=bin \
49
-DINSTALL_DEFAULT_MODDIR=lib/etlegacy \
50
-DBUILD_SERVER=1 \
51
-DBUILD_CLIENT=1 \
52
-DBUILD_MOD=0 \
53
-DBUILD_MOD_PK3=0 \
54
-DBUNDLED_LIBS=0 \
55
-DFEATURE_AUTOUPDATE=0 \
56
-DINSTALL_OMNIBOT=0
57
58
make
59
}
60
61
package_etlegacy32() {
62
pkgdesc="Wolfenstein: Enemy Territory 2.60b compatible client/server (etlegacy engine, 32 bit)"
63
depends=('etlegacy32-mod')
64
depends_i686=('alsa-lib' 'curl' 'freetype2' 'gcc-libs' 'glew' 'libjpeg-turbo' 'libvorbis' 'lua' 'sdl2' 'minizip' 'openal' 'libtheora' 'sqlite' 'cjson')
65
depends_x86_64=('lib32-alsa-lib' 'lib32-curl' 'lib32-freetype2' 'lib32-gcc-libs' 'lib32-glew' 'lib32-libjpeg-turbo' 'lib32-libvorbis' 'lib32-lua' 'lib32-sdl2' 'lib32-minizip' 'lib32-openal' 'lib32-libtheora' 'lib32-sqlite' 'lib32-cjson')
66
provides=('etlegacy')
67
conflicts=('etlegacy')
68
backup=('etc/xdg/etlegacy/etmain/etl_server.cfg'
69
'etc/xdg/etlegacy/etmain/legacy.cfg'
70
'etc/xdg/etlegacy/etmain/campaigncycle.cfg'
71
'etc/xdg/etlegacy/etmain/lmscycle.cfg'
72
'etc/xdg/etlegacy/etmain/mapvotecycle.cfg'
73
'etc/xdg/etlegacy/etmain/objectivecycle.cfg')
74
install=etlegacy.install
75
76
cd "$_pkgbase-$pkgver"
77
78
# engine
79
make DESTDIR="$pkgdir/" install
80
81
# mod
82
rm -rf $pkgdir/usr/lib/$_pkgbase/legacy
83
84
# assets
85
ln -s /usr/share/enemy-territory/etmain/{pak0,pak1,pak2}.pk3 $pkgdir/usr/lib/$_pkgbase/etmain/
86
87
# doc
88
mkdir -p $pkgdir/usr/share/doc/$_pkgbase
89
install -m 644 docs/game/anticheat.html $pkgdir/usr/share/doc/$_pkgbase/
90
91
# license
92
mkdir -p $pkgdir/usr/share/licenses/$_pkgbase
93
94
# systemd
95
mkdir -p $pkgdir/etc/xdg/$_pkgbase/etmain
96
mkdir -p $pkgdir/usr/lib/systemd/system
97
install -m 644 misc/etlegacy.conf $pkgdir/etc/xdg/$_pkgbase/
98
install -m 644 misc/etlegacy.service.in $pkgdir/usr/lib/systemd/system/etlegacy-x86.service
99
100
# config
101
mv $pkgdir/usr/lib/$_pkgbase/etmain/*.cfg $pkgdir/etc/xdg/$_pkgbase/etmain/
102
ln -s /etc/xdg/$_pkgbase/etmain/{etl_server,legacy,{campaign,lms,mapvote,objective}cycle}.cfg $pkgdir/usr/lib/$_pkgbase/etmain/
103
104
# server
105
mkdir -p $pkgdir/var/lib/$_pkgbase-server
106
ln -s /etc/xdg/$_pkgbase/etmain $pkgdir/var/lib/$_pkgbase-server/
107
}
108
109
package_etlegacy32-mod() {
110
pkgdesc="Wolfenstein: Enemy Territory 2.60b compatible client/server (etlegacy mod, 32 bit)"
111
depends=('enemy-territory-data' 'geoip-database')
112
optdepends=('etlegacy-omnibot: artificial intelligence (AI) controlled opponent'
113
'geoip-database: GeoLite country geolocation database')
114
provides=('etlegacy-mod')
115
conflicts=('etlegacy-mod')
116
117
# mod
118
mkdir -p $pkgdir/usr/lib/$_pkgbase/legacy
119
install -m 644 $srcdir/etlegacy-v$pkgver-i386/legacy/legacy_v$pkgver.pk3 $pkgdir/usr/lib/$_pkgbase/legacy
120
install -m 644 $srcdir/etlegacy-v$pkgver-i386/legacy/qagame.mp.i386.so $pkgdir/usr/lib/$_pkgbase/legacy
121
122
# geoip
123
ln -s /usr/share/GeoIP/GeoIP.dat $pkgdir/usr/lib/$_pkgbase/legacy
124
}
125
126
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 |