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-10 23:14:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/transactional-update (Old)
and /work/SRC/openSUSE:Factory/.transactional-update.new.7373 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "transactional-update"
Thu Jul 10 23:14:55 2025 rev:120 rq:1291508 version:5.0.6
Changes:
--------
---
/work/SRC/openSUSE:Factory/transactional-update/transactional-update.changes
2025-06-20 16:48:28.805953275 +0200
+++
/work/SRC/openSUSE:Factory/.transactional-update.new.7373/transactional-update.changes
2025-07-10 23:15:07.012710100 +0200
@@ -1,0 +2,18 @@
+Wed Jul 9 14:32:31 UTC 2025 - Ignaz Forster <[email protected]>
+
+- Version 5.0.6
+ - Fix missing x-initrd.mount in fstab on migration [boo#1246139]
+ When migrating overlayfs based /etc to btrfs subvolumes, then
+ the attribute was not set - this may result in failures from
+ services operating on /etc during initrd phase such as SELinux
+ relabelling
+ - Optimize execution time of tests
+
+-------------------------------------------------------------------
+Fri Jul 4 11:53:08 UTC 2025 - Ignaz Forster <[email protected]>
+
+- Version 5.0.5
+ - Add support for kdump 2.1.0 [bsc#1243758]
+ - Integrate test to support `make check`
+
+-------------------------------------------------------------------
Old:
----
transactional-update-5.0.4.tar.gz
New:
----
transactional-update-5.0.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ transactional-update.spec ++++++
--- /var/tmp/diff_new_pack.0jgGhp/_old 2025-07-10 23:15:07.496730261 +0200
+++ /var/tmp/diff_new_pack.0jgGhp/_new 2025-07-10 23:15:07.496730261 +0200
@@ -26,7 +26,7 @@
%{!?_distconfdir: %global _distconfdir %{_prefix}%{_sysconfdir}}
Name: transactional-update
-Version: 5.0.4
+Version: 5.0.6
Release: 0
Summary: Transactional Updates with btrfs and snapshots
License: GPL-2.0-or-later AND LGPL-2.1-or-later
@@ -35,10 +35,14 @@
Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: transactional-update.check
+BuildRequires: acl
+BuildRequires: attr
BuildRequires: autoconf
BuildRequires: autoconf-archive
BuildRequires: automake
+BuildRequires: bats
BuildRequires: docbook-xsl-stylesheets
+BuildRequires: fakeroot
BuildRequires: fdupes
%if %{?suse_version} <= 1500
BuildRequires: gcc10-c++
@@ -80,6 +84,7 @@
Recommends: rebootmgr
Suggests: tukitd = %{version}-%{release}
Conflicts: health-checker < 1.8
+Conflicts: kdump < 2.1.0
# Support for /etc as subvolume
Conflicts: read-only-root-fs < 1.0+git20250410
Conflicts: sdbootutil < 1+git20250409
@@ -353,4 +358,8 @@
%config(noreplace) %{_sysconfdir}/zypp/systemCheck.d/transactional-update.check
%check
+if ! %{__make} check; then
+ cat tests/test-suite.log
+ exit 1
+fi
++++++ transactional-update-5.0.4.tar.gz -> transactional-update-5.0.6.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.4/.gitignore
new/transactional-update-5.0.6/.gitignore
--- old/transactional-update-5.0.4/.gitignore 2025-06-12 16:03:48.000000000
+0200
+++ new/transactional-update-5.0.6/.gitignore 2025-07-09 16:28:10.000000000
+0200
@@ -30,8 +30,11 @@
libtool
ltmain.sh
m4
+tap-driver.sh
test-driver
test-suite.log
+tests/*.log
+tests/*.trs
check-output.*
tukit.pc
tukitd
@@ -51,6 +54,8 @@
man/transactional-update.timer.8.html
man/transactional-update.conf.5.html
man/transactional-update.index.html
+man/tukit.conf.5
+man/tukit.conf.5.html
transactional-update-*.tar.*
doc/html/*
doc/transactional-update.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.4/NEWS
new/transactional-update-5.0.6/NEWS
--- old/transactional-update-5.0.4/NEWS 2025-06-12 16:03:48.000000000 +0200
+++ new/transactional-update-5.0.6/NEWS 2025-07-09 16:28:10.000000000 +0200
@@ -2,6 +2,17 @@
Copyright (C) 2016-2025 Thorsten Kukuk, Ignaz Forster et al.
+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
+ attribute was not set - this may result in failures from services
+ operating on /etc during initrd phase such as SELinux relabelling
+* Optimize execution time of tests
+
+Version 5.0.5 (2025-07-04)
+* Add support for kdump 2.1.0 [bsc#1243758]
+* Integrate test to support `make check`
+
Version 5.0.4 (2025-06-12)
* Don't override soft-reboot with hard reboot
* Fix stdio when returning from selfupdate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.4/configure.ac
new/transactional-update-5.0.6/configure.ac
--- old/transactional-update-5.0.4/configure.ac 2025-06-12 16:03:48.000000000
+0200
+++ new/transactional-update-5.0.6/configure.ac 2025-07-09 16:28:10.000000000
+0200
@@ -1,14 +1,15 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT([transactional-update],[5.0.4])
+AC_INIT([transactional-update],[5.0.6])
# 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=7
+LIBTOOL_REVISION=8
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_FILES([tukit.pc])
+AC_REQUIRE_AUX_FILE([tap-driver.sh])
AC_PREFIX_DEFAULT(/usr)
AC_SUBST(PACKAGE)
@@ -47,6 +48,7 @@
AC_SUBST(DBUSSYSTEMBUSSERVICEDIR)
AC_PROG_CXX
+AC_PROG_AWK
AX_CXX_COMPILE_STDCXX_17(, mandatory)
AC_PROG_CC
AC_PROG_INSTALL
@@ -111,6 +113,11 @@
AM_CONDITIONAL(ENABLE_REGENERATE_MAN,
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_CONFIG_FILES([Makefile lib/Makefile tukit/Makefile sbin/Makefile
man/Makefile \
systemd/Makefile logrotate/Makefile dracut/Makefile doc/Makefile \
etc/Makefile dbus/Makefile snapper/Makefile tests/Makefile \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.4/man/Makefile.am
new/transactional-update-5.0.6/man/Makefile.am
--- old/transactional-update-5.0.4/man/Makefile.am 2025-06-12
16:03:48.000000000 +0200
+++ new/transactional-update-5.0.6/man/Makefile.am 2025-07-09
16:28:10.000000000 +0200
@@ -4,7 +4,7 @@
CLEANFILES = $(MANS) $(DATA) transactional-update.index.xml
EXTRA_DIST = $(MANS) $(XMLS) $(DATA) custom-html.xsl make-man-index.py \
- xml_helper.py transactional-update.index.xml
+ xml_helper.py transactional-update.index.xml custom-man.xsl
XMLS = transactional-update.8.xml transactional-update.conf.5.xml
tukit.conf.5.xml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/transactional-update-5.0.4/sbin/transactional-update.in
new/transactional-update-5.0.6/sbin/transactional-update.in
--- old/transactional-update-5.0.4/sbin/transactional-update.in 2025-06-12
16:03:48.000000000 +0200
+++ new/transactional-update-5.0.6/sbin/transactional-update.in 2025-07-09
16:28:10.000000000 +0200
@@ -1287,25 +1287,21 @@
if [ ${SETUP_KDUMP} -eq 1 ]; then
if [ -z "${KDUMP_LOW}" ]; then
- KDUMP_CALIBRATION="$(tukit -q call "${SNAPSHOT_ID}" kdumptool
calibrate)"
- KDUMP_LOW="$(echo "$KDUMP_CALIBRATION" | grep ^Low: | cut -d ' '
-f 2)"
- KDUMP_HIGH="$(echo "$KDUMP_CALIBRATION" | grep ^High: | cut -d ' '
-f 2)"
- fi
-
- if [[ ${KDUMP_HIGH} -gt 0 ]]; then
- KDUMP_PARAM="crashkernel=${KDUMP_LOW}M,low
crashkernel=${KDUMP_HIGH}M,high"
+ KDUMP_PARAM="auto"
else
- KDUMP_PARAM="crashkernel=${KDUMP_LOW}M"
+ if [[ ${KDUMP_HIGH} -gt 0 ]]; then
+ KDUMP_PARAM="crashkernel=${KDUMP_LOW}M,low
crashkernel=${KDUMP_HIGH}M,high"
+ else
+ KDUMP_PARAM="crashkernel=${KDUMP_LOW}M"
+ fi
fi
+ tukit ${TUKIT_OPTS} call "${SNAPSHOT_ID}" sed -i -e
's/^KDUMP_CRASHKERNEL=.*/KDUMP_CRASHKERNEL="'"${KDUMP_PARAM}"'"/'
/etc/sysconfig/kdump
- if is_bls; then
- tukit ${TUKIT_OPTS} call "${SNAPSHOT_ID}" sed -i -e 's/
*crashkernel[^ "]\+//g' -e 's|$| '"${KDUMP_PARAM}"'|' /etc/kernel/cmdline
- else
- tukit ${TUKIT_OPTS} call "${SNAPSHOT_ID}" sed -i -e
'/^GRUB_CMDLINE_LINUX_DEFAULT=/s/ *crashkernel[^ "]\+//g' -e
's|\(^GRUB_CMDLINE_LINUX_DEFAULT=.*\)"|\1 '"${KDUMP_PARAM}"'"|g'
"/etc/default/grub"
- REWRITE_GRUB_CFG=1
- fi
+ # prevent kdump-commandline.service from trying to update bootloader
+ tukit ${TUKIT_OPTS} call "${SNAPSHOT_ID}" sed -i -e
's/^KDUMP_UPDATE_BOOTLOADER=.*/KDUMP_UPDATE_BOOTLOADER="false"/'
/etc/sysconfig/kdump
tukit ${TUKIT_OPTS} call "${SNAPSHOT_ID}" systemctl enable kdump
+ tukit ${TUKIT_OPTS} call "${SNAPSHOT_ID}" kdumptool commandline -u
fi
if [ ${REWRITE_INITRD} -eq 1 ]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.4/snapper/50-etc
new/transactional-update-5.0.6/snapper/50-etc
--- old/transactional-update-5.0.4/snapper/50-etc 2025-06-12
16:03:48.000000000 +0200
+++ new/transactional-update-5.0.6/snapper/50-etc 2025-07-09
16:28:10.000000000 +0200
@@ -75,12 +75,15 @@
# Add entry for /etc
sed -i '/^overlay[[:space:]]\+\/etc[[:space:]]/d'
"/.snapshots/${snapshot}/snapshot/etc/fstab"
- echo "/etc /etc none bind 0 0" >>
"/.snapshots/${snapshot}/snapshot/etc/fstab"
+ echo "/etc /etc none bind,x-initrd.mount 0 0" >>
"/.snapshots/${snapshot}/snapshot/etc/fstab"
# Clean up potential conflicting overlay cruft
rm -rf "/var/lib/overlay/${snapshot}"
fi
+ # Bugfix: Older versions didn't include the x-initrd.mount flag
+ awk -i inplace '$2 == "/etc" && $4 !~ /x-initrd.mount/ { $4 = $4
",x-initrd.mount" } { print }' /etc/fstab
+
reset_snapshot_writability
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.4/tests/Makefile.am
new/transactional-update-5.0.6/tests/Makefile.am
--- old/transactional-update-5.0.4/tests/Makefile.am 2025-06-12
16:03:48.000000000 +0200
+++ new/transactional-update-5.0.6/tests/Makefile.am 2025-07-09
16:28:10.000000000 +0200
@@ -1,7 +1,12 @@
# SPDX-License-Identifier: GPL-2.0-or-later
# SPDX-FileCopyrightText: Copyright SUSE LLC
-TESTS = etc_changes.sh
-check_SCRIPTS = etc_changes.sh
+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
-EXTRA_DIST = $(SCRIPTS)
+TEST_EXTENSIONS = .bats .root
+TESTS = etc_changes.bats etc_changes_as.root
+
+EXTRA_DIST = $(TESTS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.4/tests/etc_changes.bats
new/transactional-update-5.0.6/tests/etc_changes.bats
--- old/transactional-update-5.0.4/tests/etc_changes.bats 2025-06-12
16:03:48.000000000 +0200
+++ new/transactional-update-5.0.6/tests/etc_changes.bats 2025-07-09
16:28:10.000000000 +0200
@@ -37,12 +37,9 @@
}
syncTimestamps() {
- local referencefile
+ local referencedate="$(date -d "-10 seconds" +"%Y%m%d%H%M.%S")"
for file in "$@"; do
- if [ -z "${referencefile}" ]; then
- referencefile="${file}"
- fi
- touch --reference="${referencefile}" -- "$file"
+ touch --no-dereference -t "${referencedate}" -- "$file"
done
}
@@ -96,14 +93,12 @@
@test "File contents and properties" {
shopt -s globstar dotglob
- FILES=(File0.txt File1.txt File2.txt File3.txt File4.txt File5.txt
File6.txt File7.txt File8.txt)
+ FILES=(File0.txt File1.txt File2.txt File3.txt File4.txt File5.txt)
createFilesIn "${mockdir_old_etc}" "${FILES[@]}"
createFilesIn "${mockdir_new_etc}" "${FILES[@]}"
createFilesIn "${mockdir_syncpoint}" "${FILES[@]}"
syncTimestamps "${mockdir_old_etc}"/** "${mockdir_new_etc}"/**
"${mockdir_syncpoint}"/**
- sleep 2 # Sleep for one second to get different UNIX timestamps on file
modifications
-
# File contents (added)
echo "more file contents" >> "${mockdir_old_etc}/${FILES[0]}"
touch --reference="${mockdir_syncpoint}/${FILES[0]}"
"${mockdir_old_etc}/${FILES[0]}"
@@ -122,10 +117,6 @@
chmod 777 "${mockdir_old_etc}/${FILES[5]}"
touch --reference="${mockdir_syncpoint}/${FILES[5]}"
"${mockdir_new_etc}/${FILES[5]}"
- # Ownership
- chown :audio "${mockdir_old_etc}/${FILES[6]}"
- touch --reference="${mockdir_syncpoint}/${FILES[6]}"
"${mockdir_new_etc}/${FILES[6]}"
-
run $totest --keep-syncpoint "${mockdir_old_etc}" "${mockdir_new_etc}"
"${mockdir_syncpoint}"
echo "# Verifying appending contents to 'File0.txt' is detected"
@@ -140,8 +131,6 @@
[[ "${lines[*]}" != *'"./File4.txt"'* ]]
echo "# Verifying changing permissions of 'File5.txt' is detected"
[[ "${lines[*]}" == *'File changed:
"'${mockdir_old_etc}'/./File5.txt"'* ]]
- echo "# Verifying changing group of 'File6.txt' is detected"
- [[ "${lines[*]}" == *'File changed:
"'${mockdir_old_etc}'/./File6.txt"'* ]]
echo "# Verify changes to just atime are ignored"
# The human-readable %x/%y format has higher precision than %X/%Y
@@ -156,8 +145,27 @@
[ "$(stat -c %y "${mockdir_new_etc}/${FILES[3]}")" != "$(stat -c %y
"${mockdir_syncpoint}/${FILES[3]}")" ]
echo "# Verify that mode changes are detected and applied properly"
[ "$(stat -c %a "${mockdir_new_etc}/${FILES[5]}")" = "777" ]
+
+ rm -r "${mockdir_syncpoint}"
+}
+
+# bats test_tags=needroot
+@test "File contents and properties (with fakeroot)" {
+ shopt -s globstar dotglob
+ FILES=(File0.txt)
+ createFilesIn "${mockdir_old_etc}" "${FILES[@]}"
+ createFilesIn "${mockdir_new_etc}" "${FILES[@]}"
+ createFilesIn "${mockdir_syncpoint}" "${FILES[@]}"
+ syncTimestamps "${mockdir_old_etc}"/** "${mockdir_new_etc}"/**
"${mockdir_syncpoint}"/**
+
+ # Ownership - running in fakeroot because the user may not be part of
any non-default group
+ chown :audio "${mockdir_old_etc}/${FILES[0]}"
+ touch --reference="${mockdir_syncpoint}/${FILES[0]}"
"${mockdir_new_etc}/${FILES[0]}"
+
+ run $totest --keep-syncpoint "${mockdir_old_etc}" "${mockdir_new_etc}"
"${mockdir_syncpoint}"
+
echo "# Verify that owner changes are detected and applied properly"
- [ "$(stat -c %G "${mockdir_new_etc}/${FILES[6]}")" = "audio" ]
+ [ "$(stat -c %G "${mockdir_new_etc}/${FILES[0]}")" = "audio" ]
rm -r "${mockdir_syncpoint}"
}
@@ -168,7 +176,6 @@
createFilesIn "${mockdir_new_etc}" "${FILES[@]}"
createFilesIn "${mockdir_syncpoint}" "${FILES[@]}"
syncTimestamps "${mockdir_old_etc}"/** "${mockdir_new_etc}"/**
"${mockdir_syncpoint}"/**
- sleep 2
setfattr --name="user.test" --value="test"
"${mockdir_old_etc}/${FILES[0]}"
mkdir "${mockdir_old_etc}/Dir0"
@@ -198,8 +205,6 @@
done
syncTimestamps "${mockdir_old_etc}"/** "${mockdir_new_etc}"/**
"${mockdir_syncpoint}"/**
- sleep 2
-
cd "${mockdir_old_etc}"
echo "Test" > File1
touch --no-dereference File3
@@ -239,8 +244,7 @@
echo old > "${dir}/Dir7/ChangeInNew"
echo old > "${dir}/Dir7/noChange"
done
-
- sleep 2
+ syncTimestamps "${mockdir_old_etc}"/** "${mockdir_new_etc}"/**
"${mockdir_syncpoint}"/**
# Create a new directory in both old and new
mkdir "${mockdir_old_etc}/Dir2/DirInOld"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/transactional-update-5.0.4/tests/etc_changes_as.root
new/transactional-update-5.0.6/tests/etc_changes_as.root
--- old/transactional-update-5.0.4/tests/etc_changes_as.root 1970-01-01
01:00:00.000000000 +0100
+++ new/transactional-update-5.0.6/tests/etc_changes_as.root 2025-07-10
23:15:07.564733094 +0200
@@ -0,0 +1 @@
+symbolic link to etc_changes.bats