bootimg/image: Enhance bootimg to respect RM_OLD_IMAGE
PATCH 1/1 bootimg/image: Enhance bootimg to respect RM_OLD_IMAGE
Currently, iso and hddimg links don't respect RM_OLD_IMAGE. This updates them to use the common symlinks code so that they behave like the rest of the system.
meta/classes/bootimg.bbclass +3 -8
@@ -172,10 +172,6 @@ build_iso() { fi isohybrid $isohybrid_args ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso - - cd ${DEPLOY_DIR_IMAGE} - rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso - ln -s ${IMAGE_NAME}.iso ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso } build_fat_img() {
@@ -280,10 +276,6 @@ build_hddimg() { fi chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg - - cd ${DEPLOY_DIR_IMAGE} - rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg - ln -s ${IMAGE_NAME}.hddimg ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.hddimg fi }
@@ -294,7 +286,10 @@ python do_bootimg() { bb.build.exec_func('build_efi_cfg', d) bb.build.exec_func('build_hddimg', d) bb.build.exec_func('build_iso', d) + bb.build.exec_func('create_symlinks', d) } +do_bootimg[subimages] = "hddimg iso" +do_bootimg[imgsuffix] = "." IMAGE_TYPEDEP_iso = "ext4" IMAGE_TYPEDEP_hddimg = "ext4"
meta/classes/image.bbclass +5 -4
@@ -397,7 +397,7 @@ python () { d.setVarFlag('do_image_%s' % t, 'fakeroot', '1') d.setVarFlag('do_image_%s' % t, 'prefuncs', debug + 'set_image_size') d.setVarFlag('do_image_%s' % t, 'postfuncs', 'create_symlinks') - d.setVarFlag('do_image_%s' % t, 'subimages', subimages) + d.setVarFlag('do_image_%s' % t, 'subimages', ' '.join(subimages)) d.appendVarFlag('do_image_%s' % t, 'vardeps', ' '.join(vardeps)) d.appendVarFlag('do_image_%s' % t, 'vardepsexclude', 'DATETIME')
@@ -460,15 +460,16 @@ python create_symlinks() { link_name = d.getVar('IMAGE_LINK_NAME', True) manifest_name = d.getVar('IMAGE_MANIFEST', True) taskname = d.getVar("BB_CURRENTTASK", True) - subimages = d.getVarFlag("do_" + taskname, 'subimages', False) + subimages = (d.getVarFlag("do_" + taskname, 'subimages', False) or "").split() + imgsuffix = d.getVarFlag("do_" + taskname, 'imgsuffix', True) or ".rootfs." os.chdir(deploy_dir) if not link_name: return for type in subimages: - if os.path.exists(img_name + ".rootfs." + type): + if os.path.exists(img_name + imgsuffix + type): dst = deploy_dir + "/" + link_name + "." + type - src = img_name + ".rootfs." + type + src = img_name + imgsuffix + type bb.note("Creating symlink: %s -> %s" % (dst, src)) if os.path.islink(dst): if d.getVar('RM_OLD_IMAGE', True) == "1" and \
[Resending from an email subscribed to the oe list...]
meta/classes/bootimg.bbclass python do_bootimg() { · line 289
Quoted 5 lines · Richard Purdie
meta/classes/bootimg.bbclass +1
-0@@ -294,7 +286,10 @@ python do_bootimg() { bb.build.exec_func('build_efi_cfg', d) bb.build.exec_func('build_hddimg', d) bb.build.exec_func('build_iso', d) + bb.build.exec_func('create_symlinks', d)
When I try to use bootimg.bbclass I get the following warning:
WARNING: Function create_symlinks doesn't exist
This is because create_symlinks is defined in image.bbclass but bootimg.bbclass does not inherit from it. Should it be the case? Or the definiton of create_symlinks should be moved to a separate file?
Thanks and BR,
Ricardo
Quoted 9 lines · Ricardo Neri
[Resending from an email subscribed to the oe list...]
meta/classes/bootimg.bbclass python do_bootimg() { · line 289
Quoted 5 lines · Richard Purdie
meta/classes/bootimg.bbclass +1
-0@@ -294,7 +286,10 @@ python do_bootimg() { bb.build.exec_func('build_efi_cfg', d) bb.build.exec_func('build_hddimg', d) bb.build.exec_func('build_iso', d) + bb.build.exec_func('create_symlinks', d)When I try to use bootimg.bbclass I get the following warning:
Quoted 6 lines
WARNING: Function
create_symlinksdoesn't existThis is because
create_symlinksis defined in image.bbclass but bootimg.bbclass does not inherit from it. Should it be the case? Or the
definiton ofcreate_symlinksshould be moved to a separate file?
I guess the key question is whether anyone is using bootimg.bbclass without using image.bbclass, or whether that is even possible/practical?
Was this an existing setup that broke?
Cheers,
Richard
Quoted 12 lines · Richard Purdie
Quoted 11 lines · Ricardo Neri
[Resending from an email subscribed to the oe list...]
meta/classes/bootimg.bbclass python do_bootimg() { · line 289
Quoted 5 lines · Richard Purdie
meta/classes/bootimg.bbclass +1
-0@@ -294,7 +286,10 @@ python do_bootimg() { bb.build.exec_func('build_efi_cfg', d) bb.build.exec_func('build_hddimg', d) bb.build.exec_func('build_iso', d) + bb.build.exec_func('create_symlinks', d)When I try to use bootimg.bbclass I get the following warning:
WARNING: Function
create_symlinksdoesn't exist
Quoted 8 lines
Quoted 4 lines
This is because
create_symlinksis defined in image.bbclass but bootimg.bbclass does not inherit from it. Should it be the case? Or the
definiton ofcreate_symlinksshould be moved to a separate file?I guess the key question is whether anyone is using bootimg.bbclass without using image.bbclass, or whether that is even possible/practical?
Hmm. Probably only image-live.bbclass. But if I understand correctly, that class gets inherited by image.bbclass if live is specified in the IMAGE_FSTYPES.
Quoted 2 lines
Was this an existing setup that broke?
For the Linux UEFI Validation project we have a custom luv-live-image recipe[1] that inherits from bootimg.bbclass but not from image.bbclass. We have not had the need thus far. Our ramdisk does inherit image.bbclass via core-image.bbclass[2].
Perhaps our live image recipe can be reworked to inherit from image-live? Our main customization is that we have two partitions in the bootable media.
Thanks and BR,
Ricardo
[1].https://github.com/01org/luv-yocto/blob/master/meta-luv/recipes-core/images/luv-live-image.bb [2].https://github.com/01org/luv-yocto/blob/master/meta-luv/recipes-core/images/core-image-efi-initramfs.bb
Quoted 4 lines
Cheers,
Richard