[OE-core] [PATCH 02/18] kernel-yocto: move SRCREV validation to patching phase

Bruce Ashfield bruce.ashfield at gmail.com
Sun Aug 31 00:52:10 UTC 2014


On Sat, Aug 30, 2014 at 9:55 AM, Richard Purdie
<richard.purdie at linuxfoundation.org> 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?

Ah crap. After I sent the series, I meant to follow up and say just this .. that
if I use the ancestor construct .. it may cause problems.

I have a fallback strategy and will send an incremental patch on the end of the
series.

Bruce

>
> 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
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the Openembedded-core mailing list