xref: /linux-6.15/scripts/package/builddeb (revision 8d740a37)
11da177e4SLinus Torvalds#!/bin/sh
21da177e4SLinus Torvalds#
34964451aSFrans Pop# builddeb 1.3
41da177e4SLinus Torvalds# Copyright 2003 Wichert Akkerman <[email protected]>
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
18bf7b0055SRiku Voipio	mkdir -m 755 -p "$pdir/DEBIAN"
19bf7b0055SRiku Voipio	mkdir -p "$pdir/usr/share/doc/$pname"
209461f666SFrans Pop	cp debian/copyright "$pdir/usr/share/doc/$pname/"
211ab18486Smaximilian attems	cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
221ab18486Smaximilian attems	gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
23b59a1225SFEJES Jozsef	sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
24b59a1225SFEJES Jozsef		| xargs -r0 md5sum > DEBIAN/md5sums"
259461f666SFrans Pop
263e2ab256SFrans Pop	# Fix ownership and permissions
273e2ab256SFrans Pop	chown -R root:root "$pdir"
283e2ab256SFrans Pop	chmod -R go-w "$pdir"
293e2ab256SFrans Pop
30dca0c024SRiku Voipio	# Create the package
31dca0c024SRiku Voipio	dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
32dca0c024SRiku Voipio	dpkg --build "$pdir" ..
33dca0c024SRiku Voipio}
34dca0c024SRiku Voipio
35dca0c024SRiku Voipioset_debarch() {
3610f26fa6SAsbjoern Sloth Toennesen	# Attempt to find the correct Debian architecture
3710f26fa6SAsbjoern Sloth Toennesen	case "$UTS_MACHINE" in
3810f26fa6SAsbjoern Sloth Toennesen	i386|ia64|alpha)
3910f26fa6SAsbjoern Sloth Toennesen		debarch="$UTS_MACHINE" ;;
4010f26fa6SAsbjoern Sloth Toennesen	x86_64)
4110f26fa6SAsbjoern Sloth Toennesen		debarch=amd64 ;;
4210f26fa6SAsbjoern Sloth Toennesen	sparc*)
4310f26fa6SAsbjoern Sloth Toennesen		debarch=sparc ;;
4410f26fa6SAsbjoern Sloth Toennesen	s390*)
45a1323fd1SBen Hutchings		debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
4610f26fa6SAsbjoern Sloth Toennesen	ppc*)
4722739edfSMichael Neuling		debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;;
4810f26fa6SAsbjoern Sloth Toennesen	parisc*)
4910f26fa6SAsbjoern Sloth Toennesen		debarch=hppa ;;
5010f26fa6SAsbjoern Sloth Toennesen	mips*)
51c5e318f6SBen Hutchings		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
52a8d9c9f1SFathi Boudra	arm64)
53a8d9c9f1SFathi Boudra		debarch=arm64 ;;
5410f26fa6SAsbjoern Sloth Toennesen	arm*)
55c5e318f6SBen Hutchings		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
5610f26fa6SAsbjoern Sloth Toennesen	*)
57dca0c024SRiku Voipio		debarch=$(dpkg --print-architecture)
5810f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
5910f26fa6SAsbjoern Sloth Toennesen		echo "** ** **  WARNING  ** ** **" >&2
6010f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
6110f26fa6SAsbjoern Sloth Toennesen		echo "Your architecture doesn't have it's equivalent" >&2
6210f26fa6SAsbjoern Sloth Toennesen		echo "Debian userspace architecture defined!" >&2
6310f26fa6SAsbjoern Sloth Toennesen		echo "Falling back to using your current userspace instead!" >&2
6410f26fa6SAsbjoern Sloth Toennesen		echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
6510f26fa6SAsbjoern Sloth Toennesen		echo "" >&2
6610f26fa6SAsbjoern Sloth Toennesen	esac
6755f88eccSAsbjoern Sloth Toennesen	if [ -n "$KBUILD_DEBARCH" ] ; then
6855f88eccSAsbjoern Sloth Toennesen		debarch="$KBUILD_DEBARCH"
6955f88eccSAsbjoern Sloth Toennesen	fi
7010f26fa6SAsbjoern Sloth Toennesen	forcearch="-DArchitecture=$debarch"
7110f26fa6SAsbjoern Sloth Toennesen
723e2ab256SFrans Pop}
733e2ab256SFrans Pop
741da177e4SLinus Torvalds# Some variables and settings used throughout the script
751da177e4SLinus Torvaldsversion=$KERNELRELEASE
764f66199bSFrans Poprevision=$(cat .version)
77c72c75dbSFrans Popif [ -n "$KDEB_PKGVERSION" ]; then
78c72c75dbSFrans Pop	packageversion=$KDEB_PKGVERSION
79c72c75dbSFrans Popelse
80c72c75dbSFrans Pop	packageversion=$version-$revision
81c72c75dbSFrans Popfi
823716001bSRiku Voipiosourcename=$KDEB_SOURCENAME
831da177e4SLinus Torvaldstmpdir="$objtree/debian/tmp"
84bf1b3644SJonathan McDowellfwdir="$objtree/debian/fwtmp"
85ee81b786Smaximilian attemskernel_headers_dir="$objtree/debian/hdrtmp"
86ee81b786Smaximilian attemslibc_headers_dir="$objtree/debian/headertmp"
87810e8437SAnisse Astierdbg_dir="$objtree/debian/dbgtmp"
88f7a2c31fSmaximilian attemspackagename=linux-image-$version
8995e2a7d8SHeinrich Schuchardtfwpackagename=linux-firmware-image-$version
90ee81b786Smaximilian attemskernel_headers_packagename=linux-headers-$version
91ee81b786Smaximilian attemslibc_headers_packagename=linux-libc-dev
92810e8437SAnisse Astierdbg_packagename=$packagename-dbg
93dca0c024SRiku Voipiodebarch=
94dca0c024SRiku Voipioforcearch=
95dca0c024SRiku Voipioset_debarch
96687c3dacSSam Ravnborg
974f66199bSFrans Popif [ "$ARCH" = "um" ] ; then
98687c3dacSSam Ravnborg	packagename=user-mode-linux-$version
99687c3dacSSam Ravnborgfi
1001da177e4SLinus Torvalds
1019de70176SAnisse Astier# Not all arches have the same installed path in debian
1029de70176SAnisse Astier# XXX: have each arch Makefile export a variable of the canonical image install
1039de70176SAnisse Astier# path instead
1049de70176SAnisse Astiercase $ARCH in
1059de70176SAnisse Astierum)
1069de70176SAnisse Astier	installed_image_path="usr/bin/linux-$version"
1079de70176SAnisse Astier	;;
1089de70176SAnisse Astierparisc|mips|powerpc)
1099de70176SAnisse Astier	installed_image_path="boot/vmlinux-$version"
1109de70176SAnisse Astier	;;
1119de70176SAnisse Astier*)
1129de70176SAnisse Astier	installed_image_path="boot/vmlinuz-$version"
1139de70176SAnisse Astieresac
1149de70176SAnisse Astier
115810e8437SAnisse AstierBUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)"
116810e8437SAnisse Astier
1171da177e4SLinus Torvalds# Setup the directory structure
118*8d740a37SRiku Voipiorm -rf "$tmpdir" "$fwdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
119e86c2412Smaximilian attemsmkdir -m 755 -p "$tmpdir/DEBIAN"
120bf7b0055SRiku Voipiomkdir -p "$tmpdir/lib" "$tmpdir/boot"
121bf7b0055SRiku Voipiomkdir -p "$fwdir/lib/firmware/$version/"
122a47b6c61SJoerg Roedelmkdir -p "$kernel_headers_dir/lib/modules/$version/"
1231da177e4SLinus Torvalds
1241da177e4SLinus Torvalds# Build and install the kernel
1254f66199bSFrans Popif [ "$ARCH" = "um" ] ; then
126bf7b0055SRiku Voipio	mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename"
127687c3dacSSam Ravnborg	$MAKE linux
128687c3dacSSam Ravnborg	cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
129d2091767SAnisse Astier	cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
130687c3dacSSam Ravnborg	gzip "$tmpdir/usr/share/doc/$packagename/config"
131687c3dacSSam Ravnborgelse
1321da177e4SLinus Torvalds	cp System.map "$tmpdir/boot/System.map-$version"
133d2091767SAnisse Astier	cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
1349de70176SAnisse Astierfi
135a89b433bSFrans Pop# Not all arches include the boot path in KBUILD_IMAGE
136242c5ab0SGuillem Joverif [ -e $KBUILD_IMAGE ]; then
1379de70176SAnisse Astier	cp $KBUILD_IMAGE "$tmpdir/$installed_image_path"
138242c5ab0SGuillem Joverelse
1399de70176SAnisse Astier	cp arch/$ARCH/boot/$KBUILD_IMAGE "$tmpdir/$installed_image_path"
140687c3dacSSam Ravnborgfi
1411da177e4SLinus Torvalds
142ca2a9d2cSArnaud Patard (Rtp)if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then
143ca2a9d2cSArnaud Patard (Rtp)	# Only some architectures with OF support have this target
144ca2a9d2cSArnaud Patard (Rtp)	if grep -q dtbs_install "${srctree}/arch/$SRCARCH/Makefile"; then
145ca2a9d2cSArnaud Patard (Rtp)		$MAKE KBUILD_SRC= INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
146ca2a9d2cSArnaud Patard (Rtp)	fi
147ca2a9d2cSArnaud Patard (Rtp)fi
148ca2a9d2cSArnaud Patard (Rtp)
149d2091767SAnisse Astierif grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
150dddcbb7cSJoerg Roedel	INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_install
151a47b6c61SJoerg Roedel	rm -f "$tmpdir/lib/modules/$version/build"
152a47b6c61SJoerg Roedel	rm -f "$tmpdir/lib/modules/$version/source"
1534f66199bSFrans Pop	if [ "$ARCH" = "um" ] ; then
154687c3dacSSam Ravnborg		mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
155687c3dacSSam Ravnborg		rmdir "$tmpdir/lib/modules/$version"
156687c3dacSSam Ravnborg	fi
157810e8437SAnisse Astier	if [ -n "$BUILD_DEBUG" ] ; then
1582d087139SMichal Marek		for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
1592d087139SMichal Marek			module=lib/modules/$module
160810e8437SAnisse Astier			mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
161810e8437SAnisse Astier			# only keep debug symbols in the debug file
1622d087139SMichal Marek			$OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module
163810e8437SAnisse Astier			# strip original module from debug symbols
1642d087139SMichal Marek			$OBJCOPY --strip-debug $tmpdir/$module
165810e8437SAnisse Astier			# then add a link to those
1662d087139SMichal Marek			$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
167810e8437SAnisse Astier		done
16864178cb6SAndrey Skvortsov
16964178cb6SAndrey Skvortsov		# resign stripped modules
17064178cb6SAndrey Skvortsov		MODULE_SIG_ALL="$(grep -s '^CONFIG_MODULE_SIG_ALL=y' $KCONFIG_CONFIG || true)"
17164178cb6SAndrey Skvortsov		if [ -n "$MODULE_SIG_ALL" ]; then
17264178cb6SAndrey Skvortsov			INSTALL_MOD_PATH="$tmpdir" $MAKE KBUILD_SRC= modules_sign
17364178cb6SAndrey Skvortsov		fi
174810e8437SAnisse Astier	fi
1751da177e4SLinus Torvaldsfi
1761da177e4SLinus Torvalds
177d7d357bcSJoerg Roedelif [ "$ARCH" != "um" ]; then
178dddcbb7cSJoerg Roedel	$MAKE headers_check KBUILD_SRC=
179dddcbb7cSJoerg Roedel	$MAKE headers_install KBUILD_SRC= INSTALL_HDR_PATH="$libc_headers_dir/usr"
180d7d357bcSJoerg Roedelfi
181e6807785Smaximilian attems
1821da177e4SLinus Torvalds# Install the maintainer scripts
183fe233cb6SFrans Pop# Note: hook scripts under /etc/kernel are also executed by official Debian
1841c8ddae0SBen Hutchings# kernel packages, as well as kernel packages built using make-kpkg.
1851c8ddae0SBen Hutchings# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
1861c8ddae0SBen Hutchings# so do we; recent versions of dracut and initramfs-tools will obey this.
187fe233cb6SFrans Popdebhookdir=${KDEB_HOOKDIR:-/etc/kernel}
1881c8ddae0SBen Hutchingsif grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
1891c8ddae0SBen Hutchings	want_initrd=Yes
1901c8ddae0SBen Hutchingselse
1911c8ddae0SBen Hutchings	want_initrd=No
1921c8ddae0SBen Hutchingsfi
1931da177e4SLinus Torvaldsfor script in postinst postrm preinst prerm ; do
194fe233cb6SFrans Pop	mkdir -p "$tmpdir$debhookdir/$script.d"
1951da177e4SLinus Torvalds	cat <<EOF > "$tmpdir/DEBIAN/$script"
1961da177e4SLinus Torvalds#!/bin/sh
1971da177e4SLinus Torvalds
1981da177e4SLinus Torvaldsset -e
1991da177e4SLinus Torvalds
2004964451aSFrans Pop# Pass maintainer script parameters to hook scripts
201241ad11fSmaximilian attemsexport DEB_MAINT_PARAMS="\$*"
2024964451aSFrans Pop
2031c8ddae0SBen Hutchings# Tell initramfs builder whether it's wanted
2041c8ddae0SBen Hutchingsexport INITRD=$want_initrd
2051c8ddae0SBen Hutchings
206c95182bfSAnisse Astiertest -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
2071da177e4SLinus Torvaldsexit 0
2081da177e4SLinus TorvaldsEOF
2091da177e4SLinus Torvalds	chmod 755 "$tmpdir/DEBIAN/$script"
2101da177e4SLinus Torvaldsdone
2111da177e4SLinus Torvalds
212edec611dSmaximilian attems# Try to determine maintainer and email values
213edec611dSmaximilian attemsif [ -n "$DEBEMAIL" ]; then
214edec611dSmaximilian attems       email=$DEBEMAIL
215edec611dSmaximilian attemselif [ -n "$EMAIL" ]; then
216edec611dSmaximilian attems       email=$EMAIL
217edec611dSmaximilian attemselse
218bea107b1SChristian Kujau       email=$(id -nu)@$(hostname -f 2>/dev/null || hostname)
219edec611dSmaximilian attemsfi
220edec611dSmaximilian attemsif [ -n "$DEBFULLNAME" ]; then
221edec611dSmaximilian attems       name=$DEBFULLNAME
222edec611dSmaximilian attemselif [ -n "$NAME" ]; then
223edec611dSmaximilian attems       name=$NAME
224edec611dSmaximilian attemselse
225edec611dSmaximilian attems       name="Anonymous"
226edec611dSmaximilian attemsfi
227edec611dSmaximilian attemsmaintainer="$name <$email>"
228edec611dSmaximilian attems
229d9f711dbSSedat Dilek# Try to determine distribution
230d9f711dbSSedat Dilekif [ -n "$KDEB_CHANGELOG_DIST" ]; then
231d9f711dbSSedat Dilek        distribution=$KDEB_CHANGELOG_DIST
232d9f711dbSSedat Dilekelif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ]; then
233d9f711dbSSedat Dilek        : # nothing to do in this case
234d9f711dbSSedat Dilekelse
235d9f711dbSSedat Dilek        distribution="unstable"
236d9f711dbSSedat Dilek        echo >&2 "Using default distribution of 'unstable' in the changelog"
237d9f711dbSSedat Dilek        echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
238d9f711dbSSedat Dilekfi
239d9f711dbSSedat Dilek
2401da177e4SLinus Torvalds# Generate a simple changelog template
2411da177e4SLinus Torvaldscat <<EOF > debian/changelog
2423716001bSRiku Voipio$sourcename ($packageversion) $distribution; urgency=low
2431da177e4SLinus Torvalds
244a83ca277SFrans Pop  * Custom built Linux kernel.
2451da177e4SLinus Torvalds
246edec611dSmaximilian attems -- $maintainer  $(date -R)
2471da177e4SLinus TorvaldsEOF
2481da177e4SLinus Torvalds
2499461f666SFrans Pop# Generate copyright file
2509461f666SFrans Popcat <<EOF > debian/copyright
2519461f666SFrans PopThis is a packacked upstream version of the Linux kernel.
2529461f666SFrans Pop
2539461f666SFrans PopThe sources may be found at most Linux ftp sites, including:
2549461f666SFrans Popftp://ftp.kernel.org/pub/linux/kernel
2559461f666SFrans Pop
256701ca30cSSedat DilekCopyright: 1991 - 2015 Linus Torvalds and others.
2579461f666SFrans Pop
2589461f666SFrans PopThe git repository for mainline kernel development is at:
259701ca30cSSedat Dilekgit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2609461f666SFrans Pop
2619461f666SFrans Pop    This program is free software; you can redistribute it and/or modify
2629461f666SFrans Pop    it under the terms of the GNU General Public License as published by
2639461f666SFrans Pop    the Free Software Foundation; version 2 dated June, 1991.
2649461f666SFrans Pop
2659461f666SFrans PopOn Debian GNU/Linux systems, the complete text of the GNU General Public
2669461f666SFrans PopLicense version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
2679461f666SFrans PopEOF
2689461f666SFrans Pop
2693716001bSRiku Voipio
2703716001bSRiku Voipiobuild_depends="bc, kmod, cpio "
2713716001bSRiku Voipio
2721da177e4SLinus Torvalds# Generate a control file
2731da177e4SLinus Torvaldscat <<EOF > debian/control
2743716001bSRiku VoipioSource: $sourcename
275aa42abedSRogério BritoSection: kernel
2761da177e4SLinus TorvaldsPriority: optional
277edec611dSmaximilian attemsMaintainer: $maintainer
2783716001bSRiku VoipioBuild-Depends: $build_depends
2792d7204acSRogério BritoStandards-Version: 3.8.4
280ee6eed80SRogério BritoHomepage: http://www.kernel.org/
2813e2ab256SFrans PopEOF
2823e2ab256SFrans Pop
2833e2ab256SFrans Popif [ "$ARCH" = "um" ]; then
2843e2ab256SFrans Pop	cat <<EOF >> debian/control
2851da177e4SLinus Torvalds
286687c3dacSSam RavnborgPackage: $packagename
2878ebc2fe9Smaximilian attemsProvides: linux-image, linux-image-2.6, linux-modules-$version
2881da177e4SLinus TorvaldsArchitecture: any
289dc5962fdSSam RavnborgDescription: User Mode Linux kernel, version $version
290dc5962fdSSam Ravnborg User-mode Linux is a port of the Linux kernel to its own system call
291dc5962fdSSam Ravnborg interface.  It provides a kind of virtual machine, which runs Linux
292dc5962fdSSam Ravnborg as a user process under another Linux kernel.  This is useful for
293dc5962fdSSam Ravnborg kernel development, sandboxes, jails, experimentation, and
294dc5962fdSSam Ravnborg many other things.
295dc5962fdSSam Ravnborg .
2961da177e4SLinus Torvalds This package contains the Linux kernel, modules and corresponding other
297a83ca277SFrans Pop files, version: $version.
2981da177e4SLinus TorvaldsEOF
2991da177e4SLinus Torvalds
300dc5962fdSSam Ravnborgelse
3013e2ab256SFrans Pop	cat <<EOF >> debian/control
302dc5962fdSSam Ravnborg
303dc5962fdSSam RavnborgPackage: $packagename
3048ebc2fe9Smaximilian attemsProvides: linux-image, linux-image-2.6, linux-modules-$version
305bf1b3644SJonathan McDowellSuggests: $fwpackagename
306dc5962fdSSam RavnborgArchitecture: any
307dc5962fdSSam RavnborgDescription: Linux kernel, version $version
308dc5962fdSSam Ravnborg This package contains the Linux kernel, modules and corresponding other
309a83ca277SFrans Pop files, version: $version.
310dc5962fdSSam RavnborgEOF
3114f66199bSFrans Pop
312dc5962fdSSam Ravnborgfi
313dc5962fdSSam Ravnborg
3148bf13561SFathi Boudra# Build kernel header package
315a765a7ceSMichal Marek(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
316a765a7ceSMichal Marek(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
3178bf13561SFathi Boudra(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
3188bf13561SFathi Boudra(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
319a765a7ceSMichal Marek(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
320ee81b786Smaximilian attemsdestdir=$kernel_headers_dir/usr/src/linux-headers-$version
321ee81b786Smaximilian attemsmkdir -p "$destdir"
322a765a7ceSMichal Marek(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
323a765a7ceSMichal Marek(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)
324d2091767SAnisse Astier(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
325a47b6c61SJoerg Roedelln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
3266c635224SBen Hutchingsrm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
327cd8d60a2STheodore Ts'o
328cd8d60a2STheodore Ts'ocat <<EOF >> debian/control
329cd8d60a2STheodore Ts'o
330ee81b786Smaximilian attemsPackage: $kernel_headers_packagename
331cd8d60a2STheodore Ts'oProvides: linux-headers, linux-headers-2.6
332f8ce239dSBen HutchingsArchitecture: any
333f8ce239dSBen HutchingsDescription: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
334f8ce239dSBen Hutchings This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
335cd8d60a2STheodore Ts'o .
336cd8d60a2STheodore Ts'o This is useful for people who need to build external modules
337cd8d60a2STheodore Ts'oEOF
338cd8d60a2STheodore Ts'o
339bf1b3644SJonathan McDowell# Do we have firmware? Move it out of the way and build it into a package.
340bf1b3644SJonathan McDowellif [ -e "$tmpdir/lib/firmware" ]; then
3416607ddadSmaximilian attems	mv "$tmpdir/lib/firmware"/* "$fwdir/lib/firmware/$version/"
3426607ddadSmaximilian attems	rmdir "$tmpdir/lib/firmware"
343bf1b3644SJonathan McDowell
344bf1b3644SJonathan McDowell	cat <<EOF >> debian/control
345bf1b3644SJonathan McDowell
346bf1b3644SJonathan McDowellPackage: $fwpackagename
347bf1b3644SJonathan McDowellArchitecture: all
348bf1b3644SJonathan McDowellDescription: Linux kernel firmware, version $version
349a83ca277SFrans Pop This package contains firmware from the Linux kernel, version $version.
350bf1b3644SJonathan McDowellEOF
351bf1b3644SJonathan McDowell
3523e2ab256SFrans Pop	create_package "$fwpackagename" "$fwdir"
353bf1b3644SJonathan McDowellfi
354bf1b3644SJonathan McDowell
355e6807785Smaximilian attemscat <<EOF >> debian/control
356e6807785Smaximilian attems
357ee81b786Smaximilian attemsPackage: $libc_headers_packagename
358e6807785Smaximilian attemsSection: devel
359e6807785Smaximilian attemsProvides: linux-kernel-headers
360e6807785Smaximilian attemsArchitecture: any
361e6807785Smaximilian attemsDescription: Linux support headers for userspace development
362e6807785Smaximilian attems This package provides userspaces headers from the Linux kernel.  These headers
363e6807785Smaximilian attems are used by the installed headers for GNU glibc and other system libraries.
364e6807785Smaximilian attemsEOF
365e6807785Smaximilian attems
366d7d357bcSJoerg Roedelif [ "$ARCH" != "um" ]; then
367d7d357bcSJoerg Roedel	create_package "$kernel_headers_packagename" "$kernel_headers_dir"
368ee81b786Smaximilian attems	create_package "$libc_headers_packagename" "$libc_headers_dir"
369d7d357bcSJoerg Roedelfi
370d7d357bcSJoerg Roedel
3713e2ab256SFrans Popcreate_package "$packagename" "$tmpdir"
3721da177e4SLinus Torvalds
373810e8437SAnisse Astierif [ -n "$BUILD_DEBUG" ] ; then
374810e8437SAnisse Astier	# Build debug package
375810e8437SAnisse Astier	# Different tools want the image in different locations
376810e8437SAnisse Astier	# perf
377810e8437SAnisse Astier	mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
378810e8437SAnisse Astier	cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
379810e8437SAnisse Astier	# systemtap
380810e8437SAnisse Astier	mkdir -p $dbg_dir/usr/lib/debug/boot/
381810e8437SAnisse Astier	ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
382810e8437SAnisse Astier	# kdump-tools
383810e8437SAnisse Astier	ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
384810e8437SAnisse Astier
385810e8437SAnisse Astier	cat <<EOF >> debian/control
386810e8437SAnisse Astier
387810e8437SAnisse AstierPackage: $dbg_packagename
388810e8437SAnisse AstierSection: debug
389810e8437SAnisse AstierProvides: linux-debug, linux-debug-$version
390810e8437SAnisse AstierArchitecture: any
391810e8437SAnisse AstierDescription: Linux kernel debugging symbols for $version
392810e8437SAnisse Astier This package will come in handy if you need to debug the kernel. It provides
393810e8437SAnisse Astier all the necessary debug symbols for the kernel and its modules.
394810e8437SAnisse AstierEOF
395810e8437SAnisse Astier
396810e8437SAnisse Astier	create_package "$dbg_packagename" "$dbg_dir"
397810e8437SAnisse Astierfi
398810e8437SAnisse Astier
3993716001bSRiku Voipioif [ "x$1" = "xdeb-pkg" ]
4003716001bSRiku Voipiothen
4013716001bSRiku Voipio    cat <<EOF > debian/rules
4023716001bSRiku Voipio#!/usr/bin/make -f
4033716001bSRiku Voipio
4043716001bSRiku Voipiobuild:
4053716001bSRiku Voipio	\$(MAKE)
4063716001bSRiku Voipio
4073716001bSRiku Voipiobinary-arch:
4083716001bSRiku Voipio	\$(MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg
4093716001bSRiku Voipio
4103716001bSRiku Voipioclean:
411*8d740a37SRiku Voipio	rm -rf debian/*tmp debian/files
4123716001bSRiku Voipio	mv debian/ debian.backup # debian/ might be cleaned away
4133716001bSRiku Voipio	\$(MAKE) clean
4143716001bSRiku Voipio	mv debian.backup debian
4153716001bSRiku Voipio
4163716001bSRiku Voipiobinary: binary-arch
4173716001bSRiku VoipioEOF
4183716001bSRiku Voipio	mv ${sourcename}.tar.gz ../${sourcename}_${version}.orig.tar.gz
4193716001bSRiku Voipio	tar caf ../${sourcename}_${packageversion}.debian.tar.gz debian/{copyright,rules,changelog,control}
4203716001bSRiku Voipio	dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \
4213716001bSRiku Voipio		-b / ../${sourcename}_${version}.orig.tar.gz  ../${sourcename}_${packageversion}.debian.tar.gz
4223716001bSRiku Voipio	mv ${sourcename}_${packageversion}*dsc ..
4233716001bSRiku Voipio	dpkg-genchanges > ../${sourcename}_${packageversion}_${debarch}.changes
4243716001bSRiku Voipioelse
4253716001bSRiku Voipio	dpkg-genchanges -b > ../${sourcename}_${packageversion}_${debarch}.changes
4263716001bSRiku Voipiofi
4273716001bSRiku Voipio
4281da177e4SLinus Torvaldsexit 0
429