commit:     0b579e881548e7e5d2fac8b47a36f8d513053c76
Author:     Guy Martin <gmsoft <AT> gentoo <DOT> org>
AuthorDate: Wed Feb  5 10:40:03 2014 +0000
Commit:     Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Mon Mar 24 16:07:07 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=0b579e88

Fix and improve kernel build when kerncache is enabled.

This patch gets rid of setting ROOT for merging kernel sources. Instead, the
sources are moved manually to the kerncache directory. A new file is created
containing the kernel version and it is fed into package.provided to prevent
merging the kernel sources again.
Brian Dolbec: fix whitespace error.

Conflicts:
        targets/support/kmerge.sh

---
 targets/support/kmerge.sh | 38 ++++++++++++++++++++++++++++++--------
 1 file changed, 30 insertions(+), 8 deletions(-)

diff --git a/targets/support/kmerge.sh b/targets/support/kmerge.sh
index fac6e9c..c1b6a35 100644
--- a/targets/support/kmerge.sh
+++ b/targets/support/kmerge.sh
@@ -197,8 +197,17 @@ then
 
        # Create the kerncache directory if it doesn't exists
        mkdir -p /tmp/kerncache/${clst_kname}
-       clst_root_path=/tmp/kerncache/${clst_kname} PKGDIR=${PKGDIR} 
clst_myemergeopts="--quiet --update --newuse" run_merge "${clst_ksource}" || 
exit 1
-       KERNELVERSION=`portageq best_visible / "${clst_ksource}"`
+
+
+       if [ -e 
/tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.KERNELVERSION ]
+       then
+               
KERNELVERSION=$(</tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.KERNELVERSION)
+               mkdir -p /etc/portage/profile
+               echo "${KERNELVERSION}" > /etc/portage/profile/package.provided
+       else
+               rm -f /etc/portage/profile/package.provided
+       fi
+
        if [ ! -e /etc/portage/profile/package.provided ]
        then
                mkdir -p /etc/portage/profile
@@ -209,8 +218,26 @@ then
                        echo "${KERNELVERSION}" >> 
/etc/portage/profile/package.provided
                fi
        fi
+
        [ -L /usr/src/linux ] && rm -f /usr/src/linux
-       ln -s /tmp/kerncache/${clst_kname}/usr/src/linux /usr/src/linux
+
+       PKGDIR=${PKGDIR} clst_myemergeopts="--quiet --nodeps --update --newuse" 
run_merge "${clst_ksource}" || exit 1
+
+       SOURCESDIR="/tmp/kerncache/${clst_kname}/sources"
+       if [ -L /usr/src/linux ]
+       then
+
+               # A kernel was merged, move it to $SOURCESDIR
+               [ -e ${SOURCESDIR} ] && rm -Rf ${SOURCESDIR}
+
+               KERNELVERSION=`portageq best_visible / "${clst_ksource}"`
+               echo "${KERNELVERSION}" > 
/tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.KERNELVERSION
+
+               echo "Moving kernel sources to ${SOURCESDIR} ..."
+               mv `readlink -f /usr/src/linux` ${SOURCESDIR}
+
+       fi
+       ln -sf ${SOURCESDIR} /usr/src/linux
 
        # If catalyst has set to a empty string, extraversion wasn't specified 
so we
        # skip this part
@@ -259,9 +286,4 @@ unset USE
 if [ -n "${clst_KERNCACHE}" ]
 then
        echo ${clst_kernel_use} > 
/tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.USE
-
-       if [ -e /etc/portage/profile/package.provided ]
-       then
-               sed -i "/^$(echo "${KERNELVERSION}" | sed -e 's|/|\\/|g')\$/d" 
/etc/portage/profile/package.provided
-       fi
 fi

Reply via email to