Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package read-only-root-fs for
openSUSE:Factory checked in at 2025-04-15 20:47:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/read-only-root-fs (Old)
and /work/SRC/openSUSE:Factory/.read-only-root-fs.new.1907 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "read-only-root-fs"
Tue Apr 15 20:47:12 2025 rev:18 rq:1269648 version:1.0+git20250415.7e7aea4
Changes:
--------
--- /work/SRC/openSUSE:Factory/read-only-root-fs/read-only-root-fs.changes
2024-02-29 21:49:17.491650190 +0100
+++
/work/SRC/openSUSE:Factory/.read-only-root-fs.new.1907/read-only-root-fs.changes
2025-04-15 20:47:22.149805815 +0200
@@ -1,0 +2,19 @@
+Tue Apr 15 14:23:08 UTC 2025 - Fabian Vogt <[email protected]>
+
+- Update to version 1.0+git20250415.7e7aea4:
+ * Add missing dependency on mountpoint
+
+-------------------------------------------------------------------
+Tue Apr 15 13:03:01 UTC 2025 - Fabian Vogt <[email protected]>
+
+- Add missing dependencies for %post
+
+-------------------------------------------------------------------
+Mon Apr 14 13:26:18 UTC 2025 - [email protected]
+
+- Update to version 1.0+git20250414.6ef7163:
+ * Add a note why we need to keep 10-read-only-root-fs.conf around
+ * Migrate from /etc overlays to subvolumes
+- Switch _service to use mode="manual"
+
+-------------------------------------------------------------------
Old:
----
read-only-root-fs-1.0+git20240228.d85232a.tar.xz
New:
----
read-only-root-fs-1.0+git20250415.7e7aea4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ read-only-root-fs.spec ++++++
--- /var/tmp/diff_new_pack.wughnf/_old 2025-04-15 20:47:22.729829885 +0200
+++ /var/tmp/diff_new_pack.wughnf/_new 2025-04-15 20:47:22.729829885 +0200
@@ -1,7 +1,7 @@
#
# spec file for package read-only-root-fs
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: read-only-root-fs
-Version: 1.0+git20240228.d85232a
+Version: 1.0+git20250415.7e7aea4
Release: 0
Summary: Files and Scripts for a RO root fileystem
License: GPL-2.0-or-later
@@ -28,17 +28,19 @@
BuildRequires: dracut
BuildRequires: update-bootloader-rpm-macros
Requires: dracut
-Requires(post): /usr/bin/mkdir /usr/bin/cat /usr/bin/sed
-Requires(post): gawk
+Requires(post): /usr/bin/mv /usr/bin/rsync /usr/bin/gawk /usr/sbin/btrfs
Requires(post): snapper
# Required if system with new /etc/fstab entries is supposed to be updated
-Conflicts: transactional-update < 2.15
+Conflicts: transactional-update < 5.0.0
+# Support for /etc as subvolume
+Conflicts: combustion < 1.5
+Conflicts: ignition < 2.21.0
BuildArch: noarch
%{update_bootloader_requires}
%description
Files, scripts and directories to run the system with a
-read-only root filesystem with %{_sysconfdir} writeable via overlayfs.
+read-only root filesystem with nested writable %{_sysconfdir} BTRFS subvolume.
This package should never be installed in an already running
system! It should only be selected by a system role for a
@@ -64,12 +66,10 @@
%install
cp -a etc usr %{buildroot}
-mkdir -p %{buildroot}%{_localstatedir}/lib/overlay/work-etc
%post
-if [ "$1" = 1 ] ; then
- %{_sbindir}/setup-fstab-for-overlayfs
- mkdir -p %{_localstatedir}/lib/overlay/1/etc
+if [ "$1" = 1 -a "`findmnt -n -o FSTYPE -l /`" = "btrfs" ] ; then
+ %{_libexecdir}/setup-etc-subvol
fi
if [ ! -e /boot/writable -a "`findmnt -n -o FSTYPE -l /`" = "btrfs" ]; then
%{_sbindir}/mksubvolume /boot/writable
@@ -90,9 +90,10 @@
%files
%license COPYING
-%{_sbindir}/setup-fstab-for-overlayfs
-%{_localstatedir}/lib/overlay
+%{_libexecdir}/setup-etc-subvol
%{_prefix}/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf
+%dir %{_prefix}/lib/dracut/modules.d/50writable-etc
+%{_prefix}/lib/dracut/modules.d/50writable-etc/*
%{_prefix}/lib/systemd/system-preset/*
%dir %{_prefix}/lib/systemd/system/systemd-udevd.service.d
%{_prefix}/lib/systemd/system/systemd-udevd.service.d/etcmount.conf
++++++ _service ++++++
--- /var/tmp/diff_new_pack.wughnf/_old 2025-04-15 20:47:22.777831877 +0200
+++ /var/tmp/diff_new_pack.wughnf/_new 2025-04-15 20:47:22.785832210 +0200
@@ -1,15 +1,15 @@
<services>
- <service name="tar_scm" mode="disabled">
+ <service name="tar_scm" mode="manual">
<param name="version">1.0</param>
<param name="versionformat">1.0+git%cd.%h</param>
<param name="url">https://github.com/openSUSE/read-only-root-fs.git</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
</service>
- <service name="recompress" mode="disabled">
+ <service name="recompress" mode="manual">
<param name="compression">xz</param>
<param name="file">*.tar</param>
</service>
- <service name="set_version" mode="disabled"/>
+ <service name="set_version" mode="manual"/>
</services>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.wughnf/_old 2025-04-15 20:47:22.813833372 +0200
+++ /var/tmp/diff_new_pack.wughnf/_new 2025-04-15 20:47:22.817833538 +0200
@@ -1,7 +1,7 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/read-only-root-fs.git</param>
- <param
name="changesrevision">d85232a9c138eb6dc768c97ac3a5b2d80c16b7e6</param>
+ <param
name="changesrevision">7e7aea42996f68a4ade290aa0b1542d6ccb5f46d</param>
</service>
</servicedata>
(No newline at EOF)
++++++ read-only-root-fs-1.0+git20240228.d85232a.tar.xz ->
read-only-root-fs-1.0+git20250415.7e7aea4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf
---
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf
2024-02-28 14:01:51.000000000 +0100
+++
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf
2025-04-15 16:19:23.000000000 +0200
@@ -1,2 +1,3 @@
+# Snapshots created by t-u < 5 still have an overlayfs on /etc
add_dracutmodules+=" systemd-initrd "
force_drivers+=" overlay "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh
---
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh
1970-01-01 01:00:00.000000000 +0100
+++
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh
2025-04-15 16:19:23.000000000 +0200
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+check() {
+ return 0
+}
+
+install() {
+ inst_multiple mountpoint
+
+ mkdir -p "${initdir}/$systemdsystemunitdir/initrd-parse-etc.service.d"
+ inst_simple "$moddir/writable-etc.conf"
"$systemdsystemunitdir/initrd-parse-etc.service.d/writable-etc.conf"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/writable-etc.conf
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/modules.d/50writable-etc/writable-etc.conf
---
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/writable-etc.conf
1970-01-01 01:00:00.000000000 +0100
+++
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/modules.d/50writable-etc/writable-etc.conf
2025-04-15 16:19:23.000000000 +0200
@@ -0,0 +1,8 @@
+[Service]
+# /etc is a subvolume of the read-only root file system, so also mounted
+# read-only. Mounting it read-write requires a two step process:
+# - Bind mount the subvolume to get a dedicated mount point
+# - Remount that bind mount as read-write
+# Unfortunately systemd does not support two lines for one mount point,
+# so the remount part is done manually here.
+ExecStart=/bin/sh -e -c 'if mountpoint -q /sysroot/etc; then mount -o
remount,rw /sysroot/etc; fi'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf
---
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf
2024-02-28 14:01:51.000000000 +0100
+++
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf
2025-04-15 16:19:23.000000000 +0200
@@ -3,3 +3,6 @@
# ro-remount of /, so that the filesystem is writable again as
# quickly as possible (boo#1156421).
ExecStart=/bin/sh -e -c 'if mountpoint -q /boot/writable; then mount -o
remount,rw /boot/writable; fi'
+# Changing the read/write mode of a bind mount needs a second
+# fstab entry, but systemd doesn't support set by itself
+ExecStart=/bin/sh -e -c 'if mountpoint -q /etc; then mount -o remount,rw /etc;
fi'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/read-only-root-fs-1.0+git20240228.d85232a/usr/libexec/setup-etc-subvol
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/libexec/setup-etc-subvol
--- old/read-only-root-fs-1.0+git20240228.d85232a/usr/libexec/setup-etc-subvol
1970-01-01 01:00:00.000000000 +0100
+++ new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/libexec/setup-etc-subvol
2025-04-15 16:19:23.000000000 +0200
@@ -0,0 +1,28 @@
+#!/bin/sh -e
+#
+# Copyright (c) 2019-2025 SUSE Linux GmbH, Nuernberg, Germany
+#
+# Create nested /etc subvolume and add it to fstab.
+
+# Already there?
+if [ -e /etc/fstab ] && [ -n "$(awk '$2 == "/etc"' /etc/fstab)" ]; then
+ echo "ERROR: Conflicting /etc entry found - cannot create nested
subvolume."
+ exit 1
+fi
+
+echo "Creating nested /etc subvolume..."
+mv /etc /etc.transactional-update
+btrfs subvolume create /etc
+rsync --quiet --archive --xattrs --acls /etc.transactional-update/ /etc
+rm -r /etc.transactional-update
+
+# Add entry for /etc
+echo "/etc /etc none bind,x-initrd.mount 0 0" >> /etc/fstab
+
+# Still expected by components such as Combustion
+gawk -i inplace '$2 == "/var" { $4 = $4",x-initrd.mount" } { print $0 }'
/etc/fstab
+
+# Make the /root subvolume available during ignition runs (boo#1161264)
+gawk -i inplace '$2 == "/root" { $4 = $4",x-initrd.mount" } { print $0 }'
/etc/fstab
+
+exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/read-only-root-fs-1.0+git20240228.d85232a/usr/sbin/setup-fstab-for-overlayfs
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/sbin/setup-fstab-for-overlayfs
---
old/read-only-root-fs-1.0+git20240228.d85232a/usr/sbin/setup-fstab-for-overlayfs
2024-02-28 14:01:51.000000000 +0100
+++
new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/sbin/setup-fstab-for-overlayfs
1970-01-01 01:00:00.000000000 +0100
@@ -1,34 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2019 SUSE Linux GmbH, Nuernberg, Germany
-#
-# Add mountpoint for the /etc overlay and workaround for /var to /etc/fstab
-#
-
-# Already there?
-if [ -e /etc/fstab ] && grep -qE '^overlay[[:space:]]+/etc[[:space:]]'
/etc/fstab; then
- exit 0 # Do nothing
-fi
-
-# Not a fresh installation?
-if [ -e /etc/fstab.sys ]; then
- # Let transactional-update handle the migration - doing anything here
would be pointless
- # as it's only written into the overlay anyway and if for some reason
transactional-update
- # is too old, it would result in duplicate /etc entries.
- exit 0
-fi
-
-# Add entry for /etc
-# Workaround for bsc#1121276 is to prefix paths in /etc/fstab options with
/sysroot,
-# which also means duplicating the x-systemd.requires-mounts-for entry for
/etc.
-cat << EOF >> /etc/fstab
-overlay /etc overlay
defaults,lowerdir=/sysroot/etc,upperdir=/sysroot/var/lib/overlay/1/etc,workdir=/sysroot/var/lib/overlay/work-etc,x-systemd.requires-mounts-for=/var,x-systemd.requires-mounts-for=/sysroot/var,x-initrd.mount
0 0
-EOF
-
-# Workaround for bsc#1121279
-gawk -i inplace '$2 == "/var" { $4 = $4",x-initrd.mount" } { print $0 }'
/etc/fstab
-
-# Make the /root subvolume available during ignition runs (boo#1161264)
-gawk -i inplace '$2 == "/root" { $4 = $4",x-initrd.mount" } { print $0 }'
/etc/fstab
-
-exit 0