[OE-core] [PATCHv3 3/6] license.bbclass: Added get_boot_dependencies function
Paul Eggleton
paul.eggleton at linux.intel.com
Fri Nov 20 02:33:48 UTC 2015
On Thursday 19 November 2015 14:25:16 mariano.lopez at linux.intel.com wrote:
> From: Mariano Lopez <mariano.lopez at linux.intel.com>
>
> This function gets the dependencies from the classes that
> create a boot image, this is required because sometimes
> the bootloader dependecy is in these classes. The current
> classes covered are bootimg and bootdirectdisk because
> these are the only clases that add dependencies.
>
> [YOCTO #6772]
>
> Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com>
> ---
> meta/classes/license.bbclass | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
> index 62222f2..afcc708 100644
> --- a/meta/classes/license.bbclass
> +++ b/meta/classes/license.bbclass
> @@ -141,6 +141,42 @@ def write_license_files(d, license_manifest, pkg_dic):
> os.link(pkg_license, pkg_rootfs_license)
>
>
> +def get_boot_dependencies(d):
> + """
> + Return the dependencies from boot tasks
> + """
> +
> + depends = ""
> + boot_depends_string = ""
> + taskdepdata = d.getVar("BB_TASKDEPDATA", True)
> + # Only bootimg and bootdirectdisk include the depends flag
> + boot_tasks = ["do_bootimg", "do_bootdirectdisk",]
> +
> + for task in boot_tasks:
> + boot_depends_string = "%s %s" % (boot_depends_string,
> + d.getVarFlag(task, "depends", True) or "")
> + boot_depends = [dep.split(":")[0] for dep
> + in boot_depends_string.split()
> + if not dep.split(":")[0].endswith("-native")]
> + for dep in boot_depends:
> + info_file = os.path.join(d.getVar("LICENSE_DIRECTORY", True),
> + dep, "recipeinfo")
> + # If the recipe and dependency name is the same
> + if os.path.exists(info_file):
> + depends = "%s %s" % (depends, dep)
> + # We need to search for the provider of the dependency
> + else:
> + for taskdep in taskdepdata.itervalues():
> + # The fifth field contains what the task provides
> + if dep in taskdep[4]:
> + info_file = os.path.join(
> + d.getVar("LICENSE_DIRECTORY", True),
> + taskdep[0], "recipeinfo")
> + if os.path.exists(info_file):
> + depends = "%s %s" % (depends, taskdep[0])
> + break
> + return depends
Where a function returns a list of items it should return an actual list
rather than a space-separated string; this gives the caller a little more
flexibility on how it processes the returned list. (Obviously here the list is
going to be written out immediately as a space-separated string, but that's as
easy as ' '.join(listname) in the calling function.)
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
More information about the Openembedded-core
mailing list