Re: [OE-core] [poky][dunfell][PATCH] buildhistory.bbclass: Enable exporting more recipe and package data
There is a "master first" policy for dunfell, so this series would need to be accepted into the master branch before it can be considered for dunfell. Also, this is a new feature, so that also is an issue for including this in dunfell, where changes are typically only CVE and bug fixes. Steve On Mon, Jul 19, 2021 at 1:20 AM sana kazi wrote: > > From: Sana Kazi > > Used BUILDHISTORY_EXPORT_RECIPE_VARIABLES and > BUILDHISTORY_EXPORT_PACKAGE_VARIABLES to export recipe and package > data to the latest file of buildhistory and sorted it alphabetically. > > This makes extending data in buildhistory git tree simple and avoids > patches to it for users who care about things like SRC_URI and like > to track it in buildhistory git tree. > > Now we can add additional information as per our requirement to the > buildhistory like LICENSE, SRC_URI AND MAINTAINER to the buildhistory > by appending them in a recipe or distro specific conf file as follows: > > BUILDHISTORY_EXPORT_RECIPE_VARIABLES += "LICENSE MAINTAINER SRC_URI" > BUILDHISTORY_EXPORT_PACKAGE_VARIABLES += "LICENSE MAINTAINER" > > Signed-off-by: Sana Kazi > --- > meta-poky/conf/distro/poky.conf | 2 + > meta/classes/buildhistory.bbclass | 98 +-- > 2 files changed, 68 insertions(+), 32 deletions(-) > > diff --git a/meta-poky/conf/distro/poky.conf b/meta-poky/conf/distro/poky.conf > index 92e9ba5477..d766d4b1f5 100644 > --- a/meta-poky/conf/distro/poky.conf > +++ b/meta-poky/conf/distro/poky.conf > @@ -89,3 +89,5 @@ INHERIT += "reproducible_build" > > BB_SIGNATURE_HANDLER ?= "OEEquivHash" > BB_HASHSERVE ??= "auto" > +BUILDHISTORY_EXPORT_RECIPE_VARIABLES ?= "PR PV PE LAYER DEPENDS PACKAGES" > +BUILDHISTORY_EXPORT_PACKAGE_VARIABLES ?= "PE PV PR PKG PKGE PKGV PKGR > RPROVIDES RDEPENDS RRECOMMENDS RSUGGESTS RREPLACES RCONFLICTS PKGSIZE FILES > FILELIST" > diff --git a/meta/classes/buildhistory.bbclass > b/meta/classes/buildhistory.bbclass > index 44a66df962..a2888666d9 100644 > --- a/meta/classes/buildhistory.bbclass > +++ b/meta/classes/buildhistory.bbclass > @@ -254,6 +254,8 @@ python buildhistory_emit_pkghistory() { > rcpinfo.depends = sortlist(oe.utils.squashspaces(d.getVar('DEPENDS') or > "")) > rcpinfo.packages = packages > rcpinfo.layer = layer > +export_recipe_variables = > d.getVar('BUILDHISTORY_EXPORT_RECIPE_VARIABLES') or '' > +rcpinfo.export_recipe_variables = export_recipe_variables > write_recipehistory(rcpinfo, d) > > pkgdest = d.getVar('PKGDEST') > @@ -312,6 +314,9 @@ python buildhistory_emit_pkghistory() { > > pkginfo.size = int(pkgdata['PKGSIZE']) > > +export_package_variables = > d.getVar('BUILDHISTORY_EXPORT_PACKAGE_VARIABLES') or '' > +pkginfo.export_package_variables = export_package_variables > + > write_pkghistory(pkginfo, d) > > # Create files-in-.txt files containing a list of files of > each recipe's package > @@ -360,14 +365,20 @@ def write_recipehistory(rcpinfo, d): > pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE') > > infofile = os.path.join(pkghistdir, "latest") > +export_recipe_variables = set(rcpinfo.export_recipe_variables.split()) > +ret = [] > with open(infofile, "w") as f: > -if rcpinfo.pe != "0": > -f.write(u"PE = %s\n" % rcpinfo.pe) > -f.write(u"PV = %s\n" % rcpinfo.pv) > -f.write(u"PR = %s\n" % rcpinfo.pr) > -f.write(u"DEPENDS = %s\n" % rcpinfo.depends) > -f.write(u"PACKAGES = %s\n" % rcpinfo.packages) > -f.write(u"LAYER = %s\n" % rcpinfo.layer) > +for var in export_recipe_variables: > +if var == "PE": > +if rcpinfo.pe != "0": > +ret.append("%s = %s" % (var, rcpinfo.pe)) > +elif var == "LAYER": > +ret.append("%s = %s" % (var, rcpinfo.layer)) > +else: > +ret.append("%s = %s" % (var," > ".join((str(d.getVar(var)).split() > +ret.sort() > +for element in ret: > +f.write(element + "\n") > > write_latest_srcrev(d, pkghistdir) > > @@ -381,32 +392,55 @@ def write_pkghistory(pkginfo, d): > bb.utils.mkdirhier(pkgpath) > > infofile = os.path.join(pkgpath, "latest") > +export_package_variables = set(pkginfo.export_package_variables.split()) > +ret = [] > with open(infofile, "w") as f: > -if pkginfo.pe != "0": > -f.write(u"PE = %s\n" % pkginfo.pe) > -f.write(u"PV = %s\n" % pkginfo.pv) > -f.write(u"PR = %s\n" % pkginfo.pr) > - > -if pkginfo.pkg != pkginfo.name: > -f.write(u"PKG = %s\n" % pkginfo.pkg) > -if pkginfo.pkge != pkginfo.pe: > -f.write(u"PKGE = %s\n" % pkginfo.pkge) > -if pkginfo.pkgv != pkginfo.pv: > -f.write(u"PKGV = %s\n" % pkginfo.pkgv) > -if pkginfo.pkgr != pkginfo.pr: > -f.write(u"PKGR = %s\n" % pkginfo.pkgr) > -f.write
[OE-core] [poky][dunfell][PATCH] buildhistory.bbclass: Enable exporting more recipe and package data
From: Sana Kazi Used BUILDHISTORY_EXPORT_RECIPE_VARIABLES and BUILDHISTORY_EXPORT_PACKAGE_VARIABLES to export recipe and package data to the latest file of buildhistory and sorted it alphabetically. This makes extending data in buildhistory git tree simple and avoids patches to it for users who care about things like SRC_URI and like to track it in buildhistory git tree. Now we can add additional information as per our requirement to the buildhistory like LICENSE, SRC_URI AND MAINTAINER to the buildhistory by appending them in a recipe or distro specific conf file as follows: BUILDHISTORY_EXPORT_RECIPE_VARIABLES += "LICENSE MAINTAINER SRC_URI" BUILDHISTORY_EXPORT_PACKAGE_VARIABLES += "LICENSE MAINTAINER" Signed-off-by: Sana Kazi --- meta-poky/conf/distro/poky.conf | 2 + meta/classes/buildhistory.bbclass | 98 +-- 2 files changed, 68 insertions(+), 32 deletions(-) diff --git a/meta-poky/conf/distro/poky.conf b/meta-poky/conf/distro/poky.conf index 92e9ba5477..d766d4b1f5 100644 --- a/meta-poky/conf/distro/poky.conf +++ b/meta-poky/conf/distro/poky.conf @@ -89,3 +89,5 @@ INHERIT += "reproducible_build" BB_SIGNATURE_HANDLER ?= "OEEquivHash" BB_HASHSERVE ??= "auto" +BUILDHISTORY_EXPORT_RECIPE_VARIABLES ?= "PR PV PE LAYER DEPENDS PACKAGES" +BUILDHISTORY_EXPORT_PACKAGE_VARIABLES ?= "PE PV PR PKG PKGE PKGV PKGR RPROVIDES RDEPENDS RRECOMMENDS RSUGGESTS RREPLACES RCONFLICTS PKGSIZE FILES FILELIST" diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index 44a66df962..a2888666d9 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass @@ -254,6 +254,8 @@ python buildhistory_emit_pkghistory() { rcpinfo.depends = sortlist(oe.utils.squashspaces(d.getVar('DEPENDS') or "")) rcpinfo.packages = packages rcpinfo.layer = layer +export_recipe_variables = d.getVar('BUILDHISTORY_EXPORT_RECIPE_VARIABLES') or '' +rcpinfo.export_recipe_variables = export_recipe_variables write_recipehistory(rcpinfo, d) pkgdest = d.getVar('PKGDEST') @@ -312,6 +314,9 @@ python buildhistory_emit_pkghistory() { pkginfo.size = int(pkgdata['PKGSIZE']) +export_package_variables = d.getVar('BUILDHISTORY_EXPORT_PACKAGE_VARIABLES') or '' +pkginfo.export_package_variables = export_package_variables + write_pkghistory(pkginfo, d) # Create files-in-.txt files containing a list of files of each recipe's package @@ -360,14 +365,20 @@ def write_recipehistory(rcpinfo, d): pkghistdir = d.getVar('BUILDHISTORY_DIR_PACKAGE') infofile = os.path.join(pkghistdir, "latest") +export_recipe_variables = set(rcpinfo.export_recipe_variables.split()) +ret = [] with open(infofile, "w") as f: -if rcpinfo.pe != "0": -f.write(u"PE = %s\n" % rcpinfo.pe) -f.write(u"PV = %s\n" % rcpinfo.pv) -f.write(u"PR = %s\n" % rcpinfo.pr) -f.write(u"DEPENDS = %s\n" % rcpinfo.depends) -f.write(u"PACKAGES = %s\n" % rcpinfo.packages) -f.write(u"LAYER = %s\n" % rcpinfo.layer) +for var in export_recipe_variables: +if var == "PE": +if rcpinfo.pe != "0": +ret.append("%s = %s" % (var, rcpinfo.pe)) +elif var == "LAYER": +ret.append("%s = %s" % (var, rcpinfo.layer)) +else: +ret.append("%s = %s" % (var," ".join((str(d.getVar(var)).split() +ret.sort() +for element in ret: +f.write(element + "\n") write_latest_srcrev(d, pkghistdir) @@ -381,32 +392,55 @@ def write_pkghistory(pkginfo, d): bb.utils.mkdirhier(pkgpath) infofile = os.path.join(pkgpath, "latest") +export_package_variables = set(pkginfo.export_package_variables.split()) +ret = [] with open(infofile, "w") as f: -if pkginfo.pe != "0": -f.write(u"PE = %s\n" % pkginfo.pe) -f.write(u"PV = %s\n" % pkginfo.pv) -f.write(u"PR = %s\n" % pkginfo.pr) - -if pkginfo.pkg != pkginfo.name: -f.write(u"PKG = %s\n" % pkginfo.pkg) -if pkginfo.pkge != pkginfo.pe: -f.write(u"PKGE = %s\n" % pkginfo.pkge) -if pkginfo.pkgv != pkginfo.pv: -f.write(u"PKGV = %s\n" % pkginfo.pkgv) -if pkginfo.pkgr != pkginfo.pr: -f.write(u"PKGR = %s\n" % pkginfo.pkgr) -f.write(u"RPROVIDES = %s\n" % pkginfo.rprovides) -f.write(u"RDEPENDS = %s\n" % pkginfo.rdepends) -f.write(u"RRECOMMENDS = %s\n" % pkginfo.rrecommends) -if pkginfo.rsuggests: -f.write(u"RSUGGESTS = %s\n" % pkginfo.rsuggests) -if pkginfo.rreplaces: -f.write(u"RREPLACES = %s\n" % pkginfo.rreplaces) -if pkginfo.rconflicts: -f.write(u"RCONFLICTS = %s\n" % pkginfo.rconflicts) -f.write(u"PKGSIZE = %d\n" % pkginfo.size) -f.write(u"FILES = %s\n" % pkginfo.files)