Scope variables in image classes to avoid conflicts
cover Scope variables in image classes to avoid conflicts
Note: This depends on syslinux update to 4.06.
Jonathan Liu (2):
boot-directdisk: Scope HDDDIR and HDDIMG variables to avoid conflicts
bootimg: Scope HDDDIR and ISODIR variables to avoid conflicts
meta/classes/boot-directdisk.bbclass | 25 ++++++++++++------------- meta/classes/bootimg.bbclass | 25 +++++++++++++------------ 2 files changed, 25 insertions(+), 25 deletions(-)
Signature · 1 line
1.8.2.1
PATCH 1/2 boot-directdisk: Scope HDDDIR and HDDIMG variables to avoid conflicts
These variables should not be shared with other image classes. The bootimg class also has an HDDDIR variable that could be overwritten if executing concurrently in the same image recipe.
--- meta/classes/boot-directdisk.bbclass | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-)
meta/classes/boot-directdisk.bbclass +12 -13
@@ -28,9 +28,6 @@ do_bootdirectdisk[depends] += "dosfstools-native:do_populate_sysroot \ PACKAGES = " " EXCLUDE_FROM_WORLD = "1" -HDDDIR = "${S}/hdd/boot" -HDDIMG = "${S}/hdd.image" - BOOTDD_VOLUME_ID ?= "boot" BOOTDD_EXTRA_SPACE ?= "16384"
@@ -43,14 +40,16 @@ SYSLINUX_TIMEOUT ?= "10" inherit syslinux build_boot_dd() { + HDDDIR="${S}/hdd/boot" + HDDIMG="${S}/hdd.image" IMAGE=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hdddirect - install -d ${HDDDIR} - install -m 0644 ${STAGING_KERNEL_DIR}/bzImage ${HDDDIR}/vmlinuz - install -m 0644 ${S}/syslinux.cfg ${HDDDIR}/syslinux.cfg - install -m 444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys ${HDDDIR}/ldlinux.sys + install -d $HDDDIR + install -m 0644 ${STAGING_KERNEL_DIR}/bzImage $HDDDIR/vmlinuz + install -m 0644 ${S}/syslinux.cfg $HDDDIR/syslinux.cfg + install -m 444 ${STAGING_LIBDIR}/syslinux/ldlinux.sys $HDDDIR/ldlinux.sys - BLOCKS=`du -bks ${HDDDIR} | cut -f 1` + BLOCKS=`du -bks $HDDDIR | cut -f 1` BLOCKS=`expr $BLOCKS + ${BOOTDD_EXTRA_SPACE}` # Ensure total sectors is an integral number of sectors per
@@ -59,11 +58,11 @@ build_boot_dd() { # done in blocks, thus the mod by 16 instead of 32. BLOCKS=$(expr $BLOCKS + $(expr 16 - $(expr $BLOCKS % 16))) - mkdosfs -n ${BOOTDD_VOLUME_ID} -S 512 -C ${HDDIMG} $BLOCKS - mcopy -i ${HDDIMG} -s ${HDDDIR}/* ::/ + mkdosfs -n ${BOOTDD_VOLUME_ID} -S 512 -C $HDDIMG $BLOCKS + mcopy -i $HDDIMG -s $HDDDIR/* ::/ - syslinux ${HDDIMG} - chmod 644 ${HDDIMG} + syslinux $HDDIMG + chmod 644 $HDDIMG ROOTFSBLOCKS=`du -Lbks ${ROOTFS} | cut -f 1` TOTALSIZE=`expr $BLOCKS + $ROOTFSBLOCKS`
@@ -83,7 +82,7 @@ build_boot_dd() { OFFSET=`expr $END2 / 512` dd if=${STAGING_DATADIR}/syslinux/mbr.bin of=$IMAGE conv=notrunc - dd if=${HDDIMG} of=$IMAGE conv=notrunc seek=1 bs=512 + dd if=$HDDIMG of=$IMAGE conv=notrunc seek=1 bs=512 dd if=${ROOTFS} of=$IMAGE conv=notrunc seek=$OFFSET bs=512 cd ${DEPLOY_DIR_IMAGE}
Signature · 1 line
1.8.2.1
PATCH 2/2 bootimg: Scope HDDDIR and ISODIR variables to avoid conflicts
In reply to Jonathan LiuThese variables should not be shared with other image classes. The boot-directdisk class also has an HDDDIR variable that could be overwritten if executing concurrently in the same image recipe.
--- meta/classes/bootimg.bbclass | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-)
meta/classes/bootimg.bbclass +13 -12
@@ -29,9 +29,6 @@ do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ PACKAGES = " " EXCLUDE_FROM_WORLD = "1" -HDDDIR = "${S}/hddimg" -ISODIR = "${S}/iso" - BOOTIMG_VOLUME_ID ?= "boot" BOOTIMG_EXTRA_SPACE ?= "512"
@@ -76,13 +73,15 @@ populate() { } build_iso() { + ISODIR="${S}/iso" + # Only create an ISO if we have an INITRD and NOISO was not set if [ -z "${INITRD}" ] || [ ! -s "${INITRD}" ] || [ "${NOISO}" = "1" ]; then bbnote "ISO image will not be created." return fi - populate ${ISODIR} + populate $ISODIR if [ "${PCBIOS}" = "1" ]; then syslinux_iso_populate
@@ -95,12 +94,12 @@ build_iso() { mkisofs -V ${BOOTIMG_VOLUME_ID} \ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \ - ${MKISOFS_OPTIONS} ${ISODIR} + ${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} + -r $ISODIR fi isohybrid ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso
@@ -111,9 +110,11 @@ build_iso() { } build_hddimg() { + HDDDIR="${S}/hddimg" + # Create an HDD image if [ "${NOHDD}" != "1" ] ; then - populate ${HDDDIR} + populate $HDDDIR if [ "${PCBIOS}" = "1" ]; then syslinux_hddimg_populate
@@ -128,7 +129,7 @@ build_hddimg() { # Blocks: 1024 bytes # Determine the sector count just for the data - SECTORS=$(expr $(du --apparent-size -ks ${HDDDIR} | cut -f 1) \* 2) + SECTORS=$(expr $(du --apparent-size -ks $HDDDIR | cut -f 1) \* 2) # Account for the filesystem overhead. This includes directory # entries in the clusters as well as the FAT itself.
@@ -140,13 +141,13 @@ build_hddimg() { # 8.3 filenames only # 32 bytes per dir entry - DIR_BYTES=$(expr $(find ${HDDDIR} | tail -n +2 | wc -l) \* 32) + DIR_BYTES=$(expr $(find $HDDDIR | tail -n +2 | wc -l) \* 32) # 32 bytes for every end-of-directory dir entry - DIR_BYTES=$(expr $DIR_BYTES + $(expr $(find ${HDDDIR} -type d | tail -n +2 | wc -l) \* 32)) + DIR_BYTES=$(expr $DIR_BYTES + $(expr $(find $HDDDIR -type d | tail -n +2 | wc -l) \* 32)) # 4 bytes per FAT entry per sector of data FAT_BYTES=$(expr $SECTORS \* 4) # 4 bytes per FAT entry per end-of-cluster list - FAT_BYTES=$(expr $FAT_BYTES + $(expr $(find ${HDDDIR} -type d | tail -n +2 | wc -l) \* 4)) + FAT_BYTES=$(expr $FAT_BYTES + $(expr $(find $HDDDIR -type d | tail -n +2 | wc -l) \* 4)) # Use a ceiling function to determine FS overhead in sectors DIR_SECTORS=$(expr $(expr $DIR_BYTES + 511) / 512)
@@ -173,7 +174,7 @@ build_hddimg() { IMG=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg mkdosfs ${FATSIZE} -n ${BOOTIMG_VOLUME_ID} -S 512 -C ${IMG} ${BLOCKS} # Copy HDDDIR recursively into the image file directly - mcopy -i ${IMG} -s ${HDDDIR}/* ::/ + mcopy -i ${IMG} -s $HDDDIR/* ::/ if [ "${PCBIOS}" = "1" ]; then syslinux_hddimg_install
Signature · 1 line
1.8.2.1
Saul Wold
NAKRe: [PATCH 2/2] bootimg: Scope HDDDIR and ISODIR variables to avoid conflicts
Quoted 14 lines · Jonathan Liu
These variables should not be shared with other image classes. The boot-directdisk class also has an HDDDIR variable that could be overwritten if executing concurrently in the same image recipe.
Signed-off-by Jonathan Liu <[email protected]>--- meta/classes/bootimg.bbclass | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-)meta/classes/bootimg.bbclass +0
-0
meta/classes/bootimg.bbclass do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ · line 34
Quoted 6 lines
meta/classes/bootimg.bbclass +0
-3@@ -29,9 +29,6 @@ do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ PACKAGES = " " EXCLUDE_FROM_WORLD = "1" -HDDDIR = "${S}/hddimg" -ISODIR = "${S}/iso" -
NAK!
What about the usage of these in grub-efi.bbclass and syslinux.bbclass?
Both are used in those classes via inherits of either the EFI_CLASS or PCBIOS_CLASS.
Sau!
Quoted 84 lines
meta/classes/bootimg.bbclass +13
-9BOOTIMG_VOLUME_ID ?= "boot" BOOTIMG_EXTRA_SPACE ?= "512"@@ -76,13 +73,15 @@ populate() { } build_iso() { + ISODIR="${S}/iso" + # Only create an ISO if we have an INITRD and NOISO was not set if [ -z "${INITRD}" ] || [ ! -s "${INITRD}" ] || [ "${NOISO}" = "1" ]; then bbnote "ISO image will not be created." return fi - populate ${ISODIR} + populate $ISODIR if [ "${PCBIOS}" = "1" ]; then syslinux_iso_populate@@ -95,12 +94,12 @@ build_iso() { mkisofs -V ${BOOTIMG_VOLUME_ID} \ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \ - ${MKISOFS_OPTIONS} ${ISODIR} + ${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} + -r $ISODIR fi isohybrid ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso@@ -111,9 +110,11 @@ build_iso() { } build_hddimg() { + HDDDIR="${S}/hddimg" + # Create an HDD image if [ "${NOHDD}" != "1" ] ; then - populate ${HDDDIR} + populate $HDDDIR if [ "${PCBIOS}" = "1" ]; then syslinux_hddimg_populate@@ -128,7 +129,7 @@ build_hddimg() { # Blocks: 1024 bytes # Determine the sector count just for the data - SECTORS=$(expr $(du --apparent-size -ks ${HDDDIR} | cut -f 1) \* 2) + SECTORS=$(expr $(du --apparent-size -ks $HDDDIR | cut -f 1) \* 2) # Account for the filesystem overhead. This includes directory # entries in the clusters as well as the FAT itself.@@ -140,13 +141,13 @@ build_hddimg() { # 8.3 filenames only # 32 bytes per dir entry - DIR_BYTES=$(expr $(find ${HDDDIR} | tail -n +2 | wc -l) \* 32) + DIR_BYTES=$(expr $(find $HDDDIR | tail -n +2 | wc -l) \* 32) # 32 bytes for every end-of-directory dir entry - DIR_BYTES=$(expr $DIR_BYTES + $(expr $(find ${HDDDIR} -type d | tail -n +2 | wc -l) \* 32)) + DIR_BYTES=$(expr $DIR_BYTES + $(expr $(find $HDDDIR -type d | tail -n +2 | wc -l) \* 32)) # 4 bytes per FAT entry per sector of data FAT_BYTES=$(expr $SECTORS \* 4) # 4 bytes per FAT entry per end-of-cluster list - FAT_BYTES=$(expr $FAT_BYTES + $(expr $(find ${HDDDIR} -type d | tail -n +2 | wc -l) \* 4)) + FAT_BYTES=$(expr $FAT_BYTES + $(expr $(find $HDDDIR -type d | tail -n +2 | wc -l) \* 4)) # Use a ceiling function to determine FS overhead in sectors DIR_SECTORS=$(expr $(expr $DIR_BYTES + 511) / 512)@@ -173,7 +174,7 @@ build_hddimg() { IMG=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg mkdosfs ${FATSIZE} -n ${BOOTIMG_VOLUME_ID} -S 512 -C ${IMG} ${BLOCKS} # Copy HDDDIR recursively into the image file directly - mcopy -i ${IMG} -s ${HDDDIR}/* ::/ + mcopy -i ${IMG} -s $HDDDIR/* ::/ if [ "${PCBIOS}" = "1" ]; then syslinux_hddimg_install
Re: [PATCH 2/2] bootimg: Scope HDDDIR and ISODIR variables to avoid conflicts
I guess it is enough to scope just the variables in boot-directdisk for now then.
Regards,
Jonathan
Quoted 114 lines · Saul Wold
Quoted 14 lines · Jonathan Liu
These variables should not be shared with other image classes. The boot-directdisk class also has an HDDDIR variable that could be overwritten if executing concurrently in the same image recipe.
Signed-off-by Jonathan Liu <[email protected]>--- meta/classes/bootimg.bbclass | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-)meta/classes/bootimg.bbclass +0
-0meta/classes/bootimg.bbclass do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ · line 34
Quoted 6 lines
meta/classes/bootimg.bbclass +0
-3@@ -29,9 +29,6 @@ do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ PACKAGES = " " EXCLUDE_FROM_WORLD = "1" -HDDDIR = "${S}/hddimg" -ISODIR = "${S}/iso" -NAK!
What about the usage of these in grub-efi.bbclass and syslinux.bbclass?
Both are used in those classes via inherits of either the
EFI_CLASSorPCBIOS_CLASS.Sau!
Quoted 84 lines
meta/classes/bootimg.bbclass +13
-9BOOTIMG_VOLUME_ID ?= "boot" BOOTIMG_EXTRA_SPACE ?= "512"@@ -76,13 +73,15 @@ populate() { } build_iso() { + ISODIR="${S}/iso" + # Only create an ISO if we have an INITRD and NOISO was not set if [ -z "${INITRD}" ] || [ ! -s "${INITRD}" ] || [ "${NOISO}" = "1" ]; then bbnote "ISO image will not be created." return fi - populate ${ISODIR} + populate $ISODIR if [ "${PCBIOS}" = "1" ]; then syslinux_iso_populate@@ -95,12 +94,12 @@ build_iso() { mkisofs -V ${BOOTIMG_VOLUME_ID} \ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \ - ${MKISOFS_OPTIONS} ${ISODIR} + ${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} + -r $ISODIR fi isohybrid ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso@@ -111,9 +110,11 @@ build_iso() { } build_hddimg() { + HDDDIR="${S}/hddimg" + # Create an HDD image if [ "${NOHDD}" != "1" ] ; then - populate ${HDDDIR} + populate $HDDDIR if [ "${PCBIOS}" = "1" ]; then syslinux_hddimg_populate@@ -128,7 +129,7 @@ build_hddimg() { # Blocks: 1024 bytes # Determine the sector count just for the data - SECTORS=$(expr $(du --apparent-size -ks ${HDDDIR} | cut -f 1) \* 2) + SECTORS=$(expr $(du --apparent-size -ks $HDDDIR | cut -f 1) \* 2) # Account for the filesystem overhead. This includes directory # entries in the clusters as well as the FAT itself.@@ -140,13 +141,13 @@ build_hddimg() { # 8.3 filenames only # 32 bytes per dir entry - DIR_BYTES=$(expr $(find ${HDDDIR} | tail -n +2 | wc -l) \* 32) + DIR_BYTES=$(expr $(find $HDDDIR | tail -n +2 | wc -l) \* 32) # 32 bytes for every end-of-directory dir entry - DIR_BYTES=$(expr $DIR_BYTES + $(expr $(find ${HDDDIR} -type d | tail -n +2 | wc -l) \* 32)) + DIR_BYTES=$(expr $DIR_BYTES + $(expr $(find $HDDDIR -type d | tail -n +2 | wc -l) \* 32)) # 4 bytes per FAT entry per sector of data FAT_BYTES=$(expr $SECTORS \* 4) # 4 bytes per FAT entry per end-of-cluster list - FAT_BYTES=$(expr $FAT_BYTES + $(expr $(find ${HDDDIR} -type d | tail -n +2 | wc -l) \* 4)) + FAT_BYTES=$(expr $FAT_BYTES + $(expr $(find $HDDDIR -type d | tail -n +2 | wc -l) \* 4)) # Use a ceiling function to determine FS overhead in sectors DIR_SECTORS=$(expr $(expr $DIR_BYTES + 511) / 512)@@ -173,7 +174,7 @@ build_hddimg() { IMG=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg mkdosfs ${FATSIZE} -n ${BOOTIMG_VOLUME_ID} -S 512 -C ${IMG} ${BLOCKS} # Copy HDDDIR recursively into the image file directly - mcopy -i ${IMG} -s ${HDDDIR}/* ::/ + mcopy -i ${IMG} -s $HDDDIR/* ::/ if [ "${PCBIOS}" = "1" ]; then syslinux_hddimg_install