Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package zypp-boot-plugin for
openSUSE:Factory checked in at 2026-10-29 18:18:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/zypp-boot-plugin (Old)
and /work/SRC/openSUSE:Factory/.zypp-boot-plugin.new.1255 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "zypp-boot-plugin"
Thu Oct 29 18:18:15 2026 rev:11 rq:1393426 version:0.0.14
Changes:
--------
--- /work/SRC/openSUSE:Factory/zypp-boot-plugin/zypp-boot-plugin.changes
2025-09-19 15:33:35.659823273 +0200
+++
/work/SRC/openSUSE:Factory/.zypp-boot-plugin.new.1255/zypp-boot-plugin.changes
2026-10-29 18:18:15.745450189 +0100
@@ -1,0 +2,8 @@
+Wed Oct 28 13:23:16 UTC 2026 - [email protected]
+
+- Update to version 0.0.14:
+ * added [packages] section in zypp-boot-plugin.conf
+ * fixed tests for s390
+ * Drop 8.patch
+
+-------------------------------------------------------------------
Old:
----
8.patch
zypp-boot-plugin-0.0.13.tar.xz
New:
----
zypp-boot-plugin-0.0.14.tar.xz
----------(Old B)----------
Old: * fixed tests for s390
* Drop 8.patch
----------(Old E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ zypp-boot-plugin.spec ++++++
--- /var/tmp/diff_new_pack.uU1mMD/_old 2026-10-29 18:18:16.615486650 +0100
+++ /var/tmp/diff_new_pack.uU1mMD/_new 2026-10-29 18:18:16.617486734 +0100
@@ -1,7 +1,7 @@
#
# spec file for package zypp-boot-plugin
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,15 +17,13 @@
Name: zypp-boot-plugin
-Version: 0.0.13
+Version: 0.0.14
Release: 0
Summary: Zypp plugin for checking if a reboot is needed
License: GPL-2.0-or-later
Group: System/Packages
URL: https://github.com/openSUSE/zypp-boot-plugin
Source: zypp-boot-plugin-%{version}.tar.xz
-# PATCH-FIX-UPSTREAM - remove system library which is headers only
-Patch1: https://github.com/openSUSE/zypp-boot-plugin/pull/8.patch
BuildRequires: boost-devel > 1.69.0
BuildRequires: docbook5-xsl-stylesheets
BuildRequires: gcc-c++
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.uU1mMD/_old 2026-10-29 18:18:16.694489961 +0100
+++ /var/tmp/diff_new_pack.uU1mMD/_new 2026-10-29 18:18:16.700490212 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/openSUSE/zypp-boot-plugin.git</param>
- <param
name="changesrevision">d6054871a555b1416d2c73e71f4f4e56af471168</param></service></servicedata>
+ <param
name="changesrevision">7c3845156a302ec9e8bebd4f455cfc8e49c7bedb</param></service></servicedata>
(No newline at EOF)
++++++ zypp-boot-plugin-0.0.13.tar.xz -> zypp-boot-plugin-0.0.14.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zypp-boot-plugin-0.0.13/NEWS
new/zypp-boot-plugin-0.0.14/NEWS
--- old/zypp-boot-plugin-0.0.13/NEWS 2025-05-15 16:40:04.000000000 +0200
+++ new/zypp-boot-plugin-0.0.14/NEWS 2026-10-28 14:15:46.000000000 +0100
@@ -1,3 +1,6 @@
+Version 0.0.14
+* Added [Packages] section in zypp-boot-plugin.conf
+
Version 0.0.13
* Fixed build with boost 1.88 (bsc#1242801)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zypp-boot-plugin-0.0.13/README.md
new/zypp-boot-plugin-0.0.14/README.md
--- old/zypp-boot-plugin-0.0.13/README.md 2025-05-15 16:40:04.000000000
+0200
+++ new/zypp-boot-plugin-0.0.14/README.md 2026-10-28 14:15:46.000000000
+0100
@@ -89,7 +89,30 @@
## empty
##
soft-reboot = glibc, dbus-broker, dbus-1-daemon,
libopenssl[0-9]?_?[0-9]?_?[0-9]?, libopenssl[0-9]?_?[0-9]?_?[0-9]?-32bit
-
+
+ [Packages]
+
+ ##
+ ## Alternative way of defining the required boot level, one entry per
package.
+ ## The key is matched either as an exact package name or, like in [main],
as a
+ ## provides capability tagged with the "provides:" prefix. Regular
expressions
+ ## as package name are not supported here.
+ ##
+ ## Entries in this section have a higher priority than the entries in
[main]:
+ ## if a package matches an entry here, this boot level is used and the
lists in
+ ## [main] as well as installhint(reboot-needed) are not evaluated for it
anymore.
+ ##
+ ## Example:
+ ## grub2 = kexec
+ ## provides:bootloader = kexec
+ ##
+ ## Valid values:
+ ## package_or_capability = reboot|kexec|soft-reboot
+ ##
+ ## Default value:
+ ## empty
+ ##
+
```
Admin/User changes should go into /etc/zypp/zypp-boot-plugin.conf for
resetting all entries or should go
into /etc/zypp/zypp-boot-plugin.conf.d/ for indiviual changes only. Have a
look to :https://opensuse.github.io/libeconf/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zypp-boot-plugin-0.0.13/conf/zypp-boot-plugin.conf
new/zypp-boot-plugin-0.0.14/conf/zypp-boot-plugin.conf
--- old/zypp-boot-plugin-0.0.13/conf/zypp-boot-plugin.conf 2025-05-15
16:40:04.000000000 +0200
+++ new/zypp-boot-plugin-0.0.14/conf/zypp-boot-plugin.conf 2026-10-28
14:15:46.000000000 +0100
@@ -68,3 +68,26 @@
##
soft-reboot = glibc, dbus-broker, dbus-1-daemon,
libopenssl[0-9]?_?[0-9]?_?[0-9]?, libopenssl[0-9]?_?[0-9]?_?[0-9]?-32bit
+[Packages]
+
+##
+## Alternative way of defining the required boot level, one entry per package.
+## The key is matched either as an exact package name or, like in [main], as a
+## provides capability tagged with the "provides:" prefix. Regular expressions
+## as package name are not supported here.
+##
+## Entries in this section have a higher priority than the entries in [main]:
+## if a package matches an entry here, this boot level is used and the lists in
+## [main] as well as installhint(reboot-needed) are not evaluated for it
anymore.
+##
+## Example:
+## grub2 = kexec
+## provides:bootloader = kexec
+##
+## Valid values:
+## package_or_capability = reboot|kexec|soft-reboot
+##
+## Default value:
+## empty
+##
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zypp-boot-plugin-0.0.13/meson.build
new/zypp-boot-plugin-0.0.14/meson.build
--- old/zypp-boot-plugin-0.0.13/meson.build 2025-05-15 16:40:04.000000000
+0200
+++ new/zypp-boot-plugin-0.0.14/meson.build 2026-10-28 14:15:46.000000000
+0100
@@ -1,5 +1,5 @@
project('zypp-boot_plugin', 'cpp',
- version : '0.0.13',
+ version : '0.0.14',
license : 'LGPLv3',
default_options : [
'buildtype=debugoptimized',
@@ -23,7 +23,7 @@
)
libeconf_dep = dependency('libeconf')
-boost_dep = dependency('boost', modules : ['system', 'filesystem'])
+boost_dep = dependency('boost', modules : ['filesystem'])
json_dep = dependency('json')
pk_prefix = get_option('prefix')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zypp-boot-plugin-0.0.13/src/solvable-matcher.cc
new/zypp-boot-plugin-0.0.14/src/solvable-matcher.cc
--- old/zypp-boot-plugin-0.0.13/src/solvable-matcher.cc 2025-05-15
16:40:04.000000000 +0200
+++ new/zypp-boot-plugin-0.0.14/src/solvable-matcher.cc 2026-10-28
14:15:46.000000000 +0100
@@ -105,6 +105,52 @@
}
Boot
+boot_level_from_string( const string boot_level_string )
+{
+ if (boot_level_string == HARDSTR) return Boot::HARD;
+ if (boot_level_string == KEXECSTR) return Boot::KEXEC;
+ if (boot_level_string == SOFTSTR) return Boot::SOFT;
+ return Boot::NONE;
+}
+
+bool
+get_packages_section_value( econf_file *conffiles, const string& package_name,
string& value )
+{
+ char *val = NULL;
+ econf_err error = econf_getStringValue(conffiles, "Packages",
package_name.c_str(), &val);
+ if (!error && val != NULL) {
+ value = val;
+ free(val);
+ return true;
+ }
+
+ /* Not found by exact package name - the key itself may be a "provides:"
capability. */
+ char **keys = NULL;
+ size_t keys_length = 0;
+ econf_err keys_error = econf_getKeys(conffiles, "Packages", &keys_length,
&keys);
+ if (keys_error) return false;
+
+ bool found = false;
+ for (size_t i = 0; i < keys_length && !found; i++) {
+ string key(keys[i]);
+ if (!boost::starts_with(key, "provides:")) continue;
+
+ if (provides(key.substr(9), package_name)) {
+ char *pval = NULL;
+ econf_err val_error = econf_getStringValue(conffiles, "Packages",
keys[i], &pval);
+ if (!val_error && pval != NULL) {
+ value = pval;
+ free(pval);
+ found = true;
+ }
+ }
+ }
+ econf_freeArray(keys);
+
+ return found;
+}
+
+Boot
check_boot_level( const Boot current_boot_level, const Boot boot_level, const
string package_name, econf_file *conffiles )
{
/* The function will be called for the same package for boot level "soft",
"kexec" and "hard" in that order. */
@@ -134,6 +180,28 @@
return ret;
}
+ /* The [Packages] section has a higher priority than [main]. It allows
setting the */
+ /* boot level directly for one specific package, e.g. "grub2 = kexec". The
key is */
+ /* matched either as an exact package name or, like in [main], as a
provides */
+ /* capability tagged with the "provides:" prefix.
*/
+ /* If such an entry matches this package, it alone decides the boot level
for it, */
+ /* [main] and installhint(reboot-needed) are then not evaluated for it
anymore. */
+ std::string pkg_boot_level_string;
+ if (get_packages_section_value(conffiles, package_name,
pkg_boot_level_string)) {
+ boost::trim(pkg_boot_level_string);
+
+ Boot pkg_boot_level = boot_level_from_string(pkg_boot_level_string);
+ if (pkg_boot_level == Boot::NONE) {
+ cerr << "WARNING:(boot-plugin): unknown boot level '" <<
pkg_boot_level_string <<
+ "' for package " << package_name << " in section
[Packages]" << endl;
+ } else if (pkg_boot_level == boot_level) {
+ ret = boot_level;
+ cerr << "DEBUG:(boot-plugin): --- Found package " << package_name
<< " in section [Packages]" << endl;
+ cerr << "DEBUG:(boot-plugin): Found for level: " <<
boot_level_string << endl;
+ }
+ return ret;
+ }
+
char *dep_list = NULL;
bool found = false;
econf_err e_error = econf_getStringValue(conffiles, "main",
boot_level_string, &dep_list);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zypp-boot-plugin-0.0.13/tests/meson.build
new/zypp-boot-plugin-0.0.14/tests/meson.build
--- old/zypp-boot-plugin-0.0.13/tests/meson.build 2025-05-15
16:40:04.000000000 +0200
+++ new/zypp-boot-plugin-0.0.14/tests/meson.build 2026-10-28
14:15:46.000000000 +0100
@@ -9,9 +9,6 @@
test('tst-provides', find_program(meson.current_source_dir()
+'/tst_provides.sh'),
env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_provides.out'])
-test('tst-kernel', find_program(meson.current_source_dir() +'/tst_kernel.sh'),
- env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_kernel.out'])
-
test('tst-multi', find_program(meson.current_source_dir() +'/tst_multi.sh'),
env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_multi.out'])
@@ -25,4 +22,15 @@
env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_overwrite1.out'])
test('tst-overwrite2', find_program(meson.current_source_dir()
+'/tst_overwrite2.sh'),
- env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_overwrite2.out'])
\ No newline at end of file
+ env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_overwrite2.out'])
+
+test('tst-packages-section', find_program(meson.current_source_dir()
+'/tst_packages_section.sh'),
+ env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_packages_section.out'])
+
+test('tst-packages-section-provides', find_program(meson.current_source_dir()
+'/tst_packages_section_provides.sh'),
+ env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_packages_section_provides.out'])
+
+if host_machine.cpu() == 'x86_64'
+ test('tst-kernel', find_program(meson.current_source_dir()
+'/tst_kernel.sh'),
+ env : ['ZYPP_BOOT_PLUGIN_CONFIG=../tests/zypp-boot-plugin.conf',
'ZYPP_BOOT_PLUGIN_REBOOT_FILE=./tst_kernel.out'])
+endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zypp-boot-plugin-0.0.13/tests/packages_section.protocol
new/zypp-boot-plugin-0.0.14/tests/packages_section.protocol
--- old/zypp-boot-plugin-0.0.13/tests/packages_section.protocol 1970-01-01
01:00:00.000000000 +0100
+++ new/zypp-boot-plugin-0.0.14/tests/packages_section.protocol 2026-10-28
14:15:46.000000000 +0100
@@ -0,0 +1,16 @@
+COMMITEND
+
+{
+"TransactionStepList":[
+{
+ "solvable":{
+ "a":"x86_64",
+ "n":"zypp-boot-test-pkg",
+ "r":"1",
+ "v": "1.0"
+ },
+ "stage":"ok",
+ "type":"+"
+}
+]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zypp-boot-plugin-0.0.13/tests/packages_section_provides.protocol
new/zypp-boot-plugin-0.0.14/tests/packages_section_provides.protocol
--- old/zypp-boot-plugin-0.0.13/tests/packages_section_provides.protocol
1970-01-01 01:00:00.000000000 +0100
+++ new/zypp-boot-plugin-0.0.14/tests/packages_section_provides.protocol
2026-10-28 14:15:46.000000000 +0100
@@ -0,0 +1,16 @@
+COMMITEND
+
+{
+"TransactionStepList":[
+{
+ "solvable":{
+ "a":"x86_64",
+ "n":"rpm",
+ "r":"1",
+ "v": "1.0"
+ },
+ "stage":"ok",
+ "type":"+"
+}
+]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zypp-boot-plugin-0.0.13/tests/tst_packages_section.sh
new/zypp-boot-plugin-0.0.14/tests/tst_packages_section.sh
--- old/zypp-boot-plugin-0.0.13/tests/tst_packages_section.sh 1970-01-01
01:00:00.000000000 +0100
+++ new/zypp-boot-plugin-0.0.14/tests/tst_packages_section.sh 2026-10-28
14:15:46.000000000 +0100
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if test -f "$ZYPP_BOOT_PLUGIN_REBOOT_FILE"; then
+ rm $ZYPP_BOOT_PLUGIN_REBOOT_FILE
+fi
+
+# zypp-boot-test-pkg is listed as "reboot" in [main] but overridden to "kexec"
+# in [Packages], which has to win since [Packages] has a higher priority.
+./boot-plugin <../tests/packages_section.protocol
+grep kexec $ZYPP_BOOT_PLUGIN_REBOOT_FILE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zypp-boot-plugin-0.0.13/tests/tst_packages_section_provides.sh
new/zypp-boot-plugin-0.0.14/tests/tst_packages_section_provides.sh
--- old/zypp-boot-plugin-0.0.13/tests/tst_packages_section_provides.sh
1970-01-01 01:00:00.000000000 +0100
+++ new/zypp-boot-plugin-0.0.14/tests/tst_packages_section_provides.sh
2026-10-28 14:15:46.000000000 +0100
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if test -f "$ZYPP_BOOT_PLUGIN_REBOOT_FILE"; then
+ rm $ZYPP_BOOT_PLUGIN_REBOOT_FILE
+fi
+
+# [Packages] can also match via a key tagged with "provides:", like [main]
does.
+# "rpm" provides "rpminst", which is set to soft-reboot in [Packages].
+./boot-plugin <../tests/packages_section_provides.protocol
+grep soft-reboot $ZYPP_BOOT_PLUGIN_REBOOT_FILE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zypp-boot-plugin-0.0.13/tests/zypp-boot-plugin.conf
new/zypp-boot-plugin-0.0.14/tests/zypp-boot-plugin.conf
--- old/zypp-boot-plugin-0.0.13/tests/zypp-boot-plugin.conf 2025-05-15
16:40:04.000000000 +0200
+++ new/zypp-boot-plugin-0.0.14/tests/zypp-boot-plugin.conf 2026-10-28
14:15:46.000000000 +0100
@@ -28,7 +28,7 @@
## Default value:
## empty
##
-reboot = grub2
+reboot = grub2,zypp-boot-test-pkg
##
## Packages for which a kexec call is needed at least after they have been
@@ -68,3 +68,21 @@
##
soft-reboot = glibc, dbus-broker, dbus-1-daemon,
libopenssl[0-9]?_?[0-9]?_?[0-9]?, libopenssl[0-9]?_?[0-9]?_?[0-9]?-32bit
+[Packages]
+
+##
+## Alternative way of defining the required boot level, one entry per package.
+## Entries here have a higher priority than the entries in [main].
+##
+## zypp-boot-test-pkg is also listed in [main]'s "reboot" list above (HARD);
+## this entry overrides it to "kexec" and is used to test that priority.
+##
+zypp-boot-test-pkg = kexec
+
+##
+## A provides capability can also be used as the key, tagged with "provides:"
+## like in [main]. This is used to test that the "rpm" package (which
+## provides "rpminst") gets a soft-reboot level.
+##
+provides:rpminst = soft-reboot
+