xref: /openbmc/linux/scripts/package/builddeb (revision 8bf13561)
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
2810f26fa6SAsbjoern Sloth Toennesen	# Attempt to find the correct Debian architecture
2910f26fa6SAsbjoern Sloth Toennesen	local forcearch="" debarch=""
3010f26fa6SAsbjoern Sloth Toennesen	case "$UTS_MACHINE" in
3110f26fa6SAsbjoern Sloth Toennesen	i386|ia64|alpha)
3210f26fa6SAsbjoern Sloth Toennesen		debarch="$UTS_MACHINE" ;;
3310f26fa6SAsbjoern Sloth Toennesen	x86_64)
3410f26fa6SAsbjoern Sloth Toennesen		debarch=amd64 ;;
3510f26fa6SAsbjoern Sloth Toennesen	sparc*)
3610f26fa6SAsbjoern Sloth Toennesen		debarch=sparc ;;
3710f26fa6SAsbjoern Sloth Toennesen	s390*)
38a1323fd1SBen Hutchings		debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
3910f26fa6SAsbjoern Sloth Toennesen	ppc*)
4010f26fa6SAsbjoern Sloth Toennesen		debarch=powerpc ;;
4110f26fa6SAsbjoern Sloth Toennesen	parisc*)
4210f26fa6SAsbjoern Sloth Toennesen		debarch=hppa ;;
4310f26fa6SAsbjoern Sloth Toennesen	mips*)
44c5e318f6SBen Hutchings		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
45a8d9c9f1SFathi Boudra	arm64)
46a8d9c9f1SFathi Boudra		debarch=arm64 ;;
4710f26fa6SAsbjoern Sloth Toennesen	arm*)
48c5e318f6SBen Hutchings		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
4910f26fa6SAsbjoern Sloth Toennesen	*)
5010f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
5110f26fa6SAsbjoern Sloth Toennesen		echo "** ** **  WARNING  ** ** **" >&2
5210f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
5310f26fa6SAsbjoern Sloth Toennesen		echo "Your architecture doesn't have it's equivalent" >&2
5410f26fa6SAsbjoern Sloth Toennesen		echo "Debian userspace architecture defined!" >&2
5510f26fa6SAsbjoern Sloth Toennesen		echo "Falling back to using your current userspace instead!" >&2
5610f26fa6SAsbjoern Sloth Toennesen		echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
5710f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
5810f26fa6SAsbjoern Sloth Toennesen	esac
5955f88eccSAsbjoern Sloth Toennesen	if [ -n "$KBUILD_DEBARCH" ] ; then
6055f88eccSAsbjoern Sloth Toennesen		debarch="$KBUILD_DEBARCH"
6155f88eccSAsbjoern Sloth Toennesen	fi
6210f26fa6SAsbjoern Sloth Toennesen	if [ -n "$debarch" ] ; then
6310f26fa6SAsbjoern Sloth Toennesen		forcearch="-DArchitecture=$debarch"
6410f26fa6SAsbjoern Sloth Toennesen	fi
6510f26fa6SAsbjoern Sloth Toennesen
663e2ab256SFrans Pop	# Create the package
67f8ce239dSBen Hutchings	dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir"
683e2ab256SFrans Pop	dpkg --build "$pdir" ..
693e2ab256SFrans Pop}
703e2ab256SFrans Pop
711da177e4SLinus Torvalds# Some variables and settings used throughout the script
721da177e4SLinus Torvaldsversion=$KERNELRELEASE
734f66199bSFrans Poprevision=$(cat .version)
74c72c75dbSFrans Popif [ -n "$KDEB_PKGVERSION" ]; then
75c72c75dbSFrans Pop	packageversion=$KDEB_PKGVERSION
76c72c75dbSFrans Popelse
77c72c75dbSFrans Pop	packageversion=$version-$revision
78c72c75dbSFrans Popfi
791da177e4SLinus Torvaldstmpdir="$objtree/debian/tmp"
80bf1b3644SJonathan McDowellfwdir="$objtree/debian/fwtmp"
81ee81b786Smaximilian attemskernel_headers_dir="$objtree/debian/hdrtmp"
82ee81b786Smaximilian attemslibc_headers_dir="$objtree/debian/headertmp"
83810e8437SAnisse Astierdbg_dir="$objtree/debian/dbgtmp"
84f7a2c31fSmaximilian attemspackagename=linux-image-$version
8595e2a7d8SHeinrich Schuchardtfwpackagename=linux-firmware-image-$version
86ee81b786Smaximilian attemskernel_headers_packagename=linux-headers-$version
87ee81b786Smaximilian attemslibc_headers_packagename=linux-libc-dev
88810e8437SAnisse Astierdbg_packagename=$packagename-dbg
89687c3dacSSam Ravnborg
904f66199bSFrans Popif [ "$ARCH" = "um" ] ; then
91687c3dacSSam Ravnborg	packagename=user-mode-linux-$version
92687c3dacSSam Ravnborgfi
931da177e4SLinus Torvalds
949de70176SAnisse Astier# Not all arches have the same installed path in debian
959de70176SAnisse Astier# XXX: have each arch Makefile export a variable of the canonical image install
969de70176SAnisse Astier# path instead
979de70176SAnisse Astiercase $ARCH in
989de70176SAnisse Astierum)
999de70176SAnisse Astier	installed_image_path="usr/bin/linux-$version"
1009de70176SAnisse Astier	;;
1019de70176SAnisse Astierparisc|mips|powerpc)
1029de70176SAnisse Astier	installed_image_path="boot/vmlinux-$version"
1039de70176SAnisse Astier	;;
1049de70176SAnisse Astier*)
1059de70176SAnisse Astier	installed_image_path="boot/vmlinuz-$version"
1069de70176SAnisse Astieresac
1079de70176SAnisse Astier
108810e8437SAnisse AstierBUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
109810e8437SAnisse Astier
1101da177e4SLinus Torvalds# Setup the directory structure
111810e8437SAnisse Astierrm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir"
112e86c2412Smaximilian attemsmkdir -m 755 -p "$tmpdir/DEBIAN"
113e86c2412Smaximilian attemsmkdir -p  "$tmpdir/lib" "$tmpdir/boot" "$tmpdir/usr/share/doc/$packagename"
114e86c2412Smaximilian attemsmkdir -m 755 -p "$fwdir/DEBIAN"
1156607ddadSmaximilian attemsmkdir -p "$fwdir/lib/firmware/$version/" "$fwdir/usr/share/doc/$fwpackagename"
116ee81b786Smaximilian attemsmkdir -m 755 -p "$libc_headers_dir/DEBIAN"
117ee81b786Smaximilian attemsmkdir -p "$libc_headers_dir/usr/share/doc/$libc_headers_packagename"
118ee81b786Smaximilian attemsmkdir -m 755 -p "$kernel_headers_dir/DEBIAN"
119ee81b786Smaximilian attemsmkdir -p "$kernel_headers_dir/usr/share/doc/$kernel_headers_packagename"
120a47b6c61SJoerg Roedelmkdir -p "$kernel_headers_dir/lib/modules/$version/"
1214f66199bSFrans Popif [ "$ARCH" = "um" ] ; then
1229461f666SFrans Pop	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin"
123687c3dacSSam Ravnborgfi
124810e8437SAnisse Astierif [ -n "$BUILD_DEBUG" ] ; then
125810e8437SAnisse Astier	mkdir -p "$dbg_dir/usr/share/doc/$dbg_packagename"
126810e8437SAnisse Astier	mkdir -m 755 -p "$dbg_dir/DEBIAN"
127810e8437SAnisse Astierfi
1281da177e4SLinus Torvalds
1291da177e4SLinus Torvalds# Build and install the kernel
1304f66199bSFrans Popif [ "$ARCH" = "um" ] ; then
131687c3dacSSam Ravnborg	$MAKE linux
132687c3dacSSam Ravnborg	cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
133d2091767SAnisse Astier	cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
134687c3dacSSam Ravnborg	gzip "$tmpdir/usr/share/doc/$packagename/config"
135687c3dacSSam Ravnborgelse
1361da177e4SLinus Torvalds	cp System.map "$tmpdir/boot/System.map-$version"
137d2091767SAnisse Astier	cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
1389de70176SAnisse Astierfi
139a89b433bSFrans Pop# Not all arches include the boot path in KBUILD_IMAGE
140242c5ab0SGuillem Joverif [ -e $KBUILD_IMAGE ]; then
1419de70176SAnisse Astier	cp $KBUILD_IMAGE "$tmpdir/$installed_image_path"
142242c5ab0SGuillem Joverelse
1439de70176SAnisse Astier	cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path"
144687c3dacSSam Ravnborgfi
1451da177e4SLinus Torvalds
146d2091767SAnisse Astierif grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
147dddcbb7cSJoerg Roedel	INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install
148a47b6c61SJoerg Roedel	rm -f "$tmpdir/lib/modules/$version/build"
149a47b6c61SJoerg Roedel	rm -f "$tmpdir/lib/modules/$version/source"
1504f66199bSFrans Pop	if [ "$ARCH" = "um" ] ; then
151687c3dacSSam Ravnborg		mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
152687c3dacSSam Ravnborg		rmdir "$tmpdir/lib/modules/$version"
153687c3dacSSam Ravnborg	fi
154810e8437SAnisse Astier	if [ -n "$BUILD_DEBUG" ] ; then
155810e8437SAnisse Astier		(
156810e8437SAnisse Astier			cd $tmpdir
157810e8437SAnisse Astier			for module in $(find lib/modules/ -name *.ko); do
158810e8437SAnisse Astier				mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
159810e8437SAnisse Astier				# only keep debug symbols in the debug file
1606b4a144aSFathi Boudra				$OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module
161810e8437SAnisse Astier				# strip original module from debug symbols
1626b4a144aSFathi Boudra				$OBJCOPY --strip-debug $module
163810e8437SAnisse Astier				# then add a link to those
1646b4a144aSFathi Boudra				$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module
165810e8437SAnisse Astier			done
166810e8437SAnisse Astier		)
167810e8437SAnisse Astier	fi
1681da177e4SLinus Torvaldsfi
1691da177e4SLinus Torvalds
170d7d357bcSJoerg Roedelif [ "$ARCH" != "um" ]; then
171dddcbb7cSJoerg Roedel	$MAKE headers_check KBUILD_SRC=
172dddcbb7cSJoerg Roedel	$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
173d7d357bcSJoerg Roedelfi
174e6807785Smaximilian attems
1751da177e4SLinus Torvalds# Install the maintainer scripts
176fe233cb6SFrans Pop# Note: hook scripts under /etc/kernel are also executed by official Debian
1771c8ddae0SBen Hutchings# kernel packages, as well as kernel packages built using make-kpkg.
1781c8ddae0SBen Hutchings# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
1791c8ddae0SBen Hutchings# so do we; recent versions of dracut and initramfs-tools will obey this.
180fe233cb6SFrans Popdebhookdir=${KDEB_HOOKDIR:-/etc/kernel}
1811c8ddae0SBen Hutchingsif grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
1821c8ddae0SBen Hutchings	want_initrd=Yes
1831c8ddae0SBen Hutchingselse
1841c8ddae0SBen Hutchings	want_initrd=No
1851c8ddae0SBen Hutchingsfi
1861da177e4SLinus Torvaldsfor script in postinst postrm preinst prerm ; do
187fe233cb6SFrans Pop	mkdir -p "$tmpdir$debhookdir/$script.d"
1881da177e4SLinus Torvalds	cat <<EOF > "$tmpdir/DEBIAN/$script"
1891da177e4SLinus Torvalds#!/bin/sh
1901da177e4SLinus Torvalds
1911da177e4SLinus Torvaldsset -e
1921da177e4SLinus Torvalds
1934964451aSFrans Pop# Pass maintainer script parameters to hook scripts
194241ad11fSmaximilian attemsexport DEB_MAINT_PARAMS="\$*"
1954964451aSFrans Pop
1961c8ddae0SBen Hutchings# Tell initramfs builder whether it's wanted
1971c8ddae0SBen Hutchingsexport INITRD=$want_initrd
1981c8ddae0SBen Hutchings
199c95182bfSAnisse Astiertest -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
2001da177e4SLinus Torvaldsexit 0
2011da177e4SLinus TorvaldsEOF
2021da177e4SLinus Torvalds	chmod 755 "$tmpdir/DEBIAN/$script"
2031da177e4SLinus Torvaldsdone
2041da177e4SLinus Torvalds
205edec611dSmaximilian attems# Try to determine maintainer and email values
206edec611dSmaximilian attemsif [ -n "$DEBEMAIL" ]; then
207edec611dSmaximilian attems       email=$DEBEMAIL
208edec611dSmaximilian attemselif [ -n "$EMAIL" ]; then
209edec611dSmaximilian attems       email=$EMAIL
210edec611dSmaximilian attemselse
211edec611dSmaximilian attems       email=$(id -nu)@$(hostname -f)
212edec611dSmaximilian attemsfi
213edec611dSmaximilian attemsif [ -n "$DEBFULLNAME" ]; then
214edec611dSmaximilian attems       name=$DEBFULLNAME
215edec611dSmaximilian attemselif [ -n "$NAME" ]; then
216edec611dSmaximilian attems       name=$NAME
217edec611dSmaximilian attemselse
218edec611dSmaximilian attems       name="Anonymous"
219edec611dSmaximilian attemsfi
220edec611dSmaximilian attemsmaintainer="$name <$email>"
221edec611dSmaximilian attems
2221da177e4SLinus Torvalds# Generate a simple changelog template
2231da177e4SLinus Torvaldscat <<EOF > debian/changelog
2244bf4cd49SFrans Poplinux-upstream ($packageversion) unstable; urgency=low
2251da177e4SLinus Torvalds
226a83ca277SFrans Pop  * Custom built Linux kernel.
2271da177e4SLinus Torvalds
228edec611dSmaximilian attems -- $maintainer  $(date -R)
2291da177e4SLinus TorvaldsEOF
2301da177e4SLinus Torvalds
2319461f666SFrans Pop# Generate copyright file
2329461f666SFrans Popcat <<EOF > debian/copyright
2339461f666SFrans PopThis is a packacked upstream version of the Linux kernel.
2349461f666SFrans Pop
2359461f666SFrans PopThe sources may be found at most Linux ftp sites, including:
2369461f666SFrans Popftp://ftp.kernel.org/pub/linux/kernel
2379461f666SFrans Pop
2389461f666SFrans PopCopyright: 1991 - 2009 Linus Torvalds and others.
2399461f666SFrans Pop
2409461f666SFrans PopThe git repository for mainline kernel development is at:
2419461f666SFrans Popgit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
2429461f666SFrans Pop
2439461f666SFrans Pop    This program is free software; you can redistribute it and/or modify
2449461f666SFrans Pop    it under the terms of the GNU General Public License as published by
2459461f666SFrans Pop    the Free Software Foundation; version 2 dated June, 1991.
2469461f666SFrans Pop
2479461f666SFrans PopOn Debian GNU/Linux systems, the complete text of the GNU General Public
2489461f666SFrans PopLicense version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
2499461f666SFrans PopEOF
2509461f666SFrans Pop
2511da177e4SLinus Torvalds# Generate a control file
2521da177e4SLinus Torvaldscat <<EOF > debian/control
2534bf4cd49SFrans PopSource: linux-upstream
254aa42abedSRogério BritoSection: kernel
2551da177e4SLinus TorvaldsPriority: optional
256edec611dSmaximilian attemsMaintainer: $maintainer
2572d7204acSRogério BritoStandards-Version: 3.8.4
258ee6eed80SRogério BritoHomepage: http://www.kernel.org/
2593e2ab256SFrans PopEOF
2603e2ab256SFrans Pop
2613e2ab256SFrans Popif [ "$ARCH" = "um" ]; then
2623e2ab256SFrans Pop	cat <<EOF >> debian/control
2631da177e4SLinus Torvalds
264687c3dacSSam RavnborgPackage: $packagename
2658ebc2fe9Smaximilian attemsProvides: linux-image, linux-image-2.6, linux-modules-$version
2661da177e4SLinus TorvaldsArchitecture: any
267dc5962fdSSam RavnborgDescription: User Mode Linux kernel, version $version
268dc5962fdSSam Ravnborg User-mode Linux is a port of the Linux kernel to its own system call
269dc5962fdSSam Ravnborg interface.  It provides a kind of virtual machine, which runs Linux
270dc5962fdSSam Ravnborg as a user process under another Linux kernel.  This is useful for
271dc5962fdSSam Ravnborg kernel development, sandboxes, jails, experimentation, and
272dc5962fdSSam Ravnborg many other things.
273dc5962fdSSam Ravnborg .
2741da177e4SLinus Torvalds This package contains the Linux kernel, modules and corresponding other
275a83ca277SFrans Pop files, version: $version.
2761da177e4SLinus TorvaldsEOF
2771da177e4SLinus Torvalds
278dc5962fdSSam Ravnborgelse
2793e2ab256SFrans Pop	cat <<EOF >> debian/control
280dc5962fdSSam Ravnborg
281dc5962fdSSam RavnborgPackage: $packagename
2828ebc2fe9Smaximilian attemsProvides: linux-image, linux-image-2.6, linux-modules-$version
283bf1b3644SJonathan McDowellSuggests: $fwpackagename
284dc5962fdSSam RavnborgArchitecture: any
285dc5962fdSSam RavnborgDescription: Linux kernel, version $version
286dc5962fdSSam Ravnborg This package contains the Linux kernel, modules and corresponding other
287a83ca277SFrans Pop files, version: $version.
288dc5962fdSSam RavnborgEOF
2894f66199bSFrans Pop
290dc5962fdSSam Ravnborgfi
291dc5962fdSSam Ravnborg
2928bf13561SFathi Boudra# Build kernel header package
293a765a7ceSMichal Marek(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
294a765a7ceSMichal Marek(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
2958bf13561SFathi Boudra(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
2968bf13561SFathi Boudra(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
297a765a7ceSMichal Marek(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
298ee81b786Smaximilian attemsdestdir=$kernel_headers_dir/usr/src/linux-headers-$version
299ee81b786Smaximilian attemsmkdir -p "$destdir"
300a765a7ceSMichal Marek(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
301a765a7ceSMichal Marek(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)
302d2091767SAnisse Astier(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
303a47b6c61SJoerg Roedelln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
3046c635224SBen Hutchingsrm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
305cd8d60a2STheodore Ts'o
306cd8d60a2STheodore Ts'ocat <<EOF >> debian/control
307cd8d60a2STheodore Ts'o
308ee81b786Smaximilian attemsPackage: $kernel_headers_packagename
309cd8d60a2STheodore Ts'oProvides: linux-headers, linux-headers-2.6
310f8ce239dSBen HutchingsArchitecture: any
311f8ce239dSBen HutchingsDescription: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
312f8ce239dSBen Hutchings This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
313cd8d60a2STheodore Ts'o .
314cd8d60a2STheodore Ts'o This is useful for people who need to build external modules
315cd8d60a2STheodore Ts'oEOF
316cd8d60a2STheodore Ts'o
317bf1b3644SJonathan McDowell# Do we have firmware? Move it out of the way and build it into a package.
318bf1b3644SJonathan McDowellif [ -e "$tmpdir/lib/firmware" ]; then
3196607ddadSmaximilian attems	mv "$tmpdir/lib/firmware"/* "$fwdir/lib/firmware/$version/"
3206607ddadSmaximilian attems	rmdir "$tmpdir/lib/firmware"
321bf1b3644SJonathan McDowell
322bf1b3644SJonathan McDowell	cat <<EOF >> debian/control
323bf1b3644SJonathan McDowell
324bf1b3644SJonathan McDowellPackage: $fwpackagename
325bf1b3644SJonathan McDowellArchitecture: all
326bf1b3644SJonathan McDowellDescription: Linux kernel firmware, version $version
327a83ca277SFrans Pop This package contains firmware from the Linux kernel, version $version.
328bf1b3644SJonathan McDowellEOF
329bf1b3644SJonathan McDowell
3303e2ab256SFrans Pop	create_package "$fwpackagename" "$fwdir"
331bf1b3644SJonathan McDowellfi
332bf1b3644SJonathan McDowell
333e6807785Smaximilian attemscat <<EOF >> debian/control
334e6807785Smaximilian attems
335ee81b786Smaximilian attemsPackage: $libc_headers_packagename
336e6807785Smaximilian attemsSection: devel
337e6807785Smaximilian attemsProvides: linux-kernel-headers
338e6807785Smaximilian attemsArchitecture: any
339e6807785Smaximilian attemsDescription: Linux support headers for userspace development
340e6807785Smaximilian attems This package provides userspaces headers from the Linux kernel.  These headers
341e6807785Smaximilian attems are used by the installed headers for GNU glibc and other system libraries.
342e6807785Smaximilian attemsEOF
343e6807785Smaximilian attems
344d7d357bcSJoerg Roedelif [ "$ARCH" != "um" ]; then
345d7d357bcSJoerg Roedel	create_package "$kernel_headers_packagename" "$kernel_headers_dir"
346ee81b786Smaximilian attems	create_package "$libc_headers_packagename" "$libc_headers_dir"
347d7d357bcSJoerg Roedelfi
348d7d357bcSJoerg Roedel
3493e2ab256SFrans Popcreate_package "$packagename" "$tmpdir"
3501da177e4SLinus Torvalds
351810e8437SAnisse Astierif [ -n "$BUILD_DEBUG" ] ; then
352810e8437SAnisse Astier	# Build debug package
353810e8437SAnisse Astier	# Different tools want the image in different locations
354810e8437SAnisse Astier	# perf
355810e8437SAnisse Astier	mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
356810e8437SAnisse Astier	cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
357810e8437SAnisse Astier	# systemtap
358810e8437SAnisse Astier	mkdir -p $dbg_dir/usr/lib/debug/boot/
359810e8437SAnisse Astier	ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
360810e8437SAnisse Astier	# kdump-tools
361810e8437SAnisse Astier	ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
362810e8437SAnisse Astier
363810e8437SAnisse Astier	cat <<EOF >> debian/control
364810e8437SAnisse Astier
365810e8437SAnisse AstierPackage: $dbg_packagename
366810e8437SAnisse AstierSection: debug
367810e8437SAnisse AstierProvides: linux-debug, linux-debug-$version
368810e8437SAnisse AstierArchitecture: any
369810e8437SAnisse AstierDescription: Linux kernel debugging symbols for $version
370810e8437SAnisse Astier This package will come in handy if you need to debug the kernel. It provides
371810e8437SAnisse Astier all the necessary debug symbols for the kernel and its modules.
372810e8437SAnisse AstierEOF
373810e8437SAnisse Astier
374810e8437SAnisse Astier	create_package "$dbg_packagename" "$dbg_dir"
375810e8437SAnisse Astierfi
376810e8437SAnisse Astier
3771da177e4SLinus Torvaldsexit 0
378