Browse Source

Use meta-packages for debian kernels

Maximilian Luz 5 years ago
parent
commit
81a9574e70

+ 13 - 2
.github/workflows/debian.yml

@@ -8,7 +8,7 @@ name: Debian
 env:
 env:
   GPG_KEY_ID: 56C464BAAC421453
   GPG_KEY_ID: 56C464BAAC421453
   KERNEL_VERSION: 5.7.7
   KERNEL_VERSION: 5.7.7
-  KDEB_PKGVERSION: 5.7.7-1
+  KERNEL_REVISION: 1
   LOCALVERSION: -surface
   LOCALVERSION: -surface
   MAINLINE_REPO: git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack
   MAINLINE_REPO: git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack
   MAINLINE_BRANCH: cod/mainline
   MAINLINE_BRANCH: cod/mainline
@@ -71,6 +71,9 @@ jobs:
           ../ubuntu.config                                    \
           ../ubuntu.config                                    \
           ../../../../configs/surface-${KERNEL_VERSION%.*}.config
           ../../../../configs/surface-${KERNEL_VERSION%.*}.config
 
 
+        # set revision
+        echo "$KERNEL_REVISION" > .version
+
     - name: Setup secureboot certificate
     - name: Setup secureboot certificate
       env:
       env:
         SB_KEY: ${{ secrets.SURFACE_SB_KEY }}
         SB_KEY: ${{ secrets.SURFACE_SB_KEY }}
@@ -83,15 +86,23 @@ jobs:
         echo "$SB_KEY" | base64 -d > debian/kernel/linux/keys/MOK.key
         echo "$SB_KEY" | base64 -d > debian/kernel/linux/keys/MOK.key
         cp keys/surface.crt debian/kernel/linux/keys/MOK.crt
         cp keys/surface.crt debian/kernel/linux/keys/MOK.crt
 
 
-    - name: Build
+    - name: Build kernel
       run: |
       run: |
         cd pkg/debian/kernel/linux
         cd pkg/debian/kernel/linux
         make bindeb-pkg -j2
         make bindeb-pkg -j2
 
 
+    - name: Build meta-package
+      run: |
+        cd pkg/debian/meta
+        ./mkdebian.sh $(make -C ../kernel/linux -s kernelrelease) ${KERNEL_REVISION}
+        dpkg-buildpkg -b
+
     - name: Prepare release
     - name: Prepare release
       run: |
       run: |
         mkdir release
         mkdir release
+        rm pkg/debian/kernel/linux-libc-dev*.deb
         mv pkg/debian/kernel/*.deb release
         mv pkg/debian/kernel/*.deb release
+        mv pkg/debian/*.deb release
 
 
     - name: Sign packages
     - name: Sign packages
       env:
       env:

+ 13 - 2
.github/workflows/debian_lts.yml

@@ -8,7 +8,7 @@ name: Debian LTS
 env:
 env:
   GPG_KEY_ID: 56C464BAAC421453
   GPG_KEY_ID: 56C464BAAC421453
   KERNEL_VERSION: 4.19.131
   KERNEL_VERSION: 4.19.131
-  KDEB_PKGVERSION: 4.19.131-1
+  KERNEL_REVISION: 1
   LOCALVERSION: -surface-lts
   LOCALVERSION: -surface-lts
   MAINLINE_REPO: git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack
   MAINLINE_REPO: git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack
   MAINLINE_BRANCH: cod/mainline
   MAINLINE_BRANCH: cod/mainline
@@ -71,6 +71,9 @@ jobs:
           ../ubuntu.config                                    \
           ../ubuntu.config                                    \
           ../../../../configs/surface-${KERNEL_VERSION%.*}.config
           ../../../../configs/surface-${KERNEL_VERSION%.*}.config
 
 
+        # set revision
+        echo "$KERNEL_REVISION" > .version
+
     - name: Setup secureboot certificate
     - name: Setup secureboot certificate
       env:
       env:
         SB_KEY: ${{ secrets.SURFACE_SB_KEY }}
         SB_KEY: ${{ secrets.SURFACE_SB_KEY }}
@@ -83,15 +86,23 @@ jobs:
         echo "$SB_KEY" | base64 -d > debian/kernel-lts/linux/keys/MOK.key
         echo "$SB_KEY" | base64 -d > debian/kernel-lts/linux/keys/MOK.key
         cp keys/surface.crt debian/kernel-lts/linux/keys/MOK.crt
         cp keys/surface.crt debian/kernel-lts/linux/keys/MOK.crt
 
 
-    - name: Build
+    - name: Build kernel
       run: |
       run: |
         cd pkg/debian/kernel-lts/linux
         cd pkg/debian/kernel-lts/linux
         make bindeb-pkg -j2
         make bindeb-pkg -j2
 
 
+    - name: Build meta-package
+      run: |
+        cd pkg/debian/meta
+        ./mkdebian.sh $(make -C ../kernel-lts/linux -s kernelrelease) ${KERNEL_REVISION}
+        dpkg-buildpkg -b
+
     - name: Prepare release
     - name: Prepare release
       run: |
       run: |
         mkdir release
         mkdir release
+        rm pkg/debian/kernel-lts/linux-libc-dev*.deb
         mv pkg/debian/kernel-lts/*.deb release
         mv pkg/debian/kernel-lts/*.deb release
+        mv pkg/debian/*.deb release
 
 
     - name: Sign packages
     - name: Sign packages
       env:
       env:

+ 0 - 83
pkg/debian/kernel-lts/0002-Version-changes-for-linux-surface-debian-package.patch

@@ -1,83 +0,0 @@
-From 8b2757ee31252c7a4fe1b3531397f76ce00e9ad6 Mon Sep 17 00:00:00 2001
-From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sun, 19 Jan 2020 22:50:24 +0100
-Subject: [PATCH] Version changes for linux-surface debian package
-
-Rename debian kernel packages so that they do not contain the full version
-in the name any more as this allows automated updates via a package
-repository. Instead the package name now only contains the $LOCALVERSION
-string.
-
-Also rename libc-dev to allow multiple versions to co-exist in the same
-repository.
-
-Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
----
- scripts/package/builddeb |  7 ++++---
- scripts/package/mkdebian | 13 +++++++++----
- 2 files changed, 13 insertions(+), 7 deletions(-)
-
-diff --git a/scripts/package/builddeb b/scripts/package/builddeb
-index 0b31f4f1f92c..af25b9397c39 100755
---- a/scripts/package/builddeb
-+++ b/scripts/package/builddeb
-@@ -35,13 +35,14 @@ create_package() {
- }
- 
- version=$KERNELRELEASE
-+featureset=$(echo "$version" | sed -E 's/[0-9]+\.[0-9]+\.[0-9]+-(.*)/\1/')
- tmpdir="$objtree/debian/tmp"
- kernel_headers_dir="$objtree/debian/hdrtmp"
- libc_headers_dir="$objtree/debian/headertmp"
- dbg_dir="$objtree/debian/dbgtmp"
--packagename=linux-image-$version
--kernel_headers_packagename=linux-headers-$version
--libc_headers_packagename=linux-libc-dev
-+packagename=linux-image-$featureset
-+kernel_headers_packagename=linux-headers-$featureset
-+libc_headers_packagename=linux-libc-dev-$featureset
- dbg_packagename=$packagename-dbg
- 
- if [ "$ARCH" = "um" ] ; then
-diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
-index edcad61fe3cd..34f6bd2447b6 100755
---- a/scripts/package/mkdebian
-+++ b/scripts/package/mkdebian
-@@ -86,6 +86,8 @@ set_debarch() {
- 
- # Some variables and settings used throughout the script
- version=$KERNELRELEASE
-+featureset=$(echo "$version" | sed -E 's/[0-9]+\.[0-9]+\.[0-9]+-(.*)/\1/')
-+shortversion=$(echo "$version" | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+)-.*/\1/')
- if [ -n "$KDEB_PKGVERSION" ]; then
- 	packageversion=$KDEB_PKGVERSION
- 	revision=${packageversion##*-}
-@@ -94,8 +96,9 @@ else
- 	packageversion=$version-$revision
- fi
- sourcename=$KDEB_SOURCENAME
--packagename=linux-image-$version
--kernel_headers_packagename=linux-headers-$version
-+packagename=linux-image-$featureset
-+kernel_headers_packagename=linux-headers-$featureset
-+libc_headers_packagename=linux-libc-dev-$featureset
- dbg_packagename=$packagename-dbg
- debarch=
- set_debarch
-@@ -186,9 +189,11 @@ Description: Linux kernel headers for $version on $debarch
-  .
-  This is useful for people who need to build external modules
- 
--Package: linux-libc-dev
-+Package: $libc_headers_packagename
- Section: devel
--Provides: linux-kernel-headers
-+Provides: linux-kernel-headers, linux-libc-dev (= $shortversion)
-+Conflicts: linux-libc-dev
-+Replaces: linux-libc-dev
- Architecture: $debarch
- Description: Linux support headers for userspace development
-  This package provides userspaces headers from the Linux kernel.  These headers
--- 
-2.25.0
-

+ 0 - 125
pkg/debian/kernel/0002-Version-changes-for-linux-surface-debian-package.patch

@@ -1,125 +0,0 @@
-From 0ba6e3fc4c3b40a7a38dc835a5e6cfc143e2afd9 Mon Sep 17 00:00:00 2001
-From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sun, 3 May 2020 16:55:14 +0200
-Subject: [PATCH] Version changes for linux-surface debian package
-
-Rename debian kernel packages so that they do not contain the full version
-in the name any more as this allows automated updates via a package
-repository. Instead the package name now only contains the $LOCALVERSION
-string.
-
-Also rename libc-dev to allow multiple versions to co-exist in the same
-repository.
-
-Further, revert upstream change 9945722afdc3443eab826b2da1122509a13a50a5
-as the Kconfig files dropped in this commit seem to be required by some
-out-of-tree driver modules.
-
-Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
----
- scripts/package/builddeb | 17 ++++++++++-------
- scripts/package/mkdebian | 13 +++++++++----
- 2 files changed, 19 insertions(+), 11 deletions(-)
-
-diff --git a/scripts/package/builddeb b/scripts/package/builddeb
-index 6df3c9f8b2da..48be1f95a413 100755
---- a/scripts/package/builddeb
-+++ b/scripts/package/builddeb
-@@ -53,8 +53,8 @@ deploy_kernel_headers () {
- 
- 	(
- 		cd $srctree
--		find . arch/$SRCARCH -maxdepth 1 -name Makefile\*
--		find include scripts -type f -o -type l
-+		find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl
-+		find arch/*/include 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
-@@ -71,7 +71,7 @@ deploy_kernel_headers () {
- 		fi
- 	} > debian/hdrobjfiles
- 
--	destdir=$pdir/usr/src/linux-headers-$version
-+	destdir=$pdir/usr/src/$kernel_headers_packagename
- 	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
-@@ -81,7 +81,7 @@ deploy_kernel_headers () {
- 	cp $KCONFIG_CONFIG $destdir/.config
- 
- 	mkdir -p $pdir/lib/modules/$version/
--	ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build
-+	ln -s /usr/src/$kernel_headers_packagename $pdir/lib/modules/$version/build
- }
- 
- deploy_libc_headers () {
-@@ -100,9 +100,12 @@ deploy_libc_headers () {
- }
- 
- version=$KERNELRELEASE
-+featureset=$(echo "$version" | sed -E 's/[0-9]+\.[0-9]+\.[0-9]+-(.*)/\1/')
- tmpdir=debian/linux-image
- dbg_dir=debian/linux-image-dbg
--packagename=linux-image-$version
-+packagename=linux-image-$featureset
-+kernel_headers_packagename=linux-headers-$featureset
-+libc_headers_packagename=linux-libc-dev-$featureset
- dbg_packagename=$packagename-dbg
- 
- if [ "$ARCH" = "um" ] ; then
-@@ -203,10 +206,10 @@ done
- 
- if [ "$ARCH" != "um" ]; then
- 	deploy_kernel_headers debian/linux-headers
--	create_package linux-headers-$version debian/linux-headers
-+	create_package $kernel_headers_packagename debian/linux-headers
- 
- 	deploy_libc_headers debian/linux-libc-dev
--	create_package linux-libc-dev debian/linux-libc-dev
-+	create_package $libc_headers_packagename debian/linux-libc-dev
- fi
- 
- create_package "$packagename" "$tmpdir"
-diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
-index df1adbfb8ead..0a8ed2f98b6a 100755
---- a/scripts/package/mkdebian
-+++ b/scripts/package/mkdebian
-@@ -86,6 +86,8 @@ set_debarch() {
- 
- # Some variables and settings used throughout the script
- version=$KERNELRELEASE
-+featureset=$(echo "$version" | sed -E 's/[0-9]+\.[0-9]+\.[0-9]+-(.*)/\1/')
-+shortversion=$(echo "$version" | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+)-.*/\1/')
- if [ -n "$KDEB_PKGVERSION" ]; then
- 	packageversion=$KDEB_PKGVERSION
- 	revision=${packageversion##*-}
-@@ -94,8 +96,9 @@ else
- 	packageversion=$version-$revision
- fi
- sourcename=$KDEB_SOURCENAME
--packagename=linux-image-$version
--kernel_headers_packagename=linux-headers-$version
-+packagename=linux-image-$featureset
-+kernel_headers_packagename=linux-headers-$featureset
-+libc_headers_packagename=linux-libc-dev-$featureset
- dbg_packagename=$packagename-dbg
- debarch=
- set_debarch
-@@ -190,9 +193,11 @@ Description: Linux kernel headers for $version on $debarch
-  .
-  This is useful for people who need to build external modules
- 
--Package: linux-libc-dev
-+Package: $libc_headers_packagename
- Section: devel
--Provides: linux-kernel-headers
-+Provides: linux-kernel-headers, linux-libc-dev (= $shortversion)
-+Conflicts: linux-libc-dev
-+Replaces: linux-libc-dev
- Architecture: $debarch
- Description: Linux support headers for userspace development
-  This package provides userspaces headers from the Linux kernel.  These headers
--- 
-2.26.2
-

+ 60 - 0
pkg/debian/meta/mkdebian.sh

@@ -0,0 +1,60 @@
+#!/usr/bin/bash
+
+kernelrelease="${1}"
+pkgrevision="${2}"
+
+distribution="unstable"
+debarch="amd64"
+debcompat="10"
+sourcename="linux-surface"
+maintainer="surfacebot <surfacebot@users.noreply.github.com>"
+pkgversion="${kernelrelease}-${pkgrevision}"
+
+image_pkgname="linux-image-surface"
+image_pkgname_actual="linux-image-${kernelrelease}"
+
+headers_pkgname="linux-headers-surface"
+headers_pkgname_actual="linux-headers-${kernelrelease}"
+
+
+mkdir -p "debian/source"
+echo "1.0" > "debian/source/format"
+echo "${debarch}" > "debian/arch"
+echo "${debcompat}" > "debian/compat"
+
+cat <<EOF > "debian/changelog"
+${sourcename} (${pkgversion}) ${distribution}; urgency=medium
+
+  * Linux kernel for Microsoft Surface devices.
+
+ -- $maintainer  $(date -R)
+EOF
+
+cat <<EOF > "debian/control"
+Source: ${sourcename}
+Section: kernel
+Priority: optional
+Maintainer: ${maintainer}
+Homepage: https://github.com/linux-surface/linux-surface
+
+Package: ${image_pkgname}
+Architecture: ${debarch}
+Depends: ${image_pkgname_actual} (= ${pkgversion})
+Description:
+  Meta-package for linux-surface kernel images.
+
+Package: ${headers_pkgname}
+Architecture: ${debarch}
+Depends: ${headers_pkgname_actual} (= ${pkgversion})
+Description:
+  Meta-package for linux-surface headers.
+EOF
+
+cat <<EOF > "debian/rules"
+#!/usr/bin/make -f
+export DH_VERBOSE = 1
+
+%:
+	dh \$@
+EOF
+chmod +x "debian/rules"