xref: /openbmc/linux/scripts/package/builddeb (revision ca2a9d2c)
11da177e4SLinus Torvalds#!/bin/sh
21da177e4SLinus Torvalds#
34964451aSFrans Pop# builddeb 1.3
41da177e4SLinus Torvalds# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
51da177e4SLinus Torvalds#
61da177e4SLinus Torvalds# Simple script to generate a deb package for a Linux kernel. All the
74f66199bSFrans Pop# complexity of what to do with a kernel after it is installed or removed
81da177e4SLinus Torvalds# is left to other scripts and packages: they can install scripts in the
9fe233cb6SFrans Pop# /etc/kernel/{pre,post}{inst,rm}.d/ directories (or an alternative location
10fe233cb6SFrans Pop# specified in KDEB_HOOKDIR) that will be called on package install and
11fe233cb6SFrans Pop# removal.
121da177e4SLinus Torvalds
131da177e4SLinus Torvaldsset -e
141da177e4SLinus Torvalds
153e2ab256SFrans Popcreate_package() {
163e2ab256SFrans Pop	local pname="$1" pdir="$2"
173e2ab256SFrans Pop
189461f666SFrans Pop	cp debian/copyright "$pdir/usr/share/doc/$pname/"
191ab18486Smaximilian attems	cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
201ab18486Smaximilian attems	gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
21b59a1225SFEJES Jozsef	sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
22b59a1225SFEJES Jozsef		| xargs -r0 md5sum > DEBIAN/md5sums"
239461f666SFrans Pop
243e2ab256SFrans Pop	# Fix ownership and permissions
253e2ab256SFrans Pop	chown -R root:root "$pdir"
263e2ab256SFrans Pop	chmod -R go-w "$pdir"
273e2ab256SFrans Pop
28dca0c024SRiku Voipio	# Create the package
29dca0c024SRiku Voipio	dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
30dca0c024SRiku Voipio	dpkg --build "$pdir" ..
31dca0c024SRiku Voipio}
32dca0c024SRiku Voipio
33dca0c024SRiku Voipioset_debarch() {
3410f26fa6SAsbjoern Sloth Toennesen	# Attempt to find the correct Debian architecture
3510f26fa6SAsbjoern Sloth Toennesen	case "$UTS_MACHINE" in
3610f26fa6SAsbjoern Sloth Toennesen	i386|ia64|alpha)
3710f26fa6SAsbjoern Sloth Toennesen		debarch="$UTS_MACHINE" ;;
3810f26fa6SAsbjoern Sloth Toennesen	x86_64)
3910f26fa6SAsbjoern Sloth Toennesen		debarch=amd64 ;;
4010f26fa6SAsbjoern Sloth Toennesen	sparc*)
4110f26fa6SAsbjoern Sloth Toennesen		debarch=sparc ;;
4210f26fa6SAsbjoern Sloth Toennesen	s390*)
43a1323fd1SBen Hutchings		debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
4410f26fa6SAsbjoern Sloth Toennesen	ppc*)
4522739edfSMichael Neuling		debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;;
4610f26fa6SAsbjoern Sloth Toennesen	parisc*)
4710f26fa6SAsbjoern Sloth Toennesen		debarch=hppa ;;
4810f26fa6SAsbjoern Sloth Toennesen	mips*)
49c5e318f6SBen Hutchings		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
50a8d9c9f1SFathi Boudra	arm64)
51a8d9c9f1SFathi Boudra		debarch=arm64 ;;
5210f26fa6SAsbjoern Sloth Toennesen	arm*)
53c5e318f6SBen Hutchings		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
5410f26fa6SAsbjoern Sloth Toennesen	*)
55dca0c024SRiku Voipio		debarch=$(dpkg --print-architecture)
5610f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
5710f26fa6SAsbjoern Sloth Toennesen		echo "** ** **  WARNING  ** ** **" >&2
5810f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
5910f26fa6SAsbjoern Sloth Toennesen		echo "Your architecture doesn't have it's equivalent" >&2
6010f26fa6SAsbjoern Sloth Toennesen		echo "Debian userspace architecture defined!" >&2
6110f26fa6SAsbjoern Sloth Toennesen		echo "Falling back to using your current userspace instead!" >&2
6210f26fa6SAsbjoern Sloth Toennesen		echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
6310f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
6410f26fa6SAsbjoern Sloth Toennesen	esac
6555f88eccSAsbjoern Sloth Toennesen	if [ -n "$KBUILD_DEBARCH" ] ; then
6655f88eccSAsbjoern Sloth Toennesen		debarch="$KBUILD_DEBARCH"
6755f88eccSAsbjoern Sloth Toennesen	fi
6810f26fa6SAsbjoern Sloth Toennesen	forcearch="-DArchitecture=$debarch"
6910f26fa6SAsbjoern Sloth Toennesen
703e2ab256SFrans Pop}
713e2ab256SFrans Pop
721da177e4SLinus Torvalds# Some variables and settings used throughout the script
731da177e4SLinus Torvaldsversion=$KERNELRELEASE
744f66199bSFrans Poprevision=$(cat .version)
75c72c75dbSFrans Popif [ -n "$KDEB_PKGVERSION" ]; then
76c72c75dbSFrans Pop	packageversion=$KDEB_PKGVERSION
77c72c75dbSFrans Popelse
78c72c75dbSFrans Pop	packageversion=$version-$revision
79c72c75dbSFrans Popfi
801da177e4SLinus Torvaldstmpdir="$objtree/debian/tmp"
81bf1b3644SJonathan McDowellfwdir="$objtree/debian/fwtmp"
82ee81b786Smaximilian attemskernel_headers_dir="$objtree/debian/hdrtmp"
83ee81b786Smaximilian attemslibc_headers_dir="$objtree/debian/headertmp"
84810e8437SAnisse Astierdbg_dir="$objtree/debian/dbgtmp"
85f7a2c31fSmaximilian attemspackagename=linux-image-$version
8695e2a7d8SHeinrich Schuchardtfwpackagename=linux-firmware-image-$version
87ee81b786Smaximilian attemskernel_headers_packagename=linux-headers-$version
88ee81b786Smaximilian attemslibc_headers_packagename=linux-libc-dev
89810e8437SAnisse Astierdbg_packagename=$packagename-dbg
90dca0c024SRiku Voipiodebarch=
91dca0c024SRiku Voipioforcearch=
92dca0c024SRiku Voipioset_debarch
93687c3dacSSam Ravnborg
944f66199bSFrans Popif [ "$ARCH" = "um" ] ; then
95687c3dacSSam Ravnborg	packagename=user-mode-linux-$version
96687c3dacSSam Ravnborgfi
971da177e4SLinus Torvalds
989de70176SAnisse Astier# Not all arches have the same installed path in debian
999de70176SAnisse Astier# XXX: have each arch Makefile export a variable of the canonical image install
1009de70176SAnisse Astier# path instead
1019de70176SAnisse Astiercase $ARCH in
1029de70176SAnisse Astierum)
1039de70176SAnisse Astier	installed_image_path="usr/bin/linux-$version"
1049de70176SAnisse Astier	;;
1059de70176SAnisse Astierparisc|mips|powerpc)
1069de70176SAnisse Astier	installed_image_path="boot/vmlinux-$version"
1079de70176SAnisse Astier	;;
1089de70176SAnisse Astier*)
1099de70176SAnisse Astier	installed_image_path="boot/vmlinuz-$version"
1109de70176SAnisse Astieresac
1119de70176SAnisse Astier
112810e8437SAnisse AstierBUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
113810e8437SAnisse Astier
1141da177e4SLinus Torvalds# Setup the directory structure
115810e8437SAnisse Astierrm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir"
116e86c2412Smaximilian attemsmkdir -m 755 -p "$tmpdir/DEBIAN"
117e86c2412Smaximilian attemsmkdir -p  "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
118e86c2412Smaximilian attemsmkdir -m 755 -p "$fwdir/DEBIAN"
1196607ddadSmaximilian attemsmkdir -p "$fwdir/lib/firmware/$version/" "$fwdir/usr/share/doc/$fwpackagename"
120ee81b786Smaximilian attemsmkdir -m 755 -p "$libc_headers_dir/DEBIAN"
121ee81b786Smaximilian attemsmkdir -p "$libc_headers_dir/usr/share/doc/$libc_headers_packagename"
122ee81b786Smaximilian attemsmkdir -m 755 -p "$kernel_headers_dir/DEBIAN"
123ee81b786Smaximilian attemsmkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename"
124a47b6c61SJoerg Roedelmkdir -p "$kernel_headers_dir/lib/modules/$version/"
1254f66199bSFrans Popif [ "$ARCH" = "um" ] ; then
1269461f666SFrans Pop	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
127687c3dacSSam Ravnborgfi
128810e8437SAnisse Astierif [ -n "$BUILD_DEBUG" ] ; then
129810e8437SAnisse Astier	mkdir -p "$dbg_dir/usr/share/doc/$dbg_packagename"
130810e8437SAnisse Astier	mkdir -m 755 -p "$dbg_dir/DEBIAN"
131810e8437SAnisse Astierfi
1321da177e4SLinus Torvalds
1331da177e4SLinus Torvalds# Build and install the kernel
1344f66199bSFrans Popif [ "$ARCH" = "um" ] ; then
135687c3dacSSam Ravnborg	$MAKE linux
136687c3dacSSam Ravnborg	cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
137d2091767SAnisse Astier	cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
138687c3dacSSam Ravnborg	gzip "$tmpdir/usr/share/doc/$packagename/config"
139687c3dacSSam Ravnborgelse
1401da177e4SLinus Torvalds	cp System.map "$tmpdir/boot/System.map-$version"
141d2091767SAnisse Astier	cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
1429de70176SAnisse Astierfi
143a89b433bSFrans Pop# Not all arches include the boot path in KBUILD_IMAGE
144242c5ab0SGuillem Joverif [ -e $KBUILD_IMAGE ]; then
1459de70176SAnisse Astier	cp $KBUILD_IMAGE "$tmpdir/$installed_image_path"
146242c5ab0SGuillem Joverelse
1479de70176SAnisse Astier	cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path"
148687c3dacSSam Ravnborgfi
1491da177e4SLinus Torvalds
150ca2a9d2cSArnaud Patard (Rtp)if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then
151ca2a9d2cSArnaud Patard (Rtp)	# Only some architectures with OF support have this target
152ca2a9d2cSArnaud Patard (Rtp)	if grep -q dtbs_install "${srctree}/arch/$SRCARCH/Makefile"; then
153ca2a9d2cSArnaud Patard (Rtp)		$MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
154ca2a9d2cSArnaud Patard (Rtp)	fi
155ca2a9d2cSArnaud Patard (Rtp)fi
156ca2a9d2cSArnaud Patard (Rtp)
157d2091767SAnisse Astierif grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
158dddcbb7cSJoerg Roedel	INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install
159a47b6c61SJoerg Roedel	rm -f "$tmpdir/lib/modules/$version/build"
160a47b6c61SJoerg Roedel	rm -f "$tmpdir/lib/modules/$version/source"
1614f66199bSFrans Pop	if [ "$ARCH" = "um" ] ; then
162687c3dacSSam Ravnborg		mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
163687c3dacSSam Ravnborg		rmdir "$tmpdir/lib/modules/$version"
164687c3dacSSam Ravnborg	fi
165810e8437SAnisse Astier	if [ -n "$BUILD_DEBUG" ] ; then
1662d087139SMichal Marek		for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
1672d087139SMichal Marek			module=lib/modules/$module
168810e8437SAnisse Astier			mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
169810e8437SAnisse Astier			# only keep debug symbols in the debug file
1702d087139SMichal Marek			$OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module
171810e8437SAnisse Astier			# strip original module from debug symbols
1722d087139SMichal Marek			$OBJCOPY --strip-debug $tmpdir/$module
173810e8437SAnisse Astier			# then add a link to those
1742d087139SMichal Marek			$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
175810e8437SAnisse Astier		done
17664178cb6SAndrey Skvortsov
17764178cb6SAndrey Skvortsov		# resign stripped modules
17864178cb6SAndrey Skvortsov		MODULE_SIG_ALL="$(grep -s '^CONFIG_MODULE_SIG_ALL=y' $KCONFIG_CONFIG || true)"
17964178cb6SAndrey Skvortsov		if [ -n "$MODULE_SIG_ALL" ]; then
18064178cb6SAndrey Skvortsov			INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_sign
18164178cb6SAndrey Skvortsov		fi
182810e8437SAnisse Astier	fi
1831da177e4SLinus Torvaldsfi
1841da177e4SLinus Torvalds
185d7d357bcSJoerg Roedelif [ "$ARCH" != "um" ]; then
186dddcbb7cSJoerg Roedel	$MAKE headers_check KBUILD_SRC=
187dddcbb7cSJoerg Roedel	$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
188d7d357bcSJoerg Roedelfi
189e6807785Smaximilian attems
1901da177e4SLinus Torvalds# Install the maintainer scripts
191fe233cb6SFrans Pop# Note: hook scripts under /etc/kernel are also executed by official Debian
1921c8ddae0SBen Hutchings# kernel packages, as well as kernel packages built using make-kpkg.
1931c8ddae0SBen Hutchings# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
1941c8ddae0SBen Hutchings# so do we; recent versions of dracut and initramfs-tools will obey this.
195fe233cb6SFrans Popdebhookdir=${KDEB_HOOKDIR:-/etc/kernel}
1961c8ddae0SBen Hutchingsif grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
1971c8ddae0SBen Hutchings	want_initrd=Yes
1981c8ddae0SBen Hutchingselse
1991c8ddae0SBen Hutchings	want_initrd=No
2001c8ddae0SBen Hutchingsfi
2011da177e4SLinus Torvaldsfor script in postinst postrm preinst prerm ; do
202fe233cb6SFrans Pop	mkdir -p "$tmpdir$debhookdir/$script.d"
2031da177e4SLinus Torvalds	cat <<EOF > "$tmpdir/DEBIAN/$script"
2041da177e4SLinus Torvalds#!/bin/sh
2051da177e4SLinus Torvalds
2061da177e4SLinus Torvaldsset -e
2071da177e4SLinus Torvalds
2084964451aSFrans Pop# Pass maintainer script parameters to hook scripts
209241ad11fSmaximilian attemsexport DEB_MAINT_PARAMS="\$*"
2104964451aSFrans Pop
2111c8ddae0SBen Hutchings# Tell initramfs builder whether it's wanted
2121c8ddae0SBen Hutchingsexport INITRD=$want_initrd
2131c8ddae0SBen Hutchings
214c95182bfSAnisse Astiertest -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
2151da177e4SLinus Torvaldsexit 0
2161da177e4SLinus TorvaldsEOF
2171da177e4SLinus Torvalds	chmod 755 "$tmpdir/DEBIAN/$script"
2181da177e4SLinus Torvaldsdone
2191da177e4SLinus Torvalds
220edec611dSmaximilian attems# Try to determine maintainer and email values
221edec611dSmaximilian attemsif [ -n "$DEBEMAIL" ]; then
222edec611dSmaximilian attems       email=$DEBEMAIL
223edec611dSmaximilian attemselif [ -n "$EMAIL" ]; then
224edec611dSmaximilian attems       email=$EMAIL
225edec611dSmaximilian attemselse
226edec611dSmaximilian attems       email=$(id -nu)@$(hostname -f)
227edec611dSmaximilian attemsfi
228edec611dSmaximilian attemsif [ -n "$DEBFULLNAME" ]; then
229edec611dSmaximilian attems       name=$DEBFULLNAME
230edec611dSmaximilian attemselif [ -n "$NAME" ]; then
231edec611dSmaximilian attems       name=$NAME
232edec611dSmaximilian attemselse
233edec611dSmaximilian attems       name="Anonymous"
234edec611dSmaximilian attemsfi
235edec611dSmaximilian attemsmaintainer="$name <$email>"
236edec611dSmaximilian attems
237d9f711dbSSedat Dilek# Try to determine distribution
238d9f711dbSSedat Dilekif [ -n "$KDEB_CHANGELOG_DIST" ]; then
239d9f711dbSSedat Dilek        distribution=$KDEB_CHANGELOG_DIST
240d9f711dbSSedat Dilekelif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ]; then
241d9f711dbSSedat Dilek        : # nothing to do in this case
242d9f711dbSSedat Dilekelse
243d9f711dbSSedat Dilek        distribution="unstable"
244d9f711dbSSedat Dilek        echo >&2 "Using default distribution of 'unstable' in the changelog"
245d9f711dbSSedat Dilek        echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
246d9f711dbSSedat Dilekfi
247d9f711dbSSedat Dilek
2481da177e4SLinus Torvalds# Generate a simple changelog template
2491da177e4SLinus Torvaldscat <<EOF > debian/changelog
250d9f711dbSSedat Dileklinux-upstream ($packageversion) $distribution; urgency=low
2511da177e4SLinus Torvalds
252a83ca277SFrans Pop  * Custom built Linux kernel.
2531da177e4SLinus Torvalds
254edec611dSmaximilian attems -- $maintainer  $(date -R)
2551da177e4SLinus TorvaldsEOF
2561da177e4SLinus Torvalds
2579461f666SFrans Pop# Generate copyright file
2589461f666SFrans Popcat <<EOF > debian/copyright
2599461f666SFrans PopThis is a packacked upstream version of the Linux kernel.
2609461f666SFrans Pop
2619461f666SFrans PopThe sources may be found at most Linux ftp sites, including:
2629461f666SFrans Popftp://ftp.kernel.org/pub/linux/kernel
2639461f666SFrans Pop
264701ca30cSSedat DilekCopyright: 1991 - 2015 Linus Torvalds and others.
2659461f666SFrans Pop
2669461f666SFrans PopThe git repository for mainline kernel development is at:
267701ca30cSSedat Dilekgit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2689461f666SFrans Pop
2699461f666SFrans Pop    This program is free software; you can redistribute it and/or modify
2709461f666SFrans Pop    it under the terms of the GNU General Public License as published by
2719461f666SFrans Pop    the Free Software Foundation; version 2 dated June, 1991.
2729461f666SFrans Pop
2739461f666SFrans PopOn Debian GNU/Linux systems, the complete text of the GNU General Public
2749461f666SFrans PopLicense version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
2759461f666SFrans PopEOF
2769461f666SFrans Pop
2771da177e4SLinus Torvalds# Generate a control file
2781da177e4SLinus Torvaldscat <<EOF > debian/control
2794bf4cd49SFrans PopSource: linux-upstream
280aa42abedSRogério BritoSection: kernel
2811da177e4SLinus TorvaldsPriority: optional
282edec611dSmaximilian attemsMaintainer: $maintainer
2832d7204acSRogério BritoStandards-Version: 3.8.4
284ee6eed80SRogério BritoHomepage: http://www.kernel.org/
2853e2ab256SFrans PopEOF
2863e2ab256SFrans Pop
2873e2ab256SFrans Popif [ "$ARCH" = "um" ]; then
2883e2ab256SFrans Pop	cat <<EOF >> debian/control
2891da177e4SLinus Torvalds
290687c3dacSSam RavnborgPackage: $packagename
2918ebc2fe9Smaximilian attemsProvides: linux-image, linux-image-2.6, linux-modules-$version
2921da177e4SLinus TorvaldsArchitecture: any
293dc5962fdSSam RavnborgDescription: User Mode Linux kernel, version $version
294dc5962fdSSam Ravnborg User-mode Linux is a port of the Linux kernel to its own system call
295dc5962fdSSam Ravnborg interface.  It provides a kind of virtual machine, which runs Linux
296dc5962fdSSam Ravnborg as a user process under another Linux kernel.  This is useful for
297dc5962fdSSam Ravnborg kernel development, sandboxes, jails, experimentation, and
298dc5962fdSSam Ravnborg many other things.
299dc5962fdSSam Ravnborg .
3001da177e4SLinus Torvalds This package contains the Linux kernel, modules and corresponding other
301a83ca277SFrans Pop files, version: $version.
3021da177e4SLinus TorvaldsEOF
3031da177e4SLinus Torvalds
304dc5962fdSSam Ravnborgelse
3053e2ab256SFrans Pop	cat <<EOF >> debian/control
306dc5962fdSSam Ravnborg
307dc5962fdSSam RavnborgPackage: $packagename
3088ebc2fe9Smaximilian attemsProvides: linux-image, linux-image-2.6, linux-modules-$version
309bf1b3644SJonathan McDowellSuggests: $fwpackagename
310dc5962fdSSam RavnborgArchitecture: any
311dc5962fdSSam RavnborgDescription: Linux kernel, version $version
312dc5962fdSSam Ravnborg This package contains the Linux kernel, modules and corresponding other
313a83ca277SFrans Pop files, version: $version.
314dc5962fdSSam RavnborgEOF
3154f66199bSFrans Pop
316dc5962fdSSam Ravnborgfi
317dc5962fdSSam Ravnborg
3188bf13561SFathi Boudra# Build kernel header package
319a765a7ceSMichal Marek(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
320a765a7ceSMichal Marek(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
3218bf13561SFathi Boudra(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
3228bf13561SFathi Boudra(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
323a765a7ceSMichal Marek(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
324ee81b786Smaximilian attemsdestdir=$kernel_headers_dir/usr/src/linux-headers-$version
325ee81b786Smaximilian attemsmkdir -p "$destdir"
326a765a7ceSMichal Marek(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
327a765a7ceSMichal Marek(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)
328d2091767SAnisse Astier(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
329a47b6c61SJoerg Roedelln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
3306c635224SBen Hutchingsrm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
331cd8d60a2STheodore Ts'o
332cd8d60a2STheodore Ts'ocat <<EOF >> debian/control
333cd8d60a2STheodore Ts'o
334ee81b786Smaximilian attemsPackage: $kernel_headers_packagename
335cd8d60a2STheodore Ts'oProvides: linux-headers, linux-headers-2.6
336f8ce239dSBen HutchingsArchitecture: any
337f8ce239dSBen HutchingsDescription: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
338f8ce239dSBen Hutchings This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
339cd8d60a2STheodore Ts'o .
340cd8d60a2STheodore Ts'o This is useful for people who need to build external modules
341cd8d60a2STheodore Ts'oEOF
342cd8d60a2STheodore Ts'o
343bf1b3644SJonathan McDowell# Do we have firmware? Move it out of the way and build it into a package.
344bf1b3644SJonathan McDowellif [ -e "$tmpdir/lib/firmware" ]; then
3456607ddadSmaximilian attems	mv "$tmpdir/lib/firmware"/* "$fwdir/lib/firmware/$version/"
3466607ddadSmaximilian attems	rmdir "$tmpdir/lib/firmware"
347bf1b3644SJonathan McDowell
348bf1b3644SJonathan McDowell	cat <<EOF >> debian/control
349bf1b3644SJonathan McDowell
350bf1b3644SJonathan McDowellPackage: $fwpackagename
351bf1b3644SJonathan McDowellArchitecture: all
352bf1b3644SJonathan McDowellDescription: Linux kernel firmware, version $version
353a83ca277SFrans Pop This package contains firmware from the Linux kernel, version $version.
354bf1b3644SJonathan McDowellEOF
355bf1b3644SJonathan McDowell
3563e2ab256SFrans Pop	create_package "$fwpackagename" "$fwdir"
357bf1b3644SJonathan McDowellfi
358bf1b3644SJonathan McDowell
359e6807785Smaximilian attemscat <<EOF >> debian/control
360e6807785Smaximilian attems
361ee81b786Smaximilian attemsPackage: $libc_headers_packagename
362e6807785Smaximilian attemsSection: devel
363e6807785Smaximilian attemsProvides: linux-kernel-headers
364e6807785Smaximilian attemsArchitecture: any
365e6807785Smaximilian attemsDescription: Linux support headers for userspace development
366e6807785Smaximilian attems This package provides userspaces headers from the Linux kernel.  These headers
367e6807785Smaximilian attems are used by the installed headers for GNU glibc and other system libraries.
368e6807785Smaximilian attemsEOF
369e6807785Smaximilian attems
370d7d357bcSJoerg Roedelif [ "$ARCH" != "um" ]; then
371d7d357bcSJoerg Roedel	create_package "$kernel_headers_packagename" "$kernel_headers_dir"
372ee81b786Smaximilian attems	create_package "$libc_headers_packagename" "$libc_headers_dir"
373d7d357bcSJoerg Roedelfi
374d7d357bcSJoerg Roedel
3753e2ab256SFrans Popcreate_package "$packagename" "$tmpdir"
3761da177e4SLinus Torvalds
377810e8437SAnisse Astierif [ -n "$BUILD_DEBUG" ] ; then
378810e8437SAnisse Astier	# Build debug package
379810e8437SAnisse Astier	# Different tools want the image in different locations
380810e8437SAnisse Astier	# perf
381810e8437SAnisse Astier	mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
382810e8437SAnisse Astier	cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
383810e8437SAnisse Astier	# systemtap
384810e8437SAnisse Astier	mkdir -p $dbg_dir/usr/lib/debug/boot/
385810e8437SAnisse Astier	ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
386810e8437SAnisse Astier	# kdump-tools
387810e8437SAnisse Astier	ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
388810e8437SAnisse Astier
389810e8437SAnisse Astier	cat <<EOF >> debian/control
390810e8437SAnisse Astier
391810e8437SAnisse AstierPackage: $dbg_packagename
392810e8437SAnisse AstierSection: debug
393810e8437SAnisse AstierProvides: linux-debug, linux-debug-$version
394810e8437SAnisse AstierArchitecture: any
395810e8437SAnisse AstierDescription: Linux kernel debugging symbols for $version
396810e8437SAnisse Astier This package will come in handy if you need to debug the kernel. It provides
397810e8437SAnisse Astier all the necessary debug symbols for the kernel and its modules.
398810e8437SAnisse AstierEOF
399810e8437SAnisse Astier
400810e8437SAnisse Astier	create_package "$dbg_packagename" "$dbg_dir"
401810e8437SAnisse Astierfi
402810e8437SAnisse Astier
4031da177e4SLinus Torvaldsexit 0
404