diff options
-rw-r--r-- | meta/classes/kernel-yocto.bbclass | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index 38c886b21b..4938712c7c 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass | |||
@@ -71,6 +71,7 @@ do_patch() { | |||
71 | fi | 71 | fi |
72 | 72 | ||
73 | machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}" | 73 | machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}" |
74 | machine_srcrev="${SRCREV_machine}" | ||
74 | 75 | ||
75 | # if we have a defined/set meta branch we should not be generating | 76 | # if we have a defined/set meta branch we should not be generating |
76 | # any meta data. The passed branch has what we need. | 77 | # any meta data. The passed branch has what we need. |
@@ -122,6 +123,17 @@ do_patch() { | |||
122 | exit 1 | 123 | exit 1 |
123 | fi | 124 | fi |
124 | 125 | ||
126 | # see if the branch we are about to patch has been properly reset to the defined | ||
127 | # SRCREV .. if not, we reset it. | ||
128 | branch_head=`git rev-parse HEAD` | ||
129 | if [ "${machine_srcrev}" != "AUTOINC" ]; then | ||
130 | if [ "${machine_srcrev}" != "${branch_head}" ]; then | ||
131 | current_branch=`git rev-parse --abbrev-ref HEAD` | ||
132 | git branch "$current_branch-orig" | ||
133 | git reset --hard ${machine_srcrev} | ||
134 | fi | ||
135 | fi | ||
136 | |||
125 | # executes and modifies the source tree as required | 137 | # executes and modifies the source tree as required |
126 | patchme ${KMACHINE} | 138 | patchme ${KMACHINE} |
127 | if [ $? -ne 0 ]; then | 139 | if [ $? -ne 0 ]; then |
@@ -130,6 +142,17 @@ do_patch() { | |||
130 | exit 1 | 142 | exit 1 |
131 | fi | 143 | fi |
132 | 144 | ||
145 | # check to see if the specified SRCREV is reachable from the final branch. | ||
146 | # if it wasn't something wrong has happened, and we should error. | ||
147 | if [ "${machine_srcrev}" != "AUTOINC" ]; then | ||
148 | git merge-base --is-ancestor ${machine_srcrev} HEAD | ||
149 | if [ $? -ne 0 ]; then | ||
150 | bbnote "ERROR: SRCREV ${machine_srcrev} was specified, but is not reachable" | ||
151 | bbnote " Check the BSP description for incorrect branch selection, or other errors." | ||
152 | exit 1 | ||
153 | fi | ||
154 | fi | ||
155 | |||
133 | # Perform a final check. If something other than the default kernel | 156 | # Perform a final check. If something other than the default kernel |
134 | # branch was requested, and that's not where we ended up, then we | 157 | # branch was requested, and that's not where we ended up, then we |
135 | # should thrown an error, since we aren't building what was expected | 158 | # should thrown an error, since we aren't building what was expected |
@@ -335,22 +358,6 @@ do_validate_branches() { | |||
335 | exit 1 | 358 | exit 1 |
336 | fi | 359 | fi |
337 | 360 | ||
338 | # force the SRCREV in each branch that contains the specified | ||
339 | # SRCREV (if it isn't the current HEAD of that branch) | ||
340 | git checkout -q master | ||
341 | for b in $containing_branches; do | ||
342 | branch_head=`git show-ref -s --heads ${b}` | ||
343 | if [ "$branch_head" != "$machine_srcrev" ]; then | ||
344 | echo "[INFO] Setting branch $b to ${machine_srcrev}" | ||
345 | if [ "$b" = "master" ]; then | ||
346 | git reset --hard $machine_srcrev > /dev/null | ||
347 | else | ||
348 | git branch -D $b > /dev/null | ||
349 | git branch $b $machine_srcrev > /dev/null | ||
350 | fi | ||
351 | fi | ||
352 | done | ||
353 | |||
354 | ## KMETA branch validation. | 361 | ## KMETA branch validation. |
355 | ## We do validation if the meta branch exists, and AUTOREV hasn't been set | 362 | ## We do validation if the meta branch exists, and AUTOREV hasn't been set |
356 | meta_head=`git show-ref -s --heads ${KMETA}` | 363 | meta_head=`git show-ref -s --heads ${KMETA}` |