From 4a70cc59a0350f06d4cc48c12c3053a39191ba07 Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Wed, 30 Mar 2016 00:23:11 -0700 Subject: image-live.bbclass/image-vm.bbclass: remove duplicated code Move the common code to live_vm_common.bbclass and remove duplicated ones. Signed-off-by: Robert Yang Signed-off-by: Richard Purdie --- meta/classes/image-live.bbclass | 60 +++++++------------------------------ meta/classes/image-vm.bbclass | 53 ++------------------------------ meta/classes/image.bbclass | 12 -------- meta/classes/live-vm-common.bbclass | 58 +++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 112 deletions(-) create mode 100644 meta/classes/live-vm-common.bbclass diff --git a/meta/classes/image-live.bbclass b/meta/classes/image-live.bbclass index a08715cd83..c837fbfc92 100644 --- a/meta/classes/image-live.bbclass +++ b/meta/classes/image-live.bbclass @@ -25,6 +25,8 @@ # ${HDDIMG_ID} - FAT image volume-id # ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional) +inherit live-vm-common + do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ mtools-native:do_populate_sysroot \ cdrtools-native:do_populate_sysroot \ @@ -71,52 +73,11 @@ MKISOFS_OPTIONS = "-no-emul-boot -boot-load-size 4 -boot-info-table" BOOTIMG_VOLUME_ID ?= "boot" BOOTIMG_EXTRA_SPACE ?= "512" -EFI = "${@bb.utils.contains("MACHINE_FEATURES", "efi", "1", "0", d)}" -EFI_PROVIDER ?= "grub-efi" -EFI_CLASS = "${@bb.utils.contains("MACHINE_FEATURES", "efi", "${EFI_PROVIDER}", "", d)}" - -KERNEL_IMAGETYPE ??= "bzImage" - -# 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 = bb.utils.contains("MACHINE_FEATURES", "pcbios", "1", "0", d) - if pcbios == "0": - pcbios = bb.utils.contains("MACHINE_FEATURES", "efi", "0", "1", d) - return pcbios - -PCBIOS = "${@pcbios(d)}" -PCBIOS_CLASS = "${@['','syslinux'][d.getVar('PCBIOS', True) == '1']}" - -inherit ${EFI_CLASS} -inherit ${PCBIOS_CLASS} - -populate() { - DEST=$1 - install -d ${DEST} - - # Install kernel, initrd, and rootfs.img in DEST for all loaders to use. - install -m 0644 ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} ${DEST}/vmlinuz - - # initrd is made of concatenation of multiple filesystem images - if [ -n "${INITRD}" ]; then - rm -f ${DEST}/initrd - for fs in ${INITRD} - do - if [ -s "${fs}" ]; then - cat ${fs} >> ${DEST}/initrd - else - bbfatal "${fs} is invalid. initrd image creation failed." - fi - done - chmod 0644 ${DEST}/initrd - fi - - if [ -n "${ROOTFS}" ] && [ -s "${ROOTFS}" ]; then - install -m 0644 ${ROOTFS} ${DEST}/rootfs.img +populate_live() { + populate_kernel $1 + if [ -s "${ROOTFS}" ]; then + install -m 0644 ${ROOTFS} $1/rootfs.img fi - } build_iso() { @@ -128,14 +89,13 @@ build_iso() { # ${INITRD} is a list of multiple filesystem images for fs in ${INITRD} do - if [ ! -s "${fs}" ]; then - bbnote "ISO image will not be created. ${fs} is invalid." + if [ ! -s "$fs" ]; then + bbnote "ISO image will not be created. $fs is invalid." return fi done - - populate ${ISODIR} + populate_live ${ISODIR} if [ "${PCBIOS}" = "1" ]; then syslinux_iso_populate ${ISODIR} @@ -275,7 +235,7 @@ build_fat_img() { build_hddimg() { # Create an HDD image if [ "${NOHDD}" != "1" ] ; then - populate ${HDDDIR} + populate_live ${HDDDIR} if [ "${PCBIOS}" = "1" ]; then syslinux_hddimg_populate ${HDDDIR} diff --git a/meta/classes/image-vm.bbclass b/meta/classes/image-vm.bbclass index ced8eac4d9..66712a62ff 100644 --- a/meta/classes/image-vm.bbclass +++ b/meta/classes/image-vm.bbclass @@ -15,6 +15,8 @@ # We have to push the msdos parition table size > 16MB so fat 16 is used as parted # won't touch fat12 partitions. +inherit live-vm-common + do_bootdirectdisk[depends] += "dosfstools-native:do_populate_sysroot \ virtual/kernel:do_deploy \ syslinux:do_populate_sysroot \ @@ -43,63 +45,14 @@ do_bootdirectdisk[depends] += "${@'${INITRD_IMAGE_VM}:do_image_complete' if '${I BOOTDD_VOLUME_ID ?= "boot" BOOTDD_EXTRA_SPACE ?= "16384" -EFI = "${@bb.utils.contains("MACHINE_FEATURES", "efi", "1", "0", d)}" -EFI_PROVIDER ?= "grub-efi" -EFI_CLASS = "${@bb.utils.contains("MACHINE_FEATURES", "efi", "${EFI_PROVIDER}", "", d)}" - -# 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 = bb.utils.contains("MACHINE_FEATURES", "pcbios", "1", "0", d) - if pcbios == "0": - pcbios = bb.utils.contains("MACHINE_FEATURES", "efi", "0", "1", d) - return pcbios - -def pcbios_class(d): - if d.getVar("PCBIOS", True) == "1": - return "syslinux" - return "" - -PCBIOS = "${@pcbios(d)}" -PCBIOS_CLASS = "${@pcbios_class(d)}" - -# Get the build_syslinux_cfg() function from the syslinux class -inherit ${PCBIOS_CLASS} -inherit ${EFI_CLASS} - DISK_SIGNATURE ?= "${DISK_SIGNATURE_GENERATED}" -boot_direct_populate() { - dest=$1 - install -d $dest - - # Install bzImage, initrd, and rootfs.img in DEST for all loaders to use. - if [ -e ${DEPLOY_DIR_IMAGE}/bzImage ]; then - install -m 0644 ${DEPLOY_DIR_IMAGE}/bzImage $dest/vmlinuz - fi - - # initrd is made of concatenation of multiple filesystem images - if [ -n "${INITRD}" ]; then - rm -f $dest/initrd - for fs in ${INITRD} - do - if [ -s "${fs}" ]; then - cat ${fs} >> $dest/initrd - else - bbfatal "${fs} is invalid. initrd image creation failed." - fi - done - chmod 0644 $dest/initrd - fi -} - build_boot_dd() { HDDDIR="${S}/hdd/boot" HDDIMG="${S}/hdd.image" IMAGE=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hdddirect - boot_direct_populate $HDDDIR + populate_kernel $HDDDIR if [ "${PCBIOS}" = "1" ]; then syslinux_hddimg_populate $HDDDIR diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 894ff993cc..d9c16106c2 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -544,15 +544,3 @@ do_bundle_initramfs () { } addtask bundle_initramfs after do_image_complete -# Some of the vars for vm and live image are conflicted, this function -# is used for fixing the problem. -def set_live_vm_vars(d, suffix): - vars = ['GRUB_CFG', 'SYSLINUX_CFG', 'ROOT', 'LABELS', 'INITRD'] - for var in vars: - var_with_suffix = var + '_' + suffix - if d.getVar(var, True): - bb.warn('Found potential conflicted var %s, please use %s rather than %s' % \ - (var, var_with_suffix, var)) - elif d.getVar(var_with_suffix, True): - d.setVar(var, d.getVar(var_with_suffix, True)) - diff --git a/meta/classes/live-vm-common.bbclass b/meta/classes/live-vm-common.bbclass new file mode 100644 index 0000000000..c751385e7d --- /dev/null +++ b/meta/classes/live-vm-common.bbclass @@ -0,0 +1,58 @@ +# Some of the vars for vm and live image are conflicted, this function +# is used for fixing the problem. +def set_live_vm_vars(d, suffix): + vars = ['GRUB_CFG', 'SYSLINUX_CFG', 'ROOT', 'LABELS', 'INITRD'] + for var in vars: + var_with_suffix = var + '_' + suffix + if d.getVar(var, True): + bb.warn('Found potential conflicted var %s, please use %s rather than %s' % \ + (var, var_with_suffix, var)) + elif d.getVar(var_with_suffix, True): + d.setVar(var, d.getVar(var_with_suffix, True)) + + +EFI = "${@bb.utils.contains("MACHINE_FEATURES", "efi", "1", "0", d)}" +EFI_PROVIDER ?= "grub-efi" +EFI_CLASS = "${@bb.utils.contains("MACHINE_FEATURES", "efi", "${EFI_PROVIDER}", "", d)}" + +# 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 = bb.utils.contains("MACHINE_FEATURES", "pcbios", "1", "0", d) + if pcbios == "0": + pcbios = bb.utils.contains("MACHINE_FEATURES", "efi", "0", "1", d) + return pcbios + +PCBIOS = "${@pcbios(d)}" +PCBIOS_CLASS = "${@['','syslinux'][d.getVar('PCBIOS', True) == '1']}" + +inherit ${EFI_CLASS} +inherit ${PCBIOS_CLASS} + +KERNEL_IMAGETYPE ??= "bzImage" + +populate_kernel() { + dest=$1 + install -d $dest + + # Install bzImage, initrd, and rootfs.img in DEST for all loaders to use. + if [ -e ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} ]; then + install -m 0644 ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} $dest/vmlinuz + fi + + # initrd is made of concatenation of multiple filesystem images + if [ -n "${INITRD}" ]; then + rm -f $dest/initrd + for fs in ${INITRD} + do + if [ -s "$fs" ]; then + cat $fs >> $dest/initrd + else + bbfatal "$fs is invalid. initrd image creation failed." + fi + done + chmod 0644 $dest/initrd + fi +} + -- cgit 1.2.3-korg