[OE-core] [PATCH] classes: add gitupstream class

Mark Hatle mark.hatle at windriver.com
Wed Mar 8 17:31:52 UTC 2017


One of the uses I've seen people ask for is to take the (patched) versions that
OE puts together, store these in their own git trees and manage it there -- also
allowing them to patch them directly in their own trees.

It appears to me this could be used to pull down that content.  Have you thought
about adding anything to make it easier for someone to generate the trees?

--Mark

On 3/8/17 11:25 AM, Ross Burton wrote:
> This class lets you use BBCLASSEXTEND to add a variant of the recipe that
> fetches from git instead of a tarball.
> 
> For example:
> 
>  BBCLASSEXTEND = "gitupstream:target"
>  SRC_URI_class-gitupstream = "git://git.example.com/example"
>  SRCREV_class-gitupstream = "abcd1234"
> 
> This variant will have DEFAULT_PREFERENCE set to -1 so it needs to be selected
> to be used, and any git-specific tweaks can be done with the class-gitupstream
> override, for example:
> 
>  DEPENDS_append_class-gitupstream = " gperf-native"
> 
>  do_configure_prepend_class-gitupstream() {
>     touch ${S}/README
>  }
> 
> It currently only supports creating a git variant of the target recipe, not
> native or nativesdk.  The BBCLASSEXTEND syntax (gitupstream:target) was chosen
> so that support for native and nativesdk can be added at a later date.
> 
> [ YOCTO #10215 ]
> 
> Signed-off-by: Ross Burton <ross.burton at intel.com>
> ---
>  meta/classes/gitupstream.bbclass | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>  create mode 100644 meta/classes/gitupstream.bbclass
> 
> diff --git a/meta/classes/gitupstream.bbclass b/meta/classes/gitupstream.bbclass
> new file mode 100644
> index 0000000..405283d
> --- /dev/null
> +++ b/meta/classes/gitupstream.bbclass
> @@ -0,0 +1,25 @@
> +CLASSOVERRIDE = "class-gitupstream"
> +
> +# TODO doesn't let you gitupstream a native recipe yet
> +
> +python gitupstream_virtclass_handler () {
> +    # Do nothing if this is inherited, as it's for BBCLASSEXTEND
> +    if "gitupstream" not in (e.data.getVar('BBCLASSEXTEND', True) or ""):
> +        bb.error("Don't inherit gitupstream, use BBCLASSEXTEND")
> +        return
> +
> +    variant = d.getVar("BBEXTENDVARIANT", True)
> +    if variant not in ("target"):
> +        bb.error("Pass the variant when using gitupstream, for example gitupstream:target")
> +
> +    d.setVar("DEFAULT_PREFERENCE", "-1")
> +    d.setVar("S", "${WORKDIR}/git")
> +
> +    # Modify the SRCREV, if the recipe hasn't used PV_class-gitupstream to
> +    # assign a +gitX PV already.
> +    pv = d.getVar("PV", True)
> +    if "+git" not in pv:
> +        d.setVar("PV", pv + "+git${SRCPV}")
> +}
> +addhandler gitupstream_virtclass_handler
> +gitupstream_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
> 




More information about the Openembedded-core mailing list