On Sat, 2014-08-30 at 00:38 -0400, Bruce Ashfield wrote: > Rather than attempting to condition the entire tree to machine SRCREV (since > we don't know what branch will be built), we can instead wait until patching > has completed and then confirm that we are indeed building a decendant of the > specified SRCREV. The result is a much simpler check, and no mangling of the > tree. > > Signed-off-by: Bruce Ashfield <[email protected]> > --- > meta/classes/kernel-yocto.bbclass | 39 > +++++++++++++++++++++++---------------- > 1 file changed, 23 insertions(+), 16 deletions(-)
Looks like some versions of git on the AB cluster don't support this. Do we need to bump the minimum git version and install buildtools-tarball on the affected machines? Or can we use some other construct here? https://autobuilder.yoctoproject.org/main/builders/nightly-x86-64/builds/24/steps/BuildImages/logs/stdio Cheers, Richard > diff --git a/meta/classes/kernel-yocto.bbclass > b/meta/classes/kernel-yocto.bbclass > index 38c886b21b09..4938712c7cff 100644 > --- a/meta/classes/kernel-yocto.bbclass > +++ b/meta/classes/kernel-yocto.bbclass > @@ -71,6 +71,7 @@ do_patch() { > fi > > machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}" > + machine_srcrev="${SRCREV_machine}" > > # if we have a defined/set meta branch we should not be generating > # any meta data. The passed branch has what we need. > @@ -122,6 +123,17 @@ do_patch() { > exit 1 > fi > > + # see if the branch we are about to patch has been properly reset to > the defined > + # SRCREV .. if not, we reset it. > + branch_head=`git rev-parse HEAD` > + if [ "${machine_srcrev}" != "AUTOINC" ]; then > + if [ "${machine_srcrev}" != "${branch_head}" ]; then > + current_branch=`git rev-parse --abbrev-ref HEAD` > + git branch "$current_branch-orig" > + git reset --hard ${machine_srcrev} > + fi > + fi > + > # executes and modifies the source tree as required > patchme ${KMACHINE} > if [ $? -ne 0 ]; then > @@ -130,6 +142,17 @@ do_patch() { > exit 1 > fi > > + # check to see if the specified SRCREV is reachable from the final > branch. > + # if it wasn't something wrong has happened, and we should error. > + if [ "${machine_srcrev}" != "AUTOINC" ]; then > + git merge-base --is-ancestor ${machine_srcrev} HEAD > + if [ $? -ne 0 ]; then > + bbnote "ERROR: SRCREV ${machine_srcrev} was specified, > but is not reachable" > + bbnote " Check the BSP description for incorrect > branch selection, or other errors." > + exit 1 > + fi > + fi > + > # Perform a final check. If something other than the default kernel > # branch was requested, and that's not where we ended up, then we > # should thrown an error, since we aren't building what was expected > @@ -335,22 +358,6 @@ do_validate_branches() { > exit 1 > fi > > - # force the SRCREV in each branch that contains the specified > - # SRCREV (if it isn't the current HEAD of that branch) > - git checkout -q master > - for b in $containing_branches; do > - branch_head=`git show-ref -s --heads ${b}` > - if [ "$branch_head" != "$machine_srcrev" ]; then > - echo "[INFO] Setting branch $b to ${machine_srcrev}" > - if [ "$b" = "master" ]; then > - git reset --hard $machine_srcrev > /dev/null > - else > - git branch -D $b > /dev/null > - git branch $b $machine_srcrev > /dev/null > - fi > - fi > - done > - > ## KMETA branch validation. > ## We do validation if the meta branch exists, and AUTOREV hasn't been > set > meta_head=`git show-ref -s --heads ${KMETA}` -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
