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 |
