Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package transactional-update for 
openSUSE:Factory checked in at 2026-03-20 21:19:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/transactional-update (Old)
 and      /work/SRC/openSUSE:Factory/.transactional-update.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "transactional-update"

Fri Mar 20 21:19:52 2026 rev:127 rq:1341186 version:6.0.7

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/transactional-update/transactional-update.changes    
    2026-01-21 14:11:30.724220708 +0100
+++ 
/work/SRC/openSUSE:Factory/.transactional-update.new.8177/transactional-update.changes
      2026-03-20 21:20:19.402788168 +0100
@@ -1,0 +2,17 @@
+Thu Mar 19 11:16:06 UTC 2026 - Ignaz Forster <[email protected]>
+
+- Version 6.0.7:
+  * libtukit: Fix --drop-if-no-change after `apply`
+  * libtukit: Remove stale snapshot after --discard
+  * systemd: Read from snippet directory in service file
+    [jsc#PED-15786]
+  * t-u: Allow overwriting the location of some files
+  * README: Update link to libdnf-plugin-txnupd
+- Remove %suse_version checks (jsc#PED-15786):
+  * The SELinux check is not required any more, the SELinux package
+    version was adjusted in the corresponding releases.
+  * Setting whether the distribution has to be updated by up or dup
+    was changed into a generic RPM dependency and a corresponding
+    configuration file snippet in a separte package.
+
+-------------------------------------------------------------------

Old:
----
  transactional-update-6.0.6.tar.gz

New:
----
  transactional-update-6.0.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ transactional-update.spec ++++++
--- /var/tmp/diff_new_pack.RbEuz5/_old  2026-03-20 21:20:20.798846331 +0100
+++ /var/tmp/diff_new_pack.RbEuz5/_new  2026-03-20 21:20:20.806846664 +0100
@@ -26,7 +26,7 @@
 %{!?_distconfdir: %global _distconfdir %{_prefix}%{_sysconfdir}}
 
 Name:           transactional-update
-Version:        6.0.6
+Version:        6.0.7
 Release:        0
 Summary:        Transactional Updates with btrfs and snapshots
 License:        GPL-2.0-or-later AND LGPL-2.1-or-later
@@ -77,6 +77,7 @@
 Requires:       psmisc
 Requires:       tukit = %{version}-%{release}
 Requires:       zypper
+Requires:       (transactional-update-up-as-default if (distribution-release 
without (product-update() = dup)))
 Requires:       (tukit-snapper-plugin if (snapper and read-only-root-fs))
 # Parameter --drop-if-no-change requires it
 Recommends:     inotify-tools
@@ -87,17 +88,22 @@
 # Support for /etc as subvolume
 Conflicts:      read-only-root-fs < 1.0+git20250410
 Conflicts:      sdbootutil < 1+git20250409
-# Includes policy for the 50-etc snapper plugin
-%if 0%{?suse_version} == 1600 && !0%{?is_opensuse}
-Conflicts:      selinux-policy < 20241031+git652.e1d5a07e
-%else
-Conflicts:      selinux-policy < 20250411
-%endif
 
 %description
 transactional-update is a tool to update a system in an atomic
 way with zypper, btrfs and snapshots.
 
+%package up-as-default
+Summary:        Sets 'up' as default update mechanism for transactional-update
+Group:          System/Base
+Requires:       transactional-update
+BuildArch:      noarch
+
+%description up-as-default
+In some cases, especially for the update timer, transactional-update has to
+know which update method to use. If the installed system is not using 'dup'
+as the default, then this package should be installed.
+
 %package -n tukit
 Summary:        Tool for doing transactional updates using Btrfs snapshots
 License:        GPL-2.0-or-later
@@ -189,9 +195,8 @@
 %make_build
 
 # Use "up" for non-rolling releases
-%if (%{defined sle_version} && %{undefined is_susecasp}) || 0%{?suse_version} 
== 1600
-sed -i 's/^UPDATE_METHOD=.*/UPDATE_METHOD=up/' etc/transactional-update.conf
-%endif
+echo '# Overwrite default update method
+UPDATE_METHOD=up' >> 10-use-up-as-default.conf
 
 # Enable soft-reboot by default
 sed -i 's/^REBOOT_ALLOW_SOFT_REBOOT=.*/REBOOT_ALLOW_SOFT_REBOOT=false/' 
etc/tukit.conf
@@ -205,6 +210,9 @@
 mkdir -p %{buildroot}%{_sysconfdir}/zypp/systemCheck.d/
 install -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/zypp/systemCheck.d/
 
+mkdir -p %{buildroot}%{_distconfdir}/transactional-update.conf.d/
+install -m 644 10-use-up-as-default.conf 
%{buildroot}%{_distconfdir}/transactional-update.conf.d/
+
 # Delete libtool cruft
 rm -rf %{buildroot}%{_libdir}/*.la
 
@@ -303,12 +311,16 @@
 %{_unitdir}/transactional-update-cleanup.timer
 %{_sbindir}/transactional-update
 %{_distconfdir}/transactional-update.conf
+%dir %{_distconfdir}/transactional-update.conf.d
 %{_mandir}/man5/transactional-update.conf.5*
 %{_mandir}/man8/transactional-update.8*
 %{_mandir}/man8/transactional-update.timer.8*
 %{_mandir}/man8/transactional-update.service.8*
 %ghost %attr(0644,root,root) %{_localstatedir}/log/transactional-update.log
 
+%files up-as-default
+%{_distconfdir}/transactional-update.conf.d/10-use-up-as-default.conf
+
 %files -n tukit
 %license COPYING gpl-2.0.txt
 %doc README.md NEWS

++++++ transactional-update-6.0.6.tar.gz -> transactional-update-6.0.7.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transactional-update-6.0.6/NEWS 
new/transactional-update-6.0.7/NEWS
--- old/transactional-update-6.0.6/NEWS 2026-01-19 19:42:46.000000000 +0100
+++ new/transactional-update-6.0.7/NEWS 2026-03-19 16:31:09.000000000 +0100
@@ -2,6 +2,13 @@
 
 Copyright (C) 2016-2025 Thorsten Kukuk, Ignaz Forster et al.
 
+Version 6.0.7 (2026-03-19)
+* libtukit: Fix --drop-if-no-change after `apply`
+* libtukit: Remove stale snapshot after --discard
+* systemd: Read from snippet directory in service file [jsc#PED-15786]
+* t-u: Allow overwriting the location of some files
+* README: Update link to libdnf-plugin-txnupd
+
 Version 6.0.6 (2026-01-19)
 * t-u: Use pattern to download correct libtukit[0-9]+ for selfupdate
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transactional-update-6.0.6/README.md 
new/transactional-update-6.0.7/README.md
--- old/transactional-update-6.0.6/README.md    2026-01-19 19:42:46.000000000 
+0100
+++ new/transactional-update-6.0.7/README.md    2026-03-19 16:31:09.000000000 
+0100
@@ -45,7 +45,7 @@
 transactional-update was originally developed for the **openSUSE project** as 
the update mechanism for all transactional / read-only systems ([openSUSE 
MicroOS](https://microos.opensuse.org/), [SUSE Linux Enterprise 
Micro](https://www.suse.com/products/micro/), SUSE Linux Enterprise Server / 
openSUSE Leap / openSUSE Tumbleweed "Transactional Server" role) and is used as 
the update mechanism there.
 
 Additionally the following components support transactional-update directly:
-* **dnf**, Fedora's package management system, supports transactional systems 
directly via the 
[libdnf-plugin-txnupd](https://code.opensuse.org/microos/libdnf-plugin-txnupd) 
plugin (libtukit).
+* **dnf**, Fedora's package management system, supports transactional systems 
directly via the 
[libdnf-plugin-txnupd](https://gitlab.com/VelocityLimitless/Projects/libdnf-plugin-txnupd)
 plugin (libtukit).
 * **Cockpit** can update transactional systems via the 
[cockpit-tukit](https://github.com/openSUSE/cockpit-tukit) plugin (tukitd).
 * **Salt** contains the 
[salt.executors.transactional\_update](https://docs.saltproject.io/en/latest/ref/executors/all/salt.executors.transactional_update.html)
 executor (transactional-update).
 * **Ansible** also supports transactional-update via the the 
[community.general.zypper](https://docs.ansible.com/ansible/latest/collections/community/general/zypper_module.html)
 module (transactional-update).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transactional-update-6.0.6/configure.ac 
new/transactional-update-6.0.7/configure.ac
--- old/transactional-update-6.0.6/configure.ac 2026-01-19 19:42:46.000000000 
+0100
+++ new/transactional-update-6.0.7/configure.ac 2026-03-19 16:31:09.000000000 
+0100
@@ -1,12 +1,12 @@
 dnl Process this file with autoconf to produce a configure script.
 # Semantic versioning, increase major version on incompatible interface change
-AC_INIT([transactional-update],[6.0.6])
+AC_INIT([transactional-update],[6.0.7])
 # Increase on any interface change and reset revision
 LIBTOOL_CURRENT=8
 # On interface change increase if backwards compatible, reset otherwise
 LIBTOOL_AGE=0
 # Increase on *any* C/C++ library code change, reset at interface change
-LIBTOOL_REVISION=1
+LIBTOOL_REVISION=2
 AC_CANONICAL_TARGET
 AM_INIT_AUTOMAKE([foreign])
 AC_CONFIG_FILES([tukit.pc])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transactional-update-6.0.6/doc/transactional-update.xml 
new/transactional-update-6.0.7/doc/transactional-update.xml
--- old/transactional-update-6.0.6/doc/transactional-update.xml 2026-01-19 
19:42:46.000000000 +0100
+++ new/transactional-update-6.0.7/doc/transactional-update.xml 2026-03-19 
16:31:09.000000000 +0100
@@ -205,7 +205,7 @@
        Applications such as package managers are expected to use this library
        for easily supporting transactional systems. DNF for example is
        supporting transactional systems via the
-       <ulink 
url="https://code.opensuse.org/microos/libdnf-plugin-txnupd";>libdnf-plugin-txnupd</ulink>
+       <ulink 
url="https://gitlab.com/VelocityLimitless/Projects/libdnf-plugin-txnupd";>libdnf-plugin-txnupd</ulink>
        plugin.
       </para>
       <para>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/transactional-update-6.0.6/lib/Transaction.cpp 
new/transactional-update-6.0.7/lib/Transaction.cpp
--- old/transactional-update-6.0.6/lib/Transaction.cpp  2026-01-19 
19:42:46.000000000 +0100
+++ new/transactional-update-6.0.7/lib/Transaction.cpp  2026-03-19 
16:31:09.000000000 +0100
@@ -16,6 +16,7 @@
 #include "Snapshot.hpp"
 #include "Supplement.hpp"
 #include "Util.hpp"
+#include <algorithm>
 #include <cerrno>
 #include <cstdlib>
 #include <cstring>
@@ -381,10 +382,19 @@
 
         // Recursively register all directories of the root file system
         inotifyExcludes = MountList::getList(snapshot->getRoot());
+
+        // /usr is always part of the root fs, so never exclude it (e.g. on 
apply)
+        auto itr = std::find(inotifyExcludes.begin(), inotifyExcludes.end(), 
(snapshot->getRoot() / "usr"));
+        if (itr != inotifyExcludes.end()) inotifyExcludes.erase(itr);
+
+        // On rw systems, /etc may be a separate mount after 'apply', though 
it's
+        // also part of the root file system
         std::unique_ptr<Mount> mntEtc{new Mount{"/etc"}};
-        if (mntEtc->isMount()) {
-            inotifyExcludes.push_back(snapshot->getRoot() / "etc");
+        if (! mntEtc->isMount()) {
+            auto itr = std::find(inotifyExcludes.begin(), 
inotifyExcludes.end(), (snapshot->getRoot() / "etc"));
+            if (itr != inotifyExcludes.end()) inotifyExcludes.erase(itr);
         }
+
         nftw(snapshot->getRoot().c_str(), inotifyAdd, 20, FTW_MOUNT | 
FTW_PHYS);
     }
 
@@ -567,6 +577,7 @@
 
         TransactionalUpdate::Plugins plugins_without_transaction{nullptr, 
keepIfError};
         plugins_without_transaction.run("finalize-post", snapshot->getUid() + 
" " + "discarded");
+        snapshot->abort();
         return;
     }
     if (fs::exists(snapshot->getRoot() / "discardIfNoChange")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transactional-update-6.0.6/sbin/transactional-update.in 
new/transactional-update-6.0.7/sbin/transactional-update.in
--- old/transactional-update-6.0.6/sbin/transactional-update.in 2026-01-19 
19:42:46.000000000 +0100
+++ new/transactional-update-6.0.7/sbin/transactional-update.in 2026-03-19 
16:31:09.000000000 +0100
@@ -46,12 +46,6 @@
 SETUP_KDUMP=0
 SETUP_SELINUX=0
 UPDATE_METHOD="up"
-CONFFILE="@sysconfdir@/transactional-update.conf"
-SYSTEMCONFFILE="@prefix@@sysconfdir@/transactional-update.conf"
-LOGFILE="/var/log/transactional-update.log"
-STATE_FILE="/var/lib/misc/transactional-update.state"
-NEEDS_RESTARTING_FILE="/run/reboot-needed"
-LOCKFILE="/var/run/transactional-update.pid"
 ZYPPER_AUTO_IMPORT_KEYS=0
 NON_ROOTFS_WHITELIST=("/var/lib/YaST2/cookies" "/var/lib/rpm" 
"/var/lib/systemd/migrated" "/var/run/zypp.pid")
 OCI_RSYNC_ARGS="-a --hard-links --xattrs --acls --inplace"
@@ -63,19 +57,25 @@
 ZYPPER_FORCE_REFRESH=0
 IS_BLS=""
 
-TMPDIR=${TMPDIR:-/tmp}
+CONFFILE="${TU_CONFFILE:-@sysconfdir@/transactional-update.conf}"
+CONFFILESYSTEM="${TU_CONFFILESYSTEM:-@prefix@@sysconfdir@/transactional-update.conf}"
+LOCKFILE="${TU_LOCKFILE:-/var/run/transactional-update.pid}"
+LOGFILE="${TU_LOGFILE:-/var/log/transactional-update.log}"
+NEEDS_RESTARTING_FILE="${TU_NEEDS_RESTARTING_FILE:-/run/reboot-needed}"
+STATE_FILE="${TU_STATE_FILE:-/var/lib/misc/transactional-update.state}"
+TMPDIR="${TMPDIR:-/tmp}"
 
 # Load config
-if [ -r ${SYSTEMCONFFILE} ]; then
-    . ${SYSTEMCONFFILE}
+if [ -r "${CONFFILESYSTEM}" ]; then
+    . "${CONFFILESYSTEM}"
 fi
-for snippet in "${SYSTEMCONFFILE}.d"/*; do
+for snippet in "${CONFFILESYSTEM}.d"/*; do
     if [ -f "${snippet}" ]; then
         . "${snippet}"
     fi
 done
-if [ -r ${CONFFILE} ]; then
-    . ${CONFFILE}
+if [ -r "${CONFFILE}" ]; then
+    . "${CONFFILE}"
 fi
 
 # Initialize internal variables
@@ -203,10 +203,10 @@
 
 log_to_file() {
     if [ $# -gt 0 ]; then
-        echo -e "$(date "+%Y-%m-%d %T")" "$@" >> ${LOGFILE}
+        echo -e "$(date "+%Y-%m-%d %T")" "$@" >> "${LOGFILE}"
     else # input via pipe
         while read -r line; do
-            echo -e "$(date "+%Y-%m-%d %T")" "${line}" >> ${LOGFILE}
+            echo -e "$(date "+%Y-%m-%d %T")" "${line}" >> "${LOGFILE}"
         done
     fi
 }
@@ -279,29 +279,29 @@
 }
 
 save_state_file() {
-    echo "LAST_WORKING_SNAPSHOTS=\"${LAST_WORKING_SNAPSHOTS}\"" > ${STATE_FILE}
-    echo "UNUSED_SNAPSHOTS=\"${UNUSED_SNAPSHOTS}\"" >>  ${STATE_FILE}
+    echo "LAST_WORKING_SNAPSHOTS=\"${LAST_WORKING_SNAPSHOTS}\"" > 
"${STATE_FILE}"
+    echo "UNUSED_SNAPSHOTS=\"${UNUSED_SNAPSHOTS}\"" >>  "${STATE_FILE}"
 
     if [ "${LAST_BOOTED}" != "${BOOTED_SNAPSHOT_ID}" ]; then
         declare -A REBOOT_ASSOCS
     fi
-    echo "LAST_BOOTED=\"${BOOTED_SNAPSHOT_ID}\"" >> ${STATE_FILE}
+    echo "LAST_BOOTED=\"${BOOTED_SNAPSHOT_ID}\"" >> "${STATE_FILE}"
 
     if [ -n "${SNAPSHOT_ID}" ]; then
         REBOOT_ASSOCS[${SNAPSHOT_ID}]=${REBOOT_LEVEL}
     fi
     for key in "${!REBOOT_ASSOCS[@]}"; do
-        echo "REBOOT_ASSOCS[${key}]=${REBOOT_ASSOCS[${key}]}" >> ${STATE_FILE}
+        echo "REBOOT_ASSOCS[${key}]=${REBOOT_ASSOCS[${key}]}" >> 
"${STATE_FILE}"
     done
 
-    echo "FORCE_REFRESH=\"${FORCE_REFRESH}\"" >> ${STATE_FILE}
+    echo "FORCE_REFRESH=\"${FORCE_REFRESH}\"" >> "${STATE_FILE}"
 
     if [ "$1" -ne 0 ] && [ ${HAS_SEPARATE_VAR} -eq 0 ]; then
         # If /var/lib/misc is not a seperate partition / subvolume, copy the
         # state file into the new snapshot as it will contain an outdated
         # version from before taking the snapshot otherwise.
         if ! grep -q var.lib.misc /proc/mounts; then
-            cp -a ${STATE_FILE} "/.snapshots/$1/snapshot${STATE_FILE}"
+            cp -a "${STATE_FILE}" "/.snapshots/$1/snapshot${STATE_FILE}"
         fi
     fi
 }
@@ -924,8 +924,8 @@
 fi
 
 # Load old state file
-if [ -f ${STATE_FILE} ]; then
-    . ${STATE_FILE}
+if [ -f "${STATE_FILE}" ]; then
+    . "${STATE_FILE}"
 fi
 # If we need to refresh the repositories, save this var into the state
 # as t-u might not create/save a snapshot in this call
@@ -1425,7 +1425,7 @@
         searchdirs+="${SNAPSHOT_DIR}${mountdir} "
     done
     if [ -n "${searchdirs}" ]; then
-        filelist="$(find ${searchdirs} -cnewer ${LOCKFILE} -not -type d 
2>/dev/null | grep -v "${SNAPSHOT_DIR}/etc")"
+        filelist="$(find ${searchdirs} -cnewer "${LOCKFILE}" -not -type d 
2>/dev/null | grep -v "${SNAPSHOT_DIR}/etc")"
         # Filter acceptable hits
         whitelist=""
         for wlentry in "${NON_ROOTFS_WHITELIST[@]}"; do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transactional-update-6.0.6/systemd/transactional-update.service.in 
new/transactional-update-6.0.7/systemd/transactional-update.service.in
--- old/transactional-update-6.0.6/systemd/transactional-update.service.in      
2026-01-19 19:42:46.000000000 +0100
+++ new/transactional-update-6.0.7/systemd/transactional-update.service.in      
2026-03-19 16:31:09.000000000 +0100
@@ -9,6 +9,7 @@
 Type=oneshot
 Environment=UPDATE_METHOD=dup
 EnvironmentFile=-@prefix@@sysconfdir@/transactional-update.conf
+EnvironmentFile=-@prefix@@sysconfdir@/transactional-update.conf.d/*
 EnvironmentFile=-@sysconfdir@/transactional-update.conf
 ExecStart=@sbindir@/transactional-update cleanup ${UPDATE_METHOD} reboot
 IOSchedulingClass=best-effort

Reply via email to