commit: 9394d2189c6691b78665c2f8adcfc56cedaac08e
Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 14 17:29:32 2019 +0000
Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sat Dec 14 18:44:38 2019 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=9394d218
gen_initramfs.sh: create_initramfs(): Fix building compressed integrated
initramfs
Re-compiling kernel failed due to multiple set CONFIG_INITRAMFS_COMPRESSION_*
options.
In addition it is important to call `make olddefconfig` after changing options
to make sure kernel config is still valid and make won't block with user
prompt.
This commit will also ensure that we honor set COMPRESS_INITRD_TYPE.
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
gen_initramfs.sh | 87 +++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 61 insertions(+), 26 deletions(-)
diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 6bc8777..38c77d0 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -1853,32 +1853,67 @@ 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='INITRAMFS_COMPRESSION_NONE'
- case ${compress_ext} in
- gz) compress_config='INITRAMFS_COMPRESSION_GZIP' ;;
- bz2) compress_config='INITRAMFS_COMPRESSION_BZIP2' ;;
- lzma) compress_config='INITRAMFS_COMPRESSION_LZMA' ;;
- xz) compress_config='INITRAMFS_COMPRESSION_XZ' ;;
- lzo) compress_config='INITRAMFS_COMPRESSION_LZO' ;;
- lz4) compress_config='INITRAMFS_COMPRESSION_LZ4' ;;
- *) compress_config='INITRAMFS_COMPRESSION_NONE' ;;
- esac
-
- # All N default except XZ, so there it gets used if the kernel
does
- # compression on it's own.
- cat >>${KERNEL_OUTPUTDIR}/.config <<-EOF
- CONFIG_INITRAMFS_SOURCE="${CPIO_ARCHIVE}.cpio${compress_ext}"
- CONFIG_INITRAMFS_ROOT_UID=0
- CONFIG_INITRAMFS_ROOT_GID=0
- CONFIG_INITRAMFS_COMPRESSION_NONE=n
- CONFIG_INITRAMFS_COMPRESSION_GZIP=n
- CONFIG_INITRAMFS_COMPRESSION_BZIP2=n
- CONFIG_INITRAMFS_COMPRESSION_LZMA=n
- CONFIG_INITRAMFS_COMPRESSION_XZ=y
- CONFIG_INITRAMFS_COMPRESSION_LZO=n
- CONFIG_INITRAMFS_COMPRESSION_LZ4=n
- CONFIG_${compress_config}=y
- EOF
+ 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}"
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config"
"CONFIG_INITRAMFS_SOURCE" "${CPIO_ARCHIVE}.cpio"
+ 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
+
+ kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config"
"CONFIG_INITRAMFS_COMPRESSION_${KNOWN_INITRAMFS_COMPRESSION_TYPE}"
"${KOPTION_VALUE}"
+ done
+
+ if [ -f "${KCONFIG_MODIFIED_MARKER}" ]
+ then
+ print_info 1 "$(get_indent 1)>> Running 'make
olddefconfig' due to changed kernel options ..."
+ pushd "${KERNEL_DIR}" &>/dev/null || gen_die "Failed to
chdir to '${KERNEL_DIR}'!"
+ compile_generic olddefconfig kernel 2>/dev/null
+ popd &>/dev/null || gen_die "Failed to chdir!"
+ fi
else
if isTrue "${COMPRESS_INITRD}"
then