From 77d5a0c4c47d18d7a477fa79dcf982a001201801 Mon Sep 17 00:00:00 2001 From: Darren Hart Date: Wed, 23 Nov 2011 23:35:43 -0800 Subject: bootimg: Allow for EFI-only boot images Condition building PCBIOS legacy images on MACHINE_FEATURES containing "pcbios" or not containing "efi". This ensures existing BSPs will continue to get the old PCBIOS legacy-only images. New BSPs can add "efi", "pcbios", or both. The images created likewise support one or the other or both. EFI-only ISO images are untested. (From OE-Core rev: be3fc8c07e84c654f55c5d09934dfbdc7ff7e2b6) Signed-off-by: Darren Hart Signed-off-by: Richard Purdie --- meta/classes/bootimg.bbclass | 49 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 9 deletions(-) (limited to 'meta/classes/bootimg.bbclass') diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass index ce95801bff..0d06351127 100644 --- a/meta/classes/bootimg.bbclass +++ b/meta/classes/bootimg.bbclass @@ -38,7 +38,24 @@ BOOTIMG_EXTRA_SPACE ?= "512" EFI = ${@base_contains("MACHINE_FEATURES", "efi", "1", "0", d)} EFI_CLASS = ${@base_contains("MACHINE_FEATURES", "efi", "grub-efi", "dummy", d)} -inherit syslinux +# Include legacy boot if MACHINE_FEATURES includes "pcbios" or if it does not +# contain "efi". This way legacy is supported by default if neither is +# specified, maintaining the original behavior. +def pcbios(d): + pcbios = base_contains("MACHINE_FEATURES", "pcbios", "1", "0", d) + if pcbios == "0": + pcbios = base_contains("MACHINE_FEATURES", "efi", "0", "1", d) + return pcbios + +def pcbios_class(d): + if d.getVar("PCBIOS", True) == "1": + return "syslinux" + return "dummy" + +PCBIOS = ${@pcbios(d)} +PCBIOS_CLASS = ${@pcbios_class(d)} + +inherit ${PCBIOS_CLASS} inherit ${EFI_CLASS} @@ -51,15 +68,24 @@ build_iso() { install -d ${ISODIR} - syslinux_iso_populate + if [ "${PCBIOS}" = "1" ]; then + syslinux_iso_populate + fi if [ "${EFI}" = "1" ]; then grubefi_iso_populate fi - mkisofs -V ${BOOTIMG_VOLUME_ID} \ - -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ - -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \ - ${MKISOFS_OPTIONS} ${ISODIR} + if [ "${PCBIOS}" = "1" ]; then + mkisofs -V ${BOOTIMG_VOLUME_ID} \ + -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ + -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \ + ${MKISOFS_OPTIONS} ${ISODIR} + else + bbnote "EFI-only ISO images are untested, please provide feedback." + mkisofs -V ${BOOTIMG_VOLUME_ID} \ + -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ + -r ${ISODIR} + fi cd ${DEPLOY_DIR_IMAGE} rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso @@ -70,7 +96,9 @@ build_hddimg() { # Create an HDD image if [ "${NOHDD}" != "1" ] ; then install -d ${HDDDIR} - syslinux_hddimg_populate + if [ "${PCBIOS}" = "1" ]; then + syslinux_hddimg_populate + fi if [ "${EFI}" = "1" ]; then grubefi_hddimg_populate fi @@ -82,7 +110,9 @@ build_hddimg() { mkdosfs -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \ -C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE - syslinux_hddimg_install + if [ "${PCBIOS}" = "1" ]; then + syslinux_hddimg_install + fi chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg @@ -93,7 +123,8 @@ build_hddimg() { } python do_bootimg() { - bb.build.exec_func('build_syslinux_cfg', d) + if d.getVar("PCBIOS", True) == "1": + bb.build.exec_func('build_syslinux_cfg', d) if d.getVar("EFI", True) == "1": bb.build.exec_func('build_grub_cfg', d) bb.build.exec_func('build_hddimg', d) -- cgit v1.2.3-54-g00ecf