diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/kernel-yocto.bbclass | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index 5f3cb63fb4..187e3cc07c 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass @@ -139,17 +139,17 @@ do_patch() { } do_kernel_checkout() { - # we build out of {S}, so ensure that ${S} is clean and present - rm -rf ${S} - mkdir -p ${S}/.git - set +e # A linux yocto SRC_URI should use the bareclone option. That # ensures that all the branches are available in the WORKDIR version # of the repository. If it wasn't passed, we should detect it, and put # out a useful error message - if [ -d "${WORKDIR}/git/.git" ]; then + if [ -d "${WORKDIR}/git/" ] && [ -d "${WORKDIR}/git/.git" ]; then + # we build out of {S}, so ensure that ${S} is clean and present + rm -rf ${S} + mkdir -p ${S}/.git + echo "WARNING. ${WORKDIR}/git is not a bare clone." echo "Ensure that the SRC_URI includes the 'bareclone=1' option." @@ -158,12 +158,14 @@ do_kernel_checkout() { mv ${WORKDIR}/git/.git ${S} rm -rf ${WORKDIR}/git/ cd ${S} - git branch -a | grep -q ${KMETA} - if [ $? -ne 0 ]; then - echo "ERROR. The branch '${KMETA}' is required and was not" - echo "found. Ensure that the SRC_URI points to a valid linux-yocto" - echo "kernel repository" - exit 1 + if [ -n "${YOCTO_KERNEL_META_DATA}" ] && [ -n "${KMETA}" ]; then + git branch -a | grep -q ${KMETA} + if [ $? -ne 0 ]; then + echo "ERROR. The branch '${KMETA}' is required and was not" + echo "found. Ensure that the SRC_URI points to a valid linux-yocto" + echo "kernel repository" + exit 1 + fi fi if [ -z "${YOCTO_KERNEL_EXTERNAL_BRANCH}" ] && [ -n "${KBRANCH}" ] ; then git branch -a | grep -q ${KBRANCH} @@ -174,10 +176,15 @@ do_kernel_checkout() { exit 1 fi fi - else + fi + if [ -d "${WORKDIR}/git/" ] && [ ! -d "${WORKDIR}/git/.git" ]; then + # we build out of {S}, so ensure that ${S} is clean and present + rm -rf ${S} + mkdir -p ${S}/.git + mv ${WORKDIR}/git/* ${S}/.git rm -rf ${WORKDIR}/git/ - cd ${S} + cd ${S} git config core.bare false fi # end debare |