diff options
-rw-r--r-- | meta/classes/kernel-yocto.bbclass | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index 3311f6e84e..70818cc01c 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass | |||
@@ -212,11 +212,36 @@ do_kernel_metadata() { | |||
212 | fi | 212 | fi |
213 | meta_dir=$(kgit --meta) | 213 | meta_dir=$(kgit --meta) |
214 | 214 | ||
215 | KERNEL_FEATURES_FINAL="" | ||
216 | if [ -n "${KERNEL_FEATURES}" ]; then | ||
217 | for feature in ${KERNEL_FEATURES}; do | ||
218 | feature_found=f | ||
219 | for d in $includes; do | ||
220 | path_to_check=$(echo $d | sed 's/-I//g') | ||
221 | if [ "$feature_found" = "f" ] && [ -e "$path_to_check/$feature" ]; then | ||
222 | feature_found=t | ||
223 | fi | ||
224 | done | ||
225 | if [ "$feature_found" = "f" ]; then | ||
226 | if [ -n "${KERNEL_DANGLING_FEATURES_WARN_ONLY}" ]; then | ||
227 | bbwarn "Feature '$feature' not found, but KERNEL_DANGLING_FEATURES_WARN_ONLY is set" | ||
228 | bbwarn "This may cause runtime issues, dropping feature and allowing configuration to continue" | ||
229 | else | ||
230 | bberror "Feature '$feature' not found, this will cause configuration failures." | ||
231 | bberror "Check the SRC_URI for meta-data repositories or directories that may be missing" | ||
232 | bbfatal_log "Set KERNEL_DANGLING_FEATURES_WARN_ONLY to ignore this issue" | ||
233 | fi | ||
234 | else | ||
235 | KERNEL_FEATURES_FINAL="$KERNEL_FEATURES_FINAL $feature" | ||
236 | fi | ||
237 | done | ||
238 | fi | ||
239 | |||
215 | # run1: pull all the configuration fragments, no matter where they come from | 240 | # run1: pull all the configuration fragments, no matter where they come from |
216 | elements="`echo -n ${bsp_definition} $sccs_defconfig ${sccs} ${patches} ${KERNEL_FEATURES}`" | 241 | elements="`echo -n ${bsp_definition} $sccs_defconfig ${sccs} ${patches} $KERNEL_FEATURES_FINAL`" |
217 | if [ -n "${elements}" ]; then | 242 | if [ -n "${elements}" ]; then |
218 | echo "${bsp_definition}" > ${S}/${meta_dir}/bsp_definition | 243 | echo "${bsp_definition}" > ${S}/${meta_dir}/bsp_definition |
219 | scc --force -o ${S}/${meta_dir}:cfg,merge,meta ${includes} $sccs_defconfig $bsp_definition $sccs $patches ${KERNEL_FEATURES} | 244 | scc --force -o ${S}/${meta_dir}:cfg,merge,meta ${includes} $sccs_defconfig $bsp_definition $sccs $patches $KERNEL_FEATURES_FINAL |
220 | if [ $? -ne 0 ]; then | 245 | if [ $? -ne 0 ]; then |
221 | bbfatal_log "Could not generate configuration queue for ${KMACHINE}." | 246 | bbfatal_log "Could not generate configuration queue for ${KMACHINE}." |
222 | fi | 247 | fi |
@@ -230,9 +255,9 @@ do_kernel_metadata() { | |||
230 | fi | 255 | fi |
231 | 256 | ||
232 | # run2: only generate patches for elements that have been passed on the SRC_URI | 257 | # run2: only generate patches for elements that have been passed on the SRC_URI |
233 | elements="`echo -n ${sccs} ${patches} ${KERNEL_FEATURES}`" | 258 | elements="`echo -n ${sccs} ${patches} $KERNEL_FEATURES_FINAL`" |
234 | if [ -n "${elements}" ]; then | 259 | if [ -n "${elements}" ]; then |
235 | scc --force -o ${S}/${meta_dir}:patch --cmds patch ${includes} ${sccs} ${patches} ${KERNEL_FEATURES} | 260 | scc --force -o ${S}/${meta_dir}:patch --cmds patch ${includes} ${sccs} ${patches} $KERNEL_FEATURES_FINAL |
236 | if [ $? -ne 0 ]; then | 261 | if [ $? -ne 0 ]; then |
237 | bbfatal_log "Could not generate configuration queue for ${KMACHINE}." | 262 | bbfatal_log "Could not generate configuration queue for ${KMACHINE}." |
238 | fi | 263 | fi |