Commit 3126c17d authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

builddeb: split kernel headers deployment out into a function



Deploy kernel headers (linux-headers package) in a separate function
for readability.

Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent aae6a671
Loading
Loading
Loading
Loading
+42 −34
Original line number Diff line number Diff line
@@ -46,13 +46,49 @@ create_package() {
	dpkg-deb ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" ..
}

deploy_kernel_headers () {
	pdir=$1

	rm -rf $pdir

	(
		cd $srctree
		find . arch/$SRCARCH -maxdepth 1 -name Makefile\*
		find include scripts -type f -o -type l
		find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform
		find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f
	) > debian/hdrsrcfiles

	{
		if is_enabled CONFIG_STACK_VALIDATION; then
			echo tools/objtool/objtool
		fi

		find arch/$SRCARCH/include Module.symvers include scripts -type f

		if is_enabled CONFIG_GCC_PLUGINS; then
			find scripts/gcc-plugins -name \*.so
		fi
	} > debian/hdrobjfiles

	destdir=$pdir/usr/src/linux-headers-$version
	mkdir -p $destdir
	tar -c -f - -C $srctree -T debian/hdrsrcfiles | tar -xf - -C $destdir
	tar -c -f - -T debian/hdrobjfiles | tar -xf - -C $destdir
	rm -f debian/hdrsrcfiles debian/hdrobjfiles

	# copy .config manually to be where it's expected to be
	cp $KCONFIG_CONFIG $destdir/.config

	mkdir -p $pdir/lib/modules/$version/
	ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build
}

version=$KERNELRELEASE
tmpdir=debian/linux-image
kernel_headers_dir=debian/linux-headers
libc_headers_dir=debian/linux-libc-dev
dbg_dir=debian/linux-image-dbg
packagename=linux-image-$version
kernel_headers_packagename=linux-headers-$version
libc_headers_packagename=linux-libc-dev
dbg_packagename=$packagename-dbg

@@ -77,10 +113,9 @@ esac
BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes)

# Setup the directory structure
rm -rf "$tmpdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" debian/files
rm -rf "$tmpdir" "$libc_headers_dir" "$dbg_dir" debian/files
mkdir -m 755 -p "$tmpdir/DEBIAN"
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
mkdir -p "$kernel_headers_dir/lib/modules/$version/"

# Install the kernel
if [ "$ARCH" = "um" ] ; then
@@ -163,37 +198,10 @@ EOF
	chmod 755 "$tmpdir/DEBIAN/$script"
done

# Build kernel header package
(
	cd $srctree
	find . arch/$SRCARCH -maxdepth 1 -name Makefile\*
	find include scripts -type f -o -type l
	find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform
	find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f
) > debian/hdrsrcfiles

{
	if is_enabled CONFIG_STACK_VALIDATION; then
		echo tools/objtool/objtool
	fi

	find arch/$SRCARCH/include Module.symvers include scripts -type f

	if is_enabled CONFIG_GCC_PLUGINS; then
		find scripts/gcc-plugins -name \*.so
	fi
} > debian/hdrobjfiles

destdir=$kernel_headers_dir/usr/src/linux-headers-$version
mkdir -p "$destdir"
tar -c -f - -C $srctree -T debian/hdrsrcfiles | tar -xf - -C $destdir
tar -c -f - -T debian/hdrobjfiles | tar -xf - -C $destdir
cp $KCONFIG_CONFIG $destdir/.config # copy .config manually to be where it's expected to be
ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
rm -f debian/hdrsrcfiles debian/hdrobjfiles

if [ "$ARCH" != "um" ]; then
	create_package "$kernel_headers_packagename" "$kernel_headers_dir"
	deploy_kernel_headers debian/linux-headers
	create_package linux-headers-$version debian/linux-headers

	create_package "$libc_headers_packagename" "$libc_headers_dir"
fi