Gentoo Archives: gentoo-commits

From: Thomas Deutschmann <whissi@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/genkernel:master commit in: /
Date: Sat, 14 Dec 2019 19:02:42
Message-Id: 1576349078.9394d2189c6691b78665c2f8adcfc56cedaac08e.whissi@gentoo
1 commit: 9394d2189c6691b78665c2f8adcfc56cedaac08e
2 Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
3 AuthorDate: Sat Dec 14 17:29:32 2019 +0000
4 Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
5 CommitDate: Sat Dec 14 18:44:38 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=9394d218
7
8 gen_initramfs.sh: create_initramfs(): Fix building compressed integrated initramfs
9
10 Re-compiling kernel failed due to multiple set CONFIG_INITRAMFS_COMPRESSION_*
11 options.
12
13 In addition it is important to call `make olddefconfig` after changing options
14 to make sure kernel config is still valid and make won't block with user
15 prompt.
16
17 This commit will also ensure that we honor set COMPRESS_INITRD_TYPE.
18
19 Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
20
21 gen_initramfs.sh | 87 +++++++++++++++++++++++++++++++++++++++-----------------
22 1 file changed, 61 insertions(+), 26 deletions(-)
23
24 diff --git a/gen_initramfs.sh b/gen_initramfs.sh
25 index 6bc8777..38c77d0 100755
26 --- a/gen_initramfs.sh
27 +++ b/gen_initramfs.sh
28 @@ -1853,32 +1853,67 @@ create_initramfs() {
29 sed -i '/^.*CONFIG_INITRAMFS_SOURCE=.*$/d' "${KERNEL_OUTPUTDIR}/.config" \
30 || gen_die "failed to delete CONFIG_INITRAMFS_SOURCE from '${KERNEL_OUTPUTDIR}/.config'"
31
32 - local compress_config='INITRAMFS_COMPRESSION_NONE'
33 - case ${compress_ext} in
34 - gz) compress_config='INITRAMFS_COMPRESSION_GZIP' ;;
35 - bz2) compress_config='INITRAMFS_COMPRESSION_BZIP2' ;;
36 - lzma) compress_config='INITRAMFS_COMPRESSION_LZMA' ;;
37 - xz) compress_config='INITRAMFS_COMPRESSION_XZ' ;;
38 - lzo) compress_config='INITRAMFS_COMPRESSION_LZO' ;;
39 - lz4) compress_config='INITRAMFS_COMPRESSION_LZ4' ;;
40 - *) compress_config='INITRAMFS_COMPRESSION_NONE' ;;
41 - esac
42 -
43 - # All N default except XZ, so there it gets used if the kernel does
44 - # compression on it's own.
45 - cat >>${KERNEL_OUTPUTDIR}/.config <<-EOF
46 - CONFIG_INITRAMFS_SOURCE="${CPIO_ARCHIVE}.cpio${compress_ext}"
47 - CONFIG_INITRAMFS_ROOT_UID=0
48 - CONFIG_INITRAMFS_ROOT_GID=0
49 - CONFIG_INITRAMFS_COMPRESSION_NONE=n
50 - CONFIG_INITRAMFS_COMPRESSION_GZIP=n
51 - CONFIG_INITRAMFS_COMPRESSION_BZIP2=n
52 - CONFIG_INITRAMFS_COMPRESSION_LZMA=n
53 - CONFIG_INITRAMFS_COMPRESSION_XZ=y
54 - CONFIG_INITRAMFS_COMPRESSION_LZO=n
55 - CONFIG_INITRAMFS_COMPRESSION_LZ4=n
56 - CONFIG_${compress_config}=y
57 - EOF
58 + local compress_config=NONE
59 + local -a KNOWN_INITRAMFS_COMPRESSION_TYPES=()
60 + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( NONE )
61 + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( GZIP )
62 + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( BZIP2 )
63 + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZMA )
64 + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( XZ )
65 + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZO )
66 + KNOWN_INITRAMFS_COMPRESSION_TYPES+=( LZ4 )
67 +
68 + if isTrue "${COMPRESS_INITRD}"
69 + then
70 + case ${COMPRESS_INITRD_TYPE} in
71 + gz)
72 + compress_config='GZIP'
73 + ;;
74 + bz2)
75 + compress_config='BZIP2'
76 + ;;
77 + lzma)
78 + compress_config='LZMA'
79 + ;;
80 + xz|best|fastest)
81 + compress_config='XZ'
82 + ;;
83 + lzop)
84 + compress_config='LZO'
85 + ;;
86 + lz4)
87 + compress_config='LZ4'
88 + ;;
89 + esac
90 + fi
91 +
92 + print_info 1 "$(get_indent 1)>> --integrated-initramfs is set; Setting CONFIG_INITRAMFS_* options ..."
93 +
94 + [ -f "${KCONFIG_MODIFIED_MARKER}" ] && rm "${KCONFIG_MODIFIED_MARKER}"
95 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_SOURCE" "${CPIO_ARCHIVE}.cpio"
96 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_ROOT_UID" "0"
97 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_ROOT_GID" "0"
98 +
99 + local KNOWN_INITRAMFS_COMPRESSION_TYPE
100 + local KOPTION_VALUE
101 + for KNOWN_INITRAMFS_COMPRESSION_TYPE in "${KNOWN_INITRAMFS_COMPRESSION_TYPES[@]}"
102 + do
103 + KOPTION_VALUE=n
104 + if [[ "${KNOWN_INITRAMFS_COMPRESSION_TYPE}" == "${compress_config}" ]]
105 + then
106 + KOPTION_VALUE=y
107 + fi
108 +
109 + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INITRAMFS_COMPRESSION_${KNOWN_INITRAMFS_COMPRESSION_TYPE}" "${KOPTION_VALUE}"
110 + done
111 +
112 + if [ -f "${KCONFIG_MODIFIED_MARKER}" ]
113 + then
114 + print_info 1 "$(get_indent 1)>> Running 'make olddefconfig' due to changed kernel options ..."
115 + pushd "${KERNEL_DIR}" &>/dev/null || gen_die "Failed to chdir to '${KERNEL_DIR}'!"
116 + compile_generic olddefconfig kernel 2>/dev/null
117 + popd &>/dev/null || gen_die "Failed to chdir!"
118 + fi
119 else
120 if isTrue "${COMPRESS_INITRD}"
121 then