[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openembedded-core
Subject:    [OE-core] [PATCH 02/18] kernel-yocto: move SRCREV validation to patching phase
From:       bruce.ashfield () windriver ! com (Bruce Ashfield)
Date:       2014-08-31 5:25:31
Message-ID: 5402B1CB.1060803 () windriver ! com
[Download RAW message or body]

On 2014-08-30, 9:55 AM, Richard Purdie wrote:
> 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 <bruce.ashfield at windriver.com>
> > ---
> > 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
>  

I pushed a patch to my contrib kernel/zedd patch that should address this,
and I've also attached it here.

We simply switch back to the more basic commands, and will worry about
--is-ancestor at some point in the future :)

This passed my two tests here.

Bruce

> 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}`
> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-kernel-yocto-replace-is-ancestor-with-basic-git-porc.patch
Type: application/mbox
Size: 1541 bytes
Desc: not available
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20140831/cf26f5c9/attachment.mbox>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic