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