diff options
| -rw-r--r-- | meta/classes/kernel-yocto.bbclass | 33 | 
1 files changed, 21 insertions, 12 deletions
| diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index 5bc627066e..41d8620e67 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass | |||
| @@ -131,7 +131,7 @@ do_kernel_metadata() { | |||
| 131 | else | 131 | else | 
| 132 | cp -f ${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG} ${WORKDIR}/defconfig | 132 | cp -f ${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG} ${WORKDIR}/defconfig | 
| 133 | fi | 133 | fi | 
| 134 | sccs="${WORKDIR}/defconfig" | 134 | in_tree_defconfig="${WORKDIR}/defconfig" | 
| 135 | else | 135 | else | 
| 136 | bbfatal "A KBUILD_DEFCONFIG '${KBUILD_DEFCONFIG}' was specified, but not present in the source tree" | 136 | bbfatal "A KBUILD_DEFCONFIG '${KBUILD_DEFCONFIG}' was specified, but not present in the source tree" | 
| 137 | fi | 137 | fi | 
| @@ -153,14 +153,24 @@ do_kernel_metadata() { | |||
| 153 | patches="${@" ".join(find_patches(d,''))}" | 153 | patches="${@" ".join(find_patches(d,''))}" | 
| 154 | feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}" | 154 | feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}" | 
| 155 | 155 | ||
| 156 | # a quick check to make sure we don't have duplicate defconfigs | 156 | # a quick check to make sure we don't have duplicate defconfigs If | 
| 157 | # If there's a defconfig in the SRC_URI, did we also have one from | 157 | # there's a defconfig in the SRC_URI, did we also have one from the | 
| 158 | # the KBUILD_DEFCONFIG processing above ? | 158 | # KBUILD_DEFCONFIG processing above ? | 
| 159 | if [ -n "$sccs" ]; then | 159 | src_uri_defconfig=$(echo $sccs_from_src_uri | awk '{ if ($0=="defconfig") { print $0 } }' RS=' ') | 
| 160 | # we did have a defconfig from above. remove any that might be in the src_uri | 160 | # drop and defconfig's from the src_uri variable, we captured it just above here if it existed | 
| 161 | sccs_from_src_uri=$(echo $sccs_from_src_uri | awk '{ if ($0!="defconfig") { print $0 } }' RS=' ') | 161 | sccs_from_src_uri=$(echo $sccs_from_src_uri | awk '{ if ($0!="defconfig") { print $0 } }' RS=' ') | 
| 162 | if [ -n "$in_tree_defconfig" ]; then | ||
| 163 | sccs_defconfig=$in_tree_defconfig | ||
| 164 | if [ -n "$src_uri_defconfig" ]; then | ||
| 165 | bbwarn "[NOTE]: defconfig was supplied both via KBUILD_DEFCONFIG and SRC_URI. Dropping SRC_URI defconfig" | ||
| 166 | fi | ||
| 167 | else | ||
| 168 | # if we didn't have an in-tree one, make our defconfig the one | ||
| 169 | # from the src_uri. Note: there may not have been one from the | ||
| 170 | # src_uri, so this can be an empty variable. | ||
| 171 | sccs_defconfig=$src_uri_defconfig | ||
| 162 | fi | 172 | fi | 
| 163 | sccs="$sccs $sccs_from_src_uri" | 173 | sccs="$sccs_from_src_uri" | 
| 164 | 174 | ||
| 165 | # check for feature directories/repos/branches that were part of the | 175 | # check for feature directories/repos/branches that were part of the | 
| 166 | # SRC_URI. If they were supplied, we convert them into include directives | 176 | # SRC_URI. If they were supplied, we convert them into include directives | 
| @@ -187,11 +197,10 @@ do_kernel_metadata() { | |||
| 187 | # expand kernel features into their full path equivalents | 197 | # expand kernel features into their full path equivalents | 
| 188 | bsp_definition=$(spp ${includes} --find -DKMACHINE=${KMACHINE} -DKTYPE=${LINUX_KERNEL_TYPE}) | 198 | bsp_definition=$(spp ${includes} --find -DKMACHINE=${KMACHINE} -DKTYPE=${LINUX_KERNEL_TYPE}) | 
| 189 | if [ -z "$bsp_definition" ]; then | 199 | if [ -z "$bsp_definition" ]; then | 
| 190 | echo "$sccs" | grep -q defconfig | 200 | if [ -z "$sccs_defconfig" ]; then | 
| 191 | if [ $? -ne 0 ]; then | ||
| 192 | bbfatal_log "Could not locate BSP definition for ${KMACHINE}/${LINUX_KERNEL_TYPE} and no defconfig was provided" | 201 | bbfatal_log "Could not locate BSP definition for ${KMACHINE}/${LINUX_KERNEL_TYPE} and no defconfig was provided" | 
| 193 | fi | 202 | fi | 
| 194 | 203 | else | |
| 195 | # if the bsp definition has "define KMETA_EXTERNAL_BSP t", | 204 | # if the bsp definition has "define KMETA_EXTERNAL_BSP t", | 
| 196 | # then we need to set a flag that will instruct the next | 205 | # then we need to set a flag that will instruct the next | 
| 197 | # steps to use the BSP as both configuration and patches. | 206 | # steps to use the BSP as both configuration and patches. | 
| @@ -206,7 +215,7 @@ do_kernel_metadata() { | |||
| 206 | elements="`echo -n ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}`" | 215 | elements="`echo -n ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES}`" | 
| 207 | if [ -n "${elements}" ]; then | 216 | if [ -n "${elements}" ]; then | 
| 208 | echo "${bsp_definition}" > ${S}/${meta_dir}/bsp_definition | 217 | echo "${bsp_definition}" > ${S}/${meta_dir}/bsp_definition | 
| 209 | scc --force -o ${S}/${meta_dir}:cfg,merge,meta ${includes} ${bsp_definition} ${sccs} ${patches} ${KERNEL_FEATURES} | 218 | scc --force -o ${S}/${meta_dir}:cfg,merge,meta ${includes} $sccs_defconfig $bsp_definition $sccs $patches ${KERNEL_FEATURES} | 
| 210 | if [ $? -ne 0 ]; then | 219 | if [ $? -ne 0 ]; then | 
| 211 | bbfatal_log "Could not generate configuration queue for ${KMACHINE}." | 220 | bbfatal_log "Could not generate configuration queue for ${KMACHINE}." | 
| 212 | fi | 221 | fi | 
