[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