[meta-freescale] [meta-fsl-arm PATCH 01/23] fsl-dynamic-packagearch.bbclass: Dynamically set package architecture

Eric Bénard eric at eukrea.com
Mon Sep 23 16:04:45 PDT 2013


H Otavio,

Le Mon, 23 Sep 2013 16:55:36 -0300,
Otavio Salvador <otavio at ossystems.com.br> a écrit :

> This allow to easy reuse of binary packages among similar SoCs. The
> usual use for this is to share SoC specific packages among different
> boards. The class can be used to share GPU packages for i.MX53 boards
> (as all them share the AMD GPU) and i.MX6 based boards (as all them
> share Vivante GPU).
> 
> It inspects the database and identify if the package provides or
> depends on one of subarch provided values and if it does, it sets the
> PACKAGE_ARCH for MACHINE_SUBARCH value otherwise if it matches in the
> machine specific filter, it sets it to MACHINE_ARCH.
> 
> Change-Id: Icb0a8060e862c8eeb166c45d1b39c40de07b01d8
> Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
> ---
>  classes/fsl-dynamic-packagearch.bbclass | 37 +++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
>  create mode 100644 classes/fsl-dynamic-packagearch.bbclass
> 
> diff --git a/classes/fsl-dynamic-packagearch.bbclass b/classes/fsl-dynamic-packagearch.bbclass
> new file mode 100644
> index 0000000..2778885
> --- /dev/null
> +++ b/classes/fsl-dynamic-packagearch.bbclass
> @@ -0,0 +1,37 @@
> +# Automatically set PACKAGE_ARCH for MACHINE_SUBARCH
> +#
> +# This allow to easy reuse of binary packages among similar SoCs. The
> +# usual use for this is to share SoC specific packages among different
> +# boards.
> +#
> +# For example, in meta-fsl-arm, this is used to share GPU packages for
> +# i.MX53 boards (as all them share the AMD GPU) and i.MX6 based boards
> +# (as all them share Vivante GPU).
> +#
> +# To use the class, specify:
> +#
> +# SUBARCH_FILTER = "foo"
> +# MACHINE_ARCH_FILTER = "bar"
> +#
> +# Copyright 2013 (C) O.S. Systems Software LTDA.
> +
> +python __anonymous () {
> +    machine_arch_filter = set((d.getVar("MACHINE_ARCH_FILTER", True) or "").split())
> +    subarch_filter = set((d.getVar("SUBARCH_FILTER", True) or "").split())
> +    if subarch_filter or machine_arch_filter:
> +        provides = set((d.getVar("PROVIDES", True) or "").split())
> +        depends = set((d.getVar("DEPENDS", True) or "").split())
> +        PN = d.getVar("PN", True)
> +
> +        package_arch = None
> +        if list(machine_arch_filter & (provides | depends)):
> +            package_arch = d.getVar("MACHINE_ARCH", True)
> +        elif list(subarch_filter & (provides | depends)):
> +            package_arch = d.getVar("MACHINE_SUBARCH", True)
> +            if not package_arch:
> +                bb.parse.SkipPackage("You must set MACHINE_SUBARCH as SUBARCH_FILTER is set for this SoC.")
> +
> +        if package_arch:
> +            bb.debug(1, "Use '%s' as package archictecture for '%s'" % (package_arch, PN))
> +            d.setVar("PACKAGE_ARCH", package_arch)
> +}

what is the time cost of this dynamic setting vs the static one ?

Eric



More information about the meta-freescale mailing list