Skip to contentSkip to conversation

Scope variables in image classes to avoid conflicts

PATCH NAK Jonathan Liu 2 participants 5 messages May 2, 2013

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw

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
index 1506b42..a041482 100644
@@ -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
#2 lore raw

PATCH 2/2 bootimg: Scope HDDDIR and ISODIR variables to avoid conflicts

In reply to 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.

---
 meta/classes/bootimg.bbclass | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)
meta/classes/bootimg.bbclass +13 -12
index b7ddf42..11b3294 100644
@@ -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
#3 lore raw

Re: [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.

---
  meta/classes/bootimg.bbclass | 25 +++++++++++++------------
  1 file changed, 13 insertions(+), 12 deletions(-)
meta/classes/bootimg.bbclass +0 -0
index b7ddf42..11b3294 100644

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 -9
  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
#4 lore raw

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.

---
 meta/classes/bootimg.bbclass | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)
meta/classes/bootimg.bbclass +0 -0
index b7ddf42..11b3294 100644

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 -9
 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