diff --git a/changelog/69131.fixed.md b/changelog/69131.fixed.md new file mode 100644 index 000000000000..f3893efa6b04 --- /dev/null +++ b/changelog/69131.fixed.md @@ -0,0 +1 @@ +Fixed `kernelpkg.upgrade` on Debian 13 (trixie) and other distros that ship a kernelrelease containing characters outside `[\d.-]` (for example `6.12.86+deb13-amd64`). `kernelpkg_linux_apt._kernel_type` now parses such releases instead of raising `AttributeError: 'NoneType' object has no attribute 'group'`. diff --git a/salt/modules/kernelpkg_linux_apt.py b/salt/modules/kernelpkg_linux_apt.py index 33cef3eaaa50..8d18ef2e088a 100644 --- a/salt/modules/kernelpkg_linux_apt.py +++ b/salt/modules/kernelpkg_linux_apt.py @@ -256,7 +256,7 @@ def _kernel_type(): """ Parse the kernel name and return its type """ - return re.match(r"^[\d.-]+-(.+)$", active()).group(1) + return re.match(r"^[\w.+\-~]+-([^-]+)$", active()).group(1) def _cmp_version(item1, item2): diff --git a/tests/unit/modules/test_kernelpkg_linux_apt.py b/tests/unit/modules/test_kernelpkg_linux_apt.py index cf56deb4a4ad..b38a71529317 100644 --- a/tests/unit/modules/test_kernelpkg_linux_apt.py +++ b/tests/unit/modules/test_kernelpkg_linux_apt.py @@ -114,3 +114,15 @@ def test_remove_error(self): self._kernelpkg.remove, release=self.KERNEL_LIST[0], ) + + def test_kernel_type_with_trixie_release(self): + """ + Test - _kernel_type handles a Debian 13 kernelrelease that contains '+' + """ + with patch.object( + self._kernelpkg, "active", return_value="6.12.86+deb13-amd64" + ): + self.assertEqual( + self._kernelpkg._kernel_type(), # pylint: disable=protected-access + "amd64", + )