[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