Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package agama-installer for openSUSE:Factory 
checked in at 2026-10-24 22:03:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/agama-installer (Old)
 and      /work/SRC/openSUSE:Factory/.agama-installer.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "agama-installer"

Sat Oct 24 22:03:43 2026 rev:43 rq:1387138 version:25.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/agama-installer/agama-installer.changes  
2026-09-22 15:49:09.268080202 +0200
+++ 
/work/SRC/openSUSE:Factory/.agama-installer.new.2252680/agama-installer.changes 
    2026-10-24 22:04:34.678478210 +0200
@@ -1,0 +2,48 @@
+Thu Oct 22 09:44:07 UTC 2026 - José Iván López González <[email protected]>
+
+- Version 25
+
+-------------------------------------------------------------------
+Wed Oct  7 12:53:02 UTC 2026 - Josef Reidinger <[email protected]>
+
+- Rename "Check Installation Medium" into "Check Medium & Install"
+  to make it more clear (bsc#1283085)
+
+-------------------------------------------------------------------
+Mon Oct  5 14:34:04 UTC 2026 - Ladislav Slezák <[email protected]>
+
+- Improved self-update cleanup to disable the added self-update
+  repositories also when the self-update fails or crashes.
+  (bsc#1254163)
+
+-------------------------------------------------------------------
+Wed Sep 30 12:48:23 UTC 2026 - Imobach Gonzalez Sosa <[email protected]>
+
+- Reduce the installer image footprint by dropping unnecessary
+  transitive YaST dependencies pulled in by agama-yast
+  (gh#agama-project/agama#4001, gh#agama-project/agama#4003,
+  gh#agama-project/agama#4004).
+
+-------------------------------------------------------------------
+Mon Sep 28 08:50:52 UTC 2026 - Andreas Schwab <[email protected]>
+
+- Add support for riscv64 (gh#agama-project/agama#3867)
+
+-------------------------------------------------------------------
+Thu Sep 24 14:03:15 UTC 2026 - Michal Filka <[email protected]>
+
+- bsc#1282603
+  - switched from 16.1 to 16.2 in kiwi build config
+
+-------------------------------------------------------------------
+Fri Sep 18 08:43:24 UTC 2026 - Santiago Zarate <[email protected]>
+
+- Set default bootloader for MicroOS to systemd-boot (bsc#1277929)
+
+-------------------------------------------------------------------
+Wed Sep 16 11:50:51 UTC 2026 - Josef Reidinger <[email protected]>
+
+- Add experimental support for 32 bit architectures which are in
+  TW ports (bsc#1266309)
+
+-------------------------------------------------------------------

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

Other differences:
------------------
++++++ agama-installer.kiwi ++++++
--- /var/tmp/diff_new_pack.vsWBUi/_old  2026-10-24 22:04:35.836526675 +0200
+++ /var/tmp/diff_new_pack.vsWBUi/_new  2026-10-24 22:04:35.839526800 +0200
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- OBS-ExclusiveArch: aarch64 ppc64le x86_64 s390x -->
+<!-- OBS-ExclusiveArch: aarch64 ppc64le riscv64 x86_64 s390x i586 armv6hl 
armv7hl -->
 <!-- OBS-Profiles: @BUILD_FLAVOR@ -->
 <!-- OBS-Milestone: %current_milestone -->
 
@@ -12,14 +12,14 @@
     <profiles>
         <!-- use at most 16 characters for the profile name, it is used in the 
ISO Volume ID -->
         <!-- which is limited to max. 32 characters -->
-        <profile name="Leap_16.1" description="openSUSE Leap image" 
import="true" />
+        <profile name="Leap_16.2" description="openSUSE Leap image" 
import="true" />
         <profile name="openSUSE" description="openSUSE multiproduct image" 
import="true" />
         <!-- TODO: add SPx in the future -->
-        <profile name="SUSE_SLE_16.1" description="SLE-based image" 
import="true" />
-        <profile name="SUSE_SLE_NV_16.1" description="SLE-based image for 
NVIDIA" import="true" />
+        <profile name="SUSE_SLE_16.2" description="SLE-based image" 
import="true" />
+        <profile name="SUSE_SLE_NV_16.2" description="SLE-based image for 
NVIDIA" import="true" />
     </profiles>
     <preferences>
-        <version>24.0.0</version>
+        <version>25.0.0</version>
         <packagemanager>zypper</packagemanager>
         <locale>en_US</locale>
         <keytable>us</keytable>
@@ -31,30 +31,41 @@
     ignored as the fix_bootconfig script automatically checks which theme is
     present, but keep the option here otherwise a text mode boot menu is
     displayed -->
-    <preferences profiles="openSUSE,Leap_16.1">
+    <preferences profiles="openSUSE,Leap_16.2">
         <bootloader-theme>openSUSE</bootloader-theme>
     </preferences>
-    <preferences profiles="SUSE_SLE_16.1,SUSE_SLE_NV_16.1">
+    <preferences profiles="SUSE_SLE_16.2,SUSE_SLE_NV_16.2">
         <bootloader-theme>SLE</bootloader-theme>
     </preferences>
     <!-- the ISO Volume ID is set by the fix_bootconfig script -->
-    <preferences arch="ppc64le" profiles="openSUSE,SUSE_SLE_16.1,Leap_16.1">
+    <preferences arch="ppc64le" profiles="openSUSE,SUSE_SLE_16.2,Leap_16.2">
         <type image="iso" flags="dmsquash"  firmware="ofw" mediacheck="true" 
publisher="SUSE LLC" editbootconfig="fix_bootconfig">
             <bootloader name="grub2" console="serial" timeout="10"/>
         </type>
     </preferences>
     <!-- SLES for NVIDIA is aarch64 only, but to simplify the kiwi config 
share the definition
     with the x86_64 products -->
-    <preferences arch="aarch64,x86_64" 
profiles="openSUSE,SUSE_SLE_16.1,SUSE_SLE_NV_16.1,Leap_16.1">
+    <preferences arch="aarch64,x86_64" 
profiles="openSUSE,SUSE_SLE_16.2,SUSE_SLE_NV_16.2,Leap_16.2">
         <type image="iso" flags="dmsquash" firmware="uefi" mediacheck="true" 
publisher="SUSE LLC" editbootconfig="fix_bootconfig">
             <bootloader name="grub2" timeout="10"/>
         </type>
     </preferences>
-    <preferences arch="s390x" profiles="openSUSE,SUSE_SLE_16.1,Leap_16.1">
+    <!-- experimental support for 32-bit and armv architectures, i686 is 
needed for kiwi in OBS as sometimes it builds on newer definition -->
+    <preferences arch="i586,i686,armv6hl,armv7hl,armv6l,armv7l" 
profiles="openSUSE,SUSE_SLE_16.2,SUSE_SLE_NV_16.2,Leap_16.2">
+        <type image="iso" flags="dmsquash" mediacheck="true" publisher="SUSE 
LLC" editbootconfig="fix_bootconfig">
+            <bootloader name="grub2" timeout="10"/>
+        </type>
+    </preferences>
+    <preferences arch="s390x" profiles="openSUSE,SUSE_SLE_16.2,Leap_16.2">
         <type image="iso" flags="dmsquash" mediacheck="true" publisher="SUSE 
LLC" editbootconfig="fix_bootconfig">
             <bootloader name="custom" />
         </type>
     </preferences>
+    <preferences arch="riscv64" profiles="openSUSE">
+        <type image="iso" flags="dmsquash" firmware="efi" mediacheck="true" 
publisher="SUSE LLC" editbootconfig="fix_bootconfig">
+            <bootloader name="grub2" timeout="10"/>
+        </type>
+    </preferences>
     <users>
         <!-- the password is configured during boot -->
         <user password="!*" home="/root" name="root" groups="root"/>
@@ -75,10 +86,12 @@
         <package name="vim-data"/>
         <package name="grub2"/>
         <package name="grub2-arm64-efi" arch="aarch64"/>
+        <package name="grub2-arm-efi" arch="armv6hl,armv7hl,armv6l,armv7l"/>
         <package name="grub2-x86_64-efi" arch="x86_64"/>
-        <package name="grub2-i386-pc" arch="x86_64"/>
+        <package name="grub2-i386-pc" arch="x86_64,i586,i686"/>
         <package name="grub2-s390x-emu" arch="s390x" />
         <package name="grub2-powerpc-ieee1275" arch="ppc64le"/>
+        <package name="grub2-riscv64-efi" arch="riscv64"/>
         <package name="syslinux" arch="x86_64"/>
         <package name="openssh"/>
         <package name="iproute2"/>
@@ -117,7 +130,7 @@
         <package name="jq"/>
         <package name="yast2-schema"/>
         <package name="qrencode"/>
-        <package name="qemu-guest-agent" />
+        <package name="qemu-guest-agent" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
         <package name="aaa_base-extras"/>
         <!-- to work correctly with the fips=1 boot parameter -->
         <package name="libopenssl-3-fips-provider"/>
@@ -131,54 +144,54 @@
         <!-- image cleanup tool -->
         <package name="image-janitor"/>
         <!-- plymouth bsc#1248507 -->
-        <package name="plymouth" arch="aarch64,x86_64,ppc64le" />
-        <package name="plymouth-dracut" arch="aarch64,x86_64,ppc64le" />
+        <package name="plymouth" arch="aarch64,x86_64,ppc64le,riscv64" />
+        <package name="plymouth-dracut" arch="aarch64,x86_64,ppc64le,riscv64" 
/>
         <!-- and s390 specific plymouth bsc#1248507 -->
         <package name="blog-plymouth" arch="s390x" />
 
     </packages>
 
     <!-- the kernel packages -->
-    <packages type="image" profiles="openSUSE,SUSE_SLE_16.1,Leap_16.1">
+    <packages type="image" profiles="openSUSE,SUSE_SLE_16.2,Leap_16.2">
         <package name="kernel-default"/>
     </packages>
-    <packages type="image" profiles="SUSE_SLE_NV_16.1">
+    <packages type="image" profiles="SUSE_SLE_NV_16.2">
         <package name="kernel-nvidia"/>
         <package name="kernel-firmware-nvidia"/>
     </packages>
-    <packages type="image" profiles="Leap_16.1">
+    <packages type="image" profiles="Leap_16.2">
         <package name="kernel-default-extra"/>
         <package name="kernel-default-optional"/>
     </packages>
 
     <!-- packages for local installation (desktop, browser, etc.) -->
-    <packages type="image" 
profiles="Leap_16.1,openSUSE,SUSE_SLE_16.1,SUSE_SLE_NV_16.1">
-        <package name="bluez-firmware"/>
+    <packages type="image" 
profiles="Leap_16.2,openSUSE,SUSE_SLE_16.2,SUSE_SLE_NV_16.2">
+        <package name="bluez-firmware" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
         <!-- for openQA to run their puppeteer tests, just injecting a *.js 
file -->
-        <package name="nodejs(engine)"/>
-        <package name="fontconfig"/>
-        <package name="fonts-config"/>
-        <package name="xauth"/>
-        <package name="MozillaFirefox"/>
-        <package name="gdm-systemd"/>
-        <package name="gnome-shell"/>
-        <package name="gnome-session-wayland"/>
-        <package name="gnome-kiosk"/>
-        <package name="spice-vdagent"/>
+        <package name="nodejs(engine)" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="fontconfig" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="fonts-config" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="xauth" arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="MozillaFirefox" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="gdm-systemd" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="gnome-shell" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="gnome-session-wayland" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="gnome-kiosk" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+        <package name="spice-vdagent" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
     </packages>
 
     <!-- common packages for openSUSE Tumbleweed and Leap distributions -->
-    <packages type="image" profiles="Leap_16.1,openSUSE">
+    <packages type="image" profiles="Leap_16.2,openSUSE">
         <package name="agama-products-opensuse"/>
-        <package name="grub2-branding-openSUSE" arch="aarch64,x86_64"/>
-        <package name="MozillaFirefox-branding-openSUSE"/>
+        <package name="grub2-branding-openSUSE" arch="aarch64,x86_64,riscv64"/>
+        <package name="MozillaFirefox-branding-openSUSE" 
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
         <package name="openSUSE-build-key"/>
         <package name="patterns-openSUSE-base"/>
         <package name="staging-build-key"/>
-        <package name="plymouth-branding-openSUSE" 
arch="aarch64,x86_64,ppc64le" />
+        <package name="plymouth-branding-openSUSE" 
arch="aarch64,x86_64,ppc64le,riscv64" />
     </packages>
     <!-- additional packages for the Leap distributions -->
-    <packages type="image" profiles="Leap_16.1">
+    <packages type="image" profiles="Leap_16.2">
         <package name="openSUSE-repos-Leap"/>
     </packages>
     <!-- additional packages for the openSUSE Tumbleweed distribution -->
@@ -186,18 +199,18 @@
         <package name="openSUSE-repos-Tumbleweed"/>
     </packages>
     <!-- common packages for all SLE distributions -->
-    <packages type="image" profiles="SUSE_SLE_16.1,SUSE_SLE_NV_16.1">
+    <packages type="image" profiles="SUSE_SLE_16.2,SUSE_SLE_NV_16.2">
         <package name="grub2-branding-SLE" arch="aarch64,x86_64"/>
         <package name="patterns-base-base"/>
         <package name="suse-build-key"/>
-        <package name="MozillaFirefox-branding-SLE"/>
+        <package name="MozillaFirefox-branding-SLE" 
arch="aarch64,x86_64,ppc64le,s390x"/>
     </packages>
     <!-- SLES specific packages -->
-    <packages type="image" profiles="SUSE_SLE_16.1">
+    <packages type="image" profiles="SUSE_SLE_16.2">
         <package name="agama-products-sle"/>
     </packages>
     <!-- SLES for NVIDIA specific packages -->
-    <packages type="image" profiles="SUSE_SLE_NV_16.1">
+    <packages type="image" profiles="SUSE_SLE_NV_16.2">
         <package name="agama-sles-nvidia-product"/>
         <package name="agama-sles-nvidia-branding"/>
     </packages>
@@ -208,17 +221,17 @@
         <package name="ca-certificates"/>
         <package name="ca-certificates-mozilla"/>
     </packages>
-    <packages type="bootstrap" profiles="Leap_16.1">
+    <packages type="bootstrap" profiles="Leap_16.2">
         <package name="Leap-release"/>
     </packages>
     <packages type="bootstrap" profiles="openSUSE">
         <package name="openSUSE-release"/>
         <package name="openSUSE-release-ftp"/>
     </packages>
-    <packages type="bootstrap" profiles="SUSE_SLE_16.1">
+    <packages type="bootstrap" profiles="SUSE_SLE_16.2">
         <package name="SLES-release"/>
     </packages>
-    <packages type="bootstrap" profiles="SUSE_SLE_NV_16.1">
+    <packages type="bootstrap" profiles="SUSE_SLE_NV_16.2">
         <package name="SLES_NVIDIA-release"/>
     </packages>
 </image>

++++++ _multibuild_sles_nvidia ++++++
--- /var/tmp/diff_new_pack.vsWBUi/_old  2026-10-24 22:04:35.910529772 +0200
+++ /var/tmp/diff_new_pack.vsWBUi/_new  2026-10-24 22:04:35.913529897 +0200
@@ -1,4 +1,4 @@
 <multibuild>
-  <flavor>SUSE_SLE_NV_16.1</flavor>
+  <flavor>SUSE_SLE_NV_16.2</flavor>
 </multibuild>
 

++++++ config-cdroot.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fix_bootconfig.aarch64 new/fix_bootconfig.aarch64
--- old/fix_bootconfig.aarch64  2026-09-21 16:43:04.000000000 +0200
+++ new/fix_bootconfig.aarch64  2026-10-22 15:36:49.000000000 +0200
@@ -99,7 +99,7 @@
     echo Loading initrd...
     initrd (\$root)/boot/aarch64/loader/initrd
 }
-menuentry "Check Installation Medium" --class os --unrestricted {
+menuentry "Check Medium & Install" --class os --unrestricted {
     set gfxpayload=keep
     echo Loading kernel...
     linux (\$root)/boot/aarch64/loader/linux mediacheck=1 plymouth.enable=0 
\${isoboot}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fix_bootconfig.i586 new/fix_bootconfig.i586
--- old/fix_bootconfig.i586     1970-01-01 01:00:00.000000000 +0100
+++ new/fix_bootconfig.i586     2026-10-22 15:36:49.000000000 +0200
@@ -0,0 +1,176 @@
+#! /bin/bash
+
+# Custom menu to ensure that we boot correctly
+# from local disk on UEFI
+# https://github.com/openSUSE/agama/issues/1609
+# KIWI config
+
+set -e
+
+dst="$1"
+
+if [ ! -d "$dst" ]; then
+  echo "fix_bootconfig.i586: image dir \"$dst\" not found"
+  exit 1
+fi
+
+# KIWI config which should normally be inherited
+# from a parent process in our case xorriso
+# but that's not the case.
+test -f $dst/.profile && . $dst/.profile
+
+arch=ix86
+profile=$(echo "$kiwi_profiles" | tr "_" " ")
+label="$profile ($arch)"
+
+if [ -d "$dst/boot/grub2/themes/SLE" ]; then
+  theme="SLE"
+else
+  theme="openSUSE"
+fi
+
+#
+# Create grub.cfg
+#
+cat >$dst/boot/grub2/grub.cfg <<XXX
+# Agama generated grub2 config file
+insmod serial
+insmod read
+
+set btrfs_relative_path="y"
+export btrfs_relative_path
+set default=0
+if [ -n "\${iso_path}" ]; then
+    isoboot="iso-scan/filename=\${iso_path}"
+fi
+set timeout=60
+set timeout_style=menu
+if [ "\${grub_platform}" = "efi" ]; then
+    echo "Please press 't' to show the boot menu on this console"
+fi
+set gfxmode=auto
+set font=(\$root)/boot/$arch/loader/grub2/fonts/unicode.pf2
+set ascii_font=grub2/themes/$theme/ascii.pf2
+set sans_bold_14_font=grub2/themes/$theme/DejaVuSans-Bold14.pf2
+set sans_10_font=grub2/themes/$theme/DejaVuSans10.pf2
+set sans_12_font=grub2/themes/$theme/DejaVuSans12.pf2
+if [ -f \${font} ];then
+    loadfont \${font}
+fi
+if [ -f (\$root)/boot/\${ascii_font} ];then
+    loadfont (\$root)/boot/\${ascii_font}
+fi
+if [ -f (\$root)/boot/\${sans_bold_14_font} ];then
+    loadfont (\$root)/boot/\${sans_bold_14_font}
+fi
+if [ -f (\$root)/boot/\${sans_10_font} ];then
+    loadfont (\$root)/boot/\${sans_10_font}
+fi
+if [ -f (\$root)/boot/\${sans_12_font} ];then
+    loadfont (\$root)/boot/\${sans_12_font}
+fi
+if [ -f (\$root)/boot/grub2/themes/$theme/theme.txt ];then
+    set theme=(\$root)/boot/grub2/themes/$theme/theme.txt
+fi
+
+# if serial port is successfully configured allow input/output to it as well
+if serial --unit=0 --speed=9600; then
+    terminal_input console serial
+    terminal_output gfxterm serial
+    set extra_output=serial
+    # this detects that a serial port is present but that does not mean a 
serial
+    # console is attached there so we cannot for example disable plymouth
+else
+    terminal_input console
+    terminal_output gfxterm
+fi
+
+if [ "\${grub_platform}" != "efi" ]; then
+    # classic BIOS boot, try booting from MBR from the first disk
+    menuentry "Boot from Hard Disk" --class os --unrestricted {
+        insmod file
+
+        # check if the first disk contains a valid boot sector
+        if file --is-x86-bios-bootsector (hd0)+1; then
+            chainloader (hd0)+1
+        else
+            echo "The first disk does not seem to be bootable."
+            echo ""
+            echo "If you are sure the system can boot from hard disk"
+            echo "then remove the installation medium and reboot the machine."
+            echo ""
+            echo "Press Enter to return ..."
+            read -s
+        fi
+    }
+fi
+
+menuentry "Install $label" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/$arch/loader/linux \${isoboot} splash=silent 
\${plymouth} \${live_options}
+    echo Loading initrd...
+    initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Failsafe -- Install $label" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/$arch/loader/linux \${isoboot} ide=nodma apm=off 
noresume edd=off nomodeset 3 \${live_options}
+    echo Loading initrd...
+    initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Check Medium & Install" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/$arch/loader/linux mediacheck=1 plymouth.enable=0 
\${isoboot} \${live_options}
+    echo Loading initrd...
+    initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Rescue System" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/$arch/loader/linux \${isoboot} 
$RESCUE_SYSTEM_BOOT_SETTINGS
+    echo Loading initrd...
+    initrd (\$root)/boot/$arch/loader/initrd
+}
+
+hiddenentry "Text mode" --hotkey "t" {
+    set textmode=true
+    set plymouth="plymouth.enable=0"
+    terminal_output console \${extra_output}
+}
+
+hiddenentry "Set Live system password" --hotkey "p" {
+    echo "Enter the new root password for the installer live system:"
+    read -s live_password
+    echo "Retype the password again:"
+    read -s live_password_confirmed
+
+    if [ "\${live_password}" != "\${live_password_confirmed}" ]; then
+        echo "ERROR: The passwords do not match!"
+        echo "Press Enter to return ..."
+        read -s
+    else
+        if [ -z "\${live_password}" ]; then
+            echo "ERROR: The password cannot be empty!"
+            echo "Press Enter to return ..."
+            read -s
+        else
+            set live_options="live.password=\${live_password}"
+        fi
+    fi
+}
+
+if [ "\${grub_platform}" = "efi" ]; then
+    menuentry "UEFI Firmware Settings" {
+        fwsetup --is-supported
+        if [ "\$?" = 0 ]; then
+            fwsetup
+        else
+            echo "Your firmware doesn't support setup menu entry from a boot 
loader"
+            echo "Press Enter to return ..."
+            read -s
+        fi
+    }
+fi
+XXX
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fix_bootconfig.i686 new/fix_bootconfig.i686
--- old/fix_bootconfig.i686     1970-01-01 01:00:00.000000000 +0100
+++ new/fix_bootconfig.i686     2026-10-22 15:36:49.000000000 +0200
@@ -0,0 +1,176 @@
+#! /bin/bash
+
+# Custom menu to ensure that we boot correctly
+# from local disk on UEFI
+# https://github.com/openSUSE/agama/issues/1609
+# KIWI config
+
+set -e
+
+dst="$1"
+
+if [ ! -d "$dst" ]; then
+  echo "fix_bootconfig.i586: image dir \"$dst\" not found"
+  exit 1
+fi
+
+# KIWI config which should normally be inherited
+# from a parent process in our case xorriso
+# but that's not the case.
+test -f $dst/.profile && . $dst/.profile
+
+arch="ix86"
+profile=$(echo "$kiwi_profiles" | tr "_" " ")
+label="$profile ($arch)"
+
+if [ -d "$dst/boot/grub2/themes/SLE" ]; then
+  theme="SLE"
+else
+  theme="openSUSE"
+fi
+
+#
+# Create grub.cfg
+#
+cat >$dst/boot/grub2/grub.cfg <<XXX
+# Agama generated grub2 config file
+insmod serial
+insmod read
+
+set btrfs_relative_path="y"
+export btrfs_relative_path
+set default=0
+if [ -n "\${iso_path}" ]; then
+    isoboot="iso-scan/filename=\${iso_path}"
+fi
+set timeout=60
+set timeout_style=menu
+if [ "\${grub_platform}" = "efi" ]; then
+    echo "Please press 't' to show the boot menu on this console"
+fi
+set gfxmode=auto
+set font=(\$root)/boot/$arch/loader/grub2/fonts/unicode.pf2
+set ascii_font=grub2/themes/$theme/ascii.pf2
+set sans_bold_14_font=grub2/themes/$theme/DejaVuSans-Bold14.pf2
+set sans_10_font=grub2/themes/$theme/DejaVuSans10.pf2
+set sans_12_font=grub2/themes/$theme/DejaVuSans12.pf2
+if [ -f \${font} ];then
+    loadfont \${font}
+fi
+if [ -f (\$root)/boot/\${ascii_font} ];then
+    loadfont (\$root)/boot/\${ascii_font}
+fi
+if [ -f (\$root)/boot/\${sans_bold_14_font} ];then
+    loadfont (\$root)/boot/\${sans_bold_14_font}
+fi
+if [ -f (\$root)/boot/\${sans_10_font} ];then
+    loadfont (\$root)/boot/\${sans_10_font}
+fi
+if [ -f (\$root)/boot/\${sans_12_font} ];then
+    loadfont (\$root)/boot/\${sans_12_font}
+fi
+if [ -f (\$root)/boot/grub2/themes/$theme/theme.txt ];then
+    set theme=(\$root)/boot/grub2/themes/$theme/theme.txt
+fi
+
+# if serial port is successfully configured allow input/output to it as well
+if serial --unit=0 --speed=9600; then
+    terminal_input console serial
+    terminal_output gfxterm serial
+    set extra_output=serial
+    # this detects that a serial port is present but that does not mean a 
serial
+    # console is attached there so we cannot for example disable plymouth
+else
+    terminal_input console
+    terminal_output gfxterm
+fi
+
+if [ "\${grub_platform}" != "efi" ]; then
+    # classic BIOS boot, try booting from MBR from the first disk
+    menuentry "Boot from Hard Disk" --class os --unrestricted {
+        insmod file
+
+        # check if the first disk contains a valid boot sector
+        if file --is-x86-bios-bootsector (hd0)+1; then
+            chainloader (hd0)+1
+        else
+            echo "The first disk does not seem to be bootable."
+            echo ""
+            echo "If you are sure the system can boot from hard disk"
+            echo "then remove the installation medium and reboot the machine."
+            echo ""
+            echo "Press Enter to return ..."
+            read -s
+        fi
+    }
+fi
+
+menuentry "Install $label" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/$arch/loader/linux \${isoboot} splash=silent 
\${plymouth} \${live_options}
+    echo Loading initrd...
+    initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Failsafe -- Install $label" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/$arch/loader/linux \${isoboot} ide=nodma apm=off 
noresume edd=off nomodeset 3 \${live_options}
+    echo Loading initrd...
+    initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Check Medium & Install" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/$arch/loader/linux mediacheck=1 plymouth.enable=0 
\${isoboot} \${live_options}
+    echo Loading initrd...
+    initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Rescue System" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/$arch/loader/linux \${isoboot} 
$RESCUE_SYSTEM_BOOT_SETTINGS
+    echo Loading initrd...
+    initrd (\$root)/boot/$arch/loader/initrd
+}
+
+hiddenentry "Text mode" --hotkey "t" {
+    set textmode=true
+    set plymouth="plymouth.enable=0"
+    terminal_output console \${extra_output}
+}
+
+hiddenentry "Set Live system password" --hotkey "p" {
+    echo "Enter the new root password for the installer live system:"
+    read -s live_password
+    echo "Retype the password again:"
+    read -s live_password_confirmed
+
+    if [ "\${live_password}" != "\${live_password_confirmed}" ]; then
+        echo "ERROR: The passwords do not match!"
+        echo "Press Enter to return ..."
+        read -s
+    else
+        if [ -z "\${live_password}" ]; then
+            echo "ERROR: The password cannot be empty!"
+            echo "Press Enter to return ..."
+            read -s
+        else
+            set live_options="live.password=\${live_password}"
+        fi
+    fi
+}
+
+if [ "\${grub_platform}" = "efi" ]; then
+    menuentry "UEFI Firmware Settings" {
+        fwsetup --is-supported
+        if [ "\$?" = 0 ]; then
+            fwsetup
+        else
+            echo "Your firmware doesn't support setup menu entry from a boot 
loader"
+            echo "Press Enter to return ..."
+            read -s
+        fi
+    }
+fi
+XXX
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fix_bootconfig.ppc64le new/fix_bootconfig.ppc64le
--- old/fix_bootconfig.ppc64le  2026-09-21 16:43:04.000000000 +0200
+++ new/fix_bootconfig.ppc64le  2026-10-22 15:36:49.000000000 +0200
@@ -42,7 +42,7 @@
   initrd /boot/ppc64le/loader/initrd
 }
 
-menuentry "Check Installation Medium" --class os --unrestricted {
+menuentry "Check Medium & Install" --class os --unrestricted {
   echo 'Loading kernel...'
   linux /boot/ppc64le/loader/linux mediacheck=1 plymouth.enable=0
   echo 'Loading initrd...'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fix_bootconfig.riscv64 new/fix_bootconfig.riscv64
--- old/fix_bootconfig.riscv64  1970-01-01 01:00:00.000000000 +0100
+++ new/fix_bootconfig.riscv64  2026-10-22 15:36:49.000000000 +0200
@@ -0,0 +1,152 @@
+#! /bin/bash
+
+# Custom menu to ensure that we boot correctly
+# from local disk on UEFI
+# https://github.com/openSUSE/agama/issues/1609
+# KIWI config
+
+set -e
+
+dst="$1"
+
+if [ ! -d "$dst" ]; then
+  echo "fix_bootconfig.riscv64: image dir \"$dst\" not found"
+  exit 1
+fi
+
+# KIWI config which should normally be inherited
+# from a parent process in our case xorriso
+# but that's not the case.
+test -f $dst/.profile && . $dst/.profile
+
+arch=$(uname -m)
+profile=$(echo "$kiwi_profiles" | tr "_" " ")
+label="$profile ($arch)"
+
+if [ -d "$dst/boot/grub2/themes/SLE" ]; then
+  theme="SLE"
+else
+  theme="openSUSE"
+fi
+
+#
+# Create grub.cfg
+#
+cat >$dst/boot/grub2/grub.cfg <<XXX
+# Agama generated grub2 config file
+insmod serial
+insmod read
+
+set btrfs_relative_path="y"
+export btrfs_relative_path
+set default=0
+if [ -n "\${iso_path}" ]; then
+    isoboot="iso-scan/filename=\${iso_path}"
+fi
+set timeout=60
+set timeout_style=menu
+echo "Please press 't' to show the boot menu on this console"
+set gfxmode=auto
+set font=(\$root)/boot/riscv64/loader/grub2/fonts/unicode.pf2
+set ascii_font=grub2/themes/$theme/ascii.pf2
+set sans_bold_14_font=grub2/themes/$theme/DejaVuSans-Bold14.pf2
+set sans_10_font=grub2/themes/$theme/DejaVuSans10.pf2
+set sans_12_font=grub2/themes/$theme/DejaVuSans12.pf2
+if [ -f \${font} ];then
+    loadfont \${font}
+fi
+if [ -f (\$root)/boot/\${ascii_font} ];then
+    loadfont (\$root)/boot/\${ascii_font}
+fi
+if [ -f (\$root)/boot/\${sans_bold_14_font} ];then
+    loadfont (\$root)/boot/\${sans_bold_14_font}
+fi
+if [ -f (\$root)/boot/\${sans_10_font} ];then
+    loadfont (\$root)/boot/\${sans_10_font}
+fi
+if [ -f (\$root)/boot/\${sans_12_font} ];then
+    loadfont (\$root)/boot/\${sans_12_font}
+fi
+if [ -f (\$root)/boot/grub2/themes/$theme/theme.txt ];then
+    set theme=(\$root)/boot/grub2/themes/$theme/theme.txt
+fi
+
+# if the first serial port is successfully configured allow input/output to it 
as well
+if serial --unit=0 --speed=9600; then
+    terminal_input console serial
+    terminal_output gfxterm serial
+    set extra_output=serial
+    # this detects that a serial port is present but that does not mean a 
serial
+    # console is attached there so we cannot for example disable plymouth
+else
+    terminal_input console
+    terminal_output gfxterm
+fi
+
+menuentry "Install $label" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/riscv64/loader/linux \${isoboot} splash=silent 
\${plymouth}
+    echo Loading initrd...
+    initrd (\$root)/boot/riscv64/loader/initrd
+}
+menuentry "Failsafe -- Install $label" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/riscv64/loader/linux \${isoboot} ide=nodma apm=off 
noresume edd=off nomodeset 3
+    echo Loading initrd...
+    initrd (\$root)/boot/riscv64/loader/initrd
+}
+menuentry "Check Medium & Install" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/riscv64/loader/linux mediacheck=1 plymouth.enable=0 
\${isoboot}
+    echo Loading initrd...
+    initrd (\$root)/boot/riscv64/loader/initrd
+}
+menuentry "Rescue System" --class os --unrestricted {
+    set gfxpayload=keep
+    echo Loading kernel...
+    linux (\$root)/boot/riscv64/loader/linux \${isoboot} 
$RESCUE_SYSTEM_BOOT_SETTINGS
+    echo Loading initrd...
+    initrd (\$root)/boot/riscv64/loader/initrd
+}
+
+hiddenentry "Text mode" --hotkey "t" {
+    set textmode=true
+    set plymouth="plymouth.enable=0"
+    terminal_output console \${extra_output}
+}
+
+hiddenentry "Set Live system password" --hotkey "p" {
+    echo "Enter root password for the installer live system:"
+    read -s live_password
+    echo "Confirm password:"
+    read -s live_password_confirmed
+
+    if [ "\${live_password}" != "\${live_password_confirmed}" ]; then
+        echo "ERROR: The passwords do not match!"
+        echo "Press Enter to return ..."
+        read -s
+    else
+        if [ -z "\${live_password}" ]; then
+            echo "ERROR: The password cannot be empty!"
+            echo "Press Enter to return ..."
+            read -s
+        else
+            set live_options="live.password=\${live_password}"
+        fi
+    fi
+}
+
+menuentry "UEFI Firmware Settings" {
+    fwsetup --is-supported
+    if [ "\$?" = 0 ]; then
+        fwsetup
+    else
+        echo "Your firmware doesn't support setup menu entry from a boot 
loader"
+        echo "Press Enter to return ..."
+        read -s
+    fi
+}
+XXX
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fix_bootconfig.x86_64 new/fix_bootconfig.x86_64
--- old/fix_bootconfig.x86_64   2026-09-21 16:43:04.000000000 +0200
+++ new/fix_bootconfig.x86_64   2026-10-22 15:36:49.000000000 +0200
@@ -119,7 +119,7 @@
     echo Loading initrd...
     initrd (\$root)/boot/x86_64/loader/initrd
 }
-menuentry "Check Installation Medium" --class os --unrestricted {
+menuentry "Check Medium & Install" --class os --unrestricted {
     set gfxpayload=keep
     echo Loading kernel...
     linux (\$root)/boot/x86_64/loader/linux mediacheck=1 plymouth.enable=0 
\${isoboot} \${live_options}

++++++ config.sh ++++++
--- /var/tmp/diff_new_pack.vsWBUi/_old  2026-10-24 22:04:35.989533078 +0200
+++ /var/tmp/diff_new_pack.vsWBUi/_new  2026-10-24 22:04:35.992533204 +0200
@@ -83,16 +83,20 @@
 systemctl enable live-self-update.service
 
 systemctl enable checkmedia.service
-systemctl enable qemu-guest-agent.service
+test -f /usr/lib/systemd/system/qemu-guest-agent.service && systemctl enable 
qemu-guest-agent.service
 systemctl enable setup-systemd-proxy-env.path
 test -f /usr/lib/systemd/system/gdm.service && systemctl enable gdm.service
 test -f /usr/lib/systemd/system/spice-vdagentd.service && systemctl enable 
spice-vdagentd.service
 systemctl enable zramswap
 
 # set the default target
+arch=$(uname -m)
 if [[ "$kiwi_profiles" == *MINI* ]]; then
   # the MINI images do not include graphical environment
   systemctl set-default multi-user.target
+elif [[ "$arch" == armv* || "$arch" == i?86 ]]; then
+  # experimental support for these architectures (no Firefox, etc)
+  systemctl set-default multi-user.target
 else
   systemctl set-default graphical.target
 fi
@@ -101,10 +105,6 @@
 systemctl disable snapper-cleanup.timer
 systemctl disable snapper-timeline.timer
 
-# disable unused services
-systemctl disable YaST2-Firstboot.service
-systemctl disable YaST2-Second-Stage.service
-
 # Prevent premature activation of LVM (bsc#1246133)
 systemctl mask lvm2-monitor.service
 sed -i 's:# event_activation = 1:event_activation = 0:' /etc/lvm/lvm.conf

++++++ live-root.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usr/bin/live-self-update new/usr/bin/live-self-update
--- old/usr/bin/live-self-update        2026-09-21 16:43:04.000000000 +0200
+++ new/usr/bin/live-self-update        2026-10-22 15:36:49.000000000 +0200
@@ -15,6 +15,11 @@
 REG_REPO_FILE="$RUN_DIR/reg_repos"
 OSR="/etc/os-release"
 ARCH=$(uname -m)
+# backup of the original resolv.conf (relative to the root directory)
+RESOLV_BACKUP="/etc/resolv.conf.self-update-orig"
+
+# the added self-update repositories
+self_update_repos=()
 
 # do the cleanup at the end, trap ensures it runs even if something fails
 trap cleanup_chroot EXIT
@@ -90,17 +95,39 @@
     mount -o bind /sys "$NEWROOT"/sys
     mount -o bind /proc "$NEWROOT"/proc
     mount -o bind /dev "$NEWROOT"/dev
-    [ -f /run/NetworkManager/resolv.conf ] && cp 
/run/NetworkManager/resolv.conf "$NEWROOT"/etc/resolv.conf
+    if [ -f /run/NetworkManager/resolv.conf ]; then
+      # keep the original file (or symlink), it is restored in cleanup_chroot()
+      if [ -e "$NEWROOT$RESOLV_BACKUP" ] || [ -L "$NEWROOT$RESOLV_BACKUP" ]; 
then
+        rm -f "$NEWROOT$RESOLV_BACKUP"
+      fi
+      if [ -e "$NEWROOT"/etc/resolv.conf ] || [ -L "$NEWROOT"/etc/resolv.conf 
]; then
+        mv "$NEWROOT"/etc/resolv.conf "$NEWROOT$RESOLV_BACKUP"
+      fi
+      cp /run/NetworkManager/resolv.conf "$NEWROOT"/etc/resolv.conf
+    fi
   fi
   # remove any existing self-update repositories, probably left-overs from the 
previous run
   rm -f "$NEWROOT"/etc/zypp/repos.d/self-update-*.repo
 }
 
+# Disable the self update repositories (keep them for debugging purposes)
+disable_update_repos() {
+  local repo
+
+  for repo in "${self_update_repos[@]}"; do
+    # do not abort the cleanup when disabling fails ("set -e" is active)
+    run_command zypper modifyrepo --disable "$repo" || \
+      warning "Disabling repository $repo failed"
+  done
+}
+
 # Revert the changes done by prepare_chroot() and restore the system to the
-# original state, called from bash "trap" handler
+# original state, disable the added self-update repos, called from bash "trap" 
handler
 cleanup_chroot() {
   local result="$?"
 
+  disable_update_repos
+
   if [ "$result" != "0" ]; then
     error "Error: Self update failed! (exit status: $result)"
   else
@@ -111,12 +138,19 @@
   echo "$result" > "$RESULT_FILE"
 
   if [ -n "$NEWROOT" ]; then
-    rm -f "$NEWROOT"/etc/resolv.conf
-    # do not fail if not mounted
-    findmnt "$NEWROOT"/run > /dev/null && umount "$NEWROOT"/run
-    findmnt "$NEWROOT"/sys > /dev/null && umount "$NEWROOT"/sys
-    findmnt "$NEWROOT"/proc > /dev/null && umount "$NEWROOT"/proc
-    findmnt "$NEWROOT"/dev > /dev/null && umount "$NEWROOT"/dev
+    local dir
+    # restore the original resolv.conf if it was replaced
+    if [ -e "$NEWROOT$RESOLV_BACKUP" ] || [ -L "$NEWROOT$RESOLV_BACKUP" ]; then
+      rm -f "$NEWROOT"/etc/resolv.conf
+      mv "$NEWROOT$RESOLV_BACKUP" "$NEWROOT"/etc/resolv.conf || \
+        warning "Restoring resolv.conf failed"
+    fi
+    for dir in run sys proc dev; do
+      # do not fail if not mounted, do not abort the cleanup if unmounting 
fails
+      if findmnt "$NEWROOT/$dir" > /dev/null; then
+        umount "$NEWROOT/$dir" || warning "Unmounting $NEWROOT/$dir failed"
+      fi
+    done
   fi
 
   # return the original exit value
@@ -149,12 +183,15 @@
     read_os_release
 
     local query
-    
query="$server/connect/repositories/installer?identifier=$NAME&version=$VERSION_ID&arch=$ARCH"
-    info "Running query $query...."
+    query="$server/connect/repositories/installer"
+    info "Running query $query (identifier=$NAME, version=$VERSION_ID, 
arch=$ARCH)...."
 
+    # the query parameters are URL-encoded by curl (the values may contain 
spaces)
     local curl_options
     curl_options=(--silent --globoff --location --retry 3 --retry-connrefused \
-      --connect-timeout 20 --max-time 10 --fail --show-error --output 
"$RESPONSE_FILE")
+      --connect-timeout 20 --max-time 30 --fail --show-error --output 
"$RESPONSE_FILE" \
+      --get --data-urlencode "identifier=$NAME" --data-urlencode 
"version=$VERSION_ID" \
+      --data-urlencode "arch=$ARCH")
 
     if grep -q "\binst.self_update_ssl=0\b" /run/agama/cmdline.d/agama.conf; 
then
       warning "Disabling SSL check for $server"
@@ -186,7 +223,8 @@
 add_update_repos() {
   milestone "Adding self update repositories..."
   # add the self-update repositories
-  while read -r update_url; do
+  # also process the last line if it is missing the trailing newline
+  while read -r update_url || [ -n "$update_url" ]; do
     if [ -n "$update_url" ]; then
       local repo
       repo="self-update-$index"
@@ -212,7 +250,8 @@
         zypper_options+=("--no-gpgcheck")
       fi
 
-      run_command zypper addrepo "${zypper_options[@]}" -f "$update_url" 
"$repo"
+      # do not let zypper read (and swallow) the rest of the repository list
+      run_command zypper addrepo "${zypper_options[@]}" -f "$update_url" 
"$repo" < /dev/null
       self_update_repos+=("$repo")
       ((++index))
     fi
@@ -224,6 +263,9 @@
 # contain a hardcoded version (the fallback URL should work with SLES-16.0,
 # SLES-16.1, SLES-16.2...)
 read_fallback_repos() {
+  # the variables might not be loaded yet (no registration server defined)
+  read_os_release
+
   # Substituting $arch pattern with the architecture of the current system.
   # Substituting these variables with the /etc/os-release content:
   #   $os_release_name       => NAME
@@ -232,10 +274,17 @@
   #   $os_release_version_id => VERSION_ID
   # IMPORTANT NOTE: the "VERSION_ID" replacement must happen *before*
   # the "VERSION" replacement because it partially matches that string!
-  sed -e "s/\$os_release_name/$NAME/g" -e "s/\$os_release_id/$ID/g" \
-    -e "s/\$os_release_version_id/$VERSION_ID/g" \
-    -e "s/\$os_release_version/$VERSION/g" \
-    -e "s/\$arch/$ARCH/g" "$CONFIG_FALLBACK_FILE" > "$FALLBACK_REPOS_FILE"
+  sed -e "s/\$os_release_name/$(sed_escape "$NAME")/g" \
+    -e "s/\$os_release_id/$(sed_escape "$ID")/g" \
+    -e "s/\$os_release_version_id/$(sed_escape "$VERSION_ID")/g" \
+    -e "s/\$os_release_version/$(sed_escape "$VERSION")/g" \
+    -e "s/\$arch/$(sed_escape "$ARCH")/g" "$CONFIG_FALLBACK_FILE" > 
"$FALLBACK_REPOS_FILE"
+}
+
+# escape the characters which are special in the sed replacement part
+# $1 - the string to escape
+sed_escape() {
+  printf '%s' "$1" | sed -e 's/[\/&]/\\&/g'
 }
 
 # Applies all the updates
@@ -243,7 +292,6 @@
 # Reads the URL of the updates from $AGAMA_DUD_INFO and process each one.
 install_updates() {
   index=0
-  self_update_repos=()
 
   if [ -f "$REPO_FILE" ]; then
     prepare_chroot
@@ -281,8 +329,14 @@
     zypper_options="--gpg-auto-import-keys"
   fi
 
+  # refuse to continue without a self-update repository
+  if [ ${#self_update_repos[@]} -eq 0 ]; then
+    milestone "No self-update repository found, skipping self-update"
+    exit 0
+  fi
+
   milestone "Loading repositories..."
-  run_command zypper $zypper_options refresh "${self_update_repos[@]}"
+  run_command zypper --non-interactive $zypper_options refresh 
"${self_update_repos[@]}"
 
   # build the list of repository options passed to zypper
   repo_options=()
@@ -299,10 +353,7 @@
   # delete the repository caches, not needed anymore, saves space in RAM disk
   run_command zypper clean --all
 
-  # disable the self update repositories (keep them for debugging purposes)
-  for repo in "${self_update_repos[@]}"; do
-    run_command zypper modifyrepo --disable "$repo"
-  done
+  # the self update repositories are disabled in the cleanup handler
 }
 
 # add a query parameter to URL

Reply via email to