All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] classes/machine-overrides-extended.bbclass: add
@ 2017-07-21 12:47 Trevor Woerner
  2017-07-21 18:34 ` Denys Dmytriyenko
  2017-07-28 22:56 ` Trevor Woerner
  0 siblings, 2 replies; 3+ messages in thread
From: Trevor Woerner @ 2017-07-21 12:47 UTC (permalink / raw)
  To: openembedded-core

Copy this class from meta-freescale so all BSPs can use it.

This class makes it easy for a BSP to specify multiple sets of configurations
for a given MACHINE. In some cases there are multiple choices for the user.
For example: for the kernel, the user could choose either the vendor kernel or
the upstream kernel. However, sometimes these decisions are "locked" together:
i.e. if you want to use the vendor's binary blob for (say) graphics, then
you have to use their vendor kernel as well. It's not possible for a user to
choose, say, the graphics binary blob but want to use the upstream kernel too.
Therefore the BSP ends up with "sets" of configurations which need to be taken
collectively instead of piecemeal.

In the example of meta-freescale, if the user does nothing special,
they get the vendor options. If they add the following line to their
configuration, they get the upstream pieces:

	MACHINEOVERRIDES .= ":use-mainline-bsp"

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
 meta/classes/machine-overrides-extender.bbclass | 48 +++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 meta/classes/machine-overrides-extender.bbclass

diff --git a/meta/classes/machine-overrides-extender.bbclass b/meta/classes/machine-overrides-extender.bbclass
new file mode 100644
index 0000000000..f333a0fcb7
--- /dev/null
+++ b/meta/classes/machine-overrides-extender.bbclass
@@ -0,0 +1,48 @@
+# -*- python -*-
+# Automatically set extend the MACHINEOVERRIDES
+#
+# This allow to grouping of different settings for similar platforms.
+#
+# To indicate that a SoC contains following set of overrides, you can use:
+#
+# MACHINEOVERRIDES_EXTENDER_soc = "group1:group2"
+#
+# However to indicate that an override replaces a set of other
+# overrides, you can use:
+#
+# MACHINEOVERRIDES_EXTENDER_FILTER_OUT_override = "group1 group2"
+#
+# Copyright 2016-2017 (C) O.S. Systems Software LTDA.
+
+def machine_overrides_extender(d):
+    machine_overrides = (d.getVar('MACHINEOVERRIDES', True) or '').split(':')
+
+    # Gather the list of overrides to filter out
+    machine_overrides_filter_out = []
+    for override in machine_overrides:
+        machine_overrides_filter_out += (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT_%s' % override, True) or '').split()
+
+    # Drop any overrides of filter_out prior extending
+    machine_overrides = [o for o in machine_overrides if o not in machine_overrides_filter_out]
+
+    for override in machine_overrides:
+        extender = d.getVar('MACHINEOVERRIDES_EXTENDER_%s' % override, True)
+
+        if extender:
+            extender = extender.split(':')
+
+            # Drop any extension if in filter_out
+            extender = [e for e in extender if e not in machine_overrides_filter_out]
+
+            extender.reverse()
+            if not set(extender).issubset(set(machine_overrides)):
+                index = machine_overrides.index(override)
+                for e in extender:
+                    machine_overrides.insert(index, e)
+    d.setVar('MACHINEOVERRIDES', ':'.join(machine_overrides))
+
+python machine_overrides_extender_handler() {
+    machine_overrides_extender(e.data)
+}
+machine_overrides_extender_handler[eventmask] = "bb.event.ConfigParsed"
+addhandler machine_overrides_extender_handler
-- 
2.13.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] classes/machine-overrides-extended.bbclass: add
  2017-07-21 12:47 [PATCH] classes/machine-overrides-extended.bbclass: add Trevor Woerner
@ 2017-07-21 18:34 ` Denys Dmytriyenko
  2017-07-28 22:56 ` Trevor Woerner
  1 sibling, 0 replies; 3+ messages in thread
From: Denys Dmytriyenko @ 2017-07-21 18:34 UTC (permalink / raw)
  To: Trevor Woerner; +Cc: openembedded-core

I haven't seen any conclusions on the Architecture list here:

http://lists.openembedded.org/pipermail/openembedded-architecture/2017-July/000662.html


On Fri, Jul 21, 2017 at 08:47:40AM -0400, Trevor Woerner wrote:
> Copy this class from meta-freescale so all BSPs can use it.
> 
> This class makes it easy for a BSP to specify multiple sets of configurations
> for a given MACHINE. In some cases there are multiple choices for the user.
> For example: for the kernel, the user could choose either the vendor kernel or
> the upstream kernel. However, sometimes these decisions are "locked" together:
> i.e. if you want to use the vendor's binary blob for (say) graphics, then
> you have to use their vendor kernel as well. It's not possible for a user to
> choose, say, the graphics binary blob but want to use the upstream kernel too.
> Therefore the BSP ends up with "sets" of configurations which need to be taken
> collectively instead of piecemeal.
> 
> In the example of meta-freescale, if the user does nothing special,
> they get the vendor options. If they add the following line to their
> configuration, they get the upstream pieces:
> 
> 	MACHINEOVERRIDES .= ":use-mainline-bsp"
> 
> Signed-off-by: Trevor Woerner <twoerner@gmail.com>
> ---
>  meta/classes/machine-overrides-extender.bbclass | 48 +++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
>  create mode 100644 meta/classes/machine-overrides-extender.bbclass
> 
> diff --git a/meta/classes/machine-overrides-extender.bbclass b/meta/classes/machine-overrides-extender.bbclass
> new file mode 100644
> index 0000000000..f333a0fcb7
> --- /dev/null
> +++ b/meta/classes/machine-overrides-extender.bbclass
> @@ -0,0 +1,48 @@
> +# -*- python -*-
> +# Automatically set extend the MACHINEOVERRIDES
> +#
> +# This allow to grouping of different settings for similar platforms.
> +#
> +# To indicate that a SoC contains following set of overrides, you can use:
> +#
> +# MACHINEOVERRIDES_EXTENDER_soc = "group1:group2"
> +#
> +# However to indicate that an override replaces a set of other
> +# overrides, you can use:
> +#
> +# MACHINEOVERRIDES_EXTENDER_FILTER_OUT_override = "group1 group2"
> +#
> +# Copyright 2016-2017 (C) O.S. Systems Software LTDA.
> +
> +def machine_overrides_extender(d):
> +    machine_overrides = (d.getVar('MACHINEOVERRIDES', True) or '').split(':')
> +
> +    # Gather the list of overrides to filter out
> +    machine_overrides_filter_out = []
> +    for override in machine_overrides:
> +        machine_overrides_filter_out += (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT_%s' % override, True) or '').split()
> +
> +    # Drop any overrides of filter_out prior extending
> +    machine_overrides = [o for o in machine_overrides if o not in machine_overrides_filter_out]
> +
> +    for override in machine_overrides:
> +        extender = d.getVar('MACHINEOVERRIDES_EXTENDER_%s' % override, True)
> +
> +        if extender:
> +            extender = extender.split(':')
> +
> +            # Drop any extension if in filter_out
> +            extender = [e for e in extender if e not in machine_overrides_filter_out]
> +
> +            extender.reverse()
> +            if not set(extender).issubset(set(machine_overrides)):
> +                index = machine_overrides.index(override)
> +                for e in extender:
> +                    machine_overrides.insert(index, e)
> +    d.setVar('MACHINEOVERRIDES', ':'.join(machine_overrides))
> +
> +python machine_overrides_extender_handler() {
> +    machine_overrides_extender(e.data)
> +}
> +machine_overrides_extender_handler[eventmask] = "bb.event.ConfigParsed"
> +addhandler machine_overrides_extender_handler
> -- 
> 2.13.0
> 
> -- 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] classes/machine-overrides-extended.bbclass: add
  2017-07-21 12:47 [PATCH] classes/machine-overrides-extended.bbclass: add Trevor Woerner
  2017-07-21 18:34 ` Denys Dmytriyenko
@ 2017-07-28 22:56 ` Trevor Woerner
  1 sibling, 0 replies; 3+ messages in thread
From: Trevor Woerner @ 2017-07-28 22:56 UTC (permalink / raw)
  To: Patches and discussions about the oe-core layer

ping? comments?

On Fri, Jul 21, 2017 at 8:47 AM, Trevor Woerner <twoerner@gmail.com> wrote:
> Copy this class from meta-freescale so all BSPs can use it.
>
> This class makes it easy for a BSP to specify multiple sets of configurations
> for a given MACHINE. In some cases there are multiple choices for the user.
> For example: for the kernel, the user could choose either the vendor kernel or
> the upstream kernel. However, sometimes these decisions are "locked" together:
> i.e. if you want to use the vendor's binary blob for (say) graphics, then
> you have to use their vendor kernel as well. It's not possible for a user to
> choose, say, the graphics binary blob but want to use the upstream kernel too.
> Therefore the BSP ends up with "sets" of configurations which need to be taken
> collectively instead of piecemeal.
>
> In the example of meta-freescale, if the user does nothing special,
> they get the vendor options. If they add the following line to their
> configuration, they get the upstream pieces:
>
>         MACHINEOVERRIDES .= ":use-mainline-bsp"
>
> Signed-off-by: Trevor Woerner <twoerner@gmail.com>
> ---
>  meta/classes/machine-overrides-extender.bbclass | 48 +++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
>  create mode 100644 meta/classes/machine-overrides-extender.bbclass
>
> diff --git a/meta/classes/machine-overrides-extender.bbclass b/meta/classes/machine-overrides-extender.bbclass
> new file mode 100644
> index 0000000000..f333a0fcb7
> --- /dev/null
> +++ b/meta/classes/machine-overrides-extender.bbclass
> @@ -0,0 +1,48 @@
> +# -*- python -*-
> +# Automatically set extend the MACHINEOVERRIDES
> +#
> +# This allow to grouping of different settings for similar platforms.
> +#
> +# To indicate that a SoC contains following set of overrides, you can use:
> +#
> +# MACHINEOVERRIDES_EXTENDER_soc = "group1:group2"
> +#
> +# However to indicate that an override replaces a set of other
> +# overrides, you can use:
> +#
> +# MACHINEOVERRIDES_EXTENDER_FILTER_OUT_override = "group1 group2"
> +#
> +# Copyright 2016-2017 (C) O.S. Systems Software LTDA.
> +
> +def machine_overrides_extender(d):
> +    machine_overrides = (d.getVar('MACHINEOVERRIDES', True) or '').split(':')
> +
> +    # Gather the list of overrides to filter out
> +    machine_overrides_filter_out = []
> +    for override in machine_overrides:
> +        machine_overrides_filter_out += (d.getVar('MACHINEOVERRIDES_EXTENDER_FILTER_OUT_%s' % override, True) or '').split()
> +
> +    # Drop any overrides of filter_out prior extending
> +    machine_overrides = [o for o in machine_overrides if o not in machine_overrides_filter_out]
> +
> +    for override in machine_overrides:
> +        extender = d.getVar('MACHINEOVERRIDES_EXTENDER_%s' % override, True)
> +
> +        if extender:
> +            extender = extender.split(':')
> +
> +            # Drop any extension if in filter_out
> +            extender = [e for e in extender if e not in machine_overrides_filter_out]
> +
> +            extender.reverse()
> +            if not set(extender).issubset(set(machine_overrides)):
> +                index = machine_overrides.index(override)
> +                for e in extender:
> +                    machine_overrides.insert(index, e)
> +    d.setVar('MACHINEOVERRIDES', ':'.join(machine_overrides))
> +
> +python machine_overrides_extender_handler() {
> +    machine_overrides_extender(e.data)
> +}
> +machine_overrides_extender_handler[eventmask] = "bb.event.ConfigParsed"
> +addhandler machine_overrides_extender_handler
> --
> 2.13.0
>


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-07-28 22:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-21 12:47 [PATCH] classes/machine-overrides-extended.bbclass: add Trevor Woerner
2017-07-21 18:34 ` Denys Dmytriyenko
2017-07-28 22:56 ` Trevor Woerner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.