commit:     dcfc952708ed4d6f7ffd303178d7b72e79c6aa3c
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 23 04:58:03 2019 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sat Mar 23 08:06:18 2019 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=dcfc9527

Try to compile gen_init_cpio if missing

gen_init_cpio is required in append_devices(). However, when
KERNEL_OUTPUTDIR was cleaned, this file is missing.

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

 gen_compile.sh   | 17 +++++++++++++++++
 gen_initramfs.sh |  4 ++++
 2 files changed, 21 insertions(+)

diff --git a/gen_compile.sh b/gen_compile.sh
index d08d1e5..14d059d 100755
--- a/gen_compile.sh
+++ b/gen_compile.sh
@@ -244,6 +244,23 @@ apply_patches() {
        fi
 }
 
+compile_gen_init_cpio() {
+       local gen_init_cpio_SRC="${KERNEL_DIR}/usr/gen_init_cpio.c"
+       local gen_init_cpio_DIR="${KERNEL_OUTPUTDIR}/usr"
+
+       print_info 1 "$(getIndent 2)>> Compiling gen_init_cpio..."
+
+       [ ! -e "${gen_init_cpio_SRC}" ] && gen_die "'${gen_init_cpio_SRC}' is 
missing. Cannot compile gen_init_cpio!"
+       [ ! -d "${gen_init_cpio_DIR}" ] && mkdir "${gen_init_cpio_DIR}"
+
+       export_utils_args
+
+       ${CC} -O2 "${KERNEL_DIR}/usr/gen_init_cpio.c" -o 
"${KERNEL_OUTPUTDIR}/usr/gen_init_cpio" -Wl,--no-as-needed ||
+               gen_die 'Failed to compile gen_init_cpio!'
+
+       unset_utils_args
+}
+
 compile_generic() {
        local RET
        [ "$#" -lt '2' ] &&

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 5cafd11..f4706a5 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -63,6 +63,10 @@ log_future_cpio_content() {
 }
 
 append_devices() {
+       if [[ ! -x "${KERNEL_OUTPUTDIR}/usr/gen_init_cpio" ]]; then
+               compile_gen_init_cpio
+       fi
+
        # WARNING, does NOT support appending to cpio!
        cat >"${TEMP}/initramfs-base-temp.devices" <<-EOF
        dir /dev 0755 0 0

Reply via email to