[OE-core] [PATCH 2/4] buildhistory.bbclass: support extending the content of the build history

Paul Eggleton paul.eggleton at linux.intel.com
Fri Nov 27 00:25:16 UTC 2015


On Wednesday 25 November 2015 10:30:30 Patrick Ohly wrote:
> The idea behind the implementation of Yocto #8138 was that an
> additional class can write additional files in the recipe directories,
> for example by hooking into the functions of buildhistory.bbclass or
> by implementing its own SSTATEPOSTINSTFUNCS function.
> 
> However, when these additional files get created before
> buildhistory_emit_pkghistory(), they get removed again by that
> function because it contains code which removes everything it does
> not know about. The reason for that is that these unknown items
> are probably obsolete.
> 
> This logic is the reason why the additional "kconfig" file from
> buildhistory-extra.bbclass never showed up in the final build history.
> 
> To fix this, the hard-coded list of known files in
> buildhistory_emit_pkghistory() must be turned into a variable which
> derived classes can extend.
> 
> Signed-off-by: Patrick Ohly <patrick.ohly at intel.com>
> ---
>  meta/classes/buildhistory.bbclass | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/classes/buildhistory.bbclass
> b/meta/classes/buildhistory.bbclass index 729dcd4..6023e5d 100644
> --- a/meta/classes/buildhistory.bbclass
> +++ b/meta/classes/buildhistory.bbclass
> @@ -23,6 +23,16 @@ sstate_install[vardepsexclude] +=
> "buildhistory_emit_pkghistory" # then the value added to
> SSTATEPOSTINSTFUNCS:
>  SSTATEPOSTINSTFUNCS[vardepvalueexclude] .= "| buildhistory_emit_pkghistory"
> 
> +# All items excepts those listed here will be removed from a recipe's
> +# build history directory by buildhistory_emit_pkghistory(). This is
> +# necessary because some of these items (package directories, files that
> +# we no longer emit) might be obsolete.
> +#
> +# When extending build history, derive your class from buildhistory.bbclass
> +# and extend this list here with the additional files created by the
> derived 
> +# class.
> +BUILDHISTORY_PRESERVE = "latest latest_srcrev"
> +
>  #
>  # Write out metadata about this package for comparison when writing future
> packages #
> @@ -165,12 +175,13 @@ python buildhistory_emit_pkghistory() {
>              raise
> 
>      packagelist = packages.split()
> +    preserve = d.getVar('BUILDHISTORY_PRESERVE', True).split()
>      if not os.path.exists(pkghistdir):
>          bb.utils.mkdirhier(pkghistdir)
>      else:
>          # Remove files for packages that no longer exist
>          for item in os.listdir(pkghistdir):
> -            if item != "latest" and item != "latest_srcrev":
> +            if item not in preserve:
>                  if item not in packagelist:
>                      itempath = os.path.join(pkghistdir, item)
>                      if os.path.isdir(itempath):

Acked-by: Paul Eggleton <paul.eggleton at linux.intel.com>

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the Openembedded-core mailing list