This will only work the way you expect if hte user's local.conf uses ?= or
??= for MACHINE, otherwise setting it in the environment will do nothing.

On Fri, Apr 24, 2020 at 6:30 AM Ricardo Ribalda <ricardo.riba...@gmail.com>
wrote:

> If you want to make a disk image containing rootfs for different
> machines, the only way to do it today is by calling wic and passing the
> different rootfs-paths.
>
> Eg:
> combined.wks
> part /export --source rootfs --rootfs-dir=target-image
> part / --source rootfs
>
> bitbake multiconfig:arm:target-image
> wic create combined --rootfs-dir
> target-image=/workdir/build/tmp/work/arm-poky-linux/target-image/1.0-r0/rootfs/
> -e main
>
> This has many drawbacks:
> 1) You need to know the folder location for the target-image
> 2) It is easy to forget updating the target (only running wic and not
>    bitbake)
> 3) It is slow
> 4) It does not scale when you have multiple machines
>
> Instead, wic can be given a hint of what machine to search for:
>
> combined.wks
> part /export --source rootfs --rootfs-dir=arm:target-image
> part / --source rootfs
>
> bitbake main
>
> If we ensoure the dependency of target-image from main via
> do_image[mcdepends], all the dependencies are automatically
> handled.
>
> This patch makes wic aware of the machine to use.
>
> Signed-off-by: Ricardo Ribalda Delgado <rica...@ribalda.com>
> ---
>  scripts/lib/wic/misc.py | 16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/lib/wic/misc.py b/scripts/lib/wic/misc.py
> index 91975ba151..51b43b49aa 100644
> --- a/scripts/lib/wic/misc.py
> +++ b/scripts/lib/wic/misc.py
> @@ -206,7 +206,12 @@ class BitbakeVars(defaultdict):
>
>          if image not in self:
>              if image and self.vars_dir:
> -                fname = os.path.join(self.vars_dir, image + '.env')
> +                if image.find(":") != -1:
> +                    [machine, img] = image.split(":")
> +                    fname = os.path.join(self.vars_dir, "../../",
> +                                         machine, "imgdata", img + '.env')
> +                else:
> +                    fname = os.path.join(self.vars_dir, image + '.env')
>                  if os.path.isfile(fname):
>                      # parse .env file
>                      with open(fname) as varsfile:
> @@ -220,11 +225,16 @@ class BitbakeVars(defaultdict):
>                  # Get bitbake -e output
>                  cmd = "bitbake -e"
>                  if image:
> -                    cmd += " %s" % image
> +                    if image.find(":") != -1:
> +                        [machine, img] = image.split(":")
> +                        cmd = "MACHINE=%s %s" % (machine, cmd)
> +                    else:
> +                        img = image
> +                    cmd += " %s" % img
>
>                  log_level = logger.getEffectiveLevel()
>                  logger.setLevel(logging.INFO)
> -                ret, lines = _exec_cmd(cmd)
> +                ret, lines = _exec_cmd(cmd, as_shell=True)
>                  logger.setLevel(log_level)
>
>                  if ret:
> --
> 2.26.1
>
> 
>


-- 
Christopher Larson
kergoth at gmail dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Senior Software Engineer, Mentor Graphics
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#137452): 
https://lists.openembedded.org/g/openembedded-core/message/137452
Mute This Topic: https://lists.openembedded.org/mt/73241116/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to