[OE-core] [PATCH v2] populate_sdk_ext.bbclass: fix corebase identification

Damien Riegel damien.riegel at savoirfairelinux.com
Mon Jun 11 15:12:46 UTC 2018


Richard, what's your opinion on this v2? It fixes the issue I have while
addressing the concern you had about the v1.

-- 
Damien

On Thu, Jun 07, 2018 at 10:48:14AM -0400, Damien Riegel wrote:
> When generating the extended SDK, there is a copy step where this class
> goes through the layers and other stuff that have been copied to
> generate the SDK. The corebase; ie. the folder that contains the core
> layer 'meta' is treated in a special way. Unfortunately in our tree, we
> have:
> 
>   sources/meta/meta
>            |     `- core layer
>            `------- corebase
> 
> In populate_sdk_ext's copy_buildsystem, the heuristic to determine which
> element of the list returned by copy_bitbake_and_layers is corebase is
> fooled by such layout.
> 
> In copy_bitbake_and_layers, corebase is already handled specifically and
> reliably, so we should let that function tell us which folder is
> corebase instead of trying to determine it.
> 
> To do so, change the return type of copy_bitbake_and_layers to a tuple
> that contains (corebase, copied_layers). It also simplifies the code on
> the caller side.
> 
> Signed-off-by: Damien Riegel <damien.riegel at savoirfairelinux.com>
> ---
> Changes in v2:
>  - move the logic in copy_bitbake_and_layers
> 
>  meta/classes/populate_sdk_ext.bbclass | 12 +++---------
>  meta/lib/oe/copy_buildsystem.py       |  8 +++++---
>  2 files changed, 8 insertions(+), 12 deletions(-)
> 
> diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
> index 2dd21237e2..cc3f5d0e50 100644
> --- a/meta/classes/populate_sdk_ext.bbclass
> +++ b/meta/classes/populate_sdk_ext.bbclass
> @@ -202,15 +202,9 @@ python copy_buildsystem () {
>          workspace_name = 'orig-workspace'
>      else:
>          workspace_name = None
> -    layers_copied = buildsystem.copy_bitbake_and_layers(baseoutpath + '/layers', workspace_name)
> -
> -    sdkbblayers = []
> -    corebase = os.path.basename(d.getVar('COREBASE'))
> -    for layer in layers_copied:
> -        if corebase == os.path.basename(layer):
> -            conf_bbpath = os.path.join('layers', layer, 'bitbake')
> -        else:
> -            sdkbblayers.append(layer)
> +
> +    corebase, sdkbblayers = buildsystem.copy_bitbake_and_layers(baseoutpath + '/layers', workspace_name)
> +    conf_bbpath = os.path.join('layers', corebase, 'bitbake')
>  
>      for path in os.listdir(baseoutpath + '/layers'):
>          relpath = os.path.join('layers', path, oe_init_env_script)
> diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py
> index ac2fae1ed1..05f65ac632 100644
> --- a/meta/lib/oe/copy_buildsystem.py
> +++ b/meta/lib/oe/copy_buildsystem.py
> @@ -26,6 +26,7 @@ class BuildSystem(object):
>  
>      def copy_bitbake_and_layers(self, destdir, workspace_name=None):
>          # Copy in all metadata layers + bitbake (as repositories)
> +        copied_corebase = None
>          layers_copied = []
>          bb.utils.mkdirhier(destdir)
>          layers = list(self.layerdirs)
> @@ -84,17 +85,18 @@ class BuildSystem(object):
>  
>              layer_relative = os.path.relpath(layerdestpath,
>                                               destdir)
> -            layers_copied.append(layer_relative)
> -
>              # Treat corebase as special since it typically will contain
>              # build directories or other custom items.
>              if corebase == layer:
> +                copied_corebase = layer_relative
>                  bb.utils.mkdirhier(layerdestpath)
>                  for f in corebase_files:
>                      f_basename = os.path.basename(f)
>                      destname = os.path.join(layerdestpath, f_basename)
>                      _smart_copy(f, destname)
>              else:
> +                layers_copied.append(layer_relative)
> +
>                  if os.path.exists(layerdestpath):
>                      bb.note("Skipping layer %s, already handled" % layer)
>                  else:
> @@ -140,7 +142,7 @@ class BuildSystem(object):
>                  layers_copied.remove(layer)
>                  break
>  
> -        return layers_copied
> +        return copied_corebase, layers_copied
>  
>  def generate_locked_sigs(sigfile, d):
>      bb.utils.mkdirhier(os.path.dirname(sigfile))
> -- 
> 2.17.0
> 



More information about the Openembedded-core mailing list