diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2012-08-02 10:23:09 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-08-06 15:28:43 +0100 |
commit | 45f38d167b523d769c072474b36b3d9b31b4e9d9 (patch) | |
tree | 2d4965b3a6a89c86d80e5aadf191b04e19f8c5ba /meta | |
parent | 3ec608462e4cb1eb77b6addbae1bda84fd76e4d2 (diff) | |
download | openembedded-core-45f38d167b523d769c072474b36b3d9b31b4e9d9.tar.gz openembedded-core-45f38d167b523d769c072474b36b3d9b31b4e9d9.tar.bz2 openembedded-core-45f38d167b523d769c072474b36b3d9b31b4e9d9.zip |
classes/buildhistory: save metadata revisions
Always write the metadata revisions for each layer into a machine-
readable "metadata-revs" file so that you can potentially link changes
in the output back to changes in the metadata. (Unlike the existing
similar build-id file, this is not specific to image changes.)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/buildhistory.bbclass | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass index 76648c9499..e121088d59 100644 --- a/meta/classes/buildhistory.bbclass +++ b/meta/classes/buildhistory.bbclass @@ -354,6 +354,15 @@ def buildhistory_get_layers(d): layertext = "Configured metadata layers:\n%s\n" % '\n'.join(get_layers_branch_rev(d)) return layertext +def buildhistory_get_metadata_revs(d): + # We want an easily machine-readable format here, so get_layers_branch_rev isn't quite what we want + layers = (d.getVar("BBLAYERS", True) or "").split() + medadata_revs = ["%-17s = %s:%s" % (os.path.basename(i), \ + base_get_metadata_git_branch(i, None).strip(), \ + base_get_metadata_git_revision(i, None)) \ + for i in layers] + return '\n'.join(medadata_revs) + def squashspaces(string): import re @@ -382,19 +391,25 @@ buildhistory_commit() { return fi + # Create a machine-readable list of metadata revisions for each layer + cat > ${BUILDHISTORY_DIR}/metadata-revs <<END +${@buildhistory_get_metadata_revs(d)} +END + ( cd ${BUILDHISTORY_DIR}/ # Initialise the repo if necessary if [ ! -d .git ] ; then git init -q fi - # Ensure there are new/changed files to commit - repostatus=`git status --porcelain` + # Check if there are new/changed files to commit (other than metadata-revs) + repostatus=`git status --porcelain | grep -v " metadata-revs$"` if [ "$repostatus" != "" ] ; then - git add ${BUILDHISTORY_DIR}/* + git add . HOSTNAME=`hostname 2>/dev/null || echo unknown` # porcelain output looks like "?? packages/foo/bar" + # Ensure we commit metadata-revs with the first commit for entry in `echo "$repostatus" | awk '{print $2}' | awk -F/ '{print $1}' | sort | uniq` ; do - git commit ${BUILDHISTORY_DIR}/$entry -m "$entry: Build ${BUILDNAME} of ${DISTRO} ${DISTRO_VERSION} for machine ${MACHINE} on $HOSTNAME" --author "${BUILDHISTORY_COMMIT_AUTHOR}" > /dev/null + git commit $entry metadata-revs -m "$entry: Build ${BUILDNAME} of ${DISTRO} ${DISTRO_VERSION} for machine ${MACHINE} on $HOSTNAME" --author "${BUILDHISTORY_COMMIT_AUTHOR}" > /dev/null done if [ "${BUILDHISTORY_PUSH_REPO}" != "" ] ; then git push -q ${BUILDHISTORY_PUSH_REPO} |