linux-surface/pkg/fedora/kernel-surface/patches/0004-default-kernel.patch
Dorian Stoll 5241998eee
pkg: fedora: Update kernel-watchdog service
It seems that I just can't stop finding weird btrfs setups that break
the current script.

When you use btrfs with a default subvolume, GRUB will use normal paths,
like on ext4. So instead of /@/boot/vmlinuz you have /boot/vmlinuz.

The issue is that grub2-mkrelpath doesn't know about that. The script
would have to parse the GRUB configuration and fstab, to figure out
if btrfs is used with a default subvolume, and then add a flag to the
command depending on that.

However, instead of adding yet another workaround, let's just forget
about grubby and do what we want to do ourselves. Because, as it turns
out, not taking a weird detour over the path that GRUB uses to load the
kernel makes everything much easier.

Since this means that we are dealing with even more filepath and string
mangling, I decided to rewrite the script in python. It would work fine
in bash, but it would be even more spaghetti code that I don't really
want to write. And python is always available in Fedora anyway,
because DNF is written in it.
2024-02-06 23:25:26 +01:00

95 lines
2.9 KiB
Diff

From 81141a454f41cbc5fd41b778f85b10552c8676e8 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Sat, 22 Jul 2023 10:41:11 +0200
Subject: [PATCH] Install scripts and service files for keeping the surface
kernel the default
Signed-off-by: Dorian Stoll <dorian.stoll@tmsp.io>
---
redhat/kernel.spec.template | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/redhat/kernel.spec.template b/redhat/kernel.spec.template
index 43dce82a9d36..28df94e561d4 100644
--- a/redhat/kernel.spec.template
+++ b/redhat/kernel.spec.template
@@ -1025,6 +1025,11 @@ Source4000: README.rst
Source4001: rpminspect.yaml
Source4002: gating.yaml
+Source4100: linux-surface-default-watchdog.path
+Source4101: linux-surface-default-watchdog.service
+Source4102: linux-surface-default-watchdog.py
+Source4103: 90-linux-surface-default-watchdog.preset
+
## Patches needed for building this package
%if !%{nopatches}
@@ -1058,6 +1063,7 @@ Requires(pre): %{initrd_prereq}\
Requires(pre): ((linux-firmware >= 20150904-56.git6ebf5d57) if linux-firmware)\
Recommends: linux-firmware\
Recommends: iptsd\
+Recommends: %{package_name}-default-watchdog\
Requires(preun): systemd >= 200\
Conflicts: xfsprogs < 4.3.0-1\
Conflicts: xorg-x11-drv-vmmouse < 13.0.99\
@@ -1072,6 +1078,14 @@ AutoProv: yes\
%{nil}
+%package default-watchdog
+Summary: Watchdog service ensuring that the surface kernel stays the default kernel.
+%description default-watchdog
+This package provides a systemd service that will automatically keep
+the surface kernel as the default kernel in GRUB, even if a newer stock
+kernel has been installed.
+
+
%package doc
Summary: Various documentation bits found in the kernel source
Group: Documentation
@@ -2945,6 +2959,11 @@ find Documentation -type d | xargs chmod u+w
cd linux-%{KVERREL}
+install -D -m644 "%{SOURCE4100}" -t "%{buildroot}%{_unitdir}"
+install -D -m644 "%{SOURCE4101}" -t "%{buildroot}%{_unitdir}"
+install -D -m755 "%{SOURCE4102}" -t "%{buildroot}%{_bindir}"
+install -D -m755 "%{SOURCE4103}" -t "%{buildroot}%{_presetdir}"
+
%if %{with_doc}
docdir=$RPM_BUILD_ROOT%{_datadir}/doc/kernel-doc-%{specversion}-%{pkgrelease}
@@ -3197,6 +3216,15 @@ popd
### scripts
###
+%post default-watchdog
+%systemd_post linux-surface-default-watchdog.path
+
+%preun default-watchdog
+%systemd_preun linux-surface-default-watchdog.path
+
+%postun default-watchdog
+%systemd_postun_with_restart linux-surface-default-watchdog.path
+
%if %{with_tools}
%post -n %{package_name}-tools-libs
/sbin/ldconfig
@@ -3609,6 +3637,12 @@ fi\
%{_libexecdir}/kselftests
%endif
+%files default-watchdog
+%{_bindir}/linux-surface-default-watchdog.py
+%{_unitdir}/linux-surface-default-watchdog.path
+%{_unitdir}/linux-surface-default-watchdog.service
+%{_presetdir}/90-linux-surface-default-watchdog.preset
+
# empty meta-package
%if %{with_up_base}
%ifnarch %nobuildarches noarch
--
2.41.0