linux-firmware-amd-uncompressed
LOW
maintainer severach
3 votes
base
linux-firmware-uncompressed
scanned 2026-09-25 09:11:17.574095
Why flagged
The eval is used in a controlled context to dynamically generate package functions from known source code during build, with no external input or untrusted data involved.
Triggered rules
Low
AI review of an ambiguous pattern
llm_review
The static rules found a suspicious pattern they could not resolve, so an AI model (qwen/qwen3-235b-a22b-2507) reviewed it and judged it LOW (confidence 95%): The eval is used in a controlled context to dynamically generate package functions from known source code during build, with no external input or untrusted data involved.
-
PKGBUILD:96
*optdepends=*|*depends=*) eval "${_fl}";; -
PKGBUILD:116
eval "${_f}"
PKGBUILD
2 offending line(s) highlighted
1
# Maintainer: Chris Severance aur.severach aATt spamgourmet dott com
2
# Contriburor: Jonathon Fernyhough <jonathon+mx2+dev>
3
4
# Google AI: First version with zstd
5
# filesystem btrfs squash: 4.14
6
# filesystem f2fs: 5.7
7
# boot kernel image initramfs: 5.9
8
# module: 5.13
9
# firmware: 5.19
10
11
# We're last in line here. Package can be deleted when 5.15 goes EOL.
12
13
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
14
# Contributor: Thomas Bächler <thomas@archlinux.org>
15
16
pkgbase=linux-firmware
17
pkgname=(
18
linux-firmware
19
linux-firmware-whence
20
linux-firmware-other
21
22
# Splits
23
amd-ucode
24
linux-firmware-amd
25
linux-firmware-amdgpu
26
linux-firmware-atheros
27
linux-firmware-broadcom
28
linux-firmware-cirrus
29
linux-firmware-intel
30
linux-firmware-liquidio
31
linux-firmware-marvell
32
linux-firmware-mediatek
33
linux-firmware-mellanox
34
linux-firmware-nfp
35
linux-firmware-nvidia
36
linux-firmware-qcom
37
linux-firmware-qlogic
38
linux-firmware-radeon
39
linux-firmware-realtek
40
linux-firmware-ti
41
)
42
pkgver=20260916
43
pkgrel=1
44
pkgdesc="Firmware files for Linux"
45
url="https://gitlab.com/kernel-firmware/linux-firmware"
46
license=(LicenseRef-WHENCE)
47
arch=(any)
48
makedepends=(
49
git
50
parallel
51
python
52
rdfind
53
)
54
options=(
55
!debug
56
!strip
57
)
58
source=("git+$url.git?signed#tag=${pkgver}")
59
b2sums=('6cab8bee911441b26075d459b5d98152cf7cb3aa0eecd872f5856d7228077ab6a52d0c5f24c011c6fedfd19978b5b73e19239c21db071cf58da7c53564ad8aae')
60
validpgpkeys=(
61
4CDE8575E547BF835FE15807A31B6BD72486CFD6 # Josh Boyer <jwboyer@fedoraproject.org>
62
)
63
64
pkgdesc+=' (without firmware compression for linux<5.19)'
65
_pkgbase="${pkgbase}"
66
pkgbase+='-uncompressed'
67
_pkgname=("${pkgname[@]}")
68
pkgname=("${pkgname[@]/%/-uncompressed}")
69
_compression='install'
70
#_compression='install-xz' # slow build
71
_fn_copy() {
72
local -
73
set -u
74
local _bo='{'
75
local _f="$(declare -f "$1")"
76
if [ "${#_f}" -eq 0 ]; then
77
printf 'function %s does not exist\n' "$1" 1>&2
78
elif [[ ! "${_f#*${_bo}}" =~ [a-z] ]]; then
79
printf 'function %s is blank\n' "$1" 1>&2
80
else
81
local _lf=$'\n'
82
local _bc='}'
83
local _fo="${_f}"
84
local _c1='
85
local pkgbase="${_pkgbase}";
86
local pkgname="${pkgname%-uncompressed}";'
87
local _c2=";
88
conflicts+=('${1#package_}');
89
provides+=('${1#package_}')"
90
local _fla _fl
91
readarray -t _fla <<< "${_f}"
92
local depends=()
93
local optdepends=()
94
for _fl in "${_fla[@]}"; do
95
case "${_fl}" in
96
*optdepends=*|*depends=*) eval "${_fl}";;
97
esac
98
done
99
depends=("${depends[@]/%/-uncompressed}")
100
optdepends=("${optdepends[@]/:/-uncompressed:}")
101
#declare -p depends optdepends
102
if [ "${#depends[@]}" -gt 0 ]; then
103
_c2+=$';\n'" depends=($(printf ' \"%s\"' "${depends[@]}"))"
104
fi
105
if [ "${#optdepends[@]}" -gt 0 ]; then
106
_c2+=$';\n'" optdepends=($(printf ' \"%s\"' "${optdepends[@]}"))"
107
fi
108
_f="${_f/$1/$1-uncompressed}"
109
_f="${_f//install-zst/${_compression}}"
110
_f="${_f/ replaces=/ #replaces=}"
111
_f="${_f/${_bo} /${_bo} ${_c1}}"
112
local _f1="${_f%${_lf}${_bc}*}"
113
local _f2="${_lf}${_bc}${_f##*${_bc}}"
114
_f="${_f1}${_c2}${_f2}"
115
#printf '%s\n' "${_fo}" "${_f}" > "ffg$1"
116
eval "${_f}"
117
unset -f "$1"
118
fi
119
}
120
121
_backports=(
122
)
123
124
_reverts=(
125
)
126
127
prepare() {
128
local pkgbase="${_pkgbase}"
129
cd ${pkgbase}
130
131
local c
132
for c in "${_backports[@]}"; do
133
echo Backporting $(git log --oneline -1 "${c}")
134
git cherry-pick -n "${c}"
135
done
136
for c in "${_reverts[@]}"; do
137
echo Reverting $(git log --oneline -1 "${c}")
138
git revert -n "${c}"
139
done
140
}
141
142
build() {
143
local pkgbase="${_pkgbase}"
144
mkdir -p kernel/x86/microcode
145
cat ${pkgbase}/amd-ucode/microcode_amd*.bin > kernel/x86/microcode/AuthenticAMD.bin
146
147
# Reproducibility: set the timestamp on the bin file
148
if [[ -n ${SOURCE_DATE_EPOCH} ]]; then
149
touch -d @${SOURCE_DATE_EPOCH} kernel/x86/microcode/AuthenticAMD.bin
150
fi
151
152
# Reproducibility: strip the inode and device numbers from the cpio archive
153
echo kernel/x86/microcode/AuthenticAMD.bin |
154
bsdtar --uid 0 --gid 0 -cnf - -T - |
155
bsdtar --null -cf - --format=newc @- > amd-ucode.img
156
}
157
158
_pick() {
159
local p="$1" f d; shift
160
for f; do
161
d="$srcdir/$p/${f#${pkgdir}/}"
162
mkdir -p "$(dirname "$d")"
163
mv "$f" "$d"
164
rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
165
done
166
}
167
168
_licdir=linux-firmware/LICENSES
169
170
package_linux-firmware() {
171
pkgdesc+=" - Default set"
172
license=(CC0-1.0)
173
depends=(
174
linux-firmware-amd
175
linux-firmware-amdgpu
176
linux-firmware-atheros
177
linux-firmware-broadcom
178
linux-firmware-cirrus
179
linux-firmware-intel
180
linux-firmware-mediatek
181
linux-firmware-nvidia
182
linux-firmware-other
183
linux-firmware-radeon
184
linux-firmware-realtek
185
linux-firmware-ti
186
)
187
optdepends=(
188
'linux-firmware-liquidio: Firmware for Cavium LiquidIO server adapters'
189
'linux-firmware-marvell: Firmware for Marvell devices'
190
'linux-firmware-mellanox: Firmware for Mellanox Spectrum switches'
191
'linux-firmware-nfp: Firmware for Netronome Flow Processors'
192
'linux-firmware-qcom: Firmware for Qualcomm SoCs'
193
'linux-firmware-qlogic: Firmware for QLogic devices'
194
)
195
}
196
197
package_linux-firmware-whence() {
198
pkgdesc+=" - WHENCE file (vendor licenses)"
199
200
install -Dm644 ${pkgbase}/WHENCE -t "${pkgdir}/usr/share/licenses/${pkgname}"
201
}
202
203
package_linux-firmware-other() {
204
pkgdesc+=" - Unsorted firmware for various devices"
205
206
local fwdir="${pkgdir}/usr/lib/firmware"
207
ZSTD_CLEVEL=19 make -C ${pkgbase} FIRMWAREDIR="${fwdir}" install-zst
208
209
# split
210
_pick amd-ucode "${fwdir}"/amd-ucode
211
212
_pick amd "${fwdir}"/amd{,npu,tee}
213
214
_pick amdgpu "${fwdir}"/amdgpu
215
216
_pick atheros "${fwdir}"/{ar[0-9]*,ath*,carl9170*,htc_*,qca,wil6210*}
217
218
_pick broadcom "${fwdir}"/{bnx2*,brcm,cypress,tigon}
219
220
_pick cirrus "${fwdir}"/{cirrus,cs42l43*,sdca}
221
222
_pick intel "${fwdir}"/{e100,hfi1_*,i915,intel,isci,iwlwifi*,ixp4xx,qat_*,xe}
223
_pick intel "${fwdir}"/*/ish
224
225
_pick liquidio "${fwdir}"/liquidio
226
227
_pick marvell "${fwdir}"/{libertas,mwl8k,mwlwifi,mrvl}
228
229
_pick mediatek "${fwdir}"/{mediatek,mt7*,rt[237]*}
230
231
_pick mellanox "${fwdir}"/mellanox
232
233
_pick nfp "${fwdir}"/netronome
234
235
_pick nvidia "${fwdir}"/nvidia
236
237
_pick qcom "${fwdir}"/{qcom,a300_*}
238
239
_pick qlogic "${fwdir}"/{qlogic,qed,ql2???_*,c{b,t,t2}fw-*}
240
241
_pick radeon "${fwdir}"/radeon
242
243
_pick realtek "${fwdir}"/{realtek,rtlwifi,rtw8*,rtl_*}
244
245
_pick ti "${fwdir}"/{ti_*,ti,ti-connectivity,tas*,INT8*,TAS2*,TI*,TX*,????-*-0x?.*}
246
247
# dedup after splitting
248
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
249
250
install -Dm644 ${_licdir}/LICEN[CS]E* \
251
-t "${pkgdir}/usr/share/licenses/${pkgname}"
252
}
253
254
package_amd-ucode() {
255
pkgdesc="Microcode update image for AMD CPUs"
256
license=(LicenseRef-amd-ucode)
257
258
mv -v ${pkgname}/* "${pkgdir}"
259
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
260
261
install -Dm644 amd-ucode.img -t "${pkgdir}/boot"
262
install -Dm644 ${_licdir}/LICENSE.amd-ucode \
263
-t "${pkgdir}/usr/share/licenses/${pkgname}"
264
}
265
266
package_linux-firmware-amd() {
267
pkgdesc+=" - Firmware for non-GPU AMD devices"
268
license+=(LicenseRef-amd)
269
depends=(linux-firmware-whence)
270
271
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
272
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
273
274
install -Dm644 ${_licdir}/LICENSE.amd{npu,_pmf,-sev} \
275
-t "${pkgdir}/usr/share/licenses/${pkgname}"
276
}
277
278
package_linux-firmware-amdgpu() {
279
pkgdesc+=" - Firmware for AMD Radeon GPUs"
280
license+=(
281
LicenseRef-amdgpu
282
MIT
283
)
284
depends=(linux-firmware-whence)
285
286
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
287
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
288
289
install -Dm644 ${_licdir}/LICENSE.amd{gpu,isp} \
290
-t "${pkgdir}/usr/share/licenses/${pkgname}"
291
}
292
293
package_linux-firmware-atheros() {
294
pkgdesc+=" - Firmware for Qualcomm Atheros WiFi and Bluetooth adapters"
295
license+=(
296
GPL-2.0-only
297
LicenseRef-atheros
298
)
299
depends=(linux-firmware-whence)
300
301
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
302
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
303
304
install -Dm644 ${_licdir}/NOTICE.{qca,qcom} \
305
${_licdir}/LICENCE.{atheros_,open-ath9k-htc-}firmware \
306
${_licdir}/LICENSE.{QualcommAtheros*,qcom} \
307
-t "${pkgdir}/usr/share/licenses/${pkgname}"
308
}
309
310
package_linux-firmware-broadcom() {
311
pkgdesc+=" - Firmware for Broadcom and Cypress network adapters"
312
license+=(LicenseRef-broadcom)
313
depends=(linux-firmware-whence)
314
provides=(linux-firmware-bnx2x)
315
conflicts=(linux-firmware-bnx2x)
316
replaces=('linux-firmware-bnx2x<=20250613.12fe085f-4')
317
318
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
319
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
320
321
install -Dm644 ${_licdir}/LICENCE.{bnx2*,broadcom_*,cypress,tigon} \
322
-t "${pkgdir}/usr/share/licenses/${pkgname}"
323
}
324
325
package_linux-firmware-cirrus() {
326
pkgdesc+=" - Firmware for Cirrus Logic audio devices"
327
license+=(LicenseRef-cirrus)
328
depends=(linux-firmware-whence)
329
330
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
331
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
332
333
install -Dm644 ${_licdir}/LICENSE.cirrus \
334
-t "${pkgdir}/usr/share/licenses/${pkgname}"
335
}
336
337
package_linux-firmware-intel() {
338
pkgdesc+=" - Firmware for Intel devices"
339
license+=(
340
Apache-2.0
341
GPL-2.0-only
342
LicenseRef-intel
343
)
344
depends=(linux-firmware-whence)
345
346
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
347
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
348
349
install -Dm644 \
350
${_licdir}/LICENCE.{HP,IntcSST2,adsp_sst,e100,fw_sst_0f28,lenovo} \
351
${_licdir}/LICENCE.{ibt,iwlwifi,qat}_firmware \
352
${_licdir}/LICENSE.{hfi1,ipu3}_firmware \
353
${_licdir}/LICENSE.{dell,i915,ice*,intel*,ivsc,ixp4xx,xe} \
354
-t "${pkgdir}/usr/share/licenses/${pkgname}"
355
}
356
357
package_linux-firmware-liquidio() {
358
pkgdesc+=" - Firmware for Cavium LiquidIO server adapters"
359
license+=(LicenseRef-liquidio)
360
depends=(linux-firmware-whence)
361
362
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
363
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
364
365
install -Dm644 ${_licdir}/LICENCE.cavium_liquidio \
366
-t "${pkgdir}/usr/share/licenses/${pkgname}"
367
}
368
369
package_linux-firmware-marvell() {
370
pkgdesc+=" - Firmware for Marvell devices"
371
license+=(LicenseRef-marvell)
372
depends=(linux-firmware-whence)
373
374
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
375
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
376
377
install -Dm644 ${_licdir}/LICENCE.{Marvell,NXP} \
378
-t "${pkgdir}/usr/share/licenses/${pkgname}"
379
}
380
381
package_linux-firmware-mediatek() {
382
pkgdesc+=" - Firmware for MediaTek and Ralink devices"
383
license+=(LicenseRef-mediatek)
384
depends=(linux-firmware-whence)
385
386
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
387
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
388
389
install -Dm644 ${_licdir}/LICENCE.{mediatek,ralink*} \
390
-t "${pkgdir}/usr/share/licenses/${pkgname}"
391
}
392
393
package_linux-firmware-mellanox() {
394
pkgdesc+=" - Firmware for Mellanox Spectrum switches"
395
depends=(linux-firmware-whence)
396
397
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
398
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
399
400
install -Dm644 ${_licdir}/LICENSE.mellanox \
401
-t "${pkgdir}/usr/share/licenses/${pkgname}"
402
}
403
404
package_linux-firmware-nfp() {
405
pkgdesc+=" - Firmware for Netronome Flow Processors"
406
license+=(LicenseRef-netronome)
407
depends=(linux-firmware-whence)
408
409
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
410
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
411
412
install -Dm644 ${_licdir}/LICENCE.Netronome \
413
-t "${pkgdir}/usr/share/licenses/${pkgname}"
414
}
415
416
package_linux-firmware-nvidia() {
417
pkgdesc+=" - Firmware for NVIDIA GPUs and SoCs"
418
license+=(LicenseRef-nvidia)
419
depends=(linux-firmware-whence)
420
421
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
422
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
423
424
install -Dm644 ${_licdir}/LICENCE.nvidia \
425
-t "${pkgdir}/usr/share/licenses/${pkgname}"
426
}
427
428
package_linux-firmware-qcom() {
429
pkgdesc+=" - Firmware for Qualcomm SoCs"
430
license+=(
431
BSD-3-Clause
432
LicenseRef-qcom
433
)
434
depends=(
435
linux-firmware-atheros
436
linux-firmware-whence
437
)
438
439
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
440
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
441
442
install -Dm644 ${_licdir}/{NOTICE.qcom,LICENSE.qcom*,LICENSE.dell} \
443
-t "${pkgdir}/usr/share/licenses/${pkgname}"
444
}
445
446
package_linux-firmware-qlogic() {
447
pkgdesc+=" - Firmware for QLogic devices"
448
license+=(LicenseRef-qlogic)
449
depends=(linux-firmware-whence)
450
451
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
452
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
453
454
install -Dm644 ${_licdir}/LICENCE.qla* \
455
-t "${pkgdir}/usr/share/licenses/${pkgname}"
456
}
457
458
package_linux-firmware-radeon() {
459
pkgdesc+=" - Firmware for ATI Radeon GPUs"
460
license+=(LicenseRef-radeon)
461
depends=(linux-firmware-whence)
462
463
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
464
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
465
466
install -Dm644 ${_licdir}/LICENSE.radeon \
467
-t "${pkgdir}/usr/share/licenses/${pkgname}"
468
}
469
470
package_linux-firmware-realtek() {
471
pkgdesc+=" - Firmware for Realtek devices"
472
license+=(LicenseRef-realtek)
473
depends=(linux-firmware-whence)
474
475
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
476
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
477
478
install -Dm644 ${_licdir}/LICENCE.rtlwifi_firmware.txt \
479
-t "${pkgdir}/usr/share/licenses/${pkgname}"
480
}
481
482
package_linux-firmware-ti() {
483
pkgdesc+=" - Firmware for Texas Instruments devices"
484
license+=(
485
GPL-2.0-or-later
486
LicenseRef-ti
487
)
488
depends=(linux-firmware-whence)
489
490
mv -v ${pkgname#linux-firmware-}/* "${pkgdir}"
491
make -C ${pkgbase} FIRMWAREDIR="${pkgdir}/usr/lib/firmware" dedup
492
493
install -Dm644 ${_licdir}/LICENCE.{ti-connectivity,ti-tspa,wl1251} \
494
-t "${pkgdir}/usr/share/licenses/${pkgname}"
495
}
496
497
# vim:set sw=2 sts=-1 et:
498
499
for _f in "${_pkgname[@]}"; do
500
_fn_copy "package_${_f}"
501
done
502
unset _f
503
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-25 09:11:17 | Low | 1 |