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

From: Jessica Clarke <jrtc27_at_freebsd.org>
Date: Tue, 11 Apr 2023 14:19:00 UTC
On 11 Apr 2023, at 15:14, Alfonso S. Siciliano <asiciliano@FreeBSD.org> wrote:
> 
> 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

The code had no such info before; I merely moved it (moved / cut+paste,
not copy+paste) and lightly adapted it as needed. Adding copyright and
license information would presumably be worthwhile but is a separate
activity and would require trawling through the history of the code. It
probably started life small enough that copyright wasn’t relevant and
then slowly grew to a point where it sort of is (though there’s nothing
hugely interesting here).

Jess

>> +#!/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
>> +