kmerge.sh: Fix line wrapping typo from 9ceebbf
[catalyst.git] / targets / support / kmerge.sh
old mode 100755 (executable)
new mode 100644 (file)
index 4a17e02..e78e0b4
@@ -1,7 +1,5 @@
 #!/bin/bash
 
-RUN_DEFAULT_FUNCS="no"
-
 source /tmp/chroot-functions.sh
 
 check_genkernel_version
@@ -16,7 +14,6 @@ setup_gk_args() {
                         --cachedir=/tmp/kerncache/${clst_kname}-genkernel_cache-${clst_version_stamp} \
                         --no-mountboot \
                         --kerneldir=/usr/src/linux \
-                        --kernel-config=/var/tmp/${clst_kname}.config \
                         --modulespackage=/tmp/kerncache/${clst_kname}-modules-${clst_version_stamp}.tar.bz2 \
                         --minkernpackage=/tmp/kerncache/${clst_kname}-kernel-initrd-${clst_version_stamp}.tar.bz2 all"
        # extra genkernel options that we have to test for
@@ -24,6 +21,10 @@ setup_gk_args() {
        then
                GK_ARGS="${GK_ARGS} --kerncache=/tmp/kerncache/${clst_kname}-kerncache-${clst_version_stamp}.tar.bz2"
        fi
+       if [ -e /var/tmp/${clst_kname}.config ]
+       then
+               GK_ARGS="${GK_ARGS} --kernel-config=/var/tmp/${clst_kname}.config"
+       fi
 
        if [ -n "${clst_splash_theme}" ]
        then
@@ -48,22 +49,26 @@ setup_gk_args() {
        then
                GK_ARGS="${GK_ARGS} --kernel-cc=/usr/lib/ccache/bin/gcc --utils-cc=/usr/lib/ccache/bin/gcc"
        fi
-       
-       if [ "${clst_devmanager}" == "devfs" ]
-       then
-               GK_ARGS="${GK_ARGS} --no-udev"
-       fi
 
        if [ -n "${clst_linuxrc}" ]
        then
                GK_ARGS="${GK_ARGS} --linuxrc=/tmp/linuxrc"
        fi
 
-    if [ "${clst_target}" == "netboot2" -a -n "${clst_merge_path}" ]
-    then
-        GK_ARGS="${GK_ARGS} --initramfs-overlay=\"${clst_merge_path}\""
-    fi
-        
+       if [ -n "${clst_busybox_config}" ]
+       then
+               GK_ARGS="${GK_ARGS} --busybox-config=/tmp/busy-config"
+       fi
+
+       if [ "${clst_target}" == "netboot2" ]
+       then
+               GK_ARGS="${GK_ARGS} --netboot"
+
+               if [ -n "${clst_merge_path}" ]
+               then
+                       GK_ARGS="${GK_ARGS} --initramfs-overlay=\"${clst_merge_path}\""
+               fi
+       fi
 }
 
 genkernel_compile(){
@@ -72,19 +77,22 @@ genkernel_compile(){
 
        setup_gk_args
        #echo "The GK_ARGS are"
-       #echo ${GK_ARGS}        
+       #echo ${GK_ARGS}
        export clst_kernel_merge
        export clst_initramfs_overlay
        # Build our list of kernel packages
-       if [ "${clst_livecd_type}" = "gentoo-release-livecd" ] \
-       && [ -n "${clst_kernel_merge}" ]
-       then
-               mkdir -p /usr/livecd
-               echo "${clst_kernel_merge}" > /usr/livecd/kernelpkgs.txt
-       fi
+       case ${clst_livecd_type} in
+               gentoo-release-live*)
+                       if [ -n "${clst_kernel_merge}" ]
+                       then
+                               mkdir -p /usr/livecd
+                               echo "${clst_kernel_merge}" > /usr/livecd/kernelpkgs.txt
+                       fi
+               ;;
+       esac
        # Build with genkernel using the set options
        # callback is put here to avoid escaping issues
-       gk_callback_opts="-q"
+       gk_callback_opts="-qN"
        PKGDIR=${PKGDIR}
        if [ -n "${clst_KERNCACHE}" ]
        then
@@ -101,19 +109,17 @@ genkernel_compile(){
        else
                genkernel ${GK_ARGS} || exit 1
        fi
-       md5sum /var/tmp/${clst_kname}.config|awk '{print $1}' > /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.CONFIG
+       if [ -e /var/tmp/${clst_kname}.config ]
+       then
+               md5sum /var/tmp/${clst_kname}.config | awk '{print $1}' > \
+                       /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.CONFIG
+       fi
 }
 
 build_kernel() {
        genkernel_compile
 }
 
-# Script to build each kernel, kernel-related packages
-/usr/sbin/env-update
-source /etc/profile
-
-setup_myfeatures
-
 [ -n "${clst_ENVSCRIPT}" ] && source /tmp/envscript
 export CONFIG_PROTECT="-*"
 
@@ -126,23 +132,27 @@ filtered_kname=${clst_kname/\//_}
 filtered_kname=${filtered_kname/\./_}
 
 eval "clst_kernel_use=\$clst_boot_kernel_${filtered_kname}_use"
-
 eval "clst_kernel_gk_kernargs=\$clst_boot_kernel_${filtered_kname}_gk_kernargs"
 eval "clst_ksource=\$clst_boot_kernel_${filtered_kname}_sources"
 
+if [ -z "${clst_ksource}" ]
+then
+       clst_ksource="virtual/linux-sources"
+fi
+
 # Don't use pkgcache here, as the kernel source may get emerged with different
 # USE variables (and thus different patches enabled/disabled.) Also, there's no
 # real benefit in using the pkgcache for kernel source ebuilds.
 
-USE_MATCH=0 
+USE_MATCH=0
 if [ -e /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.USE ]
 then
        STR1=$(for i in `cat /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.USE`; do echo $i; done|sort)
        STR2=$(for i in ${clst_kernel_use}; do echo $i; done|sort)
        if [ "${STR1}" = "${STR2}" ]
-       then 
+       then
                #echo "USE Flags match"
-               USE_MATCH=1 
+               USE_MATCH=1
        else
                if [ -n "${clst_KERNCACHE}" ]
                then
@@ -160,7 +170,7 @@ then
        STR1=`cat /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.EXTRAVERSION`
        STR2=${clst_kextraversion}
        if [ "${STR1}" = "${STR2}" ]
-       then 
+       then
                if [ -n "${clst_KERNCACHE}" ]
                then
                        #echo "EXTRAVERSION match"
@@ -170,33 +180,47 @@ then
 fi
 
 CONFIG_MATCH=0
-if [ -e /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.CONFIG ]
+if [ -n "${clst_KERNCACHE}" -a \
+     -e /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.CONFIG ]
 then
-       STR1=`cat /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.CONFIG`
-       STR2=`md5sum /var/tmp/${clst_kname}.config|awk '{print $1}'`
-       if [ "${STR1}" = "${STR2}" ]
-       then 
-               if [ -n "${clst_KERNCACHE}" ]
+       if [ ! -e /var/tmp/${clst_kname}.config ]
+       then
+               CONFIG_MATCH=1
+       else
+               STR1=`cat /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.CONFIG`
+               STR2=`md5sum /var/tmp/${clst_kname}.config|awk '{print $1}'`
+               if [ "${STR1}" = "${STR2}" ]
                then
-                       #echo "CONFIG match"
                        CONFIG_MATCH=1
                fi
        fi
 fi
 
-[ -e /etc/make.conf ] && \
-       echo \"USE="\${USE} ${clst_kernel_use} symlink build\"" >> /etc/make.conf
+[ -e /etc/portage/make.conf ] && \
+       echo "USE=\"\${USE} ${clst_kernel_use} build\"" >> /etc/portage/make.conf
 
 if [ -n "${clst_KERNCACHE}" ]
 then
-mkdir -p /tmp/kerncache/${clst_kname}
-       ROOT=/tmp/kerncache/${clst_kname} PKGDIR=${PKGDIR} run_merge --nodeps -uqkb  "${clst_ksource}" || exit 1
-       [ -l /usr/src/linux ] && rm -f /usr/src/linux
+       mkdir -p /tmp/kerncache/${clst_kname}
+       clst_root_path=/tmp/kerncache/${clst_kname} PKGDIR=${PKGDIR} clst_myemergeopts="--quiet --nodeps --update --newuse" run_merge "${clst_ksource}" || exit 1
+       KERNELVERSION=`portageq best_visible / "${clst_ksource}"`
+       if [ ! -e /etc/portage/profile/package.provided ]
+       then
+               mkdir -p /etc/portage/profile
+               echo "${KERNELVERSION}" > /etc/portage/profile/package.provided
+       else
+               if ( ! grep -q "^${KERNELVERSION}\$"  /etc/portage/profile/package.provided )
+               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
 else
+       [ -L /usr/src/linux ] && rm -f /usr/src/linux
        run_merge "${clst_ksource}" || exit 1
 fi
-sed -i "/USE=\"\${USE} ${clst_kernel_use} symlink build\"/d" /etc/make.conf
+make_destpath
 
 # If catalyst has set to a empty string, extraversion wasn't specified so we
 # skip this part
@@ -207,12 +231,13 @@ then
                echo "Setting extraversion to ${clst_kextraversion}"
                sed -i -e "s:EXTRAVERSION \(=.*\):EXTRAVERSION \1-${clst_kextraversion}:" /usr/src/linux/Makefile
                echo ${clst_kextraversion} > /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.EXTRAVERSION
-       else 
+       else
                touch /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.EXTRAVERSION
        fi
 fi
 
 build_kernel
+sed -i "/USE=\"\${USE} ${clst_kernel_use} build\"/d" /etc/portage/make.conf
 # grep out the kernel version so that we can do our modules magic
 VER=`grep ^VERSION\ \= /usr/src/linux/Makefile | awk '{ print $3 };'`
 PAT=`grep ^PATCHLEVEL\ \= /usr/src/linux/Makefile | awk '{ print $3 };'`
@@ -224,3 +249,12 @@ clst_fudgeuname=${VER}.${PAT}.${SUB}${EXV}
 
 unset USE
 echo ${clst_kernel_use} > /tmp/kerncache/${clst_kname}/${clst_kname}-${clst_version_stamp}.USE
+
+
+if [ -n "${clst_KERNCACHE}" ]
+then
+       if [ -e /etc/portage/profile/package.provided ]
+       then
+               sed -i "/^$(echo "${KERNELVERSION}" | sed -e 's|/|\\/|g')\$/d" /etc/portage/profile/package.provided
+       fi
+fi