]> code.ossystems Code Review - openembedded-core.git/commitdiff
kernel-yocto: fix checkout bare-cloned kernel repositories
authorJianxun Zhang <jianxun.zhang@linux.intel.com>
Tue, 8 Dec 2015 18:58:43 +0000 (10:58 -0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 27 Dec 2015 11:26:58 +0000 (11:26 +0000)
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.zhang@linux.intel.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/kernel-yocto.bbclass

index 00d9667fe0a66851b7b3862bd4024b8e6a57a42e..c2d0d3076f45b976cd1bab5ccd80ef2ba1f0b964 100644 (file)
@@ -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