commit:     d1331dbe7bbc3bfed1076e946bdda4a987fb3ab5
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 12 21:56:30 2020 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sun Jan 12 22:17:25 2020 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=d1331dbe

gen_initramfs.sh: create_initramfs(): Outsource compression method handling 
into set_initramfs_compression_method()

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 gen_configkernel.sh | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 gen_initramfs.sh    | 63 +------------------------------------------------
 2 files changed, 68 insertions(+), 62 deletions(-)

diff --git a/gen_configkernel.sh b/gen_configkernel.sh
index 6943050..ea7701f 100755
--- a/gen_configkernel.sh
+++ b/gen_configkernel.sh
@@ -113,6 +113,73 @@ determine_kernel_config_file() {
        fi
 }
 
+set_initramfs_compression_method() {
+       [[ ${#} -ne 1 ]] \
+               && gen_die "$(get_useful_function_stack "${FUNCNAME}")Invalid 
usage of ${FUNCNAME}(): Function takes exactly one argument (${#} given)!"
+
+       local kernel_config=${1}
+
+       local compress_config=NONE
+       local -a KNOWN_INITRAMFS_COMPRESSION_TYPES=()
+       KNOWN_INITRAMFS_COMPRESSION_TYPES+=( NONE )
+       KNOWN_INITRAMFS_COMPRESSION_TYPES+=( GZIP )
+       KNOWN_INITRAMFS_COMPRESSION_TYPES+=( BZIP2 )
+       KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZMA )
+       KNOWN_INITRAMFS_COMPRESSION_TYPES+=( XZ )
+       KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZO )
+       KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZ4 )
+
+       case ${COMPRESS_INITRD_TYPE} in
+               gz)
+                       compress_config='GZIP'
+                       ;;
+               bz2)
+                       compress_config='BZIP2'
+                       ;;
+               lzma)
+                       compress_config='LZMA'
+                       ;;
+               xz|best|fastest)
+                       compress_config='XZ'
+                       ;;
+               lzop)
+                       compress_config='LZO'
+                       ;;
+               lz4)
+                       compress_config='LZ4'
+                       ;;
+       esac
+
+       local KNOWN_INITRAMFS_COMPRESSION_TYPE
+       local KOPTION_VALUE
+       for KNOWN_INITRAMFS_COMPRESSION_TYPE in 
"${KNOWN_INITRAMFS_COMPRESSION_TYPES[@]}"
+       do
+               KOPTION_VALUE=n
+               if [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == 
"${compress_config}" ]]
+               then
+                       KOPTION_VALUE=y
+               fi
+
+               if [ ${KV_NUMERIC} -ge 4010 ]
+               then
+                       kconfig_set_opt "${kernel_config}" 
"CONFIG_INITRAMFS_COMPRESSION_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" 
"${KOPTION_VALUE}"
+
+                       if [[ "${KOPTION_VALUE}" == "y" && 
"${KNOWN_INITRAMFS_COMPRESSION_TYPE}" != "NONE" ]]
+                       then
+                               # Make sure that the kernel can decompress our 
initramfs
+                               kconfig_set_opt "${kernel_config}" 
"CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}"
+                       fi
+               else
+                       [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == "NONE" ]] 
&& continue
+
+                       # In <linux-4.10, to control used initramfs 
compression, we have to
+                       # disable every supported compression type except 
compression type
+                       # we want to use, (see $KERNEL_DIR/usr/Makefile).
+                       kconfig_set_opt "${kernel_config}" 
"CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}"
+               fi
+       done
+}
+
 config_kernel() {
        local diff_cmd="$(which zdiff 2>/dev/null)"
        if [ -z "${diff_cmd}" ]

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 8620414..783d9a7 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -1859,40 +1859,6 @@ create_initramfs() {
                sed -i '/^.*CONFIG_INITRAMFS_SOURCE=.*$/d' 
"${KERNEL_OUTPUTDIR}/.config" \
                        || gen_die "failed to delete CONFIG_INITRAMFS_SOURCE 
from '${KERNEL_OUTPUTDIR}/.config'"
 
-               local compress_config=NONE
-               local -a KNOWN_INITRAMFS_COMPRESSION_TYPES=()
-               KNOWN_INITRAMFS_COMPRESSION_TYPES+=( NONE )
-               KNOWN_INITRAMFS_COMPRESSION_TYPES+=( GZIP )
-               KNOWN_INITRAMFS_COMPRESSION_TYPES+=( BZIP2 )
-               KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZMA )
-               KNOWN_INITRAMFS_COMPRESSION_TYPES+=( XZ )
-               KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZO )
-               KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZ4 )
-
-               if isTrue "${COMPRESS_INITRD}"
-               then
-                       case ${COMPRESS_INITRD_TYPE} in
-                               gz)
-                                       compress_config='GZIP'
-                                       ;;
-                               bz2)
-                                       compress_config='BZIP2'
-                                       ;;
-                               lzma)
-                                       compress_config='LZMA'
-                                       ;;
-                               xz|best|fastest)
-                                       compress_config='XZ'
-                                       ;;
-                               lzop)
-                                       compress_config='LZO'
-                                       ;;
-                               lz4)
-                                       compress_config='LZ4'
-                                       ;;
-                       esac
-               fi
-
                print_info 1 "$(get_indent 1)>> --integrated-initramfs is set; 
Setting CONFIG_INITRAMFS_* options ..."
 
                [ -f "${KCONFIG_MODIFIED_MARKER}" ] && rm 
"${KCONFIG_MODIFIED_MARKER}"
@@ -1901,34 +1867,7 @@ create_initramfs() {
                kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" 
"CONFIG_INITRAMFS_ROOT_UID" "0"
                kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" 
"CONFIG_INITRAMFS_ROOT_GID" "0"
 
-               local KNOWN_INITRAMFS_COMPRESSION_TYPE
-               local KOPTION_VALUE
-               for KNOWN_INITRAMFS_COMPRESSION_TYPE in 
"${KNOWN_INITRAMFS_COMPRESSION_TYPES[@]}"
-               do
-                       KOPTION_VALUE=n
-                       if [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == 
"${compress_config}" ]]
-                       then
-                               KOPTION_VALUE=y
-                       fi
-
-                       if [ ${KV_NUMERIC} -ge 4010 ]
-                       then
-                               kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" 
"CONFIG_INITRAMFS_COMPRESSION_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" 
"${KOPTION_VALUE}"
-
-                               if [[ "${KOPTION_VALUE}" == "y" && 
"${KNOWN_INITRAMFS_COMPRESSION_TYPE}" != "NONE" ]]
-                               then
-                                       # Make sure that the kernel can 
decompress our initramfs
-                                       kconfig_set_opt 
"${KERNEL_OUTPUTDIR}/.config" "CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" 
"${KOPTION_VALUE}"
-                               fi
-                       else
-                               [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == 
"NONE" ]] && continue
-
-                               # In <linux-4.10, to control used initramfs 
compression, we have to
-                               # disable every supported compression type 
except compression type
-                               # we want to use, (see 
$KERNEL_DIR/usr/Makefile).
-                               kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" 
"CONFIG_RD_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}"
-                       fi
-               done
+               set_initramfs_compression_method "${KERNEL_OUTPUTDIR}/.config"
 
                if [ -f "${KCONFIG_MODIFIED_MARKER}" ]
                then

Reply via email to