xref: /openbmc/linux/scripts/package/builddeb (revision d9f711db)
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*)
4022739edfSMichael Neuling		debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo 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
674204111cSAsbjoern Sloth Toennesen	dpkg-gencontrol $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
1552d087139SMichal Marek		for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
1562d087139SMichal Marek			module=lib/modules/$module
157810e8437SAnisse Astier			mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
158810e8437SAnisse Astier			# only keep debug symbols in the debug file
1592d087139SMichal Marek			$OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module
160810e8437SAnisse Astier			# strip original module from debug symbols
1612d087139SMichal Marek			$OBJCOPY --strip-debug $tmpdir/$module
162810e8437SAnisse Astier			# then add a link to those
1632d087139SMichal Marek			$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
164810e8437SAnisse Astier		done
165810e8437SAnisse Astier	fi
1661da177e4SLinus Torvaldsfi
1671da177e4SLinus Torvalds
168d7d357bcSJoerg Roedelif [ "$ARCH" != "um" ]; then
169dddcbb7cSJoerg Roedel	$MAKE headers_check KBUILD_SRC=
170dddcbb7cSJoerg Roedel	$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
171d7d357bcSJoerg Roedelfi
172e6807785Smaximilian attems
1731da177e4SLinus Torvalds# Install the maintainer scripts
174fe233cb6SFrans Pop# Note: hook scripts under /etc/kernel are also executed by official Debian
1751c8ddae0SBen Hutchings# kernel packages, as well as kernel packages built using make-kpkg.
1761c8ddae0SBen Hutchings# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
1771c8ddae0SBen Hutchings# so do we; recent versions of dracut and initramfs-tools will obey this.
178fe233cb6SFrans Popdebhookdir=${KDEB_HOOKDIR:-/etc/kernel}
1791c8ddae0SBen Hutchingsif grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
1801c8ddae0SBen Hutchings	want_initrd=Yes
1811c8ddae0SBen Hutchingselse
1821c8ddae0SBen Hutchings	want_initrd=No
1831c8ddae0SBen Hutchingsfi
1841da177e4SLinus Torvaldsfor script in postinst postrm preinst prerm ; do
185fe233cb6SFrans Pop	mkdir -p "$tmpdir$debhookdir/$script.d"
1861da177e4SLinus Torvalds	cat <<EOF > "$tmpdir/DEBIAN/$script"
1871da177e4SLinus Torvalds#!/bin/sh
1881da177e4SLinus Torvalds
1891da177e4SLinus Torvaldsset -e
1901da177e4SLinus Torvalds
1914964451aSFrans Pop# Pass maintainer script parameters to hook scripts
192241ad11fSmaximilian attemsexport DEB_MAINT_PARAMS="\$*"
1934964451aSFrans Pop
1941c8ddae0SBen Hutchings# Tell initramfs builder whether it's wanted
1951c8ddae0SBen Hutchingsexport INITRD=$want_initrd
1961c8ddae0SBen Hutchings
197c95182bfSAnisse Astiertest -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
1981da177e4SLinus Torvaldsexit 0
1991da177e4SLinus TorvaldsEOF
2001da177e4SLinus Torvalds	chmod 755 "$tmpdir/DEBIAN/$script"
2011da177e4SLinus Torvaldsdone
2021da177e4SLinus Torvalds
203edec611dSmaximilian attems# Try to determine maintainer and email values
204edec611dSmaximilian attemsif [ -n "$DEBEMAIL" ]; then
205edec611dSmaximilian attems       email=$DEBEMAIL
206edec611dSmaximilian attemselif [ -n "$EMAIL" ]; then
207edec611dSmaximilian attems       email=$EMAIL
208edec611dSmaximilian attemselse
209edec611dSmaximilian attems       email=$(id -nu)@$(hostname -f)
210edec611dSmaximilian attemsfi
211edec611dSmaximilian attemsif [ -n "$DEBFULLNAME" ]; then
212edec611dSmaximilian attems       name=$DEBFULLNAME
213edec611dSmaximilian attemselif [ -n "$NAME" ]; then
214edec611dSmaximilian attems       name=$NAME
215edec611dSmaximilian attemselse
216edec611dSmaximilian attems       name="Anonymous"
217edec611dSmaximilian attemsfi
218edec611dSmaximilian attemsmaintainer="$name <$email>"
219edec611dSmaximilian attems
220d9f711dbSSedat Dilek# Try to determine distribution
221d9f711dbSSedat Dilekif [ -n "$KDEB_CHANGELOG_DIST" ]; then
222d9f711dbSSedat Dilek        distribution=$KDEB_CHANGELOG_DIST
223d9f711dbSSedat Dilekelif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ]; then
224d9f711dbSSedat Dilek        : # nothing to do in this case
225d9f711dbSSedat Dilekelse
226d9f711dbSSedat Dilek        distribution="unstable"
227d9f711dbSSedat Dilek        echo >&2 "Using default distribution of 'unstable' in the changelog"
228d9f711dbSSedat Dilek        echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
229d9f711dbSSedat Dilekfi
230d9f711dbSSedat Dilek
2311da177e4SLinus Torvalds# Generate a simple changelog template
2321da177e4SLinus Torvaldscat <<EOF > debian/changelog
233d9f711dbSSedat Dileklinux-upstream ($packageversion) $distribution; urgency=low
2341da177e4SLinus Torvalds
235a83ca277SFrans Pop  * Custom built Linux kernel.
2361da177e4SLinus Torvalds
237edec611dSmaximilian attems -- $maintainer  $(date -R)
2381da177e4SLinus TorvaldsEOF
2391da177e4SLinus Torvalds
2409461f666SFrans Pop# Generate copyright file
2419461f666SFrans Popcat <<EOF > debian/copyright
2429461f666SFrans PopThis is a packacked upstream version of the Linux kernel.
2439461f666SFrans Pop
2449461f666SFrans PopThe sources may be found at most Linux ftp sites, including:
2459461f666SFrans Popftp://ftp.kernel.org/pub/linux/kernel
2469461f666SFrans Pop
247701ca30cSSedat DilekCopyright: 1991 - 2015 Linus Torvalds and others.
2489461f666SFrans Pop
2499461f666SFrans PopThe git repository for mainline kernel development is at:
250701ca30cSSedat Dilekgit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2519461f666SFrans Pop
2529461f666SFrans Pop    This program is free software; you can redistribute it and/or modify
2539461f666SFrans Pop    it under the terms of the GNU General Public License as published by
2549461f666SFrans Pop    the Free Software Foundation; version 2 dated June, 1991.
2559461f666SFrans Pop
2569461f666SFrans PopOn Debian GNU/Linux systems, the complete text of the GNU General Public
2579461f666SFrans PopLicense version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
2589461f666SFrans PopEOF
2599461f666SFrans Pop
2601da177e4SLinus Torvalds# Generate a control file
2611da177e4SLinus Torvaldscat <<EOF > debian/control
2624bf4cd49SFrans PopSource: linux-upstream
263aa42abedSRogério BritoSection: kernel
2641da177e4SLinus TorvaldsPriority: optional
265edec611dSmaximilian attemsMaintainer: $maintainer
2662d7204acSRogério BritoStandards-Version: 3.8.4
267ee6eed80SRogério BritoHomepage: http://www.kernel.org/
2683e2ab256SFrans PopEOF
2693e2ab256SFrans Pop
2703e2ab256SFrans Popif [ "$ARCH" = "um" ]; then
2713e2ab256SFrans Pop	cat <<EOF >> debian/control
2721da177e4SLinus Torvalds
273687c3dacSSam RavnborgPackage: $packagename
2748ebc2fe9Smaximilian attemsProvides: linux-image, linux-image-2.6, linux-modules-$version
2751da177e4SLinus TorvaldsArchitecture: any
276dc5962fdSSam RavnborgDescription: User Mode Linux kernel, version $version
277dc5962fdSSam Ravnborg User-mode Linux is a port of the Linux kernel to its own system call
278dc5962fdSSam Ravnborg interface.  It provides a kind of virtual machine, which runs Linux
279dc5962fdSSam Ravnborg as a user process under another Linux kernel.  This is useful for
280dc5962fdSSam Ravnborg kernel development, sandboxes, jails, experimentation, and
281dc5962fdSSam Ravnborg many other things.
282dc5962fdSSam Ravnborg .
2831da177e4SLinus Torvalds This package contains the Linux kernel, modules and corresponding other
284a83ca277SFrans Pop files, version: $version.
2851da177e4SLinus TorvaldsEOF
2861da177e4SLinus Torvalds
287dc5962fdSSam Ravnborgelse
2883e2ab256SFrans Pop	cat <<EOF >> debian/control
289dc5962fdSSam Ravnborg
290dc5962fdSSam RavnborgPackage: $packagename
2918ebc2fe9Smaximilian attemsProvides: linux-image, linux-image-2.6, linux-modules-$version
292bf1b3644SJonathan McDowellSuggests: $fwpackagename
293dc5962fdSSam RavnborgArchitecture: any
294dc5962fdSSam RavnborgDescription: Linux kernel, version $version
295dc5962fdSSam Ravnborg This package contains the Linux kernel, modules and corresponding other
296a83ca277SFrans Pop files, version: $version.
297dc5962fdSSam RavnborgEOF
2984f66199bSFrans Pop
299dc5962fdSSam Ravnborgfi
300dc5962fdSSam Ravnborg
3018bf13561SFathi Boudra# Build kernel header package
302a765a7ceSMichal Marek(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
303a765a7ceSMichal Marek(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
3048bf13561SFathi Boudra(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
3058bf13561SFathi Boudra(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
306a765a7ceSMichal Marek(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
307ee81b786Smaximilian attemsdestdir=$kernel_headers_dir/usr/src/linux-headers-$version
308ee81b786Smaximilian attemsmkdir -p "$destdir"
309a765a7ceSMichal Marek(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
310a765a7ceSMichal Marek(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)
311d2091767SAnisse Astier(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
312a47b6c61SJoerg Roedelln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
3136c635224SBen Hutchingsrm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
314cd8d60a2STheodore Ts'o
315cd8d60a2STheodore Ts'ocat <<EOF >> debian/control
316cd8d60a2STheodore Ts'o
317ee81b786Smaximilian attemsPackage: $kernel_headers_packagename
318cd8d60a2STheodore Ts'oProvides: linux-headers, linux-headers-2.6
319f8ce239dSBen HutchingsArchitecture: any
320f8ce239dSBen HutchingsDescription: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
321f8ce239dSBen Hutchings This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
322cd8d60a2STheodore Ts'o .
323cd8d60a2STheodore Ts'o This is useful for people who need to build external modules
324cd8d60a2STheodore Ts'oEOF
325cd8d60a2STheodore Ts'o
326bf1b3644SJonathan McDowell# Do we have firmware? Move it out of the way and build it into a package.
327bf1b3644SJonathan McDowellif [ -e "$tmpdir/lib/firmware" ]; then
3286607ddadSmaximilian attems	mv "$tmpdir/lib/firmware"/* "$fwdir/lib/firmware/$version/"
3296607ddadSmaximilian attems	rmdir "$tmpdir/lib/firmware"
330bf1b3644SJonathan McDowell
331bf1b3644SJonathan McDowell	cat <<EOF >> debian/control
332bf1b3644SJonathan McDowell
333bf1b3644SJonathan McDowellPackage: $fwpackagename
334bf1b3644SJonathan McDowellArchitecture: all
335bf1b3644SJonathan McDowellDescription: Linux kernel firmware, version $version
336a83ca277SFrans Pop This package contains firmware from the Linux kernel, version $version.
337bf1b3644SJonathan McDowellEOF
338bf1b3644SJonathan McDowell
3393e2ab256SFrans Pop	create_package "$fwpackagename" "$fwdir"
340bf1b3644SJonathan McDowellfi
341bf1b3644SJonathan McDowell
342e6807785Smaximilian attemscat <<EOF >> debian/control
343e6807785Smaximilian attems
344ee81b786Smaximilian attemsPackage: $libc_headers_packagename
345e6807785Smaximilian attemsSection: devel
346e6807785Smaximilian attemsProvides: linux-kernel-headers
347e6807785Smaximilian attemsArchitecture: any
348e6807785Smaximilian attemsDescription: Linux support headers for userspace development
349e6807785Smaximilian attems This package provides userspaces headers from the Linux kernel.  These headers
350e6807785Smaximilian attems are used by the installed headers for GNU glibc and other system libraries.
351e6807785Smaximilian attemsEOF
352e6807785Smaximilian attems
353d7d357bcSJoerg Roedelif [ "$ARCH" != "um" ]; then
354d7d357bcSJoerg Roedel	create_package "$kernel_headers_packagename" "$kernel_headers_dir"
355ee81b786Smaximilian attems	create_package "$libc_headers_packagename" "$libc_headers_dir"
356d7d357bcSJoerg Roedelfi
357d7d357bcSJoerg Roedel
3583e2ab256SFrans Popcreate_package "$packagename" "$tmpdir"
3591da177e4SLinus Torvalds
360810e8437SAnisse Astierif [ -n "$BUILD_DEBUG" ] ; then
361810e8437SAnisse Astier	# Build debug package
362810e8437SAnisse Astier	# Different tools want the image in different locations
363810e8437SAnisse Astier	# perf
364810e8437SAnisse Astier	mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
365810e8437SAnisse Astier	cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
366810e8437SAnisse Astier	# systemtap
367810e8437SAnisse Astier	mkdir -p $dbg_dir/usr/lib/debug/boot/
368810e8437SAnisse Astier	ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
369810e8437SAnisse Astier	# kdump-tools
370810e8437SAnisse Astier	ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
371810e8437SAnisse Astier
372810e8437SAnisse Astier	cat <<EOF >> debian/control
373810e8437SAnisse Astier
374810e8437SAnisse AstierPackage: $dbg_packagename
375810e8437SAnisse AstierSection: debug
376810e8437SAnisse AstierProvides: linux-debug, linux-debug-$version
377810e8437SAnisse AstierArchitecture: any
378810e8437SAnisse AstierDescription: Linux kernel debugging symbols for $version
379810e8437SAnisse Astier This package will come in handy if you need to debug the kernel. It provides
380810e8437SAnisse Astier all the necessary debug symbols for the kernel and its modules.
381810e8437SAnisse AstierEOF
382810e8437SAnisse Astier
383810e8437SAnisse Astier	create_package "$dbg_packagename" "$dbg_dir"
384810e8437SAnisse Astierfi
385810e8437SAnisse Astier
3861da177e4SLinus Torvaldsexit 0
387