diff options
-rw-r--r-- | meta/classes/kernel-yocto.bbclass | 70 |
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 | ||
32 | def 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 |
47 | def find_kernel_feature_dirs(d): | 32 | def 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. | ||
49 | def 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 | ||
63 | do_patch() { | 60 | do_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 |