* [PATCH] image-live: multiconfig ISO generation @ 2020-03-09 22:55 Rich Persaud 2020-03-10 21:29 ` Joshua Watt 0 siblings, 1 reply; 3+ messages in thread From: Rich Persaud @ 2020-03-09 22:55 UTC (permalink / raw) To: openembedded-core; +Cc: Rich Persaud When a target is specified for INITRD_IMAGE_LIVE, a task dependency is added for do_image_complete. At present, image-live initrd will not accept multiconfig dependency targets. If BBMULTICONFIG is non-empty and INITRD_IMAGE_LIVE is a multiconfig target, use mcdepends instead of depends. The packaging recipe must also override machine-specific path construction of INITRD_LIVE. Required to build an ISO with mixed machine types, a primary use case for multiconfig. This is a minimal fix to make multiconfig ISOs possible. Signed-off-by: Rich Persaud <rp@stacktrust.org> --- meta/classes/image-live.bbclass | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/meta/classes/image-live.bbclass b/meta/classes/image-live.bbclass index 54058b350d..1afd48005a 100644 --- a/meta/classes/image-live.bbclass +++ b/meta/classes/image-live.bbclass @@ -50,11 +50,14 @@ IMAGE_TYPES_MASKED += "live hddimg iso" python() { image_b = d.getVar('IMAGE_BASENAME') initrd_i = d.getVar('INITRD_IMAGE_LIVE') + depends_type = ('mcdepends' if (d.getVar('BBMULTICONFIG') + and initrd_i.count(':') == 3) + else 'depends') if image_b == initrd_i: bb.error('INITRD_IMAGE_LIVE %s cannot use image live, hddimg or iso.' % initrd_i) bb.fatal('Check IMAGE_FSTYPES and INITRAMFS_FSTYPES settings.') elif initrd_i: - d.appendVarFlag('do_bootimg', 'depends', ' %s:do_image_complete' % initrd_i) + d.appendVarFlag('do_bootimg', depends_type, ' %s:do_image_complete' % initrd_i) } HDDDIR = "${S}/hddimg" -- 2.20.1 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] image-live: multiconfig ISO generation 2020-03-09 22:55 [PATCH] image-live: multiconfig ISO generation Rich Persaud @ 2020-03-10 21:29 ` Joshua Watt 2020-03-11 0:24 ` Rich Persaud 0 siblings, 1 reply; 3+ messages in thread From: Joshua Watt @ 2020-03-10 21:29 UTC (permalink / raw) To: Rich Persaud, openembedded-core On 3/9/20 5:55 PM, Rich Persaud wrote: > When a target is specified for INITRD_IMAGE_LIVE, a task dependency is > added for do_image_complete. At present, image-live initrd will not > accept multiconfig dependency targets. Can you give an example? That might help with understanding what this is supposed to do. > > If BBMULTICONFIG is non-empty and INITRD_IMAGE_LIVE is a multiconfig > target, use mcdepends instead of depends. The packaging recipe must > also override machine-specific path construction of INITRD_LIVE. > > Required to build an ISO with mixed machine types, a primary use case > for multiconfig. This is a minimal fix to make multiconfig ISOs > possible. > > Signed-off-by: Rich Persaud <rp@stacktrust.org> > --- > meta/classes/image-live.bbclass | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/meta/classes/image-live.bbclass b/meta/classes/image-live.bbclass > index 54058b350d..1afd48005a 100644 > --- a/meta/classes/image-live.bbclass > +++ b/meta/classes/image-live.bbclass > @@ -50,11 +50,14 @@ IMAGE_TYPES_MASKED += "live hddimg iso" > python() { > image_b = d.getVar('IMAGE_BASENAME') > initrd_i = d.getVar('INITRD_IMAGE_LIVE') > + depends_type = ('mcdepends' if (d.getVar('BBMULTICONFIG') > + and initrd_i.count(':') == 3) > + else 'depends') Potentially, this could be simplified: depends_type = 'mcdepends' if initrd_i.startswith('mc:') else 'depends' ? > if image_b == initrd_i: > bb.error('INITRD_IMAGE_LIVE %s cannot use image live, hddimg or iso.' % initrd_i) > bb.fatal('Check IMAGE_FSTYPES and INITRAMFS_FSTYPES settings.') > elif initrd_i: > - d.appendVarFlag('do_bootimg', 'depends', ' %s:do_image_complete' % initrd_i) > + d.appendVarFlag('do_bootimg', depends_type, ' %s:do_image_complete' % initrd_i) > } > > HDDDIR = "${S}/hddimg" ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] image-live: multiconfig ISO generation 2020-03-10 21:29 ` Joshua Watt @ 2020-03-11 0:24 ` Rich Persaud 0 siblings, 0 replies; 3+ messages in thread From: Rich Persaud @ 2020-03-11 0:24 UTC (permalink / raw) To: Joshua Watt; +Cc: openembedded-core On Mar 10, 2020, at 17:29, Joshua Watt <jpewhacker@gmail.com> wrote: > >> On 3/9/20 5:55 PM, Rich Persaud wrote: >> When a target is specified for INITRD_IMAGE_LIVE, a task dependency is >> added for do_image_complete. At present, image-live initrd will not >> accept multiconfig dependency targets. > > Can you give an example? That might help with understanding what this is supposed to do. Any initrd with a machine type that is different from the "machine type" of the ISO image, which may itself be a composite image of multiple machine types, e.g. virtual machines with logical property variances rather than physical architecture changes. The traditional notion of ISO "machine type" is already suspect in a multiconfig scenario, and need not imply that the initrd has an identical machine type. For the purpose of this patch, let's assume an ISO could be built with different initramfs versions for testing, each with a different machine type. More generally, image-live translates the presence of an initrd to a recipe dependency which assumes a singleconfig target. This capability can be extended to multiconfig targets, if they are to be first-class targets throughout bitbake. If not, we can document a whitelist of bitbake features where multiconfig targets are permitted. >> If BBMULTICONFIG is non-empty and INITRD_IMAGE_LIVE is a multiconfig >> target, use mcdepends instead of depends. The packaging recipe must >> also override machine-specific path construction of INITRD_LIVE. >> >> Required to build an ISO with mixed machine types, a primary use case >> for multiconfig. This is a minimal fix to make multiconfig ISOs >> possible. >> >> Signed-off-by: Rich Persaud <rp@stacktrust.org> >> --- >> meta/classes/image-live.bbclass | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/meta/classes/image-live.bbclass b/meta/classes/image-live.bbclass >> index 54058b350d..1afd48005a 100644 >> --- a/meta/classes/image-live.bbclass >> +++ b/meta/classes/image-live.bbclass >> @@ -50,11 +50,14 @@ IMAGE_TYPES_MASKED += "live hddimg iso" >> python() { >> image_b = d.getVar('IMAGE_BASENAME') >> initrd_i = d.getVar('INITRD_IMAGE_LIVE') >> + depends_type = ('mcdepends' if (d.getVar('BBMULTICONFIG') >> + and initrd_i.count(':') == 3) >> + else 'depends') > > Potentially, this could be simplified: > > depends_type = 'mcdepends' if initrd_i.startswith('mc:') else 'depends' > > ? Yes, if this is the agreed-upon standard definition of a multiconfig target, which should perhaps be a reusable validation function? If a singleconfig target is specified for mcdepends, bitbake prints an error message which cites three colons in the target definition, as the minimum requirement for a multiconfig target. I haven't traced the code which generates that error, or tested an mcdepends target which has three colons but does not begin with 'mc'. There must be several places which need to perform this validation, it would be good to share a common function/snippet. > >> if image_b == initrd_i: >> bb.error('INITRD_IMAGE_LIVE %s cannot use image live, hddimg or iso.' % initrd_i) >> bb.fatal('Check IMAGE_FSTYPES and INITRAMFS_FSTYPES settings.') >> elif initrd_i: >> - d.appendVarFlag('do_bootimg', 'depends', ' %s:do_image_complete' % initrd_i) >> + d.appendVarFlag('do_bootimg', depends_type, ' %s:do_image_complete' % initrd_i) >> } >> HDDDIR = "${S}/hddimg" > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-03-11 0:29 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-03-09 22:55 [PATCH] image-live: multiconfig ISO generation Rich Persaud 2020-03-10 21:29 ` Joshua Watt 2020-03-11 0:24 ` Rich Persaud
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox