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

Reply via email to