From eae75069caffc9dc053143893cd05cbcdbf42546 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Wed, 8 Jul 2026 13:33:31 +0300 Subject: [PATCH] Update package version to 20260622 --- info.yml | 118 +++++++++++++++++++--- recipe.sh | 297 +++++++++++++++++++++++++++++++++--------------------- 2 files changed, 286 insertions(+), 129 deletions(-) diff --git a/info.yml b/info.yml index c594e81..014ddf7 100644 --- a/info.yml +++ b/info.yml @@ -1,7 +1,7 @@ name: linux-firmware description: Base source package for all linux firmware files -version: "20260519" -revision: 2 +version: "20260622" +revision: 1 url: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git license: See /usr/share/licenses/linux-firmware/ maintainers: @@ -10,22 +10,112 @@ architecture: any output_architecture: any type: source make_depends: + - libarchive - rdfind downloads: - url: https://gitlab.com/kernel-firmware/linux-firmware/-/archive/${BPM_PKG_VERSION}/linux-firmware-${BPM_PKG_VERSION}.tar.gz extract_to: ${BPM_SOURCE} extract_strip_components: 1 - checksum: ef716b155f7048b784a97eea66210b6e7d59ec554abf9321cba6872637ebce11 + checksum: bb619f9a1e84eca686cfbe0ce1aab8946e42b3d674b3cd856843c1b6ca2d0032 +flags: + - name: compression + default_value: zstd + accepted_values: + - value: none + - value: zstd + - value: xz +options: + - nostrip split_packages: - - name: linux-firmware-whence - description: Origin and licensing information for linux firmware - - name: linux-firmware-amd - description: AMD CPU and GPU microcode - - name: linux-firmware-intel - description: Intel GPU microcode - - name: linux-firmware-nvidia - description: Nvidia GPU microcode + - name: linux-firmware + description: Meta package providing useful firmware files for most users + depends: + - linux-firmware-amdgpu + - linux-firmware-atheros + - linux-firmware-broadcom + - linux-firmware-cirrus + - linux-firmware-intel + - linux-firmware-mediatek + - linux-firmware-nvidia + - linux-firmware-other + - linux-firmware-radeon + - linux-firmware-realtek + optional_depends: + - linux-firmware-liquidio:Firmware for Cavium LiquidIO server adapters + - linux-firmware-marvell:Firmware for Marvell devices + - linux-firmware-mellanox:Firmware for Mellanox Spectrum switches + - linux-firmware-nfp:Firmware for Netronome Flow Processors + - linux-firmware-qcom:Firmware for Qualcomm SoCs + - linux-firmware-qlogic:Firmware for QLogic devices + - name: linux-firmware-licenses + description: Licensing information for linux-firmware + replaces: + - linux-firmware-whence + - name: amd-ucode + description: Microcode update image for AMD CPUs + replaces: + - linux-firmware-amd + - name: linux-firmware-amdgpu + description: Firmware for AMD Radeon GPUs + depends: + - linux-firmware-licenses + - name: linux-firmware-atheros + description: Firmware for Qualcomm Atheros WiFi and Bluetooth adapters + depends: + - linux-firmware-licenses - name: linux-firmware-broadcom - description: Broadcom and Cypress network adapter firmware - - name: linux-firmware-network - description: Network device firmware for WLAN, Bluetooth, Ethernet, etc. + description: Firmware for Broadcom and Cypress network adapters + depends: + - linux-firmware-licenses + - name: linux-firmware-cirrus + description: Firmware for Cirrus Logic audio devices + depends: + - linux-firmware-licenses + - name: linux-firmware-intel + description: Firmware for Intel devices + depends: + - linux-firmware-licenses + - name: linux-firmware-liquidio + description: Firmware for Cavium LiquidIO server adapters + depends: + - linux-firmware-licenses + - name: linux-firmware-marvell + description: Firmware for Marvell devices + depends: + - linux-firmware-licenses + - name: linux-firmware-mediatek + description: Firmware for MediaTek and Ralink devices + depends: + - linux-firmware-licenses + - name: linux-firmware-mellanox + description: Firmware for Mellanox Spectrum switches + depends: + - linux-firmware-licenses + - name: linux-firmware-nfp + description: Firmware for Netronome Flow Processors + depends: + - linux-firmware-licenses + - name: linux-firmware-nvidia + description: Firmware for NVIDIA GPUs and SoCs + depends: + - linux-firmware-licenses + - name: linux-firmware-qcom + description: Firmware for Qualcomm devices + depends: + - linux-firmware-licenses + - name: linux-firmware-qlogic + description: Firmware for QLogic devices + depends: + - linux-firmware-licenses + - name: linux-firmware-radeon + description: Firmware for ATI Radeon GPUs + depends: + - linux-firmware-licenses + - name: linux-firmware-realtek + description: Firmware for Realtek devices + depends: + - linux-firmware-licenses + - name: linux-firmware-other + description: Unsorted firmware for various devices + depends: + - linux-firmware-licenses diff --git a/recipe.sh b/recipe.sh index fd574a2..09e23bf 100644 --- a/recipe.sh +++ b/recipe.sh @@ -6,150 +6,217 @@ build() { # Create temporary directory for firmware installation install -dm755 "$BPM_SOURCE"/temp + # Select install target + case "$BPM_PKG_FLAG_COMPRESSION" in + none) TARGET="install";; + zstd) TARGET="install-zst";; + xz) TARGET="install-xz";; + *) echo "Invalid compression flag value!"; exit 1;; + esac + # Install and compress firmware files - ZSTD_CLEVEL=19 make -j1 install-zst FIRMWAREDIR=/usr/lib/firmware/ DESTDIR="$BPM_SOURCE"/temp + ZSTD_CLEVEL=19 make -j1 "$TARGET" FIRMWAREDIR=/usr/lib/firmware/ DESTDIR="$BPM_SOURCE"/temp make dedup FIRMWAREDIR=/usr/lib/firmware/ DESTDIR="$BPM_SOURCE"/temp + + # Build AMD microcode image + mkdir -p kernel/x86/microcode + cat amd-ucode/microcode_amd*.bin > kernel/x86/microcode/AuthenticAMD.bin + # Set file timestamp for reproducability + touch -d $(date -d @0) kernel/x86/microcode/AuthenticAMD.bin + echo kernel/x86/microcode/AuthenticAMD.bin | + bsdtar --uid 0 --gid 0 -cnf - -T - | + bsdtar --null -cf - --format=newc @- > amd-ucode.img } -package_linux-firmware-whence() { - # Install whence file - install -Dm644 WHENCE "$BPM_OUTPUT"/usr/share/licenses/linux-firmware/WHENCE +package_linux-firmware() { + echo "The linux-firmware package does not include any files by itself as its purpose is to serve as a quick way to install other linux-firmware related packages on the system" } -# Function for packaging AMD CPU and GPU microcode -package_linux-firmware-amd() { - # Copy firmware files to amd package - install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ - mv temp/usr/lib/firmware/amd* "$BPM_OUTPUT"/usr/lib/firmware/ - mv temp/usr/lib/firmware/radeon "$BPM_OUTPUT"/usr/lib/firmware/ +package_linux-firmware-licenses() { + # Install whence file + install -Dm644 WHENCE "$BPM_OUTPUT"/usr/share/licenses/linux-firmware-licenses/WHENCE # Install package licenses - install -Dm644 LICENSE.amdgpu "$BPM_OUTPUT"/usr/share/licenses/linux-firmware/amd/LICENSE.amdgpu - install -Dm644 LICENSE.amd-ucode "$BPM_OUTPUT"/usr/share/licenses/linux-firmware/amd/LICENSE.amd-ucode - install -Dm644 LICENSE.radeon "$BPM_OUTPUT"/usr/share/licenses/linux-firmware/amd/LICENSE.radeon + for license in "$BPM_SOURCE"/LICENSES/*; do + install -Dm644 "$license" -t "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME"/ + done + + # AMD ucode license is installed with the amd-ucode package + rm "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME"/LICENSE.amd-ucode +} + +package_amd-ucode() { + # Copy firmware files to amd package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/amd-ucode -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install microcode image + install -Dm644 "$BPM_SOURCE"/amd-ucode.img -t "$BPM_OUTPUT"/boot # Create dracut config for amd microcode install -dm755 "$BPM_OUTPUT"/usr/lib/dracut/dracut.conf.d echo "early_microcode=yes" >> "$BPM_OUTPUT"/usr/lib/dracut/dracut.conf.d/amd_ucode.conf + + # Install package licenses + install -Dm644 "$BPM_SOURCE"/LICENSES/LICENSE.amd-ucode "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME"/LICENSE } -# Function for packaging Intel CPU and GPU microcode -package_linux-firmware-intel() { - # Copy firmware files to intel package +package_linux-firmware-amdgpu() { + # Copy firmware files to amd package install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ - mv temp/usr/lib/firmware/i915 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/amdgpu -t "$BPM_OUTPUT"/usr/lib/firmware/ - # Install package license - install -Dm644 LICENSE.i915 "$BPM_OUTPUT"/usr/share/licenses/linux-firmware/intel/LICENSE.i915 + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" } -# Function for packaging Nvidia GPU microcode -package_linux-firmware-nvidia() { - # Copy firmware files to nvidia package +package_linux-firmware-atheros() { + # Copy firmware files to atheros package install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ - mv temp/usr/lib/firmware/nvidia "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/{ar[0-9]*,ath*,carl9170*,htc_*,qca,wil6210*} -t "$BPM_OUTPUT"/usr/lib/firmware/ - # Install package license - install -Dm644 LICENCE.nvidia "$BPM_OUTPUT"/usr/share/licenses/linux-firmware/nvidia/LICENSE.nvidia + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" } package_linux-firmware-broadcom() { # Copy firmware files to broadcom packages install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ - mv temp/usr/lib/firmware/brcm "$BPM_OUTPUT"/usr/lib/firmware/ - mv temp/usr/lib/firmware/cypress "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/{bnx2*,brcm,cypress,tigon} -t "$BPM_OUTPUT"/usr/lib/firmware/ # Install package licenses - install -Dm644 LICENCE.{broadcom_bcm43xx,cypress} -t "$BPM_OUTPUT"/usr/share/licenses/linux-firmware/broadcom/ + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" } -package_linux-firmware-network() { - _dirs=( - # Airoha Ethernet PHY - airoha - # Amlogic bluetooth - "amlogic/aml_w*_bt_uart.bin*" - # Atheros WLAN/bluetooth - "ath*" "ar*" "carl9170*" "htc*" - # Atmel WLAN - atmel - # ATUSB transceiver - atusb - # BNX2 Ethernet - "bnx2*" - # Sun Cassini Ethernet - "sun/cassini*" - # Chelsio Ethernet - "cxgb*" - # ST-E WLAN - "wsm_22.bin*" - # Intel WLAN/Ethernet/bluetooth - e100 "hfi1_*.fw*" "intel*" "iwlwifi*" - # Orinoco WLAN - "agere*" - # IXP4xx - ixp4xx - # KL5KUSB101 Ethernet - kaweth - # Cavium LiquidIO NIC - liquidio - # Mediatek WLAN/bluetooth - "mt7*.bin*" - # Mellanox ethernet - mellanox - # Marvell WLAN/bluetooth - mrvl "lbtf_usb.bin*" libertas mwl8k - # Multi-Tech modem - "mts_*.fw*" - # Myricom ethernet - "myri10ge*" myricom - # NXP UWB/bluetooth - "nxp/sr150_fw.bin*" "nxp/helper_uart*.bin*" "nxp/uartiw*.bin*" "nxp/uartspi*.se*" "nxp/uartuart*" - # Qualcomm WLAN/bluetooth - qca "wil6210*" - # QLogic HBA - "cbfw*.bin*" "ct2fw*.bin*" "ctfw*.bin*" "qed" "ql2*.bin*" "qlogic" "phanfw.bin*" - # Ralink WLAN - "rt*.bin*" - # Redpine WLAN/bluetooth - "rsi*" - # Realtek bluetooth/ethernet/WLAN - "rtl*" "rtw*" - # Sagrad WLAN - "sdd_sagrad_*.bin*" - # Slicoss NICs - slicoss - # Adaptec ethernet - "adaptec/starfire*" - # Tehuti NICs - tehuti - # TI WLAN/bluetooth - ti-connectivity - # Tigon ethernet - acenic tigon - # 3Com ethernet - 3com - # Eagle USB modem - ueagle-atm - # Via USB WLAN - "vntwusb.fw*" - # Microchip Ethernet - "microchip/mscc_vsc85*.bin*" - # Exar Ethernet - vxge - # SiLabs WLAN - wfx - ) - +package_linux-firmware-cirrus() { + # Copy firmware files to cirrus package install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ - for _dir in "${_dirs[@]}"; do - mv temp/usr/lib/firmware/${_dir} "$BPM_OUTPUT"/usr/lib/firmware/ - done + mv temp/usr/lib/firmware/{cirrus,cs42l43*} -t "$BPM_OUTPUT"/usr/lib/firmware/ - # Move mediatek directory contents except for SoC firmware - install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/mediatek/ - for file in $(find temp/usr/lib/firmware/mediatek/ -maxdepth 1 -mindepth 1 ! \( -name 'mt7981*' -o -name 'mt7986*' -o -name 'mt81*' -o -name 'sof*' \)); do - mv $file -t "$BPM_OUTPUT"/usr/lib/firmware/mediatek/ - done - #mv /!(mt7981*|mt7986*|mt81*|sof*) "$BPM_OUTPUT"/usr/lib/firmware/ + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-intel() { + # Copy firmware files to intel package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/i915 "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-liquidio() { + # Copy firmware files to liquidio package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/liquidio -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-marvell() { + # Copy firmware files to marvell package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/{libertas,mwl8k,mwlwifi,mrvl} -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-mediatek() { + # Copy firmware files to mediatek package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/{mediatek,mt7*,rt[237]*} -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-mellanox() { + # Copy firmware files to mellanox package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/mellanox -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-nfp() { + # Copy firmware files to nfp package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/netronome -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-nvidia() { + # Copy firmware files to nvidia package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/nvidia "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-qcom() { + # Copy firmware files to qcom package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/{qcom,a300_*} -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-qlogic() { + # Copy firmware files to qlogic package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/{qlogic,qed,ql2???_*,c{b,t,t2}fw-*} -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-radeon() { + # Copy firmware files to radeon package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/radeon -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-realtek() { + # Copy firmware files to radeon package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/{realtek,rtlwifi,rtw8*,rtl_*} -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" +} + +package_linux-firmware-other() { + # Copy remaining files to other package + install -dm755 "$BPM_OUTPUT"/usr/lib/firmware/ + mv temp/usr/lib/firmware/* -t "$BPM_OUTPUT"/usr/lib/firmware/ + + # Install package licenses + install -d "$BPM_OUTPUT"/usr/share/licenses + ln -sf linux-firmware-licenses "$BPM_OUTPUT"/usr/share/licenses/"$BPM_PKG_NAME" }