aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2020-01-12 22:56:30 +0100
committerThomas Deutschmann <whissi@gentoo.org>2020-01-12 23:17:25 +0100
commitd1331dbe7bbc3bfed1076e946bdda4a987fb3ab5 (patch)
tree023bf4c19196cf5b89dcfdd2ff2a001fc8c08a7c
parentgen_compile.sh: compile_kernel(): Improve error message when kernel binary wa... (diff)
downloadgenkernel-d1331dbe7bbc3bfed1076e946bdda4a987fb3ab5.tar.gz
genkernel-d1331dbe7bbc3bfed1076e946bdda4a987fb3ab5.tar.bz2
genkernel-d1331dbe7bbc3bfed1076e946bdda4a987fb3ab5.zip
gen_initramfs.sh: create_initramfs(): Outsource compression method handling into set_initramfs_compression_method()
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
-rwxr-xr-xgen_configkernel.sh67
-rwxr-xr-xgen_initramfs.sh63
2 files changed, 68 insertions, 62 deletions
diff --git a/gen_configkernel.sh b/gen_configkernel.sh
index 69430508..ea7701ff 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 8620414d..783d9a77 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