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 2025-07-23 16:32:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/transactional-update (Old)
and /work/SRC/openSUSE:Factory/.transactional-update.new.8875 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "transactional-update"
Wed Jul 23 16:32:18 2025 rev:121 rq:1295281 version:5.0.7
Changes:
--------
---
/work/SRC/openSUSE:Factory/transactional-update/transactional-update.changes
2025-07-10 23:15:07.012710100 +0200
+++
/work/SRC/openSUSE:Factory/.transactional-update.new.8875/transactional-update.changes
2025-07-23 16:32:40.505757981 +0200
@@ -1,0 +2,20 @@
+Wed Jul 23 10:54:17 UTC 2025 - Ignaz Forster <[email protected]>
+
+- Add journalmount.patch to bind mount systemd journal only when
+ available
+
+-------------------------------------------------------------------
+Mon Jul 21 10:06:43 UTC 2025 - Ignaz Forster <[email protected]>
+
+- Version 5.0.7
+ - Add sysext compatibility [bsc#1246140]
+ - Fix soft-reboot with btrfs subvolume based /etc
+ - Sync /etc layers also on soft-reboot
+ - Bind mount /run/systemd/journal to allow log calls
+ [gh#openSUSE/transactional-update#149]
+ - Use rootlesskit instead of fakeroot for tests
+ - Small coding style fixes
+- Temporarily disabling the testsuite because it doesn't run in
+ the build environment so far
+
+-------------------------------------------------------------------
Old:
----
transactional-update-5.0.6.tar.gz
New:
----
journalmount.patch
transactional-update-5.0.7.tar.gz
----------(New B)----------
New:
- Add journalmount.patch to bind mount systemd journal only when
available
----------(New E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ transactional-update.spec ++++++
--- /var/tmp/diff_new_pack.m8pOvo/_old 2025-07-23 16:32:41.337792792 +0200
+++ /var/tmp/diff_new_pack.m8pOvo/_new 2025-07-23 16:32:41.337792792 +0200
@@ -26,7 +26,7 @@
%{!?_distconfdir: %global _distconfdir %{_prefix}%{_sysconfdir}}
Name: transactional-update
-Version: 5.0.6
+Version: 5.0.7
Release: 0
Summary: Transactional Updates with btrfs and snapshots
License: GPL-2.0-or-later AND LGPL-2.1-or-later
@@ -34,6 +34,7 @@
URL: https://github.com/openSUSE/transactional-update
Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: transactional-update.check
+Patch0: journalmount.patch
BuildRequires: acl
BuildRequires: attr
@@ -42,7 +43,6 @@
BuildRequires: automake
BuildRequires: bats
BuildRequires: docbook-xsl-stylesheets
-BuildRequires: fakeroot
BuildRequires: fdupes
%if %{?suse_version} <= 1500
BuildRequires: gcc10-c++
@@ -50,6 +50,7 @@
BuildRequires: gcc-c++
%endif
BuildRequires: libtool
+BuildRequires: libxml2-tools
BuildRequires: libzypp
BuildRequires: make
BuildRequires: suse-module-tools
@@ -64,7 +65,6 @@
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(udev)
# Cannot use python3dist() names yet...
-BuildRequires: libxml2-tools
BuildRequires: python3-lxml
BuildRequires: w3m
BuildRequires: xsltproc
@@ -358,8 +358,4 @@
%config(noreplace) %{_sysconfdir}/zypp/systemCheck.d/transactional-update.check
%check
-if ! %{__make} check; then
- cat tests/test-suite.log
- exit 1
-fi
++++++ journalmount.patch ++++++
diff --git a/lib/Transaction.cpp b/lib/Transaction.cpp
index 1977ea3..ebe96a7 100644
--- a/lib/Transaction.cpp
+++ b/lib/Transaction.cpp
@@ -177,7 +177,8 @@ void Transaction::impl::snapMount() {
mntRun->setType("tmpfs");
mntRun->setSource("tmpfs");
dirsToMount.push_back(std::move(mntRun));
- dirsToMount.push_back(std::make_unique<BindMount>("/run/systemd/journal"));
+ if (fs::exists("/run/systemd/journal"))
+
dirsToMount.push_back(std::make_unique<BindMount>("/run/systemd/journal"));
std::unique_ptr<Mount> mntVarTmp{new Mount{"/var/tmp"}};
mntVarTmp->setType("tmpfs");
mntVarTmp->setSource("tmpfs");
++++++ transactional-update-5.0.6.tar.gz -> transactional-update-5.0.7.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/ChangeLog
new/transactional-update-5.0.7/ChangeLog
--- old/transactional-update-5.0.6/ChangeLog 1970-01-01 01:00:00.000000000
+0100
+++ new/transactional-update-5.0.7/ChangeLog 2025-07-23 16:32:41.421796307
+0200
@@ -0,0 +1 @@
+symbolic link to NEWS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/NEWS
new/transactional-update-5.0.7/NEWS
--- old/transactional-update-5.0.6/NEWS 2025-07-09 16:28:10.000000000 +0200
+++ new/transactional-update-5.0.7/NEWS 2025-07-21 11:46:30.000000000 +0200
@@ -2,6 +2,15 @@
Copyright (C) 2016-2025 Thorsten Kukuk, Ignaz Forster et al.
+Version 5.0.7 (2025-07-21)
+* Add sysext compatibility [bsc#1246140]
+* Fix soft-reboot with btrfs subvolume based /etc
+* Sync /etc layers also on soft-reboot
+* Bind mount /run/systemd/journal to allow log calls
+ [gh#openSUSE/transactional-update#149]
+* Use rootlesskit instead of fakeroot for tests
+* Small coding style fixes
+
Version 5.0.6 (2025-07-09)
* Fix missing x-initrd.mount in fstab on migration [boo#1246139]
When migrating overlayfs based /etc to btrfs subvolumes, then the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/configure.ac
new/transactional-update-5.0.7/configure.ac
--- old/transactional-update-5.0.6/configure.ac 2025-07-09 16:28:10.000000000
+0200
+++ new/transactional-update-5.0.7/configure.ac 2025-07-21 11:46:30.000000000
+0200
@@ -1,11 +1,11 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([transactional-update],[5.0.6])
+AC_INIT([transactional-update],[5.0.7])
# Increase on any interface change and reset revision
LIBTOOL_CURRENT=6
# On interface change increase if backwards compatible, reset otherwise
LIBTOOL_AGE=2
# Increase on *any* C/C++ library code change, reset at interface change
-LIBTOOL_REVISION=8
+LIBTOOL_REVISION=9
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_FILES([tukit.pc])
@@ -114,9 +114,9 @@
test "x$enable_man" != "xno" -a "x$with_doc" != "xno")
AC_PATH_PROG([BATS], [bats])
-AC_PATH_PROG([FAKEROOT], [fakeroot])
-AS_IF([test -z "$BATS" -o -z "$FAKEROOT"], [AC_MSG_WARN([To run tests please
install
- bats and fakeroot.])])
+AC_PATH_PROG([ROOTLESSKIT], [rootlesskit])
+AS_IF([test -z "$BATS" -o -z "$ROOTLESSKIT"], [AC_MSG_WARN([To run tests
please install
+ bats and rootlesskit.])])
AC_CONFIG_FILES([Makefile lib/Makefile tukit/Makefile sbin/Makefile
man/Makefile \
systemd/Makefile logrotate/Makefile dracut/Makefile doc/Makefile \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/lib/Snapshot/Snapper.cpp
new/transactional-update-5.0.7/lib/Snapshot/Snapper.cpp
--- old/transactional-update-5.0.6/lib/Snapshot/Snapper.cpp 2025-07-09
16:28:10.000000000 +0200
+++ new/transactional-update-5.0.7/lib/Snapshot/Snapper.cpp 2025-07-21
11:46:30.000000000 +0200
@@ -107,10 +107,14 @@
std::smatch match;
// snapper doesn't support the `apply` command for now, so use findmnt
directly.
- std::string id = Util::exec("findmnt --target /usr --raw --noheadings
--output FSROOT --first-only --direction backward");
+ std::string id = Util::exec("findmnt --target /usr --raw --noheadings
--output FSROOT --first-only --direction backward --types btrfs");
bool found = std::regex_search(id, match,
std::regex(".*.snapshots/(.*)/snapshot.*"));
- if (!found)
- throw std::runtime_error{"Couldn't determine current snapshot number"};
+ if (!found) {
+ id = Util::exec("findmnt --target / --raw --noheadings --output FSROOT
--first-only --direction backward --types btrfs");
+ found = std::regex_search(id, match,
std::regex(".*.snapshots/(.*)/snapshot.*"));
+ if (!found)
+ throw std::runtime_error{"Couldn't determine current snapshot
number"};
+ }
return match[1].str();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/lib/Snapshot.hpp
new/transactional-update-5.0.7/lib/Snapshot.hpp
--- old/transactional-update-5.0.6/lib/Snapshot.hpp 2025-07-09
16:28:10.000000000 +0200
+++ new/transactional-update-5.0.7/lib/Snapshot.hpp 2025-07-21
11:46:30.000000000 +0200
@@ -16,7 +16,7 @@
class Snapshot {
public:
- Snapshot(std::string id): snapshotId{id} {};
+ Snapshot(std::string id): snapshotId{id} {}
virtual ~Snapshot() = default;
virtual void close() = 0;
virtual void abort() = 0;
@@ -25,7 +25,7 @@
virtual bool isReadOnly() = 0;
virtual void setDefault() = 0;
virtual void setReadOnly(bool readonly) = 0;
- std::string getUid() { return snapshotId; };
+ std::string getUid() { return snapshotId; }
protected:
std::string snapshotId;
std::string snapshotDate;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/lib/Transaction.cpp
new/transactional-update-5.0.7/lib/Transaction.cpp
--- old/transactional-update-5.0.6/lib/Transaction.cpp 2025-07-09
16:28:10.000000000 +0200
+++ new/transactional-update-5.0.7/lib/Transaction.cpp 2025-07-21
11:46:30.000000000 +0200
@@ -177,6 +177,7 @@
mntRun->setType("tmpfs");
mntRun->setSource("tmpfs");
dirsToMount.push_back(std::move(mntRun));
+ dirsToMount.push_back(std::make_unique<BindMount>("/run/systemd/journal"));
std::unique_ptr<Mount> mntVarTmp{new Mount{"/var/tmp"}};
mntVarTmp->setType("tmpfs");
mntVarTmp->setSource("tmpfs");
@@ -524,8 +525,8 @@
Util::exec("rsync --archive --inplace --xattrs --acls --exclude
'fstab' --exclude 'etc.syncpoint' --delete --quiet '" +
this->pImpl->bindDir.native() + "/etc/' " + targetRoot.native() + "/etc");
}
- TransactionalUpdate::Plugins plugins_without_transaction{nullptr};
- plugins_without_transaction.run("finalize-post",
pImpl->snapshot->getUid() + " " + "discarded");
+ TransactionalUpdate::Plugins plugins_without_transaction{nullptr};
+ plugins_without_transaction.run("finalize-post",
pImpl->snapshot->getUid() + " " + "discarded");
return;
}
if (fs::exists(getRoot() / "discardIfNoChange")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/transactional-update-5.0.6/sbin/transactional-update.in
new/transactional-update-5.0.7/sbin/transactional-update.in
--- old/transactional-update-5.0.6/sbin/transactional-update.in 2025-07-09
16:28:10.000000000 +0200
+++ new/transactional-update-5.0.7/sbin/transactional-update.in 2025-07-21
11:46:30.000000000 +0200
@@ -312,7 +312,7 @@
log_error "ERROR during apply: Couldn't create mount directory."
fi
- sourcedevice="$(findmnt --target /usr --raw --noheadings --output
SOURCE --nofsroot | tail -n 1)"
+ sourcedevice="$(findmnt --target / --raw --noheadings --output SOURCE
--nofsroot --first-only)"
# Mount new snapshot as base
if ! mount "${sourcedevice}" "${APPLYWORKDIR}/mount"; then
log_error "ERROR during apply: Mounting ${sourcedevice} to
${APPLYWORKDIR}/mount failed."
@@ -362,6 +362,10 @@
quit 2
fi
+ if [ "$(systemd-sysext | tail -n +2 | grep " none " | wc -l)" -ne 2 ];
then
+ REFRESH_SYSEXTS=1
+ fi
+
if [ -e /usr/libexec/transactional-update-sync-etc-state ] && [ -e
"/.snapshots/${NEW_DEFAULT_SNAPSHOT_ID}/snapshot/etc/etc.syncpoint" ] ; then
log_info "Syncing /etc state from old snapshot..."
/usr/libexec/transactional-update-sync-etc-state /etc
"/.snapshots/${NEW_DEFAULT_SNAPSHOT_ID}/snapshot/etc"
"/.snapshots/${NEW_DEFAULT_SNAPSHOT_ID}/snapshot/etc/etc.syncpoint"
@@ -383,6 +387,11 @@
rbinddir_done="${rbinddir_done} ${rbinddir}"
done
+ if [ "${REFRESH_SYSEXTS}" ]; then
+ log_info "Refreshing sysexts..."
+ systemd-sysext refresh
+ fi
+
umount --lazy "${APPLYWORKDIR}/mount"
rmdir "${APPLYWORKDIR}/mount"
rmdir "${APPLYWORKDIR}"
@@ -903,7 +912,10 @@
fi
BOOTED_SNAPSHOT_ID=$(grep subvol=/@/.snapshots/ /proc/mounts | grep "/ btrfs"
| sed -e 's|.*.snapshots/\(.*\)/snapshot.*|\1|g')
-CURRENT_SNAPSHOT_ID=$(findmnt --target /usr --raw --noheadings --output FSROOT
| tail -n 1 | sed -e 's|.*.snapshots/\(.*\)/snapshot.*|\1|g')
+CURRENT_SNAPSHOT_ID=$(findmnt --target /usr --raw --noheadings --output FSROOT
--first-only --direction backward --types btrfs | sed -e
's|.*.snapshots/\(.*\)/snapshot.*|\1|g')
+if [ -z "${CURRENT_SNAPSHOT_ID}" ]; then
+ CURRENT_SNAPSHOT_ID=$(findmnt --target / --raw --noheadings --output
FSROOT --first-only --direction backward --types btrfs | sed -e
's|.*.snapshots/\(.*\)/snapshot.*|\1|g')
+fi
DEFAULT_SNAPSHOT_ID=$(btrfs subvolume get-default / | sed -e
's|.*.snapshots/\(.*\)/snapshot|\1|g')
RO_ROOT=$(btrfs property get / ro | sed -e 's|ro=||')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/transactional-update-5.0.6/systemd/prepare-nextroot-for-softreboot
new/transactional-update-5.0.7/systemd/prepare-nextroot-for-softreboot
--- old/transactional-update-5.0.6/systemd/prepare-nextroot-for-softreboot
2025-07-09 16:28:10.000000000 +0200
+++ new/transactional-update-5.0.7/systemd/prepare-nextroot-for-softreboot
2025-07-21 11:46:30.000000000 +0200
@@ -20,7 +20,13 @@
findmnt --noheadings / | awk '{ sub("subvol=/@/[^,]*", "", $4);
sub("subvolid=[^,]*", "", $4); sub("\\[.*\\]", "", $2); system("mount -o \x27"
$4 "\x27 " $2 " /run/nextroot") }'
# Perform all mounts marked with x-initrd.mount inside /run/nextroot
-awk '$1 !~ /^#/ && $4 ~ /(\<|,)x-initrd\.mount(\>|,)/ {
+awk '$1 !~ /^#/ && $4 !~ /(\<|,)bind(\>|,)/ && $4 ~
/(\<|,)x-initrd\.mount(\>|,)/ {
gsub(/sysroot\//,"run/nextroot/", $4); # The /etc overlay mount
hardcodes /sysroot paths in options
if(system("findmnt /run/nextroot" $2 " >/dev/null || mount
--target-prefix /run/nextroot --fstab /run/nextroot/etc/fstab --options-mode
ignore -o \x27" $4 "\x27 " $2) != 0) exit 1;
}' /run/nextroot/etc/fstab
+
+if [ -d /run/nextroot/etc/etc.syncpoint ]; then
+ mount --bind /run/nextroot/etc /run/nextroot/etc
+ mount -o remount,rw /run/nextroot/etc
+ /usr/libexec/transactional-update-sync-etc-state /etc /run/nextroot/etc
/run/nextroot/etc/etc.syncpoint
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/transactional-update-5.0.6/systemd/prepare-nextroot-for-softreboot.service.in
new/transactional-update-5.0.7/systemd/prepare-nextroot-for-softreboot.service.in
---
old/transactional-update-5.0.6/systemd/prepare-nextroot-for-softreboot.service.in
2025-07-09 16:28:10.000000000 +0200
+++
new/transactional-update-5.0.7/systemd/prepare-nextroot-for-softreboot.service.in
2025-07-21 11:46:30.000000000 +0200
@@ -2,6 +2,7 @@
Description=Mount next snapshot for soft-reboot
DefaultDependencies=no
Before=systemd-soft-reboot.service
+Before=basic.target
[Service]
ExecStart=@libexecdir@/prepare-nextroot-for-softreboot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/tests/Makefile.am
new/transactional-update-5.0.7/tests/Makefile.am
--- old/transactional-update-5.0.6/tests/Makefile.am 2025-07-09
16:28:10.000000000 +0200
+++ new/transactional-update-5.0.7/tests/Makefile.am 2025-07-21
11:46:30.000000000 +0200
@@ -1,12 +1,9 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# SPDX-FileCopyrightText: Copyright SUSE LLC
-BATS_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh
-AM_BATS_LOG_DRIVER_FLAGS = -- bats --tap --filter-tags '!needroot' --output
-ROOT_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh
-AM_ROOT_LOG_DRIVER_FLAGS = -- fakeroot bats --tap --filter-tags 'needroot'
--output
+LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh
+LOG_DRIVER_FLAGS = -- rootlesskit bats --tap --output
-TEST_EXTENSIONS = .bats .root
-TESTS = etc_changes.bats etc_changes_as.root
+TESTS = etc_changes.bats
EXTRA_DIST = $(TESTS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/tests/etc_changes.bats
new/transactional-update-5.0.7/tests/etc_changes.bats
--- old/transactional-update-5.0.6/tests/etc_changes.bats 2025-07-09
16:28:10.000000000 +0200
+++ new/transactional-update-5.0.7/tests/etc_changes.bats 2025-07-21
11:46:30.000000000 +0200
@@ -150,7 +150,7 @@
}
# bats test_tags=needroot
-@test "File contents and properties (with fakeroot)" {
+@test "File contents and properties (needs root)" {
shopt -s globstar dotglob
FILES=(File0.txt)
createFilesIn "${mockdir_old_etc}" "${FILES[@]}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.6/tests/etc_changes_as.root
new/transactional-update-5.0.7/tests/etc_changes_as.root
--- old/transactional-update-5.0.6/tests/etc_changes_as.root 2025-07-23
16:32:41.417796139 +0200
+++ new/transactional-update-5.0.7/tests/etc_changes_as.root 1970-01-01
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-symbolic link to etc_changes.bats