#!/bin/bash # Copyright 2011, 2016, 2018, 2023 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Included in Slint and adapted by Didier Spaier didieratslintdotfr cd $(dirname $0) ; CWD=$(pwd) PKGNAM=kernel-firmware PKGNAM2=amd-microcode ARCH=noarch BUILD=1slint BUILD2=1slint # Compress the firmware blobs? # Default is "none" for no compression. # Other types known to be currently supported are "xz" and "zstd". COMPRESSION=xz # If the variable PRINT_PACKAGE_NAME is set, then this script will report what # the name of the created package would be, and then exit. This information # could be useful to other scripts. TMP=$CWD PKG=$TMP/package-$PKGNAM PKG2=$TMP/package-amd-microcode TMP2=$TMP/amd-microcode rm -rf $PKG $PKG2 $TMP2 mkdir $TMP2 $PKG $PKG2 cd $PKG git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git # Better determine these the same way as above. DATE="$(lynx -dump -width=256 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=HEAD | grep " committer " | head -n 1 | rev | cut -f 3 -d ' ' | rev | tr -d -)" HEADISAT="$(lynx -dump -width=256 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/commit/?id=HEAD | grep " commit " | head -n 1 | cut -f 2 -d ] | cut -b 1-7)" find . -name ".git*" -exec rm -rf "{}" \+ chown -R root:root . mkdir -p lib/firmware # Added to build the package amd-microcode by Didier # Note: I could add support for AMD Secure Encrypted Virtualization (AMD-SEV) as indicated in: # https://documentation.suse.com/sles/15-SP1/html/SLES-amd-sev/index.html # as implemented by Debian in the package amd64-microcode. But I am not ready for that :( # Do as suggested by Gentoo in # https://wiki.gentoo.org/wiki/Microcode#Manual_initramfs_creation_.28AMD.29 mkdir -p $TMP2/kernel/x86/microcode mkdir -p $PKG2/boot mkdir -p $PKG2/usr/doc/$PKGNAM2-${DATE}_${HEADISAT} mkdir -p $PKG2/install cd $TMP2 mkdir -p kernel/x86/microcode cat $PKG/linux-firmware/amd-ucode/microcode_amd*.bin > kernel/x86/microcode/AuthenticAMD.bin echo kernel/x86/microcode/AuthenticAMD.bin | bsdcpio -o -H newc -R 0:0 > $PKG2/boot/amd-ucode.img for FILE in LICENSE.amd-ucode amd-ucode/README; do cp $PKG/linux-firmware/$FILE $PKG2/usr/doc/$PKGNAM2-${DATE}_${HEADISAT}/ || exit done cp $CWD/slack-desc.amd-microcode $PKG2/install/slack-desc cd $PKG2 /sbin/makepkg -l y -c n $TMP/$PKGNAM2-${DATE}_${HEADISAT}-$ARCH-$BUILD2.txz echo "/sbin/makepkg -l y -c n $TMP/$PKGNAM2-${DATE}_${HEADISAT}-$ARCH-$BUILD2.txz" echo "now, check" read -r cd $PKG # Install the firmware from the download directory using "make $INSTALLTARGET": case $COMPRESSION in xz) INSTALLTARGET="install-xz" ;; zstd) INSTALLTARGET="install-zst" ;; *) INSTALLTARGET="install" ;; esac ( cd linux-firmware echo "Running make DESTDIR=$PKG ${INSTALLTARGET}..." make DESTDIR=$PKG $INSTALLTARGET 2> /dev/null ) # Install documentation: ( cd linux-firmware mkdir -p $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT} cp -a README.md $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT}/README.linux-firmware cp -a WHENCE $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT}/WHENCE.linux-firmware cp -a GPL* LICEN* \ $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT} cp -a amd-ucode/README $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT}/README.amd-ucode cp -a isci/README $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT}/README.isci cp -a carl9170fw/COPYRIGHT $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT}/COPYRIGHT.carl9170fw cp -a carl9170fw/README $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT}/README.carl9170fw cp -a rtw88/README $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT}/README.rtw88 cp -a wfx/LICENCE.wf200 $PKG/usr/doc/kernel-firmware-${DATE}_${HEADISAT} ) pwd echo "check the content of linux-firmware" read -r # Remove git repo clone: rm -rf linux-firmware mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $TMP/$PKGNAM-${DATE}_${HEADISAT}-$ARCH-$BUILD.txz