diff options
Diffstat (limited to 'meta/classes/kernel-yocto.bbclass')
-rw-r--r-- | meta/classes/kernel-yocto.bbclass | 115 |
1 files changed, 60 insertions, 55 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index c995a2ef57..c6425b2b69 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass | |||
@@ -45,9 +45,6 @@ def find_urls(d): | |||
45 | 45 | ||
46 | do_patch() { | 46 | do_patch() { |
47 | cd ${S} | 47 | cd ${S} |
48 | if [ -f ${WORKDIR}/defconfig ]; then | ||
49 | defconfig=${WORKDIR}/defconfig | ||
50 | fi | ||
51 | 48 | ||
52 | # if kernel tools are available in-tree, they are preferred | 49 | # if kernel tools are available in-tree, they are preferred |
53 | # and are placed on the path before any external tools. Unless | 50 | # and are placed on the path before any external tools. Unless |
@@ -59,16 +56,13 @@ do_patch() { | |||
59 | fi | 56 | fi |
60 | 57 | ||
61 | kbranch=${KBRANCH} | 58 | kbranch=${KBRANCH} |
62 | if [ -n "${YOCTO_KERNEL_EXTERNAL_BRANCH}" ]; then | ||
63 | # switch from a generic to a specific branch | ||
64 | kbranch=${YOCTO_KERNEL_EXTERNAL_BRANCH} | ||
65 | fi | ||
66 | 59 | ||
67 | # simply ensures that a branch of the right name has been created | 60 | # if we have a defined/set meta branch we should not be generating |
68 | if [ -n "${YOCTO_KERNEL_META_DATA}" ]; then | 61 | # any meta data. The passed branch has what we need. |
62 | if [ -n "${KMETA}" ]; then | ||
69 | createme_flags="--disable-meta-gen" | 63 | createme_flags="--disable-meta-gen" |
70 | fi | 64 | fi |
71 | createme ${createme_flags} ${ARCH} ${kbranch} ${defconfig} | 65 | createme ${createme_flags} ${ARCH} ${kbranch} |
72 | if [ $? -ne 0 ]; then | 66 | if [ $? -ne 0 ]; then |
73 | echo "ERROR. Could not create ${kbranch}" | 67 | echo "ERROR. Could not create ${kbranch}" |
74 | exit 1 | 68 | exit 1 |
@@ -95,7 +89,7 @@ do_patch() { | |||
95 | fi | 89 | fi |
96 | 90 | ||
97 | # executes and modifies the source tree as required | 91 | # executes and modifies the source tree as required |
98 | patchme ${kbranch} | 92 | patchme ${KMACHINE} |
99 | if [ $? -ne 0 ]; then | 93 | if [ $? -ne 0 ]; then |
100 | echo "ERROR. Could not modify ${kbranch}" | 94 | echo "ERROR. Could not modify ${kbranch}" |
101 | exit 1 | 95 | exit 1 |
@@ -122,7 +116,7 @@ do_kernel_checkout() { | |||
122 | mv ${WORKDIR}/git/.git ${S} | 116 | mv ${WORKDIR}/git/.git ${S} |
123 | rm -rf ${WORKDIR}/git/ | 117 | rm -rf ${WORKDIR}/git/ |
124 | cd ${S} | 118 | cd ${S} |
125 | if [ -n "${YOCTO_KERNEL_META_DATA}" ] && [ -n "${KMETA}" ]; then | 119 | if [ -n "${KMETA}" ]; then |
126 | git branch -a | grep -q ${KMETA} | 120 | git branch -a | grep -q ${KMETA} |
127 | if [ $? -ne 0 ]; then | 121 | if [ $? -ne 0 ]; then |
128 | echo "ERROR. The branch '${KMETA}' is required and was not" | 122 | echo "ERROR. The branch '${KMETA}' is required and was not" |
@@ -131,15 +125,6 @@ do_kernel_checkout() { | |||
131 | exit 1 | 125 | exit 1 |
132 | fi | 126 | fi |
133 | fi | 127 | fi |
134 | if [ -z "${YOCTO_KERNEL_EXTERNAL_BRANCH}" ] && [ -n "${KBRANCH}" ] ; then | ||
135 | git branch -a | grep -q ${KBRANCH} | ||
136 | if [ $? -ne 0 ]; then | ||
137 | echo "ERROR. The branch '${KBRANCH}' is required and was not" | ||
138 | echo "found. Ensure that the SRC_URI points to a valid linux-yocto" | ||
139 | echo "kernel repository" | ||
140 | exit 1 | ||
141 | fi | ||
142 | fi | ||
143 | fi | 128 | fi |
144 | if [ -d "${WORKDIR}/git/" ] && [ ! -d "${WORKDIR}/git/.git" ]; then | 129 | if [ -d "${WORKDIR}/git/" ] && [ ! -d "${WORKDIR}/git/.git" ]; then |
145 | # we build out of {S}, so ensure that ${S} is clean and present | 130 | # we build out of {S}, so ensure that ${S} is clean and present |
@@ -192,7 +177,7 @@ do_kernel_configme() { | |||
192 | 177 | ||
193 | cd ${S} | 178 | cd ${S} |
194 | PATH=${PATH}:${S}/scripts/util | 179 | PATH=${PATH}:${S}/scripts/util |
195 | configme ${configmeflags} --reconfig --output ${B} ${KBRANCH} ${KMACHINE} | 180 | configme ${configmeflags} --reconfig --output ${B} ${LINUX_KERNEL_TYPE} ${KMACHINE} |
196 | if [ $? -ne 0 ]; then | 181 | if [ $? -ne 0 ]; then |
197 | echo "ERROR. Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}" | 182 | echo "ERROR. Could not configure ${KMACHINE}-${LINUX_KERNEL_TYPE}" |
198 | exit 1 | 183 | exit 1 |
@@ -221,51 +206,71 @@ python do_kernel_configcheck() { | |||
221 | do_validate_branches() { | 206 | do_validate_branches() { |
222 | cd ${S} | 207 | cd ${S} |
223 | 208 | ||
224 | # nothing to do if bootstrapping | 209 | set +e |
225 | if [ -n "${YOCTO_KERNEL_EXTERNAL_BRANCH}" ]; then | 210 | # if SRCREV is AUTOREV it shows up as AUTOINC there's nothing to |
226 | return | 211 | # check and we can exit early |
227 | fi | ||
228 | |||
229 | # nothing to do if SRCREV is AUTOREV | ||
230 | if [ "${SRCREV_machine}" = "AUTOINC" ]; then | 212 | if [ "${SRCREV_machine}" = "AUTOINC" ]; then |
231 | # restore the branch for builds | 213 | return |
232 | git checkout -f ${KBRANCH} | 214 | fi |
215 | |||
216 | # if the branches do not exist, then there's nothing to check either | ||
217 | git show-ref --quiet --verify -- "refs/heads/${KBRANCH}" | ||
218 | if [ $? -eq 1 ]; then | ||
233 | return | 219 | return |
234 | fi | 220 | fi |
235 | 221 | ||
236 | branch_head=`git show-ref -s --heads ${KBRANCH}` | 222 | branch_head=`git show-ref -s --heads ${KBRANCH}` |
237 | meta_head=`git show-ref -s --heads ${KMETA}` | 223 | if [ -z "${SRCREV_machine}" ]; then |
238 | target_branch_head="${SRCREV_machine}" | 224 | target_branch_head="${SRCREV}" |
239 | target_meta_head="${SRCREV_meta}" | 225 | else |
226 | target_branch_head="${SRCREV_machine}" | ||
227 | fi | ||
228 | |||
229 | if [ "${target_branch_head}" = "AUTOINC" ]; then | ||
230 | return | ||
231 | fi | ||
240 | 232 | ||
233 | # We have SRCREVs and we have branches so validation can continue! | ||
241 | current=`git branch |grep \*|sed 's/^\* //'` | 234 | current=`git branch |grep \*|sed 's/^\* //'` |
242 | if [ -n "$target_branch_head" ] && [ "$branch_head" != "$target_branch_head" ]; then | 235 | if [ -n "$target_branch_head" ] && [ "$branch_head" != "$target_branch_head" ] && |
243 | if [ -n "${KERNEL_REVISION_CHECKING}" ]; then | 236 | [ "$target_branch_head" != "AUTOINC" ]; then |
244 | ref=`git show ${target_meta_head} 2>&1 | head -n1 || true` | 237 | ref=`git show ${target_branch_head} 2>&1 | head -n1 || true` |
245 | if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then | 238 | if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then |
246 | echo "ERROR ${target_branch_head} is not a valid commit ID." | 239 | echo "ERROR ${target_branch_head} is not a valid commit ID." |
247 | echo "The kernel source tree may be out of sync" | 240 | echo "The kernel source tree may be out of sync" |
248 | exit 1 | 241 | exit 1 |
249 | else | 242 | else |
250 | echo "Forcing branch $current to ${target_branch_head}" | 243 | echo "Forcing branch $current to ${target_branch_head}" |
251 | git branch -m $current $current-orig | 244 | git branch -m $current $current-orig |
252 | git checkout -b $current ${target_branch_head} | 245 | git checkout -b $current ${target_branch_head} |
253 | fi | ||
254 | fi | 246 | fi |
255 | fi | 247 | fi |
256 | 248 | ||
249 | meta_head=`git show-ref -s --heads ${KMETA}` | ||
250 | target_meta_head="${SRCREV_meta}" | ||
251 | git show-ref --quiet --verify -- "refs/heads/${KMETA}" | ||
252 | if [ $? -eq 1 ]; then | ||
253 | return | ||
254 | fi | ||
255 | |||
256 | if [ "${target_meta_head}" = "AUTOINC" ]; then | ||
257 | return | ||
258 | fi | ||
259 | |||
257 | if [ "$meta_head" != "$target_meta_head" ]; then | 260 | if [ "$meta_head" != "$target_meta_head" ]; then |
258 | if [ -n "${KERNEL_REVISION_CHECKING}" ]; then | 261 | ref=`git show ${target_meta_head} 2>&1 | head -n1 || true` |
259 | ref=`git show ${target_meta_head} 2>&1 | head -n1 || true` | 262 | if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then |
260 | if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then | 263 | echo "ERROR ${target_meta_head} is not a valid commit ID" |
261 | echo "ERROR ${target_meta_head} is not a valid commit ID" | 264 | echo "The kernel source tree may be out of sync" |
262 | echo "The kernel source tree may be out of sync" | 265 | exit 1 |
266 | else | ||
267 | echo "Forcing branch meta to ${target_meta_head}" | ||
268 | git branch -m ${KMETA} ${KMETA}-orig | ||
269 | git checkout -b ${KMETA} ${target_meta_head} | ||
270 | if [ $? -ne 0 ];then | ||
271 | echo "ERROR: could not checkout meta branch from known hash ${target_meta_head}" | ||
263 | exit 1 | 272 | exit 1 |
264 | else | 273 | fi |
265 | echo "Forcing branch meta to ${target_meta_head}" | ||
266 | git branch -m ${KMETA} ${KMETA}-orig | ||
267 | git checkout -b ${KMETA} ${target_meta_head} | ||
268 | fi | ||
269 | fi | 274 | fi |
270 | fi | 275 | fi |
271 | 276 | ||