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