1*03c07bdcSBjoern A. Zeeb#!/bin/sh 2*03c07bdcSBjoern A. Zeeb#- 3*03c07bdcSBjoern A. Zeeb# SPDX-License-Identifier: BSD-2-Clause 4*03c07bdcSBjoern A. Zeeb# 5*03c07bdcSBjoern A. Zeeb# Copyright (c) 2024 The FreeBSD Foundation 6*03c07bdcSBjoern A. Zeeb# 7*03c07bdcSBjoern A. Zeeb# This software was developed by Björn Zeeb 8*03c07bdcSBjoern A. Zeeb# under sponsorship from the FreeBSD Foundation. 9*03c07bdcSBjoern A. Zeeb# 10*03c07bdcSBjoern A. Zeeb 11*03c07bdcSBjoern A. ZeebBSDCFG_SHARE="/usr/share/bsdconfig" 12*03c07bdcSBjoern A. Zeeb. $BSDCFG_SHARE/common.subr || exit 1 13*03c07bdcSBjoern A. Zeeb 14*03c07bdcSBjoern A. Zeebf_dprintf "%s: loading includes..." "$0" 15*03c07bdcSBjoern A. Zeebf_include $BSDCFG_SHARE/dialog.subr 16*03c07bdcSBjoern A. Zeebf_include $BSDCFG_SHARE/mustberoot.subr 17*03c07bdcSBjoern A. Zeebf_include $BSDCFG_SHARE/packages/packages.subr 18*03c07bdcSBjoern A. Zeeb 19*03c07bdcSBjoern A. Zeebmsg_freebsd_firmware_installation="$OSNAME Firmware Installation" 20*03c07bdcSBjoern A. Zeebmsg_freebsd_installer="$OSNAME Installer" 21*03c07bdcSBjoern A. Zeebmsg_firmware_menu_text="This menu allows you to install firmware packages for your system" 22*03c07bdcSBjoern A. Zeebhline_arrows_space_tab_enter="Use arrows, SPACE, TAB or ENTER" 23*03c07bdcSBjoern A. Zeebhline_ok="Press OK to continue" 24*03c07bdcSBjoern A. Zeeb 25*03c07bdcSBjoern A. Zeebdialog_menu_main() 26*03c07bdcSBjoern A. Zeeb{ 27*03c07bdcSBjoern A. Zeeb local title="$DIALOG_TITLE" 28*03c07bdcSBjoern A. Zeeb local btitle="$DIALOG_BACKTITLE" 29*03c07bdcSBjoern A. Zeeb local prompt="$msg_firmware_menu_text" 30*03c07bdcSBjoern A. Zeeb local hline 31*03c07bdcSBjoern A. Zeeb local check_list= # Empty; filled below 32*03c07bdcSBjoern A. Zeeb local fwlist _fw 33*03c07bdcSBjoern A. Zeeb 34*03c07bdcSBjoern A. Zeeb fwlist=`chroot $BSDINSTALL_CHROOT fwget -q -n` 35*03c07bdcSBjoern A. Zeeb case "${fwlist}" in 36*03c07bdcSBjoern A. Zeeb "") # No firmware to install 37*03c07bdcSBjoern A. Zeeb # Print a dialog with OK and a 3 line timeout bar. 38*03c07bdcSBjoern A. Zeeb local height width rows msg 39*03c07bdcSBjoern A. Zeeb 40*03c07bdcSBjoern A. Zeeb msg="No firmware to install, continuing..." 41*03c07bdcSBjoern A. Zeeb hline="$hline_ok" 42*03c07bdcSBjoern A. Zeeb 43*03c07bdcSBjoern A. Zeeb eval f_dialog_checklist_size height width rows \ 44*03c07bdcSBjoern A. Zeeb \"\$title\" \ 45*03c07bdcSBjoern A. Zeeb \"\$btitle\" \ 46*03c07bdcSBjoern A. Zeeb \"\$msg\" \ 47*03c07bdcSBjoern A. Zeeb \"-\" \ 48*03c07bdcSBjoern A. Zeeb \"n\" \ 49*03c07bdcSBjoern A. Zeeb \"-\" \ 50*03c07bdcSBjoern A. Zeeb \"\$hline\" 51*03c07bdcSBjoern A. Zeeb 52*03c07bdcSBjoern A. Zeeb ${DIALOG} --title "${title}" --backtitle "${btitle}" \ 53*03c07bdcSBjoern A. Zeeb --hline "${hline}" \ 54*03c07bdcSBjoern A. Zeeb --nocancel --pause "${msg}" $height $width 5 55*03c07bdcSBjoern A. Zeeb f_dialog_menutag_store -s "" 56*03c07bdcSBjoern A. Zeeb return $DIALOG_OK 57*03c07bdcSBjoern A. Zeeb ;; 58*03c07bdcSBjoern A. Zeeb *) 59*03c07bdcSBjoern A. Zeeb local desc status height width rows selected retval 60*03c07bdcSBjoern A. Zeeb hline="$hline_arrows_space_tab_enter" 61*03c07bdcSBjoern A. Zeeb 62*03c07bdcSBjoern A. Zeeb for _fw in ${fwlist}; do 63*03c07bdcSBjoern A. Zeeb desc="${_fw}" 64*03c07bdcSBjoern A. Zeeb f_shell_escape "$desc" desc 65*03c07bdcSBjoern A. Zeeb # install each firmware package by default. 66*03c07bdcSBjoern A. Zeeb check_list="$check_list 67*03c07bdcSBjoern A. Zeeb '$_fw' '$desc' 'on' 68*03c07bdcSBjoern A. Zeeb " 69*03c07bdcSBjoern A. Zeeb done 70*03c07bdcSBjoern A. Zeeb 71*03c07bdcSBjoern A. Zeeb eval f_dialog_checklist_size height width rows \ 72*03c07bdcSBjoern A. Zeeb \"\$title\" \ 73*03c07bdcSBjoern A. Zeeb \"\$btitle\" \ 74*03c07bdcSBjoern A. Zeeb \"\$prompt\" \ 75*03c07bdcSBjoern A. Zeeb \"\$hline\" \ 76*03c07bdcSBjoern A. Zeeb $check_list 77*03c07bdcSBjoern A. Zeeb 78*03c07bdcSBjoern A. Zeeb selected=$( eval $DIALOG \ 79*03c07bdcSBjoern A. Zeeb --title \"\$title\" \ 80*03c07bdcSBjoern A. Zeeb --backtitle \"\$btitle\" \ 81*03c07bdcSBjoern A. Zeeb --separate-output \ 82*03c07bdcSBjoern A. Zeeb --hline \"\$hline\" \ 83*03c07bdcSBjoern A. Zeeb --ok-label \"\$msg_ok\" \ 84*03c07bdcSBjoern A. Zeeb --cancel-label \"\$msg_cancel\" \ 85*03c07bdcSBjoern A. Zeeb --checklist \"\$prompt\" \ 86*03c07bdcSBjoern A. Zeeb $height $width $rows \ 87*03c07bdcSBjoern A. Zeeb $check_list \ 88*03c07bdcSBjoern A. Zeeb 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 89*03c07bdcSBjoern A. Zeeb ) 90*03c07bdcSBjoern A. Zeeb retval=$? 91*03c07bdcSBjoern A. Zeeb f_dialog_menutag_store -s "$selected" 92*03c07bdcSBjoern A. Zeeb return $retval 93*03c07bdcSBjoern A. Zeeb ;; 94*03c07bdcSBjoern A. Zeeb esac 95*03c07bdcSBjoern A. Zeeb} 96*03c07bdcSBjoern A. Zeeb 97*03c07bdcSBjoern A. Zeeb# Initialize 98*03c07bdcSBjoern A. Zeebf_dialog_title "$msg_freebsd_firmware_installation" 99*03c07bdcSBjoern A. Zeebf_dialog_backtitle "$msg_freebsd_installer" 100*03c07bdcSBjoern A. Zeeb 101*03c07bdcSBjoern A. Zeeb# Gather the firmware files and present them to the user 102*03c07bdcSBjoern A. Zeebdialog_menu_main || f_die 103*03c07bdcSBjoern A. Zeebf_dialog_menutag_fetch selected 104*03c07bdcSBjoern A. Zeeb 105*03c07bdcSBjoern A. Zeeb# Nothing to install? 106*03c07bdcSBjoern A. Zeebif [ "${selected}" == "" ]; then 107*03c07bdcSBjoern A. Zeeb exit 0 108*03c07bdcSBjoern A. Zeebfi 109*03c07bdcSBjoern A. Zeeb 110*03c07bdcSBjoern A. Zeebf_mustberoot_init 111*03c07bdcSBjoern A. Zeeb 112*03c07bdcSBjoern A. Zeeb# pkg(8) needs name servers (unless we could use a local repo in the future). 113*03c07bdcSBjoern A. Zeebf_quietly cp -f $BSDINSTALL_TMPETC/resolv.conf $BSDINSTALL_CHROOT/etc/ 114*03c07bdcSBjoern A. Zeeb 115*03c07bdcSBjoern A. Zeeb${DIALOG} --title "$DIALOG_TITLE" --backtitle "$DIALOG_BACKTITLE" \ 116*03c07bdcSBjoern A. Zeeb --infobox "Installing firmware. This may take a moment." 0 0 117*03c07bdcSBjoern A. Zeeb 118*03c07bdcSBjoern A. Zeeb# Install each of the selected firmware packages 119*03c07bdcSBjoern A. Zeebfor fw in ${selected}; do 120*03c07bdcSBjoern A. Zeeb # We install one at a time in case one is not avail. 121*03c07bdcSBjoern A. Zeeb # pkg-install.8 needs an option to skip unavail. 122*03c07bdcSBjoern A. Zeeb ASSUME_ALWAYS_YES=YES chroot $BSDINSTALL_CHROOT pkg install -qy ${fw} 123*03c07bdcSBjoern A. Zeebdone 124*03c07bdcSBjoern A. Zeeb 125*03c07bdcSBjoern A. Zeeb# end 126