Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package combustion for openSUSE:Factory 
checked in at 2025-03-24 13:25:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/combustion (Old)
 and      /work/SRC/openSUSE:Factory/.combustion.new.2696 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "combustion"

Mon Mar 24 13:25:14 2025 rev:35 rq:1255005 version:1.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/combustion/combustion.changes    2024-08-22 
18:10:33.934912494 +0200
+++ /work/SRC/openSUSE:Factory/.combustion.new.2696/combustion.changes  
2025-03-24 13:25:16.942374344 +0100
@@ -1,0 +2,11 @@
+Fri Mar 21 12:52:43 UTC 2025 - Fabian Vogt <fv...@suse.com>
+
+- Update to version 1.5:
+  * Add support for nested /etc subvolumes
+  * Log combustion-prepare.service to journal+console
+  * CI: Verify combustion runs only on the first boot
+  * CI: Add some missing SYSTEMD_IGNORE_CHROOT=1 to poweroff calls
+  * CI: Add a test with Minimal-VM
+  * Silence stderr of grep in /proc/*/mountinfo
+
+-------------------------------------------------------------------

Old:
----
  combustion-1.4+git8.obscpio

New:
----
  combustion-1.5.obscpio

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

Other differences:
------------------
++++++ combustion.spec ++++++
--- /var/tmp/diff_new_pack.JS9Q87/_old  2025-03-24 13:25:17.626402844 +0100
+++ /var/tmp/diff_new_pack.JS9Q87/_new  2025-03-24 13:25:17.626402844 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package combustion
 #
-# 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:           combustion
-Version:        1.4+git8
+Version:        1.5
 Release:        0
 Summary:        System for initial configuration of appliances
 License:        GPL-2.0-or-later

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.JS9Q87/_old  2025-03-24 13:25:17.674404845 +0100
+++ /var/tmp/diff_new_pack.JS9Q87/_new  2025-03-24 13:25:17.682405178 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/openSUSE/combustion.git</param>
-              <param 
name="changesrevision">4ad9eeaf43bf6eaf8268176e92ad3e4e1cc9fd91</param></service></servicedata>
+              <param 
name="changesrevision">ef1f0a48d97d7f2eacf8333288cd7adb5b83d92e</param></service></servicedata>
 (No newline at EOF)
 

++++++ combustion-1.4+git8.obscpio -> combustion-1.5.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/combustion-1.4+git8/30firstboot/firstboot-detect 
new/combustion-1.5/30firstboot/firstboot-detect
--- old/combustion-1.4+git8/30firstboot/firstboot-detect        2024-08-21 
14:08:27.000000000 +0200
+++ new/combustion-1.5/30firstboot/firstboot-detect     2025-03-21 
13:51:02.000000000 +0100
@@ -13,7 +13,7 @@
 mount -o "$opts" "$what" /sysroot
 
 # Handle x-initrd.mount without initrd-parse-etc.service
-awk '$1 !~ /^#/ && $4 ~ /(\<|,)x-initrd\.mount(\>|,)/ { if(system("mount 
--target-prefix /sysroot --fstab /sysroot/etc/fstab " $2) != 0) exit 1; }' 
/sysroot/etc/fstab
+awk '$1 !~ /^#/ && $4 ~ /(\<|,)x-initrd\.mount(\>|,)/ && ! ( $2 == "/etc" && 
$3 == "none" ) { if(system("mount --target-prefix /sysroot --fstab 
/sysroot/etc/fstab " $2) != 0) exit 1; }' /sysroot/etc/fstab
 
 if ! [ -e /sysroot/etc/machine-id ] \
        || grep -qw 'ignition\.firstboot' /proc/cmdline || grep -qw 
'combustion\.firstboot' /proc/cmdline; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/combustion-1.4+git8/combustion 
new/combustion-1.5/combustion
--- old/combustion-1.4+git8/combustion  2024-08-21 14:08:27.000000000 +0200
+++ new/combustion-1.5/combustion       2025-03-21 13:51:02.000000000 +0100
@@ -171,7 +171,7 @@
                fi
        fi
 
-       if grep -w /sysroot /proc/*/mountinfo; then
+       if grep -w /sysroot /proc/*/mountinfo 2>/dev/null; then
                echo "Warning: /sysroot still mounted somewhere"
        fi
 
@@ -219,9 +219,10 @@
        systemctl start sysroot-usr.mount
 fi
 
-# Have to take care of x-initrd.mount first and from the outside.
+# Have to take care of x-initrd.mount first and from the outside, but skip /etc
+# if it's the new nested subvolume mechanism
 # Note: ignition-kargs-helper calls combustion but already mounted those 
itself.
-awk '$1 !~ /^#/ && $4 ~ /(\<|,)x-initrd\.mount(\>|,)/ { if(system("findmnt 
/sysroot/" $2 " >/dev/null || mount --target-prefix /sysroot --fstab 
/sysroot/etc/fstab " $2) != 0) exit 1; }' /sysroot/etc/fstab
+awk '$1 !~ /^#/ && $4 ~ /(\<|,)x-initrd\.mount(\>|,)/ && ! ( $2 == "/etc" && 
$3 == "none" ) { if(system("findmnt /sysroot/" $2 " >/dev/null || mount 
--target-prefix /sysroot --fstab /sysroot/etc/fstab " $2) != 0) exit 1; }' 
/sysroot/etc/fstab
 
 # Make sure the old snapshot is relabeled too, otherwise syncing its /etc 
fails.
 (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/combustion-1.4+git8/combustion-prepare.service 
new/combustion-1.5/combustion-prepare.service
--- old/combustion-1.4+git8/combustion-prepare.service  2024-08-21 
14:08:27.000000000 +0200
+++ new/combustion-1.5/combustion-prepare.service       2025-03-21 
13:51:02.000000000 +0100
@@ -24,4 +24,5 @@
 
 [Service]
 Type=oneshot
+StandardOutput=journal+console
 ExecStart=/usr/bin/combustion --prepare
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/combustion-1.4+git8/test/test.sh 
new/combustion-1.5/test/test.sh
--- old/combustion-1.4+git8/test/test.sh        2024-08-21 14:08:27.000000000 
+0200
+++ new/combustion-1.5/test/test.sh     2025-03-21 13:51:02.000000000 +0100
@@ -40,6 +40,14 @@
 cp "${testdir}/"{testscript,config.ign} "${tmpdir}"
 cd "$tmpdir"
 
+cat >combustion-secondboot <<'EOF'
+#!/bin/bash
+set -euxo pipefail
+exec &>/dev/ttyS0
+echo "Combustion must not run on second boot"
+SYSTEMD_IGNORE_CHROOT=1 poweroff -f
+EOF
+
 # Download latest MicroOS image
 if ! [ -f openSUSE-MicroOS.x86_64-kvm-and-xen.qcow2 ]; then
        wget --progress=bar:force:noscroll 
https://download.opensuse.org/tumbleweed/appliances/openSUSE-MicroOS.x86_64-kvm-and-xen.qcow2
@@ -55,7 +63,7 @@
 #!/bin/bash
 set -euxo pipefail
 exec &>/dev/ttyS0
-trap '[ $? -eq 0 ] || poweroff -f' EXIT
+trap '[ $? -eq 0 ] || SYSTEMD_IGNORE_CHROOT=1 poweroff -f' EXIT
 mount -t 9p -o trans=virtio tmpdir /mnt
 # Install new combustion, make sure the old remnants are gone
 rpm -e --nodeps --noscripts combustion
@@ -108,6 +116,18 @@
        exit 1
 fi
 
+# Make sure it does not run on the second boot
+rm -f "${tmpdir}/done"
+
+timeout 300 qemu-system-x86_64 "${QEMU_BASEARGS[@]}" -drive 
if=virtio,file=openSUSE-MicroOS.x86_64-kvm-and-xen.qcow2 \
+        -kernel vmlinuz -initrd initrd -append "root=LABEL=ROOT console=ttyS0 
quiet systemd.show_status=1 systemd.log_target=console 
systemd.journald.forward_to_console=1 rd.emergency=poweroff rd.shell=0" \
+        -fw_cfg 
name=opt/org.opensuse.combustion/script,file=combustion-secondboot
+
+if ! [ -e "${tmpdir}/done" ]; then
+        echo "Test failed"
+        exit 1
+fi
+
 # Test combustion.url using QEMU's builtin tftp server
 rm -f "${tmpdir}/done"
 qemu-img snapshot -a initial openSUSE-MicroOS.x86_64-kvm-and-xen.qcow2
@@ -120,3 +140,68 @@
        echo "Test failed"
        exit 1
 fi
+
+# Now do some testing with Minimal-VM instead of MicroOS
+
+# Download latest Minimal-VM image
+if ! [ -f openSUSE-Tumbleweed-Minimal-VM.x86_64-kvm-and-xen.qcow2 ]; then
+        wget --progress=bar:force:noscroll 
https://download.opensuse.org/tumbleweed/appliances/openSUSE-Tumbleweed-Minimal-VM.x86_64-kvm-and-xen.qcow2
+        qemu-img snapshot -c initial 
openSUSE-Tumbleweed-Minimal-VM.x86_64-kvm-and-xen.qcow2
+else
+        qemu-img snapshot -a initial 
openSUSE-Tumbleweed-Minimal-VM.x86_64-kvm-and-xen.qcow2
+fi
+
+# Use combustion in the downloaded image to generate an initrd with the new 
combustion.
+if ! [ -n "${reuseinitrd}" ] || ! [ -e "${tmpdir}/vmlinuz-minimal" ] || ! [ -e 
"${tmpdir}/initrd-minimal" ]; then
+       rm -f "${tmpdir}/done"
+
+       cat >create-initrd-minimal <<'EOF'
+#!/bin/bash
+set -euxo pipefail
+exec &>/dev/ttyS0
+trap '[ $? -eq 0 ] || SYSTEMD_IGNORE_CHROOT=1 poweroff -f' EXIT
+mount -t 9p -o trans=virtio tmpdir /mnt
+# Install new combustion, make sure the old remnants are gone
+rpm -e --nodeps --noscripts combustion
+cp -av /mnt/install/usr /
+cp /usr/lib/modules/$(uname -r)/vmlinuz /mnt/vmlinuz-minimal
+dracut -f --no-hostonly /mnt/initrd-minimal
+touch /mnt/done
+umount /mnt
+SYSTEMD_IGNORE_CHROOT=1 poweroff -f
+EOF
+
+       timeout 300 qemu-system-x86_64 "${QEMU_BASEARGS[@]}" -drive 
if=virtio,file=openSUSE-Tumbleweed-Minimal-VM.x86_64-kvm-and-xen.qcow2 \
+               -fw_cfg 
name=opt/org.opensuse.combustion/script,file=create-initrd-minimal
+
+       if ! [ -e "${tmpdir}/done" ]; then
+               echo "Initrd generation failed"
+               exit 1
+       fi
+fi
+
+# Test combustion.url using QEMU's builtin tftp server
+rm -f "${tmpdir}/done"
+qemu-img snapshot -a initial 
openSUSE-Tumbleweed-Minimal-VM.x86_64-kvm-and-xen.qcow2
+
+timeout 300 qemu-system-x86_64 "${QEMU_BASEARGS[@]}" -drive 
if=virtio,file=openSUSE-Tumbleweed-Minimal-VM.x86_64-kvm-and-xen.qcow2 \
+       -kernel vmlinuz-minimal -initrd initrd-minimal -append "root=LABEL=ROOT 
rw console=ttyS0 quiet systemd.show_status=1 systemd.log_target=console 
systemd.journald.forward_to_console=1 rd.emergency=poweroff rd.shell=0 
combustion.url=tftp://10.0.2.2/testscript"; \
+       -nic "user,tftp=$tmpdir"
+
+if ! [ -e "${tmpdir}/done" ]; then
+       echo "Test failed"
+       exit 1
+fi
+
+# Make sure it does not run on the second boot
+rm -f "${tmpdir}/done"
+
+timeout 300 qemu-system-x86_64 "${QEMU_BASEARGS[@]}" -drive 
if=virtio,file=openSUSE-Tumbleweed-Minimal-VM.x86_64-kvm-and-xen.qcow2 \
+       -kernel vmlinuz-minimal -initrd initrd-minimal -append "root=LABEL=ROOT 
rw console=ttyS0 quiet systemd.show_status=1 systemd.log_target=console 
systemd.journald.forward_to_console=1 rd.emergency=poweroff rd.shell=0 
combustion.url=tftp://10.0.2.2/combustion-secondboot"; \
+       -nic "user,tftp=$tmpdir"
+
+if ! [ -e "${tmpdir}/done" ]; then
+        echo "Test failed"
+        exit 1
+fi
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/combustion-1.4+git8/test/testscript 
new/combustion-1.5/test/testscript
--- old/combustion-1.4+git8/test/testscript     2024-08-21 14:08:27.000000000 
+0200
+++ new/combustion-1.5/test/testscript  2025-03-21 13:51:02.000000000 +0100
@@ -3,7 +3,7 @@
 set -euxo pipefail
 exec &>/dev/ttyS0
 # Poweroff immediately on any failure to avoid unnecessary waiting.
-trap '[ $? -eq 0 ] || poweroff -f' EXIT
+trap '[ $? -eq 0 ] || SYSTEMD_IGNORE_CHROOT=1 poweroff -f' EXIT
 
 if [ "${1-}" = "--prepare" ]; then
        # Verify that the udev rules work for all config sources and avoid

++++++ combustion.obsinfo ++++++
--- /var/tmp/diff_new_pack.JS9Q87/_old  2025-03-24 13:25:17.826411178 +0100
+++ /var/tmp/diff_new_pack.JS9Q87/_new  2025-03-24 13:25:17.830411345 +0100
@@ -1,5 +1,5 @@
 name: combustion
-version: 1.4+git8
-mtime: 1724242107
-commit: 4ad9eeaf43bf6eaf8268176e92ad3e4e1cc9fd91
+version: 1.5
+mtime: 1742561462
+commit: ef1f0a48d97d7f2eacf8333288cd7adb5b83d92e
 

Reply via email to