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-05-06 16:39:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/read-only-root-fs (Old)
 and      /work/SRC/openSUSE:Factory/.read-only-root-fs.new.30101 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "read-only-root-fs"

Tue May  6 16:39:12 2025 rev:20 rq:1272417 version:1.0+git20250422.3e17744

Changes:
--------
--- /work/SRC/openSUSE:Factory/read-only-root-fs/read-only-root-fs.changes      
2025-04-20 20:08:48.015208215 +0200
+++ 
/work/SRC/openSUSE:Factory/.read-only-root-fs.new.30101/read-only-root-fs.changes
   2025-05-06 16:39:35.103544908 +0200
@@ -1,0 +2,25 @@
+Tue Apr 22 12:27:34 UTC 2025 - Fabian Vogt <fv...@suse.com>
+
+- Update to version 1.0+git20250422.3e17744:
+  * Remount /sysroot/etc between sysroot-etc.mount and initrd-fs.target
+
+-------------------------------------------------------------------
+Tue Apr 15 14:23:08 UTC 2025 - Fabian Vogt <fv...@suse.com>
+
+- Update to version 1.0+git20250415.7e7aea4:
+  * Add missing dependency on mountpoint
+
+-------------------------------------------------------------------
+Tue Apr 15 13:03:01 UTC 2025 - Fabian Vogt <fv...@suse.com>
+
+- Add missing dependencies for %post
+
+-------------------------------------------------------------------
+Mon Apr 14 13:26:18 UTC 2025 - fv...@suse.com
+
+- 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+git20250422.3e17744.tar.xz

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

Other differences:
------------------
++++++ read-only-root-fs.spec ++++++
--- /var/tmp/diff_new_pack.CXAmLZ/_old  2025-05-06 16:39:35.599565638 +0200
+++ /var/tmp/diff_new_pack.CXAmLZ/_new  2025-05-06 16:39:35.599565638 +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+git20250422.3e17744
 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
@@ -58,18 +60,16 @@
 have a writable /root or /home, additional fstab entries can be added.
 
 %prep
-%setup -q
+%autosetup -p1
 
 %build
 
 %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.CXAmLZ/_old  2025-05-06 16:39:35.639567310 +0200
+++ /var/tmp/diff_new_pack.CXAmLZ/_new  2025-05-06 16:39:35.643567477 +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.CXAmLZ/_old  2025-05-06 16:39:35.663568313 +0200
+++ /var/tmp/diff_new_pack.CXAmLZ/_new  2025-05-06 16:39:35.667568480 +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">3e17744641c7f5aebe4076f591bde84ccba95b02</param>
   </service>
 </servicedata>
 (No newline at EOF)

++++++ read-only-root-fs-1.0+git20240228.d85232a.tar.xz -> 
read-only-root-fs-1.0+git20250422.3e17744.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+git20250422.3e17744/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+git20250422.3e17744/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf
        2025-04-22 14:27:33.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+git20250422.3e17744/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+git20250422.3e17744/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh
       2025-04-22 14:27:33.000000000 +0200
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+check() {
+    return 0
+}
+
+install() {
+    inst_multiple mountpoint
+
+    inst_simple "$moddir/writable-etc.service" 
"$systemdsystemunitdir/writable-etc.service"
+    $SYSTEMCTL -q --root "$initdir" enable writable-etc.service
+}
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.service
 
new/read-only-root-fs-1.0+git20250422.3e17744/usr/lib/dracut/modules.d/50writable-etc/writable-etc.service
--- 
old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/writable-etc.service
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/read-only-root-fs-1.0+git20250422.3e17744/usr/lib/dracut/modules.d/50writable-etc/writable-etc.service
  2025-04-22 14:27:33.000000000 +0200
@@ -0,0 +1,31 @@
+[Unit]
+Description=Remount /etc read-write
+DefaultDependencies=false
+
+Before=initrd-fs.target
+
+# Make sure /sysroot/etc is fully mounted
+After=initrd-parse-etc.service
+# Would be nice, but initrd-cleanup.service calls systemctl isolate 
initrd-switch-root.target
+# which pulls in this unit and with this requires then also 
initrd-parse-etc.service.
+# That has Type=oneshot without RemainAfterExit, so gets started again, 
triggering a daemon-reload
+# a second time, breaking everything.
+# Requires=initrd-parse-etc.service
+RequiresMountsFor=/sysroot/etc
+
+Conflicts=initrd-switch-root.target umount.target
+Conflicts=dracut-emergency.service emergency.service emergency.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+# /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'
+
+[Install]
+RequiredBy=initrd-fs.target
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+git20250422.3e17744/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+git20250422.3e17744/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf
        2025-04-22 14:27:33.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+git20250422.3e17744/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+git20250422.3e17744/usr/libexec/setup-etc-subvol  
2025-04-22 14:27:33.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+git20250422.3e17744/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+git20250422.3e17744/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

Reply via email to