Re: CONFIG_KERNEL_XZ obscure build failure if xz(1) not installed

From: Pavel Vasilyev
Date: Wed Feb 09 2011 - 15:10:14 EST


09.02.2011 22:52, Andy Isaacson ÐÐÑÐÑ:
> % uname -m
> x86_64
> % git log -1 | head
> commit 100b33c8bd8a3235fd0b7948338d6cbb3db3c63d
> % grep XZ .config
> CONFIG_HAVE_KERNEL_XZ=y
> CONFIG_KERNEL_XZ=y
> CONFIG_RD_XZ=y
> CONFIG_SQUASHFS_XZ=y
> CONFIG_XZ_DEC=y
> CONFIG_XZ_DEC_X86=y
> CONFIG_XZ_DEC_POWERPC=y
> CONFIG_XZ_DEC_IA64=y
> CONFIG_XZ_DEC_ARM=y
> CONFIG_XZ_DEC_ARMTHUMB=y
> CONFIG_XZ_DEC_SPARC=y
> CONFIG_XZ_DEC_BCJ=y
> CONFIG_XZ_DEC_TEST=y
> CONFIG_DECOMPRESS_XZ=y
> % make -j4
> ...
> CC arch/x86/boot/tty.o
> CC arch/x86/oprofile/oprofile.mod.o
> XZKERN arch/x86/boot/compressed/vmlinux.bin.xz
> exec: 23: xz: not found
> CC arch/x86/boot/video.o
> CC crypto/crc32c.mod.o
> CC crypto/pcrypt.mod.o
> CC arch/x86/boot/video-mode.o
> CC drivers/acpi/acpi_memhotplug.mod.o
> MKPIGGY arch/x86/boot/compressed/piggy.S
> arch/x86/boot/compressed/vmlinux.bin.xz: No such file or directory
> CC arch/x86/boot/version.o
> LD arch/x86/boot/compressed/vmlinux
> ... [hundreds of lines of output snipped]
> LD [M] net/sched/act_csum.ko
> IHEX firmware/bnx2/bnx2-mips-09-6.2.1.fw
> IHEX firmware/bnx2/bnx2-mips-06-6.2.1.fw
> % echo $?
> 2
> % ls -l arch/x86/boot/bzImage
> -rw-r--r-- 1 adi adi 1991504 Feb 1 18:41 arch/x86/boot/bzImage
>
> The failure is obscured by trailing make output, and since a broken
> bzImage is created, "make install" succeeds, and the first visible
> failure is after reboot when I get the lovely
>
> Decompressing Linux...
>
> Input is not in the XZ format (wrong magic bytes)
>
> -- System halted
>
> Sometimes I run "make -j4 && make install" which would have caught this,
> but the error should be more prominent and we shouldn't create bzImage
> if the dependencies are not present.

:)

Signed-off-by: Pavel Vasilyev <pavel@xxxxxxxxxxx>
---
diff --git a/scripts/xz_wrap.sh b/scripts/xz_wrap.sh
index 17a5798..5ec9d36 100644
--- a/scripts/xz_wrap.sh
+++ b/scripts/xz_wrap.sh
@@ -20,4 +20,4 @@ case $ARCH in
sparc) BCJ=--sparc ;;
esac

-exec xz --check=crc32 $BCJ --lzma2=$LZMA2OPTS,dict=32MiB
+exec xz --check=crc32 $BCJ --lzma2=$LZMA2OPTS,dict=32MiB || exit 1

--

Pavel.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/