boot-directdisk.bbclass: Fix media generation problems with vmdk

The various populate methods need to accept a path as an argument vs
using hard expanded variables.  In the case of the boot-directdisk
class it uses a different path for HDDDIR but it gets eclipsed by the
the class definition at the point in time ${HDDDIR} gets expanded.

The logical fix is to pass the arguments to the functions as opposed
to using globally expanded variables from the class definitions.

This patch changes 3 things:
1) syslinux_hddimg_populate takes an argument for the destination
2) syslinux_iso_populate takes an argument for the destination
3) populate is changed to boot_direct_populate because there
   was a conflict with it overriding the populate in bootimg.bbclass

[YOCTO #3994]

(From OE-Core rev: 63d164b755b984021f7e3cdba7280918ded6e821)

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jason Wessel 2013-09-17 13:32:17 +00:00 committed by Richard Purdie
parent ec9f4c3c25
commit 0ac89346de
4 changed files with 26 additions and 23 deletions

View File

@ -61,15 +61,15 @@ DISK_SIGNATURE ?= "${DISK_SIGNATURE_GENERATED}"
SYSLINUX_ROOT ?= "root=/dev/sda2"
SYSLINUX_TIMEOUT ?= "10"
populate() {
DEST=$1
install -d ${DEST}
boot_direct_populate() {
dest=$1
install -d $dest
# Install bzImage, initrd, and rootfs.img in DEST for all loaders to use.
install -m 0644 ${STAGING_KERNEL_DIR}/bzImage ${DEST}/vmlinuz
install -m 0644 ${STAGING_KERNEL_DIR}/bzImage $dest/vmlinuz
if [ -n "${INITRD}" ] && [ -s "${INITRD}" ]; then
install -m 0644 ${INITRD} ${DEST}/initrd
install -m 0644 ${INITRD} $dest/initrd
fi
}
@ -79,13 +79,13 @@ build_boot_dd() {
HDDIMG="${S}/hdd.image"
IMAGE=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hdddirect
populate ${HDDDIR}
boot_direct_populate $HDDDIR
if [ "${PCBIOS}" = "1" ]; then
syslinux_hddimg_populate
syslinux_hddimg_populate $HDDDIR
fi
if [ "${EFI}" = "1" ]; then
grubefi_hddimg_populate
grubefi_hddimg_populate $HDDDIR
fi
BLOCKS=`du -bks $HDDDIR | cut -f 1`

View File

@ -86,10 +86,10 @@ build_iso() {
populate ${ISODIR}
if [ "${PCBIOS}" = "1" ]; then
syslinux_iso_populate
syslinux_iso_populate ${ISODIR}
fi
if [ "${EFI}" = "1" ]; then
grubefi_iso_populate
grubefi_iso_populate ${ISODIR}
build_fat_img ${EFIIMGDIR} ${ISODIR}/efi.img
fi
@ -203,10 +203,10 @@ build_hddimg() {
populate ${HDDDIR}
if [ "${PCBIOS}" = "1" ]; then
syslinux_hddimg_populate
syslinux_hddimg_populate ${HDDDIR}
fi
if [ "${EFI}" = "1" ]; then
grubefi_hddimg_populate
grubefi_hddimg_populate ${HDDDIR}
fi
build_fat_img ${HDDDIR} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg

View File

@ -42,19 +42,20 @@ grubefi_populate() {
}
grubefi_iso_populate() {
grubefi_populate ${ISODIR}
iso_dir=$1
grubefi_populate $iso_dir
# Build a EFI directory to create efi.img
mkdir -p ${EFIIMGDIR}/${EFIDIR}
cp ${ISODIR}/${EFIDIR}/* ${EFIIMGDIR}${EFIDIR}
cp ${ISODIR}/vmlinuz ${EFIIMGDIR}
cp $iso_dir/${EFIDIR}/* ${EFIIMGDIR}${EFIDIR}
cp $iso_dir/vmlinuz ${EFIIMGDIR}
echo "EFI\\BOOT\\${GRUB_IMAGE}" > ${EFIIMGDIR}/startup.nsh
if [ -f "${ISODIR}/initrd" ] ; then
cp ${ISODIR}/initrd ${EFIIMGDIR}
if [ -f "$iso_dir/initrd" ] ; then
cp $iso_dir/initrd ${EFIIMGDIR}
fi
}
grubefi_hddimg_populate() {
grubefi_populate ${HDDDIR}
grubefi_populate $1
}
python build_grub_cfg() {

View File

@ -53,14 +53,16 @@ syslinux_populate() {
}
syslinux_iso_populate() {
syslinux_populate ${ISODIR} ${ISOLINUXDIR} isolinux.cfg
install -m 0644 ${STAGING_DATADIR}/syslinux/isolinux.bin ${ISODIR}${ISOLINUXDIR}
install -m 0644 ${STAGING_DATADIR}/syslinux/ldlinux.c32 ${ISODIR}${ISOLINUXDIR}
iso_dir=$1
syslinux_populate $iso_dir ${ISOLINUXDIR} isolinux.cfg
install -m 0644 ${STAGING_DATADIR}/syslinux/isolinux.bin $iso_dir${ISOLINUXDIR}
install -m 0644 ${STAGING_DATADIR}/syslinux/ldlinux.c32 $iso_dir${ISOLINUXDIR}
}
syslinux_hddimg_populate() {
syslinux_populate ${HDDDIR} ${SYSLINUXDIR} syslinux.cfg
install -m 0444 ${STAGING_DATADIR}/syslinux/ldlinux.sys ${HDDDIR}${SYSLINUXDIR}/ldlinux.sys
hdd_dir=$1
syslinux_populate $hdd_dir ${SYSLINUXDIR} syslinux.cfg
install -m 0444 ${STAGING_DATADIR}/syslinux/ldlinux.sys $hdd_dir${SYSLINUXDIR}/ldlinux.sys
}
syslinux_hddimg_install() {