summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/kernel-yocto.bbclass70
1 files changed, 38 insertions, 32 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 8494c16787..368f91e43e 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -27,21 +27,6 @@ def find_sccs(d):
27 27
28 return sources_list 28 return sources_list
29 29
30# this is different from find_patches, in that it returns a colon separated
31# list of <patches>:<subdir> instead of just a list of patches
32def find_urls(d):
33 patches=src_patches(d)
34 fetch = bb.fetch2.Fetch([], d)
35 patch_list=[]
36 for p in patches:
37 _, _, local, _, _, _ = bb.decodeurl(p)
38 for url in fetch.urls:
39 urldata = fetch.ud[url]
40 if urldata.localpath == local:
41 patch_list.append(local+':'+urldata.path)
42
43 return patch_list
44
45# check the SRC_URI for "kmeta" type'd git repositories. Return the name of 30# check the SRC_URI for "kmeta" type'd git repositories. Return the name of
46# the repository as it will be found in WORKDIR 31# the repository as it will be found in WORKDIR
47def find_kernel_feature_dirs(d): 32def find_kernel_feature_dirs(d):
@@ -59,6 +44,18 @@ def find_kernel_feature_dirs(d):
59 44
60 return feature_dirs 45 return feature_dirs
61 46
47# find the master/machine source branch. In the same way that the fetcher proceses
48# git repositories in the SRC_URI we take the first repo found, first branch.
49def get_machine_branch(d):
50 fetch = bb.fetch2.Fetch([], d)
51 for url in fetch.urls:
52 urldata = fetch.ud[url]
53 parm = urldata.parm
54 if "branch" in parm:
55 branches = urldata.parm.get("branch").split(',')
56 return branches[0]
57
58 return "master"
62 59
63do_patch() { 60do_patch() {
64 cd ${S} 61 cd ${S}
@@ -73,7 +70,7 @@ do_patch() {
73 fi 70 fi
74 fi 71 fi
75 72
76 kbranch=${KBRANCH} 73 machine_branch="${@ get_machine_branch(d)}"
77 74
78 # if we have a defined/set meta branch we should not be generating 75 # if we have a defined/set meta branch we should not be generating
79 # any meta data. The passed branch has what we need. 76 # any meta data. The passed branch has what we need.
@@ -81,9 +78,9 @@ do_patch() {
81 createme_flags="--disable-meta-gen --meta ${KMETA}" 78 createme_flags="--disable-meta-gen --meta ${KMETA}"
82 fi 79 fi
83 80
84 createme ${createme_flags} ${ARCH} ${kbranch} 81 createme ${createme_flags} ${ARCH} ${machine_branch}
85 if [ $? -ne 0 ]; then 82 if [ $? -ne 0 ]; then
86 echo "ERROR. Could not create ${kbranch}" 83 echo "ERROR. Could not create ${machine_branch}"
87 exit 1 84 exit 1
88 fi 85 fi
89 86
@@ -113,15 +110,15 @@ do_patch() {
113 done 110 done
114 fi 111 fi
115 112
116 if [ "${kbranch}" != "${KBRANCH_DEFAULT}" ]; then 113 if [ "${machine_branch}" != "${KBRANCH_DEFAULT}" ]; then
117 updateme_flags="--branch ${kbranch}" 114 updateme_flags="--branch ${machine_branch}"
118 fi 115 fi
119 116
120 # updates or generates the target description 117 # updates or generates the target description
121 updateme ${updateme_flags} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \ 118 updateme ${updateme_flags} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \
122 ${includes} ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches} 119 ${includes} ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches}
123 if [ $? -ne 0 ]; then 120 if [ $? -ne 0 ]; then
124 echo "ERROR. Could not update ${kbranch}" 121 echo "ERROR. Could not update ${machine_branch}"
125 exit 1 122 exit 1
126 fi 123 fi
127 124
@@ -138,9 +135,9 @@ do_patch() {
138 # should thrown an error, since we aren't building what was expected 135 # should thrown an error, since we aren't building what was expected
139 final_branch="$(git symbolic-ref HEAD 2>/dev/null)" 136 final_branch="$(git symbolic-ref HEAD 2>/dev/null)"
140 final_branch=${final_branch##refs/heads/} 137 final_branch=${final_branch##refs/heads/}
141 if [ "${kbranch}" != "${KBRANCH_DEFAULT}" ] && 138 if [ "${machine_branch}" != "${KBRANCH_DEFAULT}" ] &&
142 [ "${final_branch}" != "${kbranch}" ]; then 139 [ "${final_branch}" != "${machine_branch}" ]; then
143 echo "ERROR: branch ${kbranch} was requested, but was not properly" 140 echo "ERROR: branch ${machine_branch} was requested, but was not properly"
144 echo " configured to be built. The current branch is ${final_branch}" 141 echo " configured to be built. The current branch is ${final_branch}"
145 exit 1 142 exit 1
146 fi 143 fi
@@ -192,6 +189,13 @@ do_kernel_checkout() {
192 exit 1 189 exit 1
193 fi 190 fi
194 fi 191 fi
192
193 machine_branch="${@ get_machine_branch(d)}"
194 if [ "${KBRANCH}" != "${machine_branch}" ]; then
195 echo "WARNING: The SRC_URI machine branch and KBRANCH are not the same."
196 echo " KBRANCH will be adjusted to match, but this typically is a"
197 echo " misconfiguration and should be checked."
198 fi
195 199
196 # convert any remote branches to local tracking ones 200 # convert any remote branches to local tracking ones
197 for i in `git branch -a | grep remotes | grep -v HEAD`; do 201 for i in `git branch -a | grep remotes | grep -v HEAD`; do
@@ -203,12 +207,12 @@ do_kernel_checkout() {
203 done 207 done
204 208
205 # Create a working tree copy of the kernel by checking out a branch 209 # Create a working tree copy of the kernel by checking out a branch
206 git show-ref --quiet --verify -- "refs/heads/${KBRANCH}" 210 git show-ref --quiet --verify -- "refs/heads/${machine_branch}"
207 if [ $? -eq 0 ]; then 211 if [ $? -eq 0 ]; then
208 # checkout and clobber any unimportant files 212 # checkout and clobber any unimportant files
209 git checkout -f ${KBRANCH} 213 git checkout -f ${machine_branch}
210 else 214 else
211 echo "Not checking out ${KBRANCH}, it will be created later" 215 echo "Not checking out ${machine_branch}, it will be created later"
212 git checkout -f master 216 git checkout -f master
213 fi 217 fi
214} 218}
@@ -271,6 +275,8 @@ do_validate_branches() {
271 cd ${S} 275 cd ${S}
272 export KMETA=${KMETA} 276 export KMETA=${KMETA}
273 277
278 machine_branch="${@ get_machine_branch(d)}"
279
274 set +e 280 set +e
275 # if SRCREV is AUTOREV it shows up as AUTOINC there's nothing to 281 # if SRCREV is AUTOREV it shows up as AUTOINC there's nothing to
276 # check and we can exit early 282 # check and we can exit early
@@ -280,11 +286,11 @@ do_validate_branches() {
280 286
281 # If something other than the default branch was requested, it must 287 # If something other than the default branch was requested, it must
282 # exist in the tree, and it's a hard error if it wasn't 288 # exist in the tree, and it's a hard error if it wasn't
283 git show-ref --quiet --verify -- "refs/heads/${KBRANCH}" 289 git show-ref --quiet --verify -- "refs/heads/${machine_branch}"
284 if [ $? -eq 1 ]; then 290 if [ $? -eq 1 ]; then
285 if [ -n "${KBRANCH_DEFAULT}" ] && 291 if [ -n "${KBRANCH_DEFAULT}" ] &&
286 [ "${KBRANCH}" != "${KBRANCH_DEFAULT}" ]; then 292 [ "${machine_branch}" != "${KBRANCH_DEFAULT}" ]; then
287 echo "ERROR: branch ${KBRANCH} was set for kernel compilation, " 293 echo "ERROR: branch ${machine_branch} was set for kernel compilation, "
288 echo " but it does not exist in the kernel repository." 294 echo " but it does not exist in the kernel repository."
289 echo " Check the value of KBRANCH and ensure that it describes" 295 echo " Check the value of KBRANCH and ensure that it describes"
290 echo " a valid banch in the source kernel repository" 296 echo " a valid banch in the source kernel repository"
@@ -362,10 +368,10 @@ do_validate_branches() {
362 fi 368 fi
363 fi 369 fi
364 370
365 git show-ref --quiet --verify -- "refs/heads/${KBRANCH}" 371 git show-ref --quiet --verify -- "refs/heads/${machine_branch}"
366 if [ $? -eq 0 ]; then 372 if [ $? -eq 0 ]; then
367 # restore the branch for builds 373 # restore the branch for builds
368 git checkout -q -f ${KBRANCH} 374 git checkout -q -f ${machine_branch}
369 else 375 else
370 git checkout -q master 376 git checkout -q master
371 fi 377 fi