From: Guy Martin <[email protected]>

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
-- 
1.8.5.3


Reply via email to