]> code.ossystems Code Review - openembedded-core.git/commitdiff
kernel-yocto: ensure that only a single defconfig is processed
authorBruce Ashfield <bruce.ashfield@windriver.com>
Mon, 4 Dec 2017 15:39:25 +0000 (10:39 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 6 Jan 2018 10:11:42 +0000 (10:11 +0000)
As a follow up to the changes to ensure that KBUILD_DEFCONFIG will
always get its defconfig into the processing, we also should ensure that
we don't get both a KBUILD_DEFCONFIG and a SRC_URI defconfig in the
configuration queue. If both are in the configuration queue, we end up
with competing values and a potentially long running check of 5000+
options x 2 against the final .config.

By removing the defconfig found from the SRC_URI when one is found
via KBUILD_DEFCONFIG, we ensure that only one will be processed.

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 7e98c295c1bb511ece51b5f8c97f26c173ddaf76)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
meta/classes/kernel-yocto.bbclass

index 2edf0fd15788a222587f94f9fce95cdbe635f0e7..60979a218f12abf6efda3b9803c4737fc4b5d4d0 100644 (file)
@@ -107,6 +107,8 @@ do_kernel_metadata() {
                                cmp "${WORKDIR}/defconfig" "${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG}"
                                if [ $? -ne 0 ]; then
                                        bbwarn "defconfig detected in WORKDIR. ${KBUILD_DEFCONFIG} skipped"
+                               else
+                                       cp -f ${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG} ${WORKDIR}/defconfig
                                fi
                        else
                                cp -f ${S}/arch/${ARCH}/configs/${KBUILD_DEFCONFIG} ${WORKDIR}/defconfig
@@ -117,10 +119,19 @@ do_kernel_metadata() {
                fi
        fi
 
-       sccs="$sccs ${@" ".join(find_sccs(d))}"
+       sccs_from_src_uri="${@" ".join(find_sccs(d))}"
        patches="${@" ".join(find_patches(d))}"
        feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}"
 
+       # a quick check to make sure we don't have duplicate defconfigs
+       # If there's a defconfig in the SRC_URI, did we also have one from
+       # the KBUILD_DEFCONFIG processing above ?
+       if [ -n "$sccs" ]; then
+           # we did have a defconfig from above. remove any that might be in the src_uri
+           sccs_from_src_uri=$(echo $sccs_from_src_uri | sed 's/defconfig//g')
+       fi
+       sccs="$sccs $sccs_from_src_uri"
+
        # check for feature directories/repos/branches that were part of the
        # SRC_URI. If they were supplied, we convert them into include directives
        # for the update part of the process