summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--functions/bootloaders.sh128
-rwxr-xr-xfunctions/defaults.sh6
-rwxr-xr-xscripts/build/binary_grub-legacy17
-rwxr-xr-xscripts/build/binary_grub-pc19
-rwxr-xr-xscripts/build/binary_hdd8
-rwxr-xr-xscripts/build/binary_iso2
-rwxr-xr-xscripts/build/binary_syslinux19
7 files changed, 139 insertions, 60 deletions
diff --git a/functions/bootloaders.sh b/functions/bootloaders.sh
new file mode 100644
index 000000000..1898232e5
--- /dev/null
+++ b/functions/bootloaders.sh
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2016 Adrian Gibanel Lopez <adrian15sgd@gmail.com>
+##
+## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
+## This is free software, and you are welcome to redistribute it
+## under certain conditions; see COPYING for details.
+
+Is_First_Bootloader ()
+{
+ EVAL_FIRST_BOOTLOADER="${1}"
+
+ if [ "${LB_FIRST_BOOTLOADER}" = "${EVAL_FIRST_BOOTLOADER}" ]
+ then
+ return 0
+ else
+ return 1
+ fi
+
+}
+
+Is_Bootloader ()
+{
+ EVAL_BOOTLOADER="${1}"
+ OLDIFS="$IFS"
+ IFS=","
+ for BOOTLOADER in ${LB_BOOTLOADERS}
+ do
+ if [ "${BOOTLOADER}" = "${EVAL_BOOTLOADER}" ]
+ then
+ IFS="$OLDIFS"
+ return 0
+ fi
+ done
+ IFS="$OLDIFS"
+ return 1
+}
+
+Is_Extra_Bootloader ()
+{
+ EVAL_EXTRA_BOOTLOADER="${1}"
+
+ if Is_First_Bootloader "${EVAL_EXTRA_BOOTLOADER}"
+ then
+ return 1
+ else
+ if Is_Bootloader "${EVAL_EXTRA_BOOTLOADER}"
+ then
+ return 0
+ fi
+ fi
+ return 1
+
+}
+
+Check_Non_First_Bootloader ()
+{
+ NON_FIRST_BOOTLOADER="${1}"
+
+ if Is_First_Bootloader "${NON_FIRST_BOOTLOADER}"
+ then
+ Echo_error "Bootloader: ${NON_FIRST_BOOTLOADER} not supported as a first bootloader."
+ exit 1
+ else
+ return 0
+ fi
+}
+
+
+Check_Non_Extra_Bootloader ()
+{
+ NON_EXTRA_BOOTLOADER="${1}"
+
+ if Is_Extra_Bootloader "${NON_EXTRA_BOOTLOADER}"
+ then
+ Echo_error "Bootloader: ${NON_EXTRA_BOOTLOADER} not supported as a extra bootloader."
+ exit 1
+ else
+ return 0
+ fi
+}
+
+Check_First_Bootloader_Role ()
+{
+ FIRST_BOOTLOADER_ROLE="${1}"
+ Check_Non_Extra_Bootloader "${FIRST_BOOTLOADER_ROLE}"
+
+ if Is_First_Bootloader "${FIRST_BOOTLOADER_ROLE}"
+ then
+ return 0
+ else
+ exit 0
+ fi
+
+}
+
+Check_Extra_Bootloader_Role ()
+{
+ EXTRA_BOOTLOADER_ROLE="${1}"
+ Check_Non_First_Bootloader "${EXTRA_BOOTLOADER_ROLE}"
+
+ if Is_Extra_Bootloader "${EXTRA_BOOTLOADER_ROLE}"
+ then
+ return 0
+ else
+ exit 0
+ fi
+
+}
+
+Check_Any_Bootloader_Role ()
+{
+ ANY_BOOTLOADER_ROLE="${1}"
+
+ if Is_First_Bootloader "${ANY_BOOTLOADER_ROLE}"
+ then
+ return 0
+ fi
+
+ if Is_Extra_Bootloader "${ANY_BOOTLOADER_ROLE}"
+ then
+ return 0
+ fi
+
+ exit 0
+
+} \ No newline at end of file
diff --git a/functions/defaults.sh b/functions/defaults.sh
index 334984f7b..deeaf2dc6 100755
--- a/functions/defaults.sh
+++ b/functions/defaults.sh
@@ -537,7 +537,7 @@ Set_defaults ()
esac
fi
- LB_PRIMARY_BOOTLOADER=$(echo "${LB_BOOTLOADERS}" | awk -F, '{ print $1 }')
+ LB_FIRST_BOOTLOADER=$(echo "${LB_BOOTLOADERS}" | awk -F, '{ print $1 }')
# Setting checksums
case "${LB_MODE}" in
@@ -847,7 +847,7 @@ Check_defaults ()
fi
fi
- if [ "${LB_PRIMARY_BOOTLOADER}" = "syslinux" ]
+ if [ "${LB_FIRST_BOOTLOADER}" = "syslinux" ]
then
# syslinux + fat or ntfs, or extlinux + ext[234] or btrfs
case "${LB_BINARY_FILESYSTEM}" in
@@ -861,7 +861,7 @@ Check_defaults ()
case "${LIVE_IMAGE_TYPE}" in
hdd*)
- case "${LB_PRIMARY_BOOTLOADER}" in
+ case "${LB_FIRST_BOOTLOADER}" in
grub)
Echo_error "You have selected a combination of bootloader and image type that is currently not supported by live-build. Please use either another bootloader or a different image type."
exit 1
diff --git a/scripts/build/binary_grub-legacy b/scripts/build/binary_grub-legacy
index f885c00cc..93d9b9e14 100755
--- a/scripts/build/binary_grub-legacy
+++ b/scripts/build/binary_grub-legacy
@@ -24,22 +24,7 @@ Arguments "${@}"
Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
-FOUND_MYSELF=""
-IFS=","
-for BOOTLOADER in ${LB_BOOTLOADERS}
-do
-
- case ${BOOTLOADER} in
- "grub-legacy" )
- FOUND_MYSELF="True"
- break ;;
- esac
-
-done
-
-if [ -z ${FOUND_MYSELF} ] ; then
- exit 0
-fi
+Check_First_Bootloader_Role "grub-legacy"
Echo_message "Begin installing grub-legacy..."
diff --git a/scripts/build/binary_grub-pc b/scripts/build/binary_grub-pc
index 1eae93a2a..9252f7acf 100755
--- a/scripts/build/binary_grub-pc
+++ b/scripts/build/binary_grub-pc
@@ -24,24 +24,7 @@ Arguments "${@}"
Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
-FOUND_MYSELF=""
-OLDIFS="$IFS"
-IFS=","
-for BOOTLOADER in ${LB_BOOTLOADERS}
-do
-
- case ${BOOTLOADER} in
- "grub-pc" )
- FOUND_MYSELF="True"
- break ;;
- esac
-
-done
-IFS="$OLDIFS"
-
-if [ -z ${FOUND_MYSELF} ] ; then
- exit 0
-fi
+Check_Any_Bootloader_Role "grub-pc"
Echo_message "Begin installing grub-pc..."
diff --git a/scripts/build/binary_hdd b/scripts/build/binary_hdd
index b45b2a900..400403c0a 100755
--- a/scripts/build/binary_hdd
+++ b/scripts/build/binary_hdd
@@ -67,7 +67,7 @@ do
esac
done
-case ${LB_PRIMARY_BOOTLOADER} in
+case ${LB_FIRST_BOOTLOADER} in
syslinux)
case ${LB_BINARY_FILESYSTEM} in
fat*|ntfs)
@@ -182,7 +182,7 @@ case "${LB_BUILD_WITH_CHROOT}" in
Chroot chroot "parted -s ${FREELO} set 1 boot on" || true
Chroot chroot "parted -s ${FREELO} set 1 lba off" || true
- if [ "${LB_PRIMARY_BOOTLOADER}" = "syslinux" ]
+ if [ "${LB_FIRST_BOOTLOADER}" = "syslinux" ]
then
dd if=chroot/usr/lib/$(echo ${_BOOTLOADER} | tr [a-z] [A-Z])/mbr.bin of=${FREELO} bs=440 count=1
fi
@@ -202,7 +202,7 @@ case "${LB_BUILD_WITH_CHROOT}" in
parted -s "${FREELO}" set 1 boot on || true
parted -s "${FREELO}" set 1 lba off || true
- if [ "${LB_PRIMARY_BOOTLOADER}" = "syslinux" ]
+ if [ "${LB_FIRST_BOOTLOADER}" = "syslinux" ]
then
dd if=/usr/lib/$(echo ${_BOOTLOADER} | tr [a-z] [A-Z])/mbr.bin of=${FREELO} bs=440 count=1
fi
@@ -268,7 +268,7 @@ cp -T ${CP_OPTIONS} binary/ chroot/binary.tmp
FIXME()
{
-if [ "${LB_PRIMARY_BOOTLOADER}" = "grub" ]
+if [ "${LB_FIRST_BOOTLOADER}" = "grub" ]
then
cat > chroot/grub.sh << EOF
diff --git a/scripts/build/binary_iso b/scripts/build/binary_iso
index 67dfc85a2..a390f61a4 100755
--- a/scripts/build/binary_iso
+++ b/scripts/build/binary_iso
@@ -149,7 +149,7 @@ esac
# XORRISO_OPTIONS="${XORRISO_OPTIONS} -m ${XORRISO_EXCLUDE}"
#fi
-if [ "${LB_PRIMARY_BOOTLOADER}" = "grub-pc" ]
+if [ "${LB_FIRST_BOOTLOADER}" = "grub-pc" ]
then
cat > binary.sh << EOF
diff --git a/scripts/build/binary_syslinux b/scripts/build/binary_syslinux
index 66c14a059..1a442d7a2 100755
--- a/scripts/build/binary_syslinux
+++ b/scripts/build/binary_syslinux
@@ -24,24 +24,7 @@ Arguments "${@}"
Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
-FOUND_MYSELF=""
-OLDIFS="$IFS"
-IFS=","
-for BOOTLOADER in ${LB_BOOTLOADERS}
-do
-
- case ${BOOTLOADER} in
- "syslinux" )
- FOUND_MYSELF="True"
- break ;;
- esac
-
-done
-IFS="$OLDIFS"
-
-if [ -z ${FOUND_MYSELF} ] ; then
- exit 0
-fi
+Check_Any_Bootloader_Role "syslinux"
Echo_message "Begin installing syslinux..."