git: 10aa369afd99 - main - fwget: simplify adding firmware images to pkg to install

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Sat, 20 May 2023 11:14:58 UTC
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=10aa369afd9946da18ae51b07aeadc3314fba56d

commit 10aa369afd9946da18ae51b07aeadc3314fba56d
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2023-05-11 20:30:44 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2023-05-20 11:13:12 +0000

    fwget: simplify adding firmware images to pkg to install
    
    Rather than using echo to return the firmware package name, call a
    new function (addpkg) which will also deal with (i) no leading space
    and (ii) remove duplicates (as some devices have dual-wifi-cards).
    In addition we won't have a line break when having multiple packages.
    
    While here also do not call pkg(8) anymore if there is no package to
    install and use the correct variable to install all and not just the
    last found package.
    
    Reviewed by:    manu, bapt
    Differential Revision: https://reviews.freebsd.org/D40071
---
 usr.sbin/fwget/fwget.sh            | 32 ++++++++++++++---
 usr.sbin/fwget/pci/pci_video_amd   | 72 +++++++++++++++++++-------------------
 usr.sbin/fwget/pci/pci_video_intel | 22 ++++++------
 3 files changed, 74 insertions(+), 52 deletions(-)

diff --git a/usr.sbin/fwget/fwget.sh b/usr.sbin/fwget/fwget.sh
index 63ed020a437c..5e50569c3991 100644
--- a/usr.sbin/fwget/fwget.sh
+++ b/usr.sbin/fwget/fwget.sh
@@ -4,6 +4,7 @@
 # SPDX-License-Identifier: BSD-2-Clause
 #
 # Copyright 2023 Beckhoff Automation GmbH & Co. KG
+# Copyright 2023 Bjoern A. Zeeb
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted providing that the following conditions 
@@ -62,6 +63,22 @@ log_verbose()
 	echo $@ 1>&3
 }
 
+addpkg()
+{
+	local _p
+
+	_p=$1
+
+	case "${packages}" in
+	"")	packages="${_p}" ;;
+	*)	# Avoid duplicates.
+		case " ${packages} " in
+		*\ ${_p}\ *) ;;	# duplicate
+		*)	packages="${packages} ${_p}" ;;
+		esac
+	esac
+}
+
 DRY_RUN=n
 VERBOSE=n
 
@@ -97,14 +114,19 @@ done
 
 packages=""
 for subsystem in ${subsystems}; do
-	package=$(${subsystem}_search_packages)
-	
-	packages="${packages} ${package}"
+	${subsystem}_search_packages
 done
 
-echo "Needed packages: ${packages}"
+case "${packages}" in
+""|^[[:space:]]*$)
+	echo "No firmware packages to install."
+	exit 0
+	;;
+esac
+
+echo "Needed firmware packages: '${packages}'"
 if [ "${DRY_RUN}" = "y" ]; then
 	exit 0
 fi
 
-pkg install -q ${package}
+pkg install -q ${packages}
diff --git a/usr.sbin/fwget/pci/pci_video_amd b/usr.sbin/fwget/pci/pci_video_amd
index 4afb44ed787e..b44eac1adf7b 100644
--- a/usr.sbin/fwget/pci/pci_video_amd
+++ b/usr.sbin/fwget/pci/pci_video_amd
@@ -28,112 +28,112 @@ pci_video_amd()
 {
 	case "$1" in
 		0x678*|0x679*)
-			echo "gpu-firmware-amd-kmod-tahiti"
+			addpkg "gpu-firmware-amd-kmod-tahiti"
 			;;
 		0x680*|0x681*)
-			echo "gpu-firmware-amd-kmod-pitcairn"
+			addpkg "gpu-firmware-amd-kmod-pitcairn"
 			;;
 		0x660*|0x661*|0x662*|0x663*)
-			echo "gpu-firmware-amd-kmod-oland"
+			addpkg "gpu-firmware-amd-kmod-oland"
 			;;
 		0x682*|0x683*)
-			echo "gpu-firmware-amd-kmod-verde gpu-firmware-amd-kmod-si58"
+			addpkg "gpu-firmware-amd-kmod-verde gpu-firmware-amd-kmod-si58"
 			;;
 		0x666*)
-			echo "gpu-firmware-amd-kmod-hainan"
+			addpkg "gpu-firmware-amd-kmod-hainan"
 			;;
 		0x13*)
-			echo "gpu-firmware-amd-kmod-kaveri"
+			addpkg "gpu-firmware-amd-kmod-kaveri"
 			;;
 		0x664*|0x664*)
-			echo "gpu-firmware-amd-kmod-bonaire"
+			addpkg "gpu-firmware-amd-kmod-bonaire"
 			;;
 		0x67a*|0x67b*)
-			echo "gpu-firmware-amd-kmod-hawaii"
+			addpkg "gpu-firmware-amd-kmod-hawaii"
 			;;
 		0x983*)
-			echo "gpu-firmware-amd-kmod-kabini"
+			addpkg "gpu-firmware-amd-kmod-kabini"
 			;;
 		0x985*)
-			echo "gpu-firmware-amd-kmod-mullins"
+			addpkg "gpu-firmware-amd-kmod-mullins"
 			;;
 		0x690*)
-			echo "gpu-firmware-amd-kmod-topaz"
+			addpkg "gpu-firmware-amd-kmod-topaz"
 			;;
 		0x692*|0x693*)
-			echo "gpu-firmware-amd-kmod-tonga"
+			addpkg "gpu-firmware-amd-kmod-tonga"
 			;;
 		0x730*)
-			echo "gpu-firmware-amd-kmod-fiji"
+			addpkg "gpu-firmware-amd-kmod-fiji"
 			;;
 		0x987*)
-			echo "gpu-firmware-amd-kmod-carrizo"
+			addpkg "gpu-firmware-amd-kmod-carrizo"
 			;;
 		0x98e4*)
-			echo "gpu-firmware-amd-kmod-stoney"
+			addpkg "gpu-firmware-amd-kmod-stoney"
 			;;
 		0x67e*|0x67ff)
-			echo "gpu-firmware-amd-kmod-polaris11"
+			addpkg "gpu-firmware-amd-kmod-polaris11"
 			;;
 		0x67c*|0x67d*|0x6fdf)
-			echo "gpu-firmware-amd-kmod-polaris10"
+			addpkg "gpu-firmware-amd-kmod-polaris10"
 			;;
 		0x698*|0x699*)
-			echo "gpu-firmware-amd-kmod-polaris12"
+			addpkg "gpu-firmware-amd-kmod-polaris12"
 			;;
 		0x694*)
-			echo "gpu-firmware-amd-kmod-vegam"
+			addpkg "gpu-firmware-amd-kmod-vegam"
 			;;
 		0x686*|0x687*)
-			echo "gpu-firmware-amd-kmod-vega10"
+			addpkg "gpu-firmware-amd-kmod-vega10"
 			;;
 		0x69a*)
-			echo "gpu-firmware-amd-kmod-vega12"
+			addpkg "gpu-firmware-amd-kmod-vega12"
 			;;
 		0x66a*)
-			echo "gpu-firmware-amd-kmod-vega20"
+			addpkg "gpu-firmware-amd-kmod-vega20"
 			;;
 		0x15d*)
-			echo "gpu-firmware-amd-kmod-raven"
+			addpkg "gpu-firmware-amd-kmod-raven"
 			;;
 		0x738*|0x739*)
-			echo "gpu-firmware-amd-kmod-arcturus"
+			addpkg "gpu-firmware-amd-kmod-arcturus"
 			;;
 		0x731*)
-			echo "gpu-firmware-amd-kmod-navi10"
+			addpkg "gpu-firmware-amd-kmod-navi10"
 			;;
 		0x734*)
-			echo "gpu-firmware-amd-kmod-navi14"
+			addpkg "gpu-firmware-amd-kmod-navi14"
 			;;
 		0x15e7|0x1636|0x1638|0x164c)
-			echo "gpu-firmware-amd-kmod-renoir"
+			addpkg "gpu-firmware-amd-kmod-renoir"
 			;;
 		0x736*)
-			echo "gpu-firmware-amd-kmod-navi12"
+			addpkg "gpu-firmware-amd-kmod-navi12"
 			;;
 		0x73a*|0x73b*)
-			echo "gpu-firmware-amd-kmod-sienna-cichlid"
+			addpkg "gpu-firmware-amd-kmod-sienna-cichlid"
 			;;
 		0x163f)
-			echo "gpu-firmware-amd-kmod-vangogh"
+			addpkg "gpu-firmware-amd-kmod-vangogh"
 			;;
 		0x164d|0x1681)
-			echo "gpu-firmware-amd-kmod-yellow-carp"
+			addpkg "gpu-firmware-amd-kmod-yellow-carp"
 			;;
 		0x73c*|0x73d*)
-			echo "gpu-firmware-amd-kmod-navy-flounder"
+			addpkg "gpu-firmware-amd-kmod-navy-flounder"
 			;;
 		0x73e*|0x73f*)
-			echo "gpu-firmware-amd-kmod-dimgrey-cavefish"
+			addpkg "gpu-firmware-amd-kmod-dimgrey-cavefish"
 			;;
 		0x740*|0x741*)
-			echo "gpu-firmware-amd-kmod-aldebaran"
+			addpkg "gpu-firmware-amd-kmod-aldebaran"
 			;;
 		0x13fe)
-			echo "gpu-firmware-amd-kmod-cyan-skillfish2"
+			addpkg "gpu-firmware-amd-kmod-cyan-skillfish2"
 			;;
 		0x742*|0x743*)
-			echo "gpu-firmware-amd-kmod-beige-goby"
+			addpkg "gpu-firmware-amd-kmod-beige-goby"
 			;;
 	esac
 }
diff --git a/usr.sbin/fwget/pci/pci_video_intel b/usr.sbin/fwget/pci/pci_video_intel
index 8dc8b9aee2bd..3824c4a49ffb 100644
--- a/usr.sbin/fwget/pci/pci_video_intel
+++ b/usr.sbin/fwget/pci/pci_video_intel
@@ -29,47 +29,47 @@ pci_video_intel()
 	case "$1" in
 		# Skylake
 		0x19*)
-			echo "gpu-firmware-intel-kmod-skylake"
+			addpkg "gpu-firmware-intel-kmod-skylake"
 			;;
 		# Broxton
 		0x0a*|0x1a*|0x5a84|0x5a85)
-			echo "gpu-firmware-intel-kmod-broxton"
+			addpkg "gpu-firmware-intel-kmod-broxton"
 			;;
 		# Geminilake
 		0x318*)
-			echo "gpu-firmware-intel-kmod-geminilake"
+			addpkg "gpu-firmware-intel-kmod-geminilake"
 			;;
 		# Kabylake, Coffeelake and Cometlake
 		0x59*|0x87*|0x9b*|0x3e*)
-			echo "gpu-firmware-intel-kmod-kabylake"
+			addpkg "gpu-firmware-intel-kmod-kabylake"
 			;;
 		# Cannonlake
 		0x5a*)
-			echo "gpu-firmware-intel-kmod-cannonlake"
+			addpkg "gpu-firmware-intel-kmod-cannonlake"
 			;;
 		# Icelake
 		0x8a*)
-			echo "gpu-firmware-intel-kmod-icelake"
+			addpkg "gpu-firmware-intel-kmod-icelake"
 			;;
 		# Elkhartlake/Jasperlake
 		0x45*|0x4e*)
-			echo "gpu-firmware-intel-kmod-elkhartlake"
+			addpkg "gpu-firmware-intel-kmod-elkhartlake"
 			;;
 		# Tigerlake
 		0x9a*)
-			echo "gpu-firmware-intel-kmod-tigerlake"
+			addpkg "gpu-firmware-intel-kmod-tigerlake"
 			;;
 		# Rocketlake (Uses tigerlake GuC/HuC firmware)
 		0x4c*)
-			echo "gpu-firmware-intel-kmod-rocketlake gpu-firmware-intel-kmod-tigerlake"
+			addpkg "gpu-firmware-intel-kmod-rocketlake gpu-firmware-intel-kmod-tigerlake"
 			;;
 		# DG1
 		0x49*)
-			echo "gpu-firmware-intel-kmod-dg1"
+			addpkg "gpu-firmware-intel-kmod-dg1"
 			;;
 		# Alderlake (Uses tigerlake GuC/HuC firmware)
 		0x46*)
-			echo "gpu-firmware-intel-kmod-alderlake gpu-firmware-intel-kmod-tigerlake"
+			addpkg "gpu-firmware-intel-kmod-alderlake gpu-firmware-intel-kmod-tigerlake"
 			;;
 		*)
 			log "No package found for device $1"