xref: /OK3568_Linux_fs/kernel/scripts/package/buildtar (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# buildtar 0.0.5
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun# (C) 2004-2006 by Jan-Benedict Glaw <jbglaw@lug-owl.de>
8*4882a593Smuzhiyun#
9*4882a593Smuzhiyun# This script is used to compile a tarball from the currently
10*4882a593Smuzhiyun# prepared kernel. Based upon the builddeb script from
11*4882a593Smuzhiyun# Wichert Akkerman <wichert@wiggy.net>.
12*4882a593Smuzhiyun#
13*4882a593Smuzhiyun
14*4882a593Smuzhiyunset -e
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun#
17*4882a593Smuzhiyun# Some variables and settings used throughout the script
18*4882a593Smuzhiyun#
19*4882a593Smuzhiyuntmpdir="${objtree}/tar-install"
20*4882a593Smuzhiyuntarball="${objtree}/linux-${KERNELRELEASE}-${ARCH}.tar"
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun#
24*4882a593Smuzhiyun# Figure out how to compress, if requested at all
25*4882a593Smuzhiyun#
26*4882a593Smuzhiyuncase "${1}" in
27*4882a593Smuzhiyun	dir-pkg|tar-pkg)
28*4882a593Smuzhiyun		opts=
29*4882a593Smuzhiyun		;;
30*4882a593Smuzhiyun	targz-pkg)
31*4882a593Smuzhiyun		opts="-I ${KGZIP}"
32*4882a593Smuzhiyun		tarball=${tarball}.gz
33*4882a593Smuzhiyun		;;
34*4882a593Smuzhiyun	tarbz2-pkg)
35*4882a593Smuzhiyun		opts="-I ${KBZIP2}"
36*4882a593Smuzhiyun		tarball=${tarball}.bz2
37*4882a593Smuzhiyun		;;
38*4882a593Smuzhiyun	tarxz-pkg)
39*4882a593Smuzhiyun		opts="-I ${XZ}"
40*4882a593Smuzhiyun		tarball=${tarball}.xz
41*4882a593Smuzhiyun		;;
42*4882a593Smuzhiyun	*)
43*4882a593Smuzhiyun		echo "Unknown tarball target \"${1}\" requested, please add it to ${0}." >&2
44*4882a593Smuzhiyun		exit 1
45*4882a593Smuzhiyun		;;
46*4882a593Smuzhiyunesac
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun#
50*4882a593Smuzhiyun# Clean-up and re-create the temporary directory
51*4882a593Smuzhiyun#
52*4882a593Smuzhiyunrm -rf -- "${tmpdir}"
53*4882a593Smuzhiyunmkdir -p -- "${tmpdir}/boot"
54*4882a593Smuzhiyundirs=boot
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun#
58*4882a593Smuzhiyun# Try to install dtbs
59*4882a593Smuzhiyun#
60*4882a593Smuzhiyunif grep -q '^CONFIG_OF_EARLY_FLATTREE=y' include/config/auto.conf; then
61*4882a593Smuzhiyun	# Only some architectures with OF support have this target
62*4882a593Smuzhiyun	if [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then
63*4882a593Smuzhiyun		$MAKE ARCH="${ARCH}" -f ${srctree}/Makefile INSTALL_DTBS_PATH="${tmpdir}/boot/dtbs/${KERNELRELEASE}" dtbs_install
64*4882a593Smuzhiyun    fi
65*4882a593Smuzhiyunfi
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun#
69*4882a593Smuzhiyun# Try to install modules
70*4882a593Smuzhiyun#
71*4882a593Smuzhiyunif grep -q '^CONFIG_MODULES=y' include/config/auto.conf; then
72*4882a593Smuzhiyun	make ARCH="${ARCH}" -f ${srctree}/Makefile INSTALL_MOD_PATH="${tmpdir}" modules_install
73*4882a593Smuzhiyun	dirs="$dirs lib"
74*4882a593Smuzhiyunfi
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun#
78*4882a593Smuzhiyun# Install basic kernel files
79*4882a593Smuzhiyun#
80*4882a593Smuzhiyuncp -v -- "${objtree}/System.map" "${tmpdir}/boot/System.map-${KERNELRELEASE}"
81*4882a593Smuzhiyuncp -v -- "${KCONFIG_CONFIG}" "${tmpdir}/boot/config-${KERNELRELEASE}"
82*4882a593Smuzhiyuncp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun#
86*4882a593Smuzhiyun# Install arch-specific kernel image(s)
87*4882a593Smuzhiyun#
88*4882a593Smuzhiyuncase "${ARCH}" in
89*4882a593Smuzhiyun	x86|i386|x86_64)
90*4882a593Smuzhiyun		[ -f "${objtree}/arch/x86/boot/bzImage" ] && cp -v -- "${objtree}/arch/x86/boot/bzImage" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
91*4882a593Smuzhiyun		;;
92*4882a593Smuzhiyun	alpha)
93*4882a593Smuzhiyun		[ -f "${objtree}/arch/alpha/boot/vmlinux.gz" ] && cp -v -- "${objtree}/arch/alpha/boot/vmlinux.gz" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
94*4882a593Smuzhiyun		;;
95*4882a593Smuzhiyun	parisc*)
96*4882a593Smuzhiyun		[ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
97*4882a593Smuzhiyun		[ -f "${objtree}/lifimage" ] && cp -v -- "${objtree}/lifimage" "${tmpdir}/boot/lifimage-${KERNELRELEASE}"
98*4882a593Smuzhiyun		;;
99*4882a593Smuzhiyun	mips)
100*4882a593Smuzhiyun		if [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.bin" ]; then
101*4882a593Smuzhiyun			cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.bin" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
102*4882a593Smuzhiyun		elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" ]; then
103*4882a593Smuzhiyun			cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.ecoff" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
104*4882a593Smuzhiyun		elif [ -f "${objtree}/arch/mips/boot/compressed/vmlinux.srec" ]; then
105*4882a593Smuzhiyun			cp -v -- "${objtree}/arch/mips/boot/compressed/vmlinux.srec" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
106*4882a593Smuzhiyun		elif [ -f "${objtree}/vmlinux.32" ]; then
107*4882a593Smuzhiyun			cp -v -- "${objtree}/vmlinux.32" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
108*4882a593Smuzhiyun		elif [ -f "${objtree}/vmlinux.64" ]; then
109*4882a593Smuzhiyun			cp -v -- "${objtree}/vmlinux.64" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
110*4882a593Smuzhiyun		elif [ -f "${objtree}/arch/mips/boot/vmlinux.bin" ]; then
111*4882a593Smuzhiyun			cp -v -- "${objtree}/arch/mips/boot/vmlinux.bin" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
112*4882a593Smuzhiyun		elif [ -f "${objtree}/arch/mips/boot/vmlinux.ecoff" ]; then
113*4882a593Smuzhiyun			cp -v -- "${objtree}/arch/mips/boot/vmlinux.ecoff" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
114*4882a593Smuzhiyun		elif [ -f "${objtree}/arch/mips/boot/vmlinux.srec" ]; then
115*4882a593Smuzhiyun			cp -v -- "${objtree}/arch/mips/boot/vmlinux.srec" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
116*4882a593Smuzhiyun		elif [ -f "${objtree}/vmlinux" ]; then
117*4882a593Smuzhiyun			cp -v -- "${objtree}/vmlinux" "${tmpdir}/boot/vmlinux-${KERNELRELEASE}"
118*4882a593Smuzhiyun		fi
119*4882a593Smuzhiyun		;;
120*4882a593Smuzhiyun	arm64)
121*4882a593Smuzhiyun		for i in Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo ; do
122*4882a593Smuzhiyun			if [ -f "${objtree}/arch/arm64/boot/${i}" ] ; then
123*4882a593Smuzhiyun				cp -v -- "${objtree}/arch/arm64/boot/${i}" "${tmpdir}/boot/vmlinuz-${KERNELRELEASE}"
124*4882a593Smuzhiyun				break
125*4882a593Smuzhiyun			fi
126*4882a593Smuzhiyun		done
127*4882a593Smuzhiyun		;;
128*4882a593Smuzhiyun	*)
129*4882a593Smuzhiyun		[ -f "${KBUILD_IMAGE}" ] && cp -v -- "${KBUILD_IMAGE}" "${tmpdir}/boot/vmlinux-kbuild-${KERNELRELEASE}"
130*4882a593Smuzhiyun		echo "" >&2
131*4882a593Smuzhiyun		echo '** ** **  WARNING  ** ** **' >&2
132*4882a593Smuzhiyun		echo "" >&2
133*4882a593Smuzhiyun		echo "Your architecture did not define any architecture-dependent files" >&2
134*4882a593Smuzhiyun		echo "to be placed into the tarball. Please add those to ${0} ..." >&2
135*4882a593Smuzhiyun		echo "" >&2
136*4882a593Smuzhiyun		sleep 5
137*4882a593Smuzhiyun		;;
138*4882a593Smuzhiyunesac
139*4882a593Smuzhiyun
140*4882a593Smuzhiyunif [ "${1}" = dir-pkg ]; then
141*4882a593Smuzhiyun	echo "Kernel tree successfully created in $tmpdir"
142*4882a593Smuzhiyun	exit 0
143*4882a593Smuzhiyunfi
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun#
146*4882a593Smuzhiyun# Create the tarball
147*4882a593Smuzhiyun#
148*4882a593Smuzhiyunif tar --owner=root --group=root --help >/dev/null 2>&1; then
149*4882a593Smuzhiyun	opts="$opts --owner=root --group=root"
150*4882a593Smuzhiyunfi
151*4882a593Smuzhiyun
152*4882a593Smuzhiyuntar cf $tarball -C $tmpdir $opts $dirs
153*4882a593Smuzhiyun
154*4882a593Smuzhiyunecho "Tarball successfully created in $tarball"
155*4882a593Smuzhiyun
156*4882a593Smuzhiyunexit 0
157