[arch-releng] [PATCH 3/3] Prompt user to pick a bootloader in interactive_select_packages and select the proper package for installation.

pyther at pyther.net pyther at pyther.net
Sun Feb 20 23:09:37 EST 2011


---
 src/core/libs/lib-ui-interactive.sh |   30 +++++++++++++++++++++---------
 1 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh
index 16a9600..3cbbc00 100644
--- a/src/core/libs/lib-ui-interactive.sh
+++ b/src/core/libs/lib-ui-interactive.sh
@@ -715,7 +715,7 @@ interactive_select_packages() {
 	target_prepare_pacman || { show_warning 'Pacman preparation failure' "Pacman preparation failed! Check $LOG for errors."; return 1; }
 
 	repos=`list_pacman_repos target`
-	notify "Package selection is split into two stages.  First you will select package groups that contain packages you may be interested in.  Then you will be presented with a full list of packages for each group, allowing you to fine-tune.\n\n
+	notify "Package selection is split into three stages. First, you will select a bootloader. Then, you will select package groups that contain packages that you may be interested in. Lastly, you will be presented with a full list of packages for each group, allowing you to fine-tune.\n\n
 Note that right now the packages (and groups) selection is limited to the repos available at this time ($repos).  Once you have your Arch system up and running, you have access to more repositories and packages.\n\n
 If any previous configuration you've done until now (like fancy filesystems) require extra packages, we've already preselected them for your convenience"
 
@@ -725,6 +725,20 @@ If any previous configuration you've done until now (like fancy filesystems) req
 		grouplist+=(${i} - OFF)
 	done
 
+	ask_option Grub "Choose bootloader" "Which bootloader would you like to use?" required \
+	"Grub" "Use the GRUB bootloader" \
+	"Syslinux" "Use the Syslinux bootloader (ext2/3/4, btrfs, and vfat)" \
+	"None" "\Zb\Z1Warning\Z0\ZB: you must install your own bootloader!" || return 1
+
+	# Convert to lower case
+	bootloader=${ANSWER_OPTION,,}
+
+	if [[ $bootloader = grub ]]; then
+		local needed_pkg_bootloader=grub
+	elif [[ $bootloader = syslinux ]]; then
+		local needed_pkg_bootloader=syslinux
+	fi
+
 	ask_checklist "Select Package groups\nDo not deselect base unless you know what you're doing!" 0 "${grouplist[@]}" || return 1
 	grouplist=("${ANSWER_CHECKLIST[@]}")
 
@@ -735,6 +749,7 @@ If any previous configuration you've done until now (like fancy filesystems) req
 	# build the list of options, sorted primarily by group, then by packagename (this is already). marking where appropriate
 	local pkglist=()
 	needed_pkgs=("${needed_pkgs_fs[@]}")
+	needed_pkgs+=("$needed_pkg_bootloader")
 	while read pkgname pkgver pkggroup pkgdesc; do
 		mark=OFF
 		if check_is_in "$pkggroup" "${grouplist[@]}" || check_is_in $pkgname "${needed_pkgs[@]}"; then
@@ -843,18 +858,15 @@ interactive_runtime_network() {
 	return 0
 }
 
+# bootloader is global variable that gets set in interactive_select_packages
 interactive_install_bootloader () {
-	ask_option Grub "Choose bootloader" "Which bootloader would you like to use?  Grub is the Arch default." required \
-	"Grub" "Use the GRUB bootloader (default)" \
-	"Syslinux" "Use the Syslinux bootloader (ext2/3/4, btrfs, and vfat)" \
-	"None" "\Zb\Z1Warning\Z0\ZB: you must install your own bootloader!" || return 1
-
-	bl=`tr '[:upper:]' '[:lower:]' <<< "$ANSWER_OPTION"`
-	if [[ $bl == grub ]]; then
+	if [[ $bootloader = grub ]]; then
 		GRUB_OK=0
 		interactive_grub
-	elif [[ $bl == syslinux ]]; then
+	elif [[ $bootloader = syslinux ]]; then
 		interactive_syslinux
+	else
+		show_warning 'No Bootloader' 'You did not select a bootloader. No bootloader will be installed.' && return 1
 	fi
 }
 
-- 
1.7.4.1



More information about the arch-releng mailing list