linux-yocto/scripts/package/buildtar
Masahiro Yamada 77780f799e kbuild: buildtar: do not print successful message if tar returns error
The previous commit spotted that "Tarball successfully created ..."
is displayed even if the "tar" command returns error code because
it is followed by "| ${compress}".

Let the build fail instead of printing the successful message since
if the "tar" command fails, the output may not be what users expect.

Avoid the use of the pipe.  While we are here, refactor the script
removing the use of sub-shell, ${compress}, ${file_ext}.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-09-13 00:20:33 +09:00

4.1 KiB
Executable File

#!/bin/sh

buildtar 0.0.4

(C) 2004-2006 by Jan-Benedict Glaw jbglaw@lug-owl.de

This script is used to compile a tarball from the currently

prepared kernel. Based upon the builddeb script from

Wichert Akkerman wichert@wiggy.net.

set -e

Some variables and settings used throughout the script

tmpdir="${objtree}/tar-install" tarball="${objtree}/linux-${KERNELRELEASE}-${ARCH}.tar"

Figure out how to compress, if requested at all

case "${1}" in tar-pkg) opts= ;; targz-pkg) opts=--gzip tarball=${tarball}.gz ;; tarbz2-pkg) opts=--bzip2 tarball=${tarball}.bz2 ;; tarxz-pkg) opts=--xz tarball=${tarball}.xz ;; *) echo "Unknown tarball target "${1}" requested, please add it to ${0}." >&2 exit 1 ;; esac

Clean-up and re-create the temporary directory

rm -rf -- "${tmpdir}" mkdir -p -- "${tmpdir}/boot" dirs=boot

Try to install modules

if grep -q '^CONFIG_MODULES=y' "${KCONFIG_CONFIG}"; then make ARCH="${ARCH}" O="${objtree}" KBUILD_SRC= INSTALL_MOD_PATH="${tmpdir}" modules_install dirs="$dirs lib" fi

Install basic kernel files

cp -v -- "${objtree}/System.map" "${tmpdir}/boot/System.map-${KERNELRELEASE}" cp -v -- "${KCONFIG_CONFIG}" "${tmpdir}/boot/config-${KERNELRELEASE}" cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"

Install arch-specific kernel image(s)

case "${ARCH}" in x86|i386|x86_64) [ -f "${objtree}/arch/x86/boot/bzImage" ] && cp -v -- "${objtree}/arch/x86/boot/bzImage" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}" ;; alpha) [ -f "${objtree}/arch/alpha/boot/vmlinux.gz" ] && cp -v -- "${objtree}/arch/alpha/boot/vmlinux.gz" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}" ;; parisc*) [ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" [ -f "${objtree}/lifimage" ] && cp -v -- "${objtree}/lifimage" "${tmpdir}/boot/lifimage-${KERNELRELEASE}" ;; vax) [ -f "${objtree}/vmlinux.SYS" ] && cp -v -- "${objtree}/vmlinux.SYS" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}.SYS" [ -f "${objtree}/vmlinux.dsk" ] && cp -v -- "${objtree}/vmlinux.dsk" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}.dsk" ;; mips) if [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.bin" ]; then cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.bin" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}" elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" ]; then cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}" elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.srec" ]; then cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.srec" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}" elif [ -f "${objtree}/vmlinux.32" ]; then cp -v -- "${objtree}/vmlinux.32" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" elif [ -f "${objtree}/vmlinux.64" ]; then cp -v -- "${objtree}/vmlinux.64" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" elif [ -f "${objtree}/arch/mips/boot/vmlinux.bin" ]; then cp -v -- "${objtree}/arch/mips/boot/vmlinux.bin" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" elif [ -f "${objtree}/arch/mips/boot/vmlinux.ecoff" ]; then cp -v -- "${objtree}/arch/mips/boot/vmlinux.ecoff" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" elif [ -f "${objtree}/arch/mips/boot/vmlinux.srec" ]; then cp -v -- "${objtree}/arch/mips/boot/vmlinux.srec" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" elif [ -f "${objtree}/vmlinux" ]; then cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}" fi ;; ) [ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-kbuild-${KERNELRELEASE}" echo "" >&2 echo '* ** ** WARNING ** ** **' >&2 echo "" >&2 echo "Your architecture did not define any architecture-dependent files" >&2 echo "to be placed into the tarball. Please add those to ${0} ..." >&2 echo "" >&2 sleep 5 ;; esac

Create the tarball

if tar --owner=root --group=root --help >/dev/null 2>&1; then opts="$opts --owner=root --group=root" fi

tar cf $tarball -C $tmpdir $opts $dirs

echo "Tarball successfully created in $tarball"

exit 0