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
This commit is contained in:
Bjoern A. Zeeb 2023-05-11 20:30:44 +00:00
parent ae1e336e05
commit 10aa369afd
3 changed files with 74 additions and 52 deletions

View file

@ -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}

View file

@ -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
}

View file

@ -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"