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 |
