From 81a9574e708b99cbc27f1cb966352faafec6c653 Mon Sep 17 00:00:00 2001 From: Maximilian Luz Date: Sat, 4 Jul 2020 19:36:15 +0200 Subject: [PATCH] Use meta-packages for debian kernels --- .github/workflows/debian.yml | 15 ++- .github/workflows/debian_lts.yml | 15 ++- ...ges-for-linux-surface-debian-package.patch | 83 ------------ ...ges-for-linux-surface-debian-package.patch | 125 ------------------ pkg/debian/meta/mkdebian.sh | 60 +++++++++ 5 files changed, 86 insertions(+), 212 deletions(-) delete mode 100644 pkg/debian/kernel-lts/0002-Version-changes-for-linux-surface-debian-package.patch delete mode 100644 pkg/debian/kernel/0002-Version-changes-for-linux-surface-debian-package.patch create mode 100755 pkg/debian/meta/mkdebian.sh diff --git a/.github/workflows/debian.yml b/.github/workflows/debian.yml index 1b6df3966..9400d9bc4 100644 --- a/.github/workflows/debian.yml +++ b/.github/workflows/debian.yml @@ -8,7 +8,7 @@ name: Debian env: GPG_KEY_ID: 56C464BAAC421453 KERNEL_VERSION: 5.7.7 - KDEB_PKGVERSION: 5.7.7-1 + KERNEL_REVISION: 1 LOCALVERSION: -surface MAINLINE_REPO: git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack MAINLINE_BRANCH: cod/mainline @@ -71,6 +71,9 @@ jobs: ../ubuntu.config \ ../../../../configs/surface-${KERNEL_VERSION%.*}.config + # set revision + echo "$KERNEL_REVISION" > .version + - name: Setup secureboot certificate env: SB_KEY: ${{ secrets.SURFACE_SB_KEY }} @@ -83,15 +86,23 @@ jobs: echo "$SB_KEY" | base64 -d > debian/kernel/linux/keys/MOK.key cp keys/surface.crt debian/kernel/linux/keys/MOK.crt - - name: Build + - name: Build kernel run: | cd pkg/debian/kernel/linux 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 run: | mkdir release + rm pkg/debian/kernel/linux-libc-dev*.deb mv pkg/debian/kernel/*.deb release + mv pkg/debian/*.deb release - name: Sign packages env: diff --git a/.github/workflows/debian_lts.yml b/.github/workflows/debian_lts.yml index d6aaaef0b..3f3c19e0e 100644 --- a/.github/workflows/debian_lts.yml +++ b/.github/workflows/debian_lts.yml @@ -8,7 +8,7 @@ name: Debian LTS env: GPG_KEY_ID: 56C464BAAC421453 KERNEL_VERSION: 4.19.131 - KDEB_PKGVERSION: 4.19.131-1 + KERNEL_REVISION: 1 LOCALVERSION: -surface-lts MAINLINE_REPO: git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack MAINLINE_BRANCH: cod/mainline @@ -71,6 +71,9 @@ jobs: ../ubuntu.config \ ../../../../configs/surface-${KERNEL_VERSION%.*}.config + # set revision + echo "$KERNEL_REVISION" > .version + - name: Setup secureboot certificate env: SB_KEY: ${{ secrets.SURFACE_SB_KEY }} @@ -83,15 +86,23 @@ jobs: echo "$SB_KEY" | base64 -d > debian/kernel-lts/linux/keys/MOK.key cp keys/surface.crt debian/kernel-lts/linux/keys/MOK.crt - - name: Build + - name: Build kernel run: | cd pkg/debian/kernel-lts/linux 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 run: | mkdir release + rm pkg/debian/kernel-lts/linux-libc-dev*.deb mv pkg/debian/kernel-lts/*.deb release + mv pkg/debian/*.deb release - name: Sign packages env: diff --git a/pkg/debian/kernel-lts/0002-Version-changes-for-linux-surface-debian-package.patch b/pkg/debian/kernel-lts/0002-Version-changes-for-linux-surface-debian-package.patch deleted file mode 100644 index cb65320e3..000000000 --- a/pkg/debian/kernel-lts/0002-Version-changes-for-linux-surface-debian-package.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 8b2757ee31252c7a4fe1b3531397f76ce00e9ad6 Mon Sep 17 00:00:00 2001 -From: Maximilian Luz -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 ---- - 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 - diff --git a/pkg/debian/kernel/0002-Version-changes-for-linux-surface-debian-package.patch b/pkg/debian/kernel/0002-Version-changes-for-linux-surface-debian-package.patch deleted file mode 100644 index 744ca971a..000000000 --- a/pkg/debian/kernel/0002-Version-changes-for-linux-surface-debian-package.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 0ba6e3fc4c3b40a7a38dc835a5e6cfc143e2afd9 Mon Sep 17 00:00:00 2001 -From: Maximilian Luz -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 ---- - 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 - diff --git a/pkg/debian/meta/mkdebian.sh b/pkg/debian/meta/mkdebian.sh new file mode 100755 index 000000000..f20c1a919 --- /dev/null +++ b/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 " +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 < "debian/changelog" +${sourcename} (${pkgversion}) ${distribution}; urgency=medium + + * Linux kernel for Microsoft Surface devices. + + -- $maintainer $(date -R) +EOF + +cat < "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 < "debian/rules" +#!/usr/bin/make -f +export DH_VERBOSE = 1 + +%: + dh \$@ +EOF +chmod +x "debian/rules"