Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
implemented initial packaging changes to support kernel v5.10
- Loading branch information
Showing
2 changed files
with
280 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,270 @@ | ||
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile | ||
index 5858d6e44..e81b8a6fc 100644 | ||
--- a/arch/arm64/Makefile | ||
+++ b/arch/arm64/Makefile | ||
@@ -142,7 +142,7 @@ core-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a | ||
|
||
# Default target when executing plain make | ||
boot := arch/arm64/boot | ||
-KBUILD_IMAGE := $(boot)/Image.gz | ||
+KBUILD_IMAGE := $(boot)/Image | ||
|
||
all: Image.gz | ||
|
||
diff --git a/scripts/package/builddeb b/scripts/package/builddeb | ||
index 6df3c9f..d33e1f3 100755 | ||
--- a/scripts/package/builddeb | ||
+++ b/scripts/package/builddeb | ||
@@ -46,9 +46,46 @@ | ||
# in case we are in a restrictive umask environment like 0077 | ||
chmod -R a+rX "$pdir" | ||
|
||
+ # Create preinstall and post install script to remove dtb | ||
+ if [ "$3" = "dtb" ]; then | ||
+ | ||
+ cat >> $pdir/DEBIAN/preinst <<EOT | ||
+rm -rf /boot/dtb-$version; rm -rf /boot/dtb | ||
+exit 0 | ||
+EOT | ||
+ | ||
+ cat >> $pdir/DEBIAN/postinst <<EOT | ||
+cd /boot | ||
+ln -sfT dtb-$version dtb 2> /dev/null || mv dtb-$version dtb | ||
+exit 0 | ||
+EOT | ||
+ | ||
+ chmod 775 $pdir/DEBIAN/preinst ; chmod 775 $pdir/DEBIAN/postinst | ||
+ fi | ||
+ | ||
+ # Create postinst prerm scripts for headers | ||
+ if [ "$3" = "headers" ]; then | ||
+ | ||
+cat >> $pdir/DEBIAN/postinst << EOT | ||
+cd /usr/src/linux-headers-$version | ||
+echo "Compiling headers - please wait ..." | ||
+find -type f -exec touch {} + | ||
+make -s scripts >/dev/null | ||
+make -s M=scripts/mod/ >/dev/null | ||
+exit 0 | ||
+EOT | ||
+ | ||
+cat >> $pdir/DEBIAN/prerm << EOT | ||
+cd /usr/src/linux-headers-$version | ||
+rm -rf scripts .config.old | ||
+EOT | ||
+ | ||
+ chmod 775 $pdir/DEBIAN/postinst ; chmod 775 $pdir/DEBIAN/prerm | ||
+ fi | ||
+ | ||
# Create the package | ||
dpkg-gencontrol -p$pname -P"$pdir" | ||
- dpkg-deb $dpkg_deb_opts ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" .. | ||
+ dpkg-deb --build "$pdir" .. | ||
} | ||
|
||
deploy_kernel_headers () { | ||
@@ -105,9 +142,15 @@ | ||
} | ||
|
||
version=$KERNELRELEASE | ||
-tmpdir=debian/linux-image | ||
-dbg_dir=debian/linux-image-dbg | ||
-packagename=linux-image-$version | ||
+tmpdir="$objtree/debian/tmp" | ||
+kernel_headers_dir="$objtree/debian/hdrtmp" | ||
+libc_headers_dir="$objtree/debian/headertmp" | ||
+dbg_dir="$objtree/debian/dbgtmp" | ||
+dtb_dir="$objtree/debian/dtbtmp" | ||
+packagename=linux-image-"$BRANCH$LOCALVERSION" | ||
+kernel_headers_packagename=linux-headers-"$BRANCH$LOCALVERSION" | ||
+dtb_packagename=linux-dtb-"$BRANCH$LOCALVERSION" | ||
+libc_headers_packagename=linux-libc-dev-"$BRANCH$LOCALVERSION" | ||
dbg_packagename=$packagename-dbg | ||
|
||
if [ "$ARCH" = "um" ] ; then | ||
@@ -118,6 +161,15 @@ | ||
# XXX: have each arch Makefile export a variable of the canonical image install | ||
# path instead | ||
case $ARCH in | ||
+aarch64|arm64) | ||
+ image_name=Image | ||
+ installed_image_path="boot/vmlinuz-$version" | ||
+ | ||
+ ;; | ||
+arm*) | ||
+ image_name=zImage | ||
+ installed_image_path="boot/vmlinuz-$version" | ||
+ ;; | ||
um) | ||
installed_image_path="usr/bin/linux-$version" | ||
;; | ||
@@ -131,13 +183,17 @@ | ||
BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes) | ||
|
||
# Setup the directory structure | ||
-rm -rf "$tmpdir" "$dbg_dir" debian/files | ||
+rm -rf "$tmpdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" "$dtb_dir" $objtree/debian/files | ||
+mkdir -m 755 -p "$dtb_dir/DEBIAN" | ||
+mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename" | ||
mkdir -m 755 -p "$tmpdir/DEBIAN" | ||
mkdir -p "$tmpdir/lib" "$tmpdir/boot" | ||
+mkdir -p "$kernel_headers_dir/lib/modules/$version/" | ||
|
||
-# Install the kernel | ||
+# Build and install the kernel | ||
if [ "$ARCH" = "um" ] ; then | ||
mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename" | ||
+ $MAKE linux | ||
cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" | ||
cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config" | ||
gzip "$tmpdir/usr/share/doc/$packagename/config" | ||
@@ -181,6 +237,21 @@ | ||
fi | ||
fi | ||
|
||
+if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then | ||
+ #mkdir -p "$tmpdir/boot/dtb" | ||
+ INSTALL_DTBS_PATH="$dtb_dir/boot/dtb-$version" $MAKE KBUILD_SRC= dtbs_install | ||
+fi | ||
+ | ||
+if [ "$ARCH" != "um" ]; then | ||
+ $MAKE -f $srctree/Makefile headers | ||
+ $MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr" | ||
+ # move asm headers to /usr/include/<libc-machine>/asm to match the structure | ||
+ # used by Debian-based distros (to support multi-arch) | ||
+ host_arch=$(dpkg-architecture -a$(cat debian/arch) -qDEB_HOST_MULTIARCH) | ||
+ mkdir $libc_headers_dir/usr/include/$host_arch | ||
+ mv $libc_headers_dir/usr/include/asm $libc_headers_dir/usr/include/$host_arch/ | ||
+fi | ||
+ | ||
# Install the maintainer scripts | ||
# Note: hook scripts under /etc/kernel are also executed by official Debian | ||
# kernel packages, as well as kernel packages built using make-kpkg. | ||
@@ -190,7 +261,7 @@ | ||
for script in postinst postrm preinst prerm ; do | ||
mkdir -p "$tmpdir$debhookdir/$script.d" | ||
cat <<EOF > "$tmpdir/DEBIAN/$script" | ||
-#!/bin/sh | ||
+#!/bin/bash | ||
|
||
set -e | ||
|
||
@@ -206,14 +277,72 @@ | ||
chmod 755 "$tmpdir/DEBIAN/$script" | ||
done | ||
|
||
-if [ "$ARCH" != "um" ]; then | ||
- if is_enabled CONFIG_MODULES; then | ||
- deploy_kernel_headers debian/linux-headers | ||
- create_package linux-headers-$version debian/linux-headers | ||
+## | ||
+## Create sym link to kernel image | ||
+## | ||
+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst | ||
+cat >> $tmpdir/DEBIAN/postinst <<EOT | ||
+ln -sf $(basename $installed_image_path) /boot/$image_name 2> /dev/null || mv /$installed_image_path /boot/$image_name | ||
+touch /boot/.next | ||
+exit 0 | ||
+EOT | ||
+ | ||
+## | ||
+## FAT install workaround | ||
+## | ||
+sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst | ||
+cat >> $tmpdir/DEBIAN/preinst <<EOT | ||
+# exit if we are running chroot | ||
+if [ "\$(stat -c %d:%i /)" != "\$(stat -c %d:%i /proc/1/root/.)" ]; then exit 0; fi | ||
+ | ||
+check_and_unmount (){ | ||
+ boot_device=\$(mountpoint -d /boot) | ||
+ | ||
+ for file in /dev/* ; do | ||
+ CURRENT_DEVICE=\$(printf "%d:%d" \$(stat --printf="0x%t 0x%T" \$file)) | ||
+ if [[ "\$CURRENT_DEVICE" = "\$boot_device" ]]; then | ||
+ boot_partition=\$file | ||
+ break | ||
+ fi | ||
+ done | ||
+ | ||
+ bootfstype=\$(blkid -s TYPE -o value \$boot_partition) | ||
+ if [ "\$bootfstype" = "vfat" ]; then | ||
+ # we have to keep it mounted! umount /boot | ||
+ rm -f /boot/System.map* /boot/config* /boot/vmlinuz* /boot/$image_name /boot/uImage | ||
fi | ||
+} | ||
+mountpoint -q /boot && check_and_unmount | ||
+EOT | ||
+echo "exit 0" >> $tmpdir/DEBIAN/preinst | ||
+ | ||
+# Build kernel header package | ||
+(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" | ||
+(cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles" | ||
+(cd $srctree; find security/*/include -type f) >> "$objtree/debian/hdrsrcfiles" | ||
+(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles" | ||
+(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles" | ||
+if is_enabled CONFIG_STACK_VALIDATION; then | ||
+ (cd $objtree; find tools/objtool -type f -executable) >> "$objtree/debian/hdrobjfiles" | ||
+fi | ||
+(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles" | ||
+if is_enabled CONFIG_GCC_PLUGINS; then | ||
+ (cd $objtree; find scripts/gcc-plugins -name \*.so -o -name gcc-common.h) >> "$objtree/debian/hdrobjfiles" | ||
+fi | ||
+destdir=$kernel_headers_dir/usr/src/linux-headers-$version | ||
+mkdir -p "$destdir" | ||
+(cd $destdir; patch -p1 < /tmp/headers-debian-byteshift.patch) | ||
+(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -) | ||
+(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -) | ||
+(cd $objtree; 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 "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" | ||
|
||
- deploy_libc_headers debian/linux-libc-dev | ||
- create_package linux-libc-dev debian/linux-libc-dev | ||
+(cd $destdir; make M=scripts clean) | ||
+ | ||
+if [ "$ARCH" != "um" ]; then | ||
+ create_package "$kernel_headers_packagename" "$kernel_headers_dir" "headers" | ||
+ create_package "$dtb_packagename" "$dtb_dir" "dtb" | ||
fi | ||
|
||
create_package "$packagename" "$tmpdir" | ||
--- a/scripts/package/mkdebian | ||
+++ b/scripts/package/mkdebian | ||
@@ -94,13 +94,10 @@ | ||
packageversion=$version-$revision | ||
fi | ||
sourcename=$KDEB_SOURCENAME | ||
- | ||
-if [ "$ARCH" = "um" ] ; then | ||
- packagename=user-mode-linux | ||
-else | ||
- packagename=linux-image | ||
-fi | ||
- | ||
+packagename=linux-image-$BRANCH$LOCALVERSION | ||
+kernel_headers_packagename=linux-headers-$BRANCH$LOCALVERSION | ||
+dtb_packagename=linux-dtb-$BRANCH$LOCALVERSION | ||
+image_name= | ||
debarch= | ||
set_debarch | ||
|
||
@@ -184,6 +181,11 @@ | ||
This package contains the Linux kernel, modules and corresponding other | ||
files, version: $version. | ||
|
||
+Package: $dtb_packagename | ||
+Architecture: $debarch | ||
+Description: Linux DTB, version $version | ||
+ This package contains device blobs from the Linux kernel, version $version | ||
+ | ||
Package: linux-libc-dev | ||
Section: devel | ||
Provides: linux-kernel-headers | ||
@@ -199,6 +201,7 @@ | ||
|
||
Package: linux-headers-$version | ||
Architecture: $debarch | ||
+Depends: make, gcc, libc6-dev, bison, flex, libssl-dev | ||
Description: Linux kernel headers for $version on $debarch | ||
This package provides kernel header files for $version on $debarch | ||
. |