genkernel: Add --kconfig to set specific kernel config options
[genkernel.git] / gen_package.sh
index e7c6142b2b6112536325e6771429964b6c39eb26..ed7a5f4d9a43baf9e0e206e0556da16377a34d62 100755 (executable)
@@ -20,7 +20,7 @@ gen_minkernpackage() {
                then
                        gen_die "Cannot locate kernel binary"
                fi
-               cd "${KERNEL_DIR}"
+               cd "${KERNEL_OUTPUTDIR}"
                cp "${tmp_kernel_binary}" "${TEMP}/minkernpackage/kernel-${KV}" || gen_die 'Could not the copy kernel for the min kernel package!'
                cp ".config" "${TEMP}/minkernpackage/config-${ARCH}-${KV}" || gen_die 'Could not the copy kernel config for the min kernel package!'
                if isTrue "${GENZIMAGE}"
@@ -38,7 +38,7 @@ gen_minkernpackage() {
        then
                /bin/tar -xj -C ${TEMP}/minkernpackage -f ${KERNCACHE} System.map-${ARCH}-${KV}
        else
-               cp "${KERNEL_DIR}/System.map" "${TEMP}/minkernpackage/System.map-${ARCH}-${KV}" || gen_die 'Could not copy System.map for the kernel package!';
+               cp "${KERNEL_OUTPUTDIR}/System.map" "${TEMP}/minkernpackage/System.map-${ARCH}-${KV}" || gen_die 'Could not copy System.map for the kernel package!';
        fi
 
        cd "${TEMP}/minkernpackage"
@@ -75,11 +75,17 @@ gen_kerncache()
                gen_die "Cannot locate kernel binary"
        fi
 
-       cd "${KERNEL_DIR}"
+       cd "${KERNEL_OUTPUTDIR}"
        cp "${tmp_kernel_binary}" "${TEMP}/kerncache/kernel-${ARCH}-${KV}" || gen_die 'Could not the copy kernel for the kernel package!'
-       cp "${KERNEL_DIR}/.config" "${TEMP}/kerncache/config-${ARCH}-${KV}"
-       cp "${KERNEL_CONFIG}" "${TEMP}/kerncache/config-${ARCH}-${KV}.orig"
-       cp "${KERNEL_DIR}/System.map" "${TEMP}/kerncache/System.map-${ARCH}-${KV}"
+       cp "${KERNEL_OUTPUTDIR}/.config" "${TEMP}/kerncache/config-${ARCH}-${KV}"
+
+       if [[ "$(file --brief --mime-type "${KERNEL_CONFIG}")" == application/x-gzip ]]; then
+               # Support --kernel-config=/proc/config.gz, mainly
+               zcat "${KERNEL_CONFIG}" > "${TEMP}/kerncache/config-${ARCH}-${KV}.orig"
+       else
+               cp "${KERNEL_CONFIG}" "${TEMP}/kerncache/config-${ARCH}-${KV}.orig"
+       fi
+       cp "${KERNEL_OUTPUTDIR}/System.map" "${TEMP}/kerncache/System.map-${ARCH}-${KV}"
        if isTrue "${GENZIMAGE}"
        then
                cp "${tmp_kernel_binary2}" "${TEMP}/kerncache/kernelz-${ARCH}-${KV}" || gen_die "Could not copy the kernelz for the kernel package"
@@ -164,7 +170,7 @@ gen_kerncache_is_valid()
        else
                if [ -e "${KERNCACHE}" ]
                then
-                       KERNEL_CONFIG="/${KERNEL_DIR}/.config"
+                       KERNEL_CONFIG="/${KERNEL_OUTPUTDIR}/.config"
                        if [ "${CMD_KERNEL_CONFIG}" != '' ]
                        then
                                KERNEL_CONFIG="${CMD_KERNEL_CONFIG}"
@@ -180,7 +186,16 @@ gen_kerncache_is_valid()
                                else
                                        test1=$(grep -v "^#" ${TEMP}/config-${ARCH}-${KV} | md5sum | cut -d " " -f 1)
                                fi
-                               test2=$(grep -v "^#" ${KERNEL_CONFIG} | md5sum | cut -d " " -f 1)
+
+                               if [[ "$(file --brief --mime-type "${KERNEL_CONFIG}")" == application/x-gzip ]]; then
+                                       # Support --kernel-config=/proc/config.gz, mainly
+                                       local CONFGREP=zgrep
+                               else
+                                       local CONFGREP=grep
+                               fi
+                               test2=$("${CONFGREP}" -v "^#" ${KERNEL_CONFIG} | md5sum | cut -d " " -f 1)
+
+
                                if [ "${test1}" == "${test2}" ]
                                then
                                        echo