Re: [PATCH 1/5] scripts/lib/bsp/engine.py: add yocto_layer_create()


Philip Balister
 

On 12/18/2012 11:56 AM, Tom Zanussi wrote:
On Tue, 2012-12-18 at 11:37 -0500, Philip Balister wrote:
On 12/18/2012 09:33 AM, Tom Zanussi wrote:
On Tue, 2012-12-18 at 09:13 -0500, Philip Balister wrote:
On 12/17/2012 12:51 PM, tom.zanussi@... wrote:
From: Tom Zanussi <tom.zanussi@...>

Add a new yocto_layer_create() function that will be used to generate
a generic yocto layer (for the new 'yocto-layer' command).
How is a "yocto layer" different from an OpenEmbedded layer? If you
insist on "yocto layter", wouldn't "Yocto Project layer" be more accurate.
Technically it isn't any different, but it's based on the template
engine code and templates that make up the 'Yocto BSP Tools', which for
various reasons (they create Yocto-compliant BSP layers, something not
of interest to OpenEmbedded proper, and it probably doesn't make sense
to clutter oe-core with a bunch of 'template data', etc) live in poky
and not oe-core.
Actually, BSP's should work standalone with oe-core, so it is of interest.


As such, the new tool is named 'yocto-layer' to match the other existing
Yocto BSP tools, 'yocto-bsp' and 'yocto-kernel'.
I will now get pedantic. <rday mode on>

The meta-yocto layer functions as a distro layer. So referring to things
as yocto this and yocto that, suggests they only work with the
meta-yocto layer.

So it doesn't make sense to me to put general purpose tools in a distro
layer.

<rday mode off>
Right, none of the yocto- tools has anything to do with the meta-yocto
layer, so if that's how it's taken, then, yeah, it's misleading.

It wouldn't bother me to do a global search and replace of 'yocto' with
'oe' for the tools - I guess that would imply it would all be moving
into oe-core, though. Is that what you're suggesting?
I am not sure what the best way to clear up terminology is at the
moment, and given it is he week before Christmas, a number of people I
would like to discuss this with are on holiday, so we can defer the
solution until next year.

In the meantime, I have no problem with people getting work done, so I
have no objection to the patch moving forward.

Philip


Tom


Tom


One of our goals for next year should be to clean up our terminology to
reduce confusion in the user community.

Philip


Signed-off-by: Tom Zanussi <tom.zanussi@...>
---
scripts/lib/bsp/engine.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)

diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py
index 8985544..d406e79 100644
--- a/scripts/lib/bsp/engine.py
+++ b/scripts/lib/bsp/engine.py
@@ -1352,6 +1352,62 @@ def expand_targets(context, bsp_output_dir):
return target_files


+def yocto_layer_create(layer_name, scripts_path, layer_output_dir, codedump, properties_file):
+ """
+ Create yocto layer
+
+ layer_name - user-defined layer name
+ scripts_path - absolute path to yocto /scripts dir
+ bsp_output_dir - dirname to create for BSP
+ codedump - dump generated code to bspgen.out
+ properties_file - use values from here if nonempty i.e no prompting
+
+ arch - the arch for a generic layer is 'generic-layer', defined in
+ scripts/lib/bsp/substrate/target/generic-layer
+ """
+ if os.path.exists(bsp_output_dir):
+ print "\nBSP output dir already exists, exiting. (%s)" % bsp_output_dir
+ sys.exit(1)
+
+ properties = None
+
+ if properties_file:
+ try:
+ infile = open(properties_file, "r")
+ except IOError:
+ print "Couldn't open properties file %s for reading, exiting" % properties_file
+ sys.exit(1)
+
+ properties = json.load(infile)
+
+ os.mkdir(bsp_output_dir)
+
+ context = create_context(machine, arch, scripts_path)
+ target_files = expand_targets(context, bsp_output_dir)
+
+ input_lines = gather_inputlines(target_files)
+
+ program_lines = []
+
+ gen_program_header_lines(program_lines)
+
+ gen_initial_property_vals(input_lines, program_lines)
+
+ if properties:
+ gen_supplied_property_vals(properties, program_lines)
+
+ gen_program_machine_lines(machine, program_lines)
+
+ if not properties:
+ gen_program_input_lines(input_lines, program_lines, context)
+
+ gen_program_lines(target_files, program_lines)
+
+ run_program_lines(program_lines, codedump)
+
+ print "New %s BSP created in %s" % (arch, bsp_output_dir)
+
+
def yocto_bsp_create(machine, arch, scripts_path, bsp_output_dir, codedump, properties_file):
"""
Create bsp




Join yocto@lists.yoctoproject.org to automatically receive all group messages.