diff options
-rw-r--r-- | meta/classes/kernel-yocto.bbclass | 88 | ||||
-rw-r--r-- | meta/recipes-kernel/kern-tools/kern-tools-native_git.bb | 2 |
2 files changed, 63 insertions, 27 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index f09d503b92..10a8d40d9c 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass | |||
@@ -80,8 +80,12 @@ do_patch() { | |||
80 | done | 80 | done |
81 | fi | 81 | fi |
82 | 82 | ||
83 | if [ "${kbranch}" != "${KBRANCH_DEFAULT}" ]; then | ||
84 | updateme_flags="--branch ${kbranch}" | ||
85 | fi | ||
86 | |||
83 | # updates or generates the target description | 87 | # updates or generates the target description |
84 | updateme --branch ${kbranch} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \ | 88 | updateme ${updateme_flags} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \ |
85 | ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches} | 89 | ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches} |
86 | if [ $? -ne 0 ]; then | 90 | if [ $? -ne 0 ]; then |
87 | echo "ERROR. Could not update ${kbranch}" | 91 | echo "ERROR. Could not update ${kbranch}" |
@@ -91,7 +95,19 @@ do_patch() { | |||
91 | # executes and modifies the source tree as required | 95 | # executes and modifies the source tree as required |
92 | patchme ${KMACHINE} | 96 | patchme ${KMACHINE} |
93 | if [ $? -ne 0 ]; then | 97 | if [ $? -ne 0 ]; then |
94 | echo "ERROR. Could not modify ${kbranch}" | 98 | echo "ERROR. Could not apply updates for ${KMACHINE}" |
99 | exit 1 | ||
100 | fi | ||
101 | |||
102 | # Perform a final check. If something other than the default kernel | ||
103 | # branch was requested, and that's not where we ended up, then we | ||
104 | # should thrown an error, since we aren't building what was expected | ||
105 | final_branch="$(git symbolic-ref HEAD 2>/dev/null)" | ||
106 | final_branch=${final_branch##refs/heads/} | ||
107 | if [ "${kbranch}" != "${KBRANCH_DEFAULT}" ] && | ||
108 | [ "${final_branch}" != "${kbranch}" ]; then | ||
109 | echo "ERROR: branch ${kbranch} was requested, but was not properly" | ||
110 | echo " configured to be built. The current branch is ${final_branch}" | ||
95 | exit 1 | 111 | exit 1 |
96 | fi | 112 | fi |
97 | } | 113 | } |
@@ -199,10 +215,9 @@ python do_kernel_configcheck() { | |||
199 | bb.plain( "%s" % result ) | 215 | bb.plain( "%s" % result ) |
200 | } | 216 | } |
201 | 217 | ||
202 | |||
203 | # Ensure that the branches (BSP and meta) are on the locations specified by | 218 | # Ensure that the branches (BSP and meta) are on the locations specified by |
204 | # their SRCREV values. If they are NOT on the right commits, the branches | 219 | # their SRCREV values. If they are NOT on the right commits, the branches |
205 | # are reset to the correct commit. | 220 | # are corrected to the proper commit. |
206 | do_validate_branches() { | 221 | do_validate_branches() { |
207 | cd ${S} | 222 | cd ${S} |
208 | 223 | ||
@@ -213,39 +228,57 @@ do_validate_branches() { | |||
213 | return | 228 | return |
214 | fi | 229 | fi |
215 | 230 | ||
216 | # if the branches do not exist, then there's nothing to check either | 231 | # If something other than the default branch was requested, it must |
232 | # exist in the tree, and it's a hard error if it wasn't | ||
217 | git show-ref --quiet --verify -- "refs/heads/${KBRANCH}" | 233 | git show-ref --quiet --verify -- "refs/heads/${KBRANCH}" |
218 | if [ $? -eq 1 ]; then | 234 | if [ $? -eq 1 ]; then |
219 | return | 235 | if [ -n "${KBRANCH_DEFAULT}" ] && |
236 | [ "${KBRANCH}" != "${KBRANCH_DEFAULT}" ]; then | ||
237 | echo "ERROR: branch ${KBRANCH} was set for kernel compilation, " | ||
238 | echo " but it does not exist in the kernel repository." | ||
239 | echo " Check the value of KBRANCH and ensure that it describes" | ||
240 | echo " a valid banch in the source kernel repository" | ||
241 | exit 1 | ||
242 | fi | ||
220 | fi | 243 | fi |
221 | 244 | ||
222 | branch_head=`git show-ref -s --heads ${KBRANCH}` | ||
223 | if [ -z "${SRCREV_machine}" ]; then | 245 | if [ -z "${SRCREV_machine}" ]; then |
224 | target_branch_head="${SRCREV}" | 246 | target_branch_head="${SRCREV}" |
225 | else | 247 | else |
226 | target_branch_head="${SRCREV_machine}" | 248 | target_branch_head="${SRCREV_machine}" |
227 | fi | 249 | fi |
228 | 250 | ||
251 | # $SRCREV could have also been AUTOINC, so check again | ||
229 | if [ "${target_branch_head}" = "AUTOINC" ]; then | 252 | if [ "${target_branch_head}" = "AUTOINC" ]; then |
230 | return | 253 | return |
231 | fi | 254 | fi |
232 | 255 | ||
233 | # We have SRCREVs and we have branches so validation can continue! | 256 | containing_branches=`git branch --contains $target_branch_head | sed 's/^..//'` |
234 | current=`git branch |grep \*|sed 's/^\* //'` | 257 | if [ -z "$containing_branches" ]; then |
235 | if [ -n "$target_branch_head" ] && [ "$branch_head" != "$target_branch_head" ] && | 258 | echo "ERROR: SRCREV was set to \"$target_branch_head\", but no branches" |
236 | [ "$target_branch_head" != "AUTOINC" ]; then | 259 | echo " contain this commit" |
237 | ref=`git show ${target_branch_head} 2>&1 | head -n1 || true` | 260 | exit 1 |
238 | if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then | 261 | fi |
239 | echo "ERROR ${target_branch_head} is not a valid commit ID." | 262 | ref=`git show ${target_branch_head} 2>&1 | head -n1 || true` |
240 | echo "The kernel source tree may be out of sync" | 263 | if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then |
241 | exit 1 | 264 | echo "ERROR ${target_branch_head} is not a valid commit ID." |
242 | else | 265 | echo "The kernel source tree may be out of sync" |
243 | echo "Forcing branch $current to ${target_branch_head}" | 266 | exit 1 |
244 | git branch -m $current $current-orig | ||
245 | git checkout -b $current ${target_branch_head} | ||
246 | fi | ||
247 | fi | 267 | fi |
248 | 268 | ||
269 | # force the SRCREV in each branch that contains the specified | ||
270 | # SRCREV (if it isn't the current HEAD of that branch) | ||
271 | git checkout -q master | ||
272 | for b in $containing_branches; do | ||
273 | branch_head=`git show-ref -s --heads ${b}` | ||
274 | if [ "$branch_head" != "$target_branch_head" ]; then | ||
275 | echo "[INFO] Setting branch $b to ${target_branch_head}" | ||
276 | git branch -D $b > /dev/null | ||
277 | git branch $b $target_branch_head > /dev/null | ||
278 | fi | ||
279 | done | ||
280 | |||
281 | ## KMETA branch validation | ||
249 | meta_head=`git show-ref -s --heads ${KMETA}` | 282 | meta_head=`git show-ref -s --heads ${KMETA}` |
250 | target_meta_head="${SRCREV_meta}" | 283 | target_meta_head="${SRCREV_meta}" |
251 | git show-ref --quiet --verify -- "refs/heads/${KMETA}" | 284 | git show-ref --quiet --verify -- "refs/heads/${KMETA}" |
@@ -264,18 +297,21 @@ do_validate_branches() { | |||
264 | echo "The kernel source tree may be out of sync" | 297 | echo "The kernel source tree may be out of sync" |
265 | exit 1 | 298 | exit 1 |
266 | else | 299 | else |
267 | echo "Forcing branch meta to ${target_meta_head}" | 300 | echo "[INFO] Setting branch ${KMETA} to ${target_meta_head}" |
268 | git branch -m ${KMETA} ${KMETA}-orig | 301 | git branch -m ${KMETA} ${KMETA}-orig |
269 | git checkout -b ${KMETA} ${target_meta_head} | 302 | git checkout -q -b ${KMETA} ${target_meta_head} |
270 | if [ $? -ne 0 ];then | 303 | if [ $? -ne 0 ];then |
271 | echo "ERROR: could not checkout meta branch from known hash ${target_meta_head}" | 304 | echo "ERROR: could not checkout ${KMETA} branch from known hash ${target_meta_head}" |
272 | exit 1 | 305 | exit 1 |
273 | fi | 306 | fi |
274 | fi | 307 | fi |
275 | fi | 308 | fi |
276 | 309 | ||
277 | # restore the branch for builds | 310 | git show-ref --quiet --verify -- "refs/heads/${KBRANCH}" |
278 | git checkout -f ${KBRANCH} | 311 | if [ $? -eq 0 ]; then |
312 | # restore the branch for builds | ||
313 | git checkout -q -f ${KBRANCH} | ||
314 | fi | ||
279 | } | 315 | } |
280 | 316 | ||
281 | # Many scripts want to look in arch/$arch/boot for the bootable | 317 | # Many scripts want to look in arch/$arch/boot for the bootable |
diff --git a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb index f47262f79f..0cb111c271 100644 --- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb +++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb | |||
@@ -4,7 +4,7 @@ LIC_FILES_CHKSUM = "file://git/tools/kgit;beginline=5;endline=9;md5=d8d1d729a70c | |||
4 | 4 | ||
5 | DEPENDS = "git-native guilt-native" | 5 | DEPENDS = "git-native guilt-native" |
6 | 6 | ||
7 | SRCREV = "b8dfd3d641400a8dfbf16868ee64f524508c80b7" | 7 | SRCREV = "12c39b76eca4ed993b5ffb38cbe89e0608b216c3" |
8 | PR = "r12" | 8 | PR = "r12" |
9 | PV = "0.1+git${SRCPV}" | 9 | PV = "0.1+git${SRCPV}" |
10 | 10 | ||