All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.