Re: git: d577d6178bde - main - bsdinstall release: Move code to a new startbsdinstall wrapper

From: Alfonso S. Siciliano <asiciliano_at_FreeBSD.org>
Date: Tue, 11 Apr 2023 14:14:06 UTC
On 03/10/2022 18:09, Jessica Clarke wrote:
> The branch main has been updated by jrtc27:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=d577d6178bdeff86dbff0b954659ac5e23c17b2a
> 
> commit d577d6178bdeff86dbff0b954659ac5e23c17b2a
> Author:     Jessica Clarke <jrtc27@FreeBSD.org>
> AuthorDate: 2022-10-03 16:09:16 +0000
> Commit:     Jessica Clarke <jrtc27@FreeBSD.org>
> CommitDate: 2022-10-03 16:09:16 +0000
> 
>      bsdinstall release: Move code to a new startbsdinstall wrapper
>      
>      This separates out the install media-specific environment (creating
>      bsdinstall_etc) from actually running the installer on a given console.
>      This will be used by a future change to start the installer on multiple
>      consoles.
>      
>      Reviewed by:    brooks, gjb
>      Differential Revision:  https://reviews.freebsd.org/D36803
> ---
>   release/rc.local                         | 96 +------------------------------
>   tools/build/mk/OptionalObsoleteFiles.inc |  1 +
>   usr.sbin/bsdinstall/Makefile             |  3 +
>   usr.sbin/bsdinstall/startbsdinstall      | 97 ++++++++++++++++++++++++++++++++
>   4 files changed, 102 insertions(+), 95 deletions(-)
> 
> diff --git a/release/rc.local b/release/rc.local
> index 9adaea468ae7..943c175ddd52 100755
> --- a/release/rc.local
> +++ b/release/rc.local
> @@ -1,101 +1,7 @@
>   #!/bin/sh
>   # $FreeBSD$
>   
> -: ${BSDDIALOG_OK=0}
> -: ${BSDDIALOG_CANCEL=1}
> -: ${BSDDIALOG_HELP=2}
> -: ${BSDDIALOG_EXTRA=3}
> -: ${BSDDIALOG_ESC=5}
> -: ${BSDDIALOG_ERROR=255}
> -
>   # resolv.conf from DHCP ends up in here, so make sure the directory exists
>   mkdir /tmp/bsdinstall_etc
>   
> -kbdcontrol -d >/dev/null 2>&1
> -if [ $? -eq 0 ]; then
> -	# Syscons: use xterm, start interesting things on other VTYs
> -	TERM=xterm
> -
> -	# Don't send ESC on function-key 62/63 (left/right command key)
> -	kbdcontrol -f 62 '' > /dev/null 2>&1
> -	kbdcontrol -f 63 '' > /dev/null 2>&1
> -
> -	if [ -z "$EXTERNAL_VTY_STARTED" ]; then
> -		# Init will clean these processes up if/when the system
> -		# goes multiuser
> -		touch /tmp/bsdinstall_log
> -		tail -f /tmp/bsdinstall_log > /dev/ttyv2 &
> -		/usr/libexec/getty autologin ttyv3 &
> -		EXTERNAL_VTY_STARTED=1
> -	fi
> -else
> -	# Serial or other console
> -	echo
> -	echo "Welcome to FreeBSD!"
> -	echo
> -	echo "Please choose the appropriate terminal type for your system."
> -	echo "Common console types are:"
> -	echo "   ansi     Standard ANSI terminal"
> -	echo "   vt100    VT100 or compatible terminal"
> -	echo "   xterm    xterm terminal emulator (or compatible)"
> -	echo
> -	echo -n "Console type [vt100]: "
> -	read TERM
> -	TERM=${TERM:-vt100}
> -fi
> -export TERM
> -
> -# Query terminal size; useful for serial lines.
> -resizewin -z
> -
> -if [ -f /etc/installerconfig ]; then
> -	if bsdinstall script /etc/installerconfig; then
> -		bsddialog --backtitle "FreeBSD Installer" --title "Complete" --no-cancel --ok-label "Reboot" --pause "Installation of FreeBSD complete! Rebooting in 10 seconds" 10 30 10
> -		reboot
> -	else
> -		bsddialog --backtitle "FreeBSD Installer" --title "Error" --textbox /tmp/bsdinstall_log 0 0
> -	fi
> -	exit
> -fi
> -
> -bsddialog --backtitle "FreeBSD Installer" --title "Welcome" --extra-button --extra-label "Shell" --ok-label "Install" --cancel-label "Live CD" --yesno "Welcome to FreeBSD! Would you like to begin an installation or use the live CD?" 0 0
> -
> -case $? in
> -$BSDDIALOG_OK)	# Install
> -	# If not netbooting, have the installer configure the network
> -	dlv=`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null`
> -	if [ ${dlv:=0} -eq 0 -a ! -f /etc/diskless ]; then
> -		BSDINSTALL_CONFIGCURRENT=yes; export BSDINSTALL_CONFIGCURRENT
> -	fi
> -
> -	trap true SIGINT	# Ignore cntrl-C here
> -	bsdinstall
> -	if [ $? -eq 0 ]; then
> -		bsddialog --backtitle "FreeBSD Installer" --title "Complete" --ok-label "Reboot" --extra-button --extra-label "Shutdown" --cancel-label "Live CD" --yesno "Installation of FreeBSD complete! Would you like to reboot into the installed system now?" 0 0
> -
> -		case $? in
> -		$BSDDIALOG_OK)		# Reboot
> -			reboot
> -			;;
> -		$BSDDIALOG_EXTRA)	# Shutdown
> -			shutdown -p now
> -			;;
> -		$BSDDIALOG_CANCEL)	# Live CD
> -			exit 0
> -			;;
> -		esac
> -	else
> -		. /etc/rc.local
> -	fi
> -	;;
> -$BSDDIALOG_CANCEL)	# Live CD
> -	exit 0
> -	;;
> -$BSDDIALOG_EXTRA)	# Shell
> -	clear
> -	echo "When finished, type 'exit' to return to the installer."
> -	/bin/sh
> -	. /etc/rc.local
> -	;;
> -esac
> -
> +/usr/libexec/bsdinstall/startbsdinstall
> diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
> index 484089d47203..f0ddd90b784c 100644
> --- a/tools/build/mk/OptionalObsoleteFiles.inc
> +++ b/tools/build/mk/OptionalObsoleteFiles.inc
> @@ -474,6 +474,7 @@ OLD_FILES+=usr/libexec/bsdinstall/runconsoles
>   OLD_FILES+=usr/libexec/bsdinstall/script
>   OLD_FILES+=usr/libexec/bsdinstall/scriptedpart
>   OLD_FILES+=usr/libexec/bsdinstall/services
> +OLD_FILES+=usr/libexec/bsdinstall/startbsdinstall
>   OLD_FILES+=usr/libexec/bsdinstall/time
>   OLD_FILES+=usr/libexec/bsdinstall/umount
>   OLD_FILES+=usr/libexec/bsdinstall/wlanconfig
> diff --git a/usr.sbin/bsdinstall/Makefile b/usr.sbin/bsdinstall/Makefile
> index d09bef110518..e71cae726536 100644
> --- a/usr.sbin/bsdinstall/Makefile
> +++ b/usr.sbin/bsdinstall/Makefile
> @@ -10,6 +10,9 @@ GENHDRS=	opt_osname.h
>   SRCS+=		${GENHDRS}
>   CLEANFILES+=	${GENHDRS}
>   
> +SCRIPTS+=	startbsdinstall
> +SCRIPTSDIR_startbsdinstall=	${LIBEXECDIR}/bsdinstall
> +
>   opt_osname.h: .PHONY
>   	if ! grep -q "^#define OSNAME \"${OSNAME}\"$"" ${.TARGET}; then \
>   		echo "#define OSNAME \"${OSNAME}\"" > ${.TARGET}; \
> diff --git a/usr.sbin/bsdinstall/startbsdinstall b/usr.sbin/bsdinstall/startbsdinstall
> new file mode 100644
> index 000000000000..3a5a07e85b4d
> --- /dev/null
> +++ b/usr.sbin/bsdinstall/startbsdinstall
> @@ -0,0 +1,97 @@


This commit copy&paste code from scripts/auto to a new file. Why weren't 
the SPDX, Copyright and License copied and added?

I was inactive for a few months. Do we have a new policy to add new 
files in BASE without legal info, bsd license, etc?
https://cgit.freebsd.org/src/tree/usr.sbin/bsdinstall/startbsdinstall


> +#!/bin/sh
> +
> +: ${BSDDIALOG_OK=0}
> +: ${BSDDIALOG_CANCEL=1}
> +: ${BSDDIALOG_HELP=2}
> +: ${BSDDIALOG_EXTRA=3}
> +: ${BSDDIALOG_ESC=5}
> +: ${BSDDIALOG_ERROR=255}
> +
> +kbdcontrol -d >/dev/null 2>&1
> +if [ $? -eq 0 ]; then
> +	# Syscons: use xterm, start interesting things on other VTYs
> +	TERM=xterm
> +
> +	# Don't send ESC on function-key 62/63 (left/right command key)
> +	kbdcontrol -f 62 '' > /dev/null 2>&1
> +	kbdcontrol -f 63 '' > /dev/null 2>&1
> +
> +	if [ -z "$EXTERNAL_VTY_STARTED" ]; then
> +		# Init will clean these processes up if/when the system
> +		# goes multiuser
> +		touch /tmp/bsdinstall_log
> +		tail -f /tmp/bsdinstall_log > /dev/ttyv2 &
> +		/usr/libexec/getty autologin ttyv3 &
> +		EXTERNAL_VTY_STARTED=1
> +	fi
> +else
> +	# Serial or other console
> +	echo
> +	echo "Welcome to FreeBSD!"
> +	echo
> +	echo "Please choose the appropriate terminal type for your system."
> +	echo "Common console types are:"
> +	echo "   ansi     Standard ANSI terminal"
> +	echo "   vt100    VT100 or compatible terminal"
> +	echo "   xterm    xterm terminal emulator (or compatible)"
> +	echo
> +	echo -n "Console type [vt100]: "
> +	read TERM
> +	TERM=${TERM:-vt100}
> +fi
> +export TERM
> +
> +# Query terminal size; useful for serial lines.
> +resizewin -z
> +
> +if [ -f /etc/installerconfig ]; then
> +	if bsdinstall script /etc/installerconfig; then
> +		bsddialog --backtitle "FreeBSD Installer" --title "Complete" --no-cancel --ok-label "Reboot" --pause "Installation of FreeBSD complete! Rebooting in 10 seconds" 10 30 10
> +		reboot
> +	else
> +		bsddialog --backtitle "FreeBSD Installer" --title "Error" --textbox /tmp/bsdinstall_log 0 0
> +	fi
> +	exit
> +fi
> +
> +bsddialog --backtitle "FreeBSD Installer" --title "Welcome" --extra-button --extra-label "Shell" --ok-label "Install" --cancel-label "Live CD" --yesno "Welcome to FreeBSD! Would you like to begin an installation or use the live CD?" 0 0
> +
> +case $? in
> +$BSDDIALOG_OK)	# Install
> +	# If not netbooting, have the installer configure the network
> +	dlv=`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null`
> +	if [ ${dlv:=0} -eq 0 -a ! -f /etc/diskless ]; then
> +		BSDINSTALL_CONFIGCURRENT=yes; export BSDINSTALL_CONFIGCURRENT
> +	fi
> +
> +	trap true SIGINT	# Ignore cntrl-C here
> +	bsdinstall
> +	if [ $? -eq 0 ]; then
> +		bsddialog --backtitle "FreeBSD Installer" --title "Complete" --ok-label "Reboot" --extra-button --extra-label "Shutdown" --cancel-label "Live CD" --yesno "Installation of FreeBSD complete! Would you like to reboot into the installed system now?" 0 0
> +
> +		case $? in
> +		$BSDDIALOG_OK)		# Reboot
> +			reboot
> +			;;
> +		$BSDDIALOG_EXTRA)	# Shutdown
> +			shutdown -p now
> +			;;
> +		$BSDDIALOG_CANCEL)	# Live CD
> +			exit 0
> +			;;
> +		esac
> +	else
> +		. "$0"
> +	fi
> +	;;
> +$BSDDIALOG_CANCEL)	# Live CD
> +	exit 0
> +	;;
> +$BSDDIALOG_EXTRA)	# Shell
> +	clear
> +	echo "When finished, type 'exit' to return to the installer."
> +	/bin/sh
> +	. "$0"
> +	;;
> +esac
> +