diff options
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/kernel-yocto.bbclass | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass index 368f91e43e..7b8e6075f2 100644 --- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass @@ -148,29 +148,34 @@ do_kernel_checkout() { # 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. + # of the repository. + source_dir=`echo ${S} | sed 's%/$%%'` + source_workdir="${WORKDIR}/git" 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} - - # We can fix up the kernel repository even if it wasn't a bare clone. - mv ${WORKDIR}/git/.git ${S} - rm -rf ${WORKDIR}/git/ + # case2: the repository is a non-bare clone + + # 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} + fi cd ${S} elif [ -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/ + # case2: the repository is a bare clone + + # if S is WORKDIR/git, then we shouldn't be moving or deleting the tree. + if [ "${source_dir}" != "${source_workdir}" ]; then + rm -rf ${S} + mkdir -p ${S}/.git + mv ${WORKDIR}/git/* ${S}/.git + rm -rf ${WORKDIR}/git/ + fi cd ${S} git config core.bare false else - # We have no git repository at all. To support low bandwidth options - # for building the kernel, we'll just convert the tree to a git repo - # and let the rest of the process work unchanged + # case 3: we have no git repository at all. + # To support low bandwidth options for building the kernel, we'll just + # convert the tree to a git repo and let the rest of the process work unchanged cd ${S} git init git add . |