From: Jianxun Zhang <jianxun.zh...@linux.intel.com>

The existing code doesn't tell regular (with .git) and bare cases and
just move the unpacked repo to the place of kernel source. But later
steps will fail on a bare-cloned repo because we can not checkout
directly in a bare cloned repo.

This change performs another clone to fix the issue.

Note: This change doesn't cover the case that S and WORKDIR are same
and the repo is bare cloned.

Signed-off-by: Jianxun Zhang <jianxun.zh...@linux.intel.com>
Signed-off-by: Bruce Ashfield <bruce.ashfi...@windriver.com>
---
 meta/classes/kernel-yocto.bbclass | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/meta/classes/kernel-yocto.bbclass 
b/meta/classes/kernel-yocto.bbclass
index 00d9667fe0a6..c2d0d3076f45 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -184,11 +184,18 @@ do_kernel_checkout() {
        source_dir=`echo ${S} | sed 's%/$%%'`
        source_workdir="${WORKDIR}/git"
        if [ -d "${WORKDIR}/git/" ]; then
-               # case: git repository (bare or non-bare)
+               # case: git repository
                # if S is WORKDIR/git, then we shouldn't be moving or deleting 
the tree.
                if [ "${source_dir}" != "${source_workdir}" ]; then
-                       rm -rf ${S}
-                       mv ${WORKDIR}/git ${S}
+                       if [ -d "${source_workdir}/.git" ]; then
+                               # regular git repository with .git
+                               rm -rf ${S}
+                               mv ${WORKDIR}/git ${S}
+                       else
+                               # create source for bare cloned git repository
+                               git clone ${WORKDIR}/git ${S}
+                               rm -rf ${WORKDIR}/git
+                       fi
                fi
                cd ${S}
        else
-- 
2.1.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to