author | Andreas Radke
<andyrtr@archlinux.org> 2022-01-19 19:21:38 UTC |
committer | Andreas Radke
<andyrtr@archlinux.org> 2022-01-19 19:21:38 UTC |
parent | 04c14506d1f3778d3024f2743417c4a8be05ae19 |
0001-Add-support-for-compressing-firmware-in-copy-firmware.patch | +123 | -0 |
PKGBUILD | +10 | -5 |
diff --git a/0001-Add-support-for-compressing-firmware-in-copy-firmware.patch b/0001-Add-support-for-compressing-firmware-in-copy-firmware.patch new file mode 100644 index 0000000..93d82e4 --- /dev/null +++ b/0001-Add-support-for-compressing-firmware-in-copy-firmware.patch @@ -0,0 +1,123 @@ +From 7eec2b56f54c778d5bd6e7aea49ee03e3b76e769 Mon Sep 17 00:00:00 2001 +From: Peter Robinson <pbrobinson@gmail.com> +Date: Fri, 22 Jan 2021 20:36:23 +0000 +Subject: [PATCH v2] Add support for compressing firmware in copy-firmware.sh + +As of kernel 5.3 there's initial support for loading compressed firmware. +At this stage the only supported compression methis is "xz -C crc32" but +this option brings significant benefits. + +Signed-off-by: Peter Robinson <pbrobinson@gmail.com> +--- + +v2: quote filename for xz command + + Makefile | 4 ++++ + copy-firmware.sh | 47 +++++++++++++++++++++++++++++++---------------- + 2 files changed, 35 insertions(+), 16 deletions(-) + +diff --git a/Makefile b/Makefile +index e1c362f..9a48471 100644 +--- a/Makefile ++++ b/Makefile +@@ -11,3 +11,7 @@ check: + install: + mkdir -p $(DESTDIR)$(FIRMWAREDIR) + ./copy-firmware.sh $(DESTDIR)$(FIRMWAREDIR) ++ ++installcompress: ++ mkdir -p $(DESTDIR)$(FIRMWAREDIR) ++ ./copy-firmware.sh -C $(DESTDIR)$(FIRMWAREDIR) +diff --git a/copy-firmware.sh b/copy-firmware.sh +index 9b46b63..0dd2e5c 100755 +--- a/copy-firmware.sh ++++ b/copy-firmware.sh +@@ -6,6 +6,7 @@ + + verbose=: + prune=no ++compress=no + + while test $# -gt 0; do + case $1 in +@@ -19,6 +20,11 @@ while test $# -gt 0; do + shift + ;; + ++ -C | --compress) ++ compress=yes ++ shift ++ ;; ++ + *) + if test "x$destdir" != "x"; then + echo "ERROR: unknown command-line options: $@" +@@ -31,40 +37,49 @@ while test $# -gt 0; do + esac + done + ++if test "x$compress" = "xyes"; then ++ cmpxtn=.xz ++ grep '^File:' WHENCE | sed -e's/^File: *//g' -e's/"//g' | while read f; do ++ test -f "$f" || continue ++ $verbose "compressing $f" ++ xz -C crc32 "$f" ++ done ++fi ++ + grep '^File:' WHENCE | sed -e's/^File: *//g' -e's/"//g' | while read f; do +- test -f "$f" || continue +- $verbose "copying file $f" +- mkdir -p $destdir/$(dirname "$f") +- cp -d "$f" $destdir/"$f" ++ test -f "$f$cmpxtn" || continue ++ $verbose "copying file $f$cmpxtn" ++ mkdir -p $destdir/$(dirname "$f$cmpxtn") ++ cp -d "$f$cmpxtn" $destdir/"$f$cmpxtn" + done + + grep -E '^Link:' WHENCE | sed -e's/^Link: *//g' -e's/-> //g' | while read f d; do +- if test -L "$f"; then +- test -f "$destdir/$f" && continue +- $verbose "copying link $f" +- mkdir -p $destdir/$(dirname "$f") ++ if test -L "$f$cmpxtn"; then ++ test -f "$destdir/$f$cmpxtn" && continue ++ $verbose "copying link $f$cmpxtn" ++ mkdir -p $destdir/$(dirname "$f$cmpxtn") + cp -d "$f" $destdir/"$f" + + if test "x$d" != "x"; then +- target=`readlink "$f"` ++ target=`readlink "$f$cmpxtn"` + + if test "x$target" != "x$d"; then + $verbose "WARNING: inconsistent symlink target: $target != $d" + else + if test "x$prune" != "xyes"; then +- $verbose "WARNING: unneeded symlink detected: $f" ++ $verbose "WARNING: unneeded symlink detected: $f$cmpxtn" + else +- $verbose "WARNING: pruning unneeded symlink $f" +- rm -f "$f" ++ $verbose "WARNING: pruning unneeded symlink $f$cmpxtn" ++ rm -f "$f$cmpxtn" + fi + fi + else +- $verbose "WARNING: missing target for symlink $f" ++ $verbose "WARNING: missing target for symlink $f$cmpxtn" + fi + else +- $verbose "creating link $f -> $d" +- mkdir -p $destdir/$(dirname "$f") +- ln -sf "$d" "$destdir/$f" ++ $verbose "creating link $f$cmpxtn -> $d$cmpxtn" ++ mkdir -p $destdir/$(dirname "$f$cmpxtn") ++ ln -sf "$d$cmpxtn" "$destdir/$f$cmpxtn" + fi + done + +-- +2.29.2 + diff --git a/PKGBUILD b/PKGBUILD index a202607..db8f5ad 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,8 +3,8 @@ pkgbase=linux-firmware pkgname=(linux-firmware amd-ucode) #_tag=2021216 -_commit=13dca280f76009ba2c5f25408543a1aaaa062c25 -pkgver=20220111.13dca28 +_commit=0c6a7b3bf728b95c8b7b95328f94335e2bb2c967 +pkgver=20220119.0c6a7b3 pkgrel=1 pkgdesc="Firmware files for Linux" url="https://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git;a=summary" @@ -12,8 +12,10 @@ license=('GPL2' 'GPL3' 'custom') arch=('any') makedepends=('git') options=(!strip) -source=("git+https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git#commit=${_commit}?signed") -sha256sums=('SKIP') +source=("git+https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git#commit=${_commit}?signed" + 0001-Add-support-for-compressing-firmware-in-copy-firmware.patch) +sha256sums=('SKIP' + '41c73f88ac68a3aef01fd406ce6cdb87555c65e4816dab12df10740875551aa7') validpgpkeys=('4CDE8575E547BF835FE15807A31B6BD72486CFD6') # Josh Boyer <jwboyer@fedoraproject.org> _backports=( @@ -27,6 +29,9 @@ prepare() { git log --oneline -1 "${_c}" git cherry-pick -n "${_c}" done + + # add firmware compression support - patch taken from Fedora + patch -Np1 -i ../0001-Add-support-for-compressing-firmware-in-copy-firmware.patch } pkgver() { @@ -54,7 +59,7 @@ build() { package_linux-firmware() { cd ${pkgname} - make DESTDIR="${pkgdir}" FIRMWAREDIR=/usr/lib/firmware install + make DESTDIR="${pkgdir}" FIRMWAREDIR=/usr/lib/firmware installcompress # Trigger a microcode reload for configurations not using early updates echo 'w /sys/devices/system/cpu/microcode/reload - - - - 1' |