Blame view

scripts/package/buildtar 4.09 KB
81f7e3824   Eric Lee   Initial Release, ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
  #!/bin/sh
  # SPDX-License-Identifier: GPL-2.0
  
  #
  # 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