Use meta-packages for debian kernels

This commit is contained in:
Maximilian Luz 2020-07-04 19:36:15 +02:00
parent f67f7d4ddd
commit 81a9574e70
No known key found for this signature in database
GPG key ID: 70EC0937F6C26F02
5 changed files with 86 additions and 212 deletions

View file

@ -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:

View file

@ -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:

View file

@ -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

View file

@ -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
pkg/debian/meta/mkdebian.sh Executable file
View file

@ -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"