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 2025-11-14 16:11:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/agama-installer (Old)
 and      /work/SRC/openSUSE:Factory/.agama-installer.new.2061 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "agama-installer"

Fri Nov 14 16:11:07 2025 rev:22 rq:1317456 version:17.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/agama-installer/agama-installer.changes  
2025-08-25 20:41:39.369034455 +0200
+++ 
/work/SRC/openSUSE:Factory/.agama-installer.new.2061/agama-installer.changes    
    2025-11-14 16:11:53.629715893 +0100
@@ -1,0 +2,75 @@
+Wed Nov  5 09:17:43 UTC 2025 - Ladislav Slezák <[email protected]>
+
+- Include the AMD GPU firmware files (bsc#1250952)
+
+-------------------------------------------------------------------
+Mon Nov  3 07:54:50 UTC 2025 - Ladislav Slezák <[email protected]>
+
+- Improved installer self-update (jsc#PED-12506):
+  - Enable using an HTTP proxy for the self-update process
+    (specified via the "proxy=" boot parameter or configured
+    interactively using the "rd.cmdline=menu")
+  - Fixed fallback to the default self-update URL when contacting
+    the registration server (SCC/RMT) fails
+
+-------------------------------------------------------------------
+Fri Oct 31 10:17:41 UTC 2025 - Ladislav Slezák <[email protected]>
+
+- Added installer self-update support (jsc#PED-12506)
+  - Supports SCC/RMT server (SCC is the default, RMT via
+    inst.register_url=<URL> option)
+  - Custom repository is supported (inst.self_update=<URL>)
+  - Can be skipped optionally (inst.self_update=0)
+
+-------------------------------------------------------------------
+Fri Oct 24 11:09:56 UTC 2025 - Ladislav Slezák <[email protected]>
+
+- Dump some Live ISO root image data directly to the ISO image,
+  added files:
+  /LiveOS/.info - a copy of the /var/log/build/info file from
+    the root image
+  /LiveOS/.packages.gz - list of installed package (plain text,
+    basically a `rpm -qa` dump)
+  /LiveOS/.packages.json.gz - list of installed packages (JSON
+    format, better suitable for processing by scripts or tools)
+  (gh#agama-project/agama#2717)
+
+-------------------------------------------------------------------
+Wed Oct 22 05:34:43 UTC 2025 - Imobach Gonzalez Sosa <[email protected]>
+
+- Remove kernel-default-extra and kernel-default-optional from
+  SLES 16 images (bsc#1249690).
+
+-------------------------------------------------------------------
+Tue Oct 21 20:10:44 UTC 2025 - Josef Reidinger <[email protected]>
+
+- Enable plymouth bootsplash for agama and also propose it for
+  target systems if user keep it for agama on kernel command line
+  (bsc#1248507)
+
+-------------------------------------------------------------------
+Tue Oct 14 08:19:36 UTC 2025 - Imobach Gonzalez Sosa <[email protected]>
+
+- Properly unload files in module.order file (bsc#1251898).
+- Append modules name to /etc/modules-load.d/99-agama.conf instead
+  of overwriting the file.
+
+-------------------------------------------------------------------
+Fri Oct  3 08:19:08 UTC 2025 - Ancor Gonzalez Sosa <[email protected]>
+
+- Backport of a fix when deleting repofiles for disabled
+  repositories (see gh#agama-project/agama#2771).
+
+-------------------------------------------------------------------
+Tue Sep 16 07:21:28 UTC 2025 - Josef Reidinger <[email protected]>
+
+- Do not have on SLES media internal agama staging repository
+  (bsc#1249616)
+
+-------------------------------------------------------------------
+Mon Sep  8 10:13:30 UTC 2025 - Knut Anderssen <[email protected]>
+
+- Remove PXE images as it was agreed to use the Live iso (squashfs
+  images) for PXE installations too (related to bsc#1238848).
+
+-------------------------------------------------------------------

Old:
----
  live-root-PXE.tar.xz

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

Other differences:
------------------
++++++ agama-installer.kiwi ++++++
--- /var/tmp/diff_new_pack.a9I7B2/_old  2025-11-14 16:11:55.393789921 +0100
+++ /var/tmp/diff_new_pack.a9I7B2/_new  2025-11-14 16:11:55.401790257 +0100
@@ -15,10 +15,6 @@
         <profile name="openSUSE" description="openSUSE multiproduct image" 
import="true" />
         <!-- TODO: add SPx in the future -->
         <profile name="SUSE_SLE_16" description="SLE-based image" 
import="true" />
-        <profile name="SUSE_SLE_16_PXE" description="SLE OEM image for remote 
installation" import="true" />
-        <profile name="SUSE_SLE_16_PXE_MINI" description="Minimal SLE OEM 
image for remote installation" import="true" />
-        <profile name="openSUSE_PXE" description="openSUSE OEM image for 
remote installation" import="true" />
-        <profile name="Leap_16.0_PXE" description="openSUSE Leap OEM image for 
remote installation" import="true" />
     </profiles>
     <preferences>
         <version>17.0.0</version>
@@ -28,9 +24,17 @@
         <timezone>Europe/Berlin</timezone>
         <rpm-excludedocs>true</rpm-excludedocs>
         <rpm-check-signatures>false</rpm-check-signatures>
-        <bootsplash-theme>bgrt</bootsplash-theme>
+    </preferences>
+    <!-- different boot menu theme for openSUSE and SLES, actually this is
+    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.0">
         <bootloader-theme>openSUSE</bootloader-theme>
     </preferences>
+    <preferences profiles="SUSE_SLE_16">
+        <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,Leap_16.0">
         <type image="iso" flags="dmsquash"  firmware="ofw" mediacheck="true" 
publisher="SUSE LLC" editbootconfig="fix_bootconfig">
@@ -47,46 +51,6 @@
             <bootloader name="custom" />
         </type>
     </preferences>
-    <preferences arch="ppc64le" 
profiles="openSUSE_PXE,Leap_16.0_PXE,SUSE_SLE_16_PXE,SUSE_SLE_16_PXE_MINI">
-        <!-- For some reason the compression results on ppc64le are not as 
good as on the other archs -->
-        <type image="oem" filesystem="btrfs" fsmountoptions="compress=zstd:15" 
firmware="ofw" installpxe="true" installboot="install" 
kernelcmdline="rd.kiwi.ramdisk ramdisk_size=3174400">
-            <bootloader name="grub2" console="serial" timeout="1"/>
-            <oemconfig>
-                <oem-skip-verify>true</oem-skip-verify>
-                <oem-unattended>true</oem-unattended>
-                <oem-unattended-id>/dev/ram1</oem-unattended-id>
-                <oem-swap>false</oem-swap>
-                <oem-multipath-scan>false</oem-multipath-scan>
-            </oemconfig>
-            <size unit="M">3000</size>
-        </type>
-    </preferences>
-    <preferences arch="s390x" 
profiles="openSUSE_PXE,Leap_16.0_PXE,SUSE_SLE_16_PXE,SUSE_SLE_16_PXE_MINI">
-        <type image="oem" filesystem="btrfs" fsmountoptions="compress=zstd:15" 
installpxe="true" installboot="install" kernelcmdline="rd.kiwi.ramdisk 
ramdisk_size=2097152">
-            <bootloader name="custom"/>
-            <oemconfig>
-                <oem-skip-verify>true</oem-skip-verify>
-                <oem-unattended>true</oem-unattended>
-                <oem-unattended-id>/dev/ram1</oem-unattended-id>
-                <oem-swap>false</oem-swap>
-                <oem-multipath-scan>false</oem-multipath-scan>
-            </oemconfig>
-            <size unit="M">1900</size>
-        </type>
-    </preferences>
-    <preferences arch="aarch64,x86_64" 
profiles="openSUSE_PXE,Leap_16.0_PXE,SUSE_SLE_16_PXE,SUSE_SLE_16_PXE_MINI">
-        <type image="oem" filesystem="btrfs" fsmountoptions="compress=zstd:15" 
firmware="uefi" installiso="true" installpxe="true" installboot="install" 
kernelcmdline="rd.kiwi.ramdisk ramdisk_size=2097152">
-            <bootloader name="grub2" timeout="1"/>
-            <oemconfig>
-                <oem-skip-verify>true</oem-skip-verify>
-                <oem-unattended>true</oem-unattended>
-                <oem-unattended-id>/dev/ram1</oem-unattended-id>
-                <oem-swap>false</oem-swap>
-                <oem-multipath-scan>false</oem-multipath-scan>
-            </oemconfig>
-            <size unit="M">1900</size>
-        </type>
-    </preferences>
     <users>
         <!-- the password is configured during boot -->
         <user password="!*" home="/root" name="root" groups="root"/>
@@ -94,13 +58,6 @@
     <repository type="rpm-md">
         <source path="obsrepositories:/"/>
     </repository>
-    <packages type="image" 
profiles="openSUSE_PXE,Leap_16.0_PXE,SUSE_SLE_16_PXE,SUSE_SLE_16_PXE_MINI">
-        <package name="NetworkManager-config-server"/>
-        <package name="dracut-kiwi-oem-repart"/>
-        <package name="dracut-kiwi-oem-dump"/>
-        <archive name="live-root-PXE.tar.xz"/>
-    </packages>
-
     <!-- common set of packages (SSH-based and remote installation, etc.) -->
     <packages type="image">
         <package name="avahi"/>
@@ -166,10 +123,13 @@
         <package name="ipmitool" />
         <!-- jsc#PED-13114 -->
         <package name="tpm2.0-tools" />
+        <!-- plymouth bsc#1248507 -->
+        <package name="plymouth" />
+        <package name="plymouth-dracut" />
     </packages>
 
     <!-- packages for local installation (desktop, browser, etc.) -->
-    <packages type="image" 
profiles="Leap_16.0,Leap_16.0_PXE,openSUSE,openSUSE_PXE,SUSE_SLE_16,SUSE_SLE_16_PXE">
+    <packages type="image" profiles="Leap_16.0,openSUSE,SUSE_SLE_16">
         <package name="bluez-firmware"/>
         <package name="agama-integration-tests"/>
         <package name="fontconfig"/>
@@ -184,35 +144,34 @@
     </packages>
 
     <!-- common packages for openSUSE Tumbleweed and Leap distributions -->
-    <packages type="image" 
profiles="Leap_16.0,Leap_16.0_PXE,openSUSE,openSUSE_PXE">
+    <packages type="image" profiles="Leap_16.0,openSUSE">
         <package name="agama-products-opensuse"/>
         <package name="grub2-branding-openSUSE" arch="aarch64,x86_64"/>
         <package name="MozillaFirefox-branding-openSUSE"/>
         <package name="openSUSE-build-key"/>
         <package name="patterns-openSUSE-base"/>
         <package name="staging-build-key"/>
+        <package name="plymouth-branding-openSUSE" />
     </packages>
     <!-- additional packages for the Leap distributions -->
-    <packages type="image" profiles="Leap_16.0,Leap_16.0_PXE">
+    <packages type="image" profiles="Leap_16.0">
         <package name="openSUSE-repos-Leap"/>
         <package name="kernel-default-extra"/>
         <package name="kernel-default-optional"/>
     </packages>
     <!-- additional packages for the openSUSE Tumbleweed distribution -->
-    <packages type="image" profiles="openSUSE,openSUSE_PXE">
+    <packages type="image" profiles="openSUSE">
         <package name="openSUSE-repos-Tumbleweed"/>
     </packages>
     <!-- additional packages for the SLE distributions -->
-    <packages type="image" 
profiles="SUSE_SLE_16,SUSE_SLE_16_PXE,SUSE_SLE_16_PXE_MINI">
+    <packages type="image" profiles="SUSE_SLE_16">
         <package name="agama-products-sle"/>
         <package name="grub2-branding-SLE" arch="aarch64,x86_64"/>
         <package name="patterns-base-base"/>
         <package name="suse-build-key"/>
     </packages>
-    <packages type="image" profiles="SUSE_SLE_16,SUSE_SLE_16_PXE">
+    <packages type="image" profiles="SUSE_SLE_16">
         <package name="MozillaFirefox-branding-SLE"/>
-        <package name="kernel-default-extra"/>
-        <package name="kernel-default-optional"/>
     </packages>
     <packages type="bootstrap">
         <package name="udev"/>
@@ -221,14 +180,14 @@
         <package name="ca-certificates"/>
         <package name="ca-certificates-mozilla"/>
     </packages>
-    <packages type="bootstrap" profiles="Leap_16.0,Leap_16.0_PXE">
+    <packages type="bootstrap" profiles="Leap_16.0">
         <package name="Leap-release"/>
     </packages>
-    <packages type="bootstrap" profiles="openSUSE,openSUSE_PXE">
+    <packages type="bootstrap" profiles="openSUSE">
         <package name="openSUSE-release"/>
         <package name="openSUSE-release-ftp"/>
     </packages>
-    <packages type="bootstrap" 
profiles="SUSE_SLE_16,SUSE_SLE_16_PXE,SUSE_SLE_16_PXE_MINI">
+    <packages type="bootstrap" profiles="SUSE_SLE_16">
         <package name="SLES-release"/>
     </packages>
 </image>

++++++ _multibuild ++++++
--- /var/tmp/diff_new_pack.a9I7B2/_old  2025-11-14 16:11:55.465792943 +0100
+++ /var/tmp/diff_new_pack.a9I7B2/_new  2025-11-14 16:11:55.469793110 +0100
@@ -1,5 +1,4 @@
 <multibuild>
   <flavor>openSUSE</flavor>
-  <flavor>openSUSE_PXE</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  2025-08-25 15:18:22.000000000 +0200
+++ new/fix_bootconfig.aarch64  2025-11-10 13:53:12.000000000 +0100
@@ -82,7 +82,7 @@
 menuentry "Install $label" --class os --unrestricted {
     set gfxpayload=keep
     echo Loading kernel...
-    linux (\$root)/boot/aarch64/loader/linux \${extra_cmdline} \${isoboot}
+    linux (\$root)/boot/aarch64/loader/linux \${extra_cmdline} \${isoboot} 
splash=silent
     echo Loading initrd...
     initrd (\$root)/boot/aarch64/loader/initrd
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fix_bootconfig.ppc64le new/fix_bootconfig.ppc64le
--- old/fix_bootconfig.ppc64le  2025-08-25 15:18:22.000000000 +0200
+++ new/fix_bootconfig.ppc64le  2025-11-10 13:53:12.000000000 +0100
@@ -101,7 +101,7 @@
 
 menuentry "Install $label" --class os --unrestricted {
   echo 'Loading kernel...'
-  linux /boot/ppc64le/linux
+  linux /boot/ppc64le/linux splash=silent
   echo 'Loading initrd...'
   initrd /boot/ppc64le/initrd
 }
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   2025-08-25 15:18:22.000000000 +0200
+++ new/fix_bootconfig.x86_64   2025-11-10 13:53:12.000000000 +0100
@@ -90,7 +90,7 @@
 menuentry "Install $label" --class os --unrestricted {
     set gfxpayload=keep
     echo Loading kernel...
-    linux (\$root)/boot/x86_64/loader/linux \${extra_cmdline} \${isoboot}
+    linux (\$root)/boot/x86_64/loader/linux \${extra_cmdline} \${isoboot} 
splash=silent
     echo Loading initrd...
     initrd (\$root)/boot/x86_64/loader/initrd
 }

++++++ config.sh ++++++
--- /var/tmp/diff_new_pack.a9I7B2/_old  2025-11-14 16:11:55.565797139 +0100
+++ /var/tmp/diff_new_pack.a9I7B2/_new  2025-11-14 16:11:55.569797307 +0100
@@ -35,7 +35,7 @@
 if [ -f "${REPO}.disabled" ]; then
   mv "${REPO}.disabled" $REPO
 fi
-rm /etc/zypp/repos.d/*.disabled
+rm -f /etc/zypp/repos.d/*.disabled
 
 # configure the repositories in the Live system
 # import the OBS key for the systemsmanagement OBS project
@@ -69,10 +69,15 @@
 systemctl enable agama-avahi-issue.service
 systemctl enable agama-url-issue.service
 systemctl enable agama-ssh-issue.service
-systemctl enable agama-self-update.service
 systemctl enable live-free-space.service
 systemctl enable live-password.service
 systemctl enable live-root-shell.service
+
+# the self-update actually runs in the initramfs system, but the exit status
+# is lost if it is not enabled in the root image as well,
+# it runs only once in the initramfs because of "WantedBy=initrd.target"
+systemctl enable live-self-update.service
+
 systemctl enable checkmedia.service
 systemctl enable qemu-guest-agent.service
 systemctl enable setup-systemd-proxy-env.path
@@ -106,21 +111,30 @@
 # the "eurlatgr" is the default font for the English locale
 echo -e "\nFONT=eurlatgr.psfu" >> /etc/vconsole.conf
 
+# configure self-update in SLES
+if [[ "$kiwi_profiles" == *SLE* ]]; then
+  echo "Configuring the installer self-update..."
+  # read the self-update configuration variables
+  . /usr/lib/live-self-update/conf.sh
+  mkdir -p  "$CONFIG_DIR"
+  # the default registration server (SCC) if RMT is not set
+  echo "https://scc.suse.com"; > "$CONFIG_DEFAULT_REG_SERVER_FILE"
+  # fallback URL when contacting SCC/RMT fails or no self-update is returned
+  echo 
'https://installer-updates.suse.com/SUSE/Products/SLE-INSTALLER/$os_release_version_id/$arch/product/'
 > "$CONFIG_FALLBACK_FILE"
+fi
+
 ### setup dracut for live system
 arch=$(uname -m)
 # keep in sync with ISO Volume ID set in the fix_bootconfig script
 profile=$(echo "$kiwi_profiles" | tr "_" "-")
 label="Install-$profile-$arch"
 
-# Set the default live root except for PXE images
-if [[ "$kiwi_profiles" != *PXE* ]]; then
-  echo "Setting default live root: live:LABEL=$label"
-  mkdir /etc/cmdline.d
-  echo "root=live:LABEL=$label" >/etc/cmdline.d/10-liveroot.conf
-  echo "root_disk=live:LABEL=$label" >>/etc/cmdline.d/10-liveroot.conf
-  echo 'install_items+=" /etc/cmdline.d/10-liveroot.conf "' 
>/etc/dracut.conf.d/10-liveroot-file.conf
-fi
-echo 'add_dracutmodules+=" dracut-menu agama-cmdline agama-dud "' 
>>/etc/dracut.conf.d/10-liveroot-file.conf
+echo "Setting default live root: live:LABEL=$label"
+mkdir /etc/cmdline.d
+echo "root=live:LABEL=$label" >/etc/cmdline.d/10-liveroot.conf
+echo "root_disk=live:LABEL=$label" >>/etc/cmdline.d/10-liveroot.conf
+echo 'install_items+=" /etc/cmdline.d/10-liveroot.conf "' 
>/etc/dracut.conf.d/10-liveroot-file.conf
+echo 'add_dracutmodules+=" dracut-menu agama-cmdline agama-dud 
live-self-update "' >>/etc/dracut.conf.d/10-liveroot-file.conf
 
 # decrease the kernel logging on the console, use a dracut module to do it 
early in the boot process
 echo 'add_dracutmodules+=" agama-logging "' > 
/etc/dracut.conf.d/10-agama-logging.conf
@@ -320,9 +334,6 @@
        echo 'install_items+=" 
/lib/firmware/qcom/sc8280xp/LENOVO/21BX/qcadsp8280.mbn.xz 
/lib/firmware/qcom/sc8280xp/LENOVO/21BX/qccdsp8280.mbn.xz "' >> 
/etc/dracut.conf.d/x13s_modules.conf
 fi
 
-# delete some AMD GPU firmware
-rm -rf /lib/firmware/amdgpu/{gc_,isp,psp}*
-
 # Decompress kernel modules, better for squashfs (boo#1192457)
 find /lib/modules/*/kernel -name '*.ko.xz' -exec xz -d {} +
 find /lib/modules/*/kernel -name '*.ko.zst' -exec zstd --rm -d {} +

++++++ fix_bootconfig ++++++
--- /var/tmp/diff_new_pack.a9I7B2/_old  2025-11-14 16:11:55.593798314 +0100
+++ /var/tmp/diff_new_pack.a9I7B2/_new  2025-11-14 16:11:55.597798483 +0100
@@ -42,7 +42,7 @@
 
 set -x
 
-# get ISO file name and ISO volume id from xorriso parameters
+# get the output ISO file name and the input directory from the xorriso 
parameters
 for i in "\$@" ; do
   if [ -n "\$iso_opt" ] ; then
     iso_opt=
@@ -53,8 +53,50 @@
     iso_opt=1
     continue
   fi
+  if [ -n "\$map_opt" ] ; then
+    map_opt=
+    target_dir="\$i"
+    continue
+  fi
+  if [ "\$i" = "-map" ] ; then
+    map_opt=1
+    continue
+  fi
 done
 
+# dump or copy some data from the Live system root image directly to the ISO 
image to avoid
+# complicated processing (the ISO image contains a squashfs image which 
contains ext4 image which
+# finally contains the needed files)
+if [ -n "\$target_dir" ]; then
+  mount_dir1=\$(mktemp -d)
+  mount_dir2=\$(mktemp -d)
+
+  mount -o loop "\$target_dir"/LiveOS/squashfs.img "\$mount_dir1"
+  mount -o loop "\$mount_dir1"/LiveOS/rootfs.img "\$mount_dir2"
+
+  # dump the list of the installed packages
+  rpm --root "\$mount_dir2" -qa | sort | gzip > 
"\$target_dir/LiveOS/.packages.gz"
+
+  # dump the same list also in JSON format for easier processing,
+  # use jq for sorting the array (case insensitive), for merging to a single
+  # array and also for formatting the final JSON output
+  rpm --root "\$mount_dir2" -qa --queryformat \\
+    
'\\{"name":"%{NAME}","version":"%{VERSION}","release":"%{RELEASE}","arch":"%{ARCH}"\\}'
 \\
+    | chroot "\$mount_dir2" /usr/bin/jq -s 'sort_by(.name|ascii_downcase)' \\
+    | gzip > "\$target_dir/LiveOS/.packages.json.gz"
+  # copy the build info file if present
+  if [ -f "\$mount_dir2"/var/log/build/info ]; then
+    cp -a "\$mount_dir2"/var/log/build/info "\$target_dir/LiveOS/.info"
+  fi
+
+  # unmount in reverse(!) order
+  umount "\$mount_dir2"
+  umount "\$mount_dir1"
+
+  rmdir "\$mount_dir1"
+  rmdir "\$mount_dir2"
+fi
+
 profile=$(echo "$kiwi_profiles" | tr "_" "-")
 # keep in sync with ISO Volume ID set in the config.sh script
 volid="Install-\$profile-$arch"

++++++ live-root.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/etc/systemd/system/agama-hostname.service 
new/etc/systemd/system/agama-hostname.service
--- old/etc/systemd/system/agama-hostname.service       2025-08-25 
15:18:22.000000000 +0200
+++ new/etc/systemd/system/agama-hostname.service       2025-11-10 
13:53:12.000000000 +0100
@@ -6,7 +6,8 @@
 Before=avahi-daemon.service
 # run only if the hostname has the default value, if it has been changed
 # by the kernel command line or systemd then keep it
-ConditionHost=localhost
+ConditionHost=|localhost
+ConditionHost=|localhost.localdomain
 
 [Service]
 ExecStart=hostnamectl hostname --transient agama
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/etc/systemd/system/agama-self-update.service 
new/etc/systemd/system/agama-self-update.service
--- old/etc/systemd/system/agama-self-update.service    2025-08-25 
15:18:22.000000000 +0200
+++ new/etc/systemd/system/agama-self-update.service    1970-01-01 
01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
-[Unit]
-Description=Agama self-update
-
-After=network-online.target
-
-# and after we process agama params like info which can contain password
-After=agama-cmdline-process.service
-
-# before starting the Agama servers so they use the new packages
-Before=agama-web-server.service
-Before=agama.service
-# before interactive password services
-Before=live-password-dialog.service
-Before=live-password-systemd.service
-
-[Service]
-Type=oneshot
-Environment=TERM=linux
-ExecStartPre=dmesg --console-off
-ExecStart=agama-self-update
-ExecStartPost=dmesg --console-on
-TTYReset=yes
-TTYVHangup=yes
-StandardInput=tty
-TimeoutStartSec=infinity
-
-[Install]
-WantedBy=multi-user.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/etc/systemd/system/live-self-update.service 
new/etc/systemd/system/live-self-update.service
--- old/etc/systemd/system/live-self-update.service     1970-01-01 
01:00:00.000000000 +0100
+++ new/etc/systemd/system/live-self-update.service     2025-11-10 
13:53:12.000000000 +0100
@@ -0,0 +1,29 @@
+[Unit]
+Description=Live system self update
+DefaultDependencies=no
+
+# see https://man7.org/linux/man-pages/man7/dracut.bootup.7.html
+# for the dependency order of the dracut services
+
+# after network is configured
+After=network-online.target
+# after /sysroot is mounted
+After=initrd-fs.target
+# before running the pre-pivot dracut hooks (before the driver update)
+Before=dracut-pre-pivot.service
+# flag to skip the self-update
+ConditionPathExists=!/run/live-self-update/skip
+
+[Service]
+Type=oneshot
+ExecStart=live-self-update
+StandardOutput=journal+console
+# always wait until the self update is fully finished, booting a half updated
+# system could have nasty side effects, if the service gets stuck it can be
+# manually disabled with the "inst.self_update=0" boot parameter
+TimeoutStartSec=infinity
+SyslogIdentifier=live-self-update
+RemainAfterExit=true
+
+[Install]
+WantedBy=initrd.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/etc/zypp/repos.d/agama-SLES.repo.disabled 
new/etc/zypp/repos.d/agama-SLES.repo.disabled
--- old/etc/zypp/repos.d/agama-SLES.repo.disabled       2025-08-25 
15:18:22.000000000 +0200
+++ new/etc/zypp/repos.d/agama-SLES.repo.disabled       1970-01-01 
01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-[agama-devel]
-name=Agama Devel (SLES)
-type=rpm-md
-enabled=1
-autorefresh=1
-gpgcheck=1
-baseurl=http://download.suse.de/ibs/Devel:/YaST:/Agama:/Head/SLES-16.0/
-gpgkey=http://download.suse.de/ibs/Devel:/YaST:/Agama:/Head/SLES-16.0/repodata/repomd.xml.key
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/root/.bash_history new/root/.bash_history
--- old/root/.bash_history      2025-08-25 15:18:22.000000000 +0200
+++ new/root/.bash_history      2025-11-10 13:53:12.000000000 +0100
@@ -5,5 +5,6 @@
 journalctl -u agama.service
 systemctl status agama-web-server.service
 systemctl status agama.service
+journalctl -t live-self-update
 agama config show | jq
 agama logs store
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usr/bin/agama-self-update 
new/usr/bin/agama-self-update
--- old/usr/bin/agama-self-update       2025-08-25 15:18:22.000000000 +0200
+++ new/usr/bin/agama-self-update       1970-01-01 01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
-#! /bin/sh
-
-# Experimental Agama self-update script
-#
-# This script updates the Agama packages in the Live system from the
-# Agama Devel OBS project.
-
-# check if self-update is required
-if ! grep -q "\b\(inst\|agama\)\.self_update=1\b" 
/run/agama/cmdline.d/agama.conf; then
-  exit 0
-fi
-
-# first try a quick and simple solution, refreshing the distributions 
repository takes a
-# lot of time so try using only the agama-devel for update
-zypper modifyrepo --disable --all
-zypper modifyrepo --enable agama-devel
-zypper refresh
-zypper --non-interactive dup --details --from agama-devel
-STATUS=$?
-
-# enable all repositories back
-zypper modifyrepo --enable --all
-
-# if it failed try it again with all the repos enabled, maybe there was some
-# dependency problem which hopefully will be OK now
-if [ "$?" != "0" ]; then
-  zypper --non-interactive dup --details --from agama-devel
-fi
-
-# clean all repository caches to save space in RAM disk
-zypper clean --all
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        1970-01-01 01:00:00.000000000 +0100
+++ new/usr/bin/live-self-update        2025-11-10 13:53:12.000000000 +0100
@@ -0,0 +1,322 @@
+#! /bin/bash
+
+shopt -s nullglob
+
+[ -e /dracut-state.sh ] && . /dracut-state.sh
+
+# Later we could disable "-x" or enable it on request, let's be more verbose in
+# the initial implementation. Since we have enabled using the plymouth splash
+# screen the verbose details will not be visible to users by default.
+set -ex
+
+. "$(dirname "$0")"/../lib/live-self-update/conf.sh
+
+RESPONSE_FILE="$RUN_DIR/server_response"
+REG_REPO_FILE="$RUN_DIR/reg_repos"
+OSR="/etc/os-release"
+ARCH=$(uname -m)
+
+# do the cleanup at the end, trap ensures it runs even if something fails
+trap cleanup_chroot EXIT
+
+# helper function to log important steps (highlighted in the journalctl output)
+# use "set +x" to avoid logging the message again (it is already logged in the
+# original caller place so it would be actually logged three times...)
+# see https://www.freedesktop.org/software/systemd/man/latest/sd-daemon.html
+# for the log level numbers
+milestone() {
+  ({ set +x; } 2>/dev/null; echo "<5>$1")
+}
+
+# log warning
+warning() {
+  ({ set +x; } 2>/dev/null; echo "<4>$1")
+}
+
+# log error
+error() {
+  ({ set +x; } 2>/dev/null; echo "<3>$1")
+}
+
+# normal message
+info() {
+  ({ set +x; } 2>/dev/null; echo "<6>$1")
+}
+
+# the proxy might contain a password, make sure it is not displayed or logged
+# when processing it
+set +x
+# get the configured network proxy (empty string if not configured)
+# see ../lib/dracut/modules.d/98dracut-menu/dracut-cmdline-menu.sh
+# get the last found, it has the highest priority
+PROXY=$(grep "\bproxy=" /proc/cmdline /etc/cmdline.d/*  | tail -n 1 | sed 
"s/.*\bproxy=\([^ \t]*\).*/\1/")
+
+if [ -n "$PROXY" ]; then
+  if [[ "$PROXY" == *@* ]]; then
+    # looks like there is a username or password in the URL, do not print it
+    milestone "Using authenticated HTTP proxy"
+  else
+    milestone "Using proxy server $PROXY"
+  fi
+
+  # set the proxy for all zypper and curl calls, for security reasons curl
+  # uses only the lower case name, zypper accepts that as well,
+  # see https://everything.curl.dev/usingcurl/proxies/env.html
+  export http_proxy="$PROXY"
+  export https_proxy="$PROXY"
+
+  # hide the original URL to avoid leaking the password in URL later
+  PROXY=1
+fi
+set -x
+
+# helper for running a command in the live root system, works both when running
+# in initramfs ($NEWROOT is set) and in already mounted root ($NEWROOT unset)
+run_command() {
+  if [ -z "$NEWROOT" ]; then
+    "$@"
+  else
+    "$NEWROOT/usr/bin/chroot" "$NEWROOT" "$@"
+  fi
+}
+
+# Prepare the system root to be used by scripts before switching to it.
+prepare_chroot() {
+  if [ -n "$NEWROOT" ]; then
+    milestone "Preparing for the self update..."
+
+    # make system directories active also in the chroot directory
+    mount -o bind /run "$NEWROOT"/run
+    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
+  fi
+  # remove any existing self-update repositories, probably left-overs from the 
previous run
+  rm -f "$NEWROOT"/etc/zypp/repos.d/self-update-*.repo
+}
+
+# Revert the changes done by prepare_chroot() and restore the system to the
+# original state, called from bash "trap" handler
+cleanup_chroot() {
+  local result="$?"
+
+  if [ "$result" != "0" ]; then
+    error "Error: Self update failed! (exit status: $result)"
+  else
+    milestone "Self update successfully finished"
+  fi
+
+  # log the result to be checked by openQA or Agama itself
+  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
+  fi
+}
+
+# read the data from /etc/os-release file (source it)
+read_os_release() {
+  # get the product data
+  if [ -f "$OSR" ]; then
+    . "$OSR"
+  else
+    error "File $OSR is missing!"
+    exit 1
+  fi
+}
+
+# ask the registration server (SCC or RMT) for the self-update URL
+query_reg_server() {
+  local server
+  # custom server (RMT)
+  if [ -f "$SERVER_FILE" ]; then
+    server=$(< "$SERVER_FILE")
+  # default server (SCC)
+  elif  [ -f "$CONFIG_DEFAULT_REG_SERVER_FILE" ]; then
+    server=$(< "$CONFIG_DEFAULT_REG_SERVER_FILE")
+  fi
+
+  if [ -n "$server" ]; then
+    read_os_release
+
+    local query
+    
query="$server/connect/repositories/installer?identifier=$NAME&version=$VERSION_ID&arch=$ARCH"
+    info "Running query $query...."
+
+    local curl_options
+    curl_options=(--silent --globoff --location --retry 3 --retry-connrefused \
+      --connect-timeout 20 --max-time 10 --fail --show-error --output 
"$RESPONSE_FILE")
+
+    if grep -q "\binst.self_update_ssl=0\b" /run/agama/cmdline.d/agama.conf; 
then
+      warning "Disabling SSL check for $server"
+      curl_options+=("--insecure")
+    fi
+
+    if [ -n "$PROXY" ]; then
+      # automatically detect the proxy authentication method (basic/digest)
+      curl_options+=("--proxy-anyauth")
+    fi
+
+    if curl "${curl_options[@]}" -- "$query" && [ -s "$RESPONSE_FILE" ]; then
+      info "Found self-update repository: $(jq -r ".[] | 
select(.installer_updates==true) | .description" "$RESPONSE_FILE") "
+      jq -r ".[] | select(.installer_updates==true) | .url" "$RESPONSE_FILE" > 
"$REG_REPO_FILE"
+    else
+      warning "Contacting the registration server failed"
+      # SCC/RMT query failed and no fallback configured
+      if [ ! -s "$CONFIG_FALLBACK_FILE" ]; then
+        error "Cannot obtain the self-update repository"
+        exit 1
+      fi
+    fi
+  else
+    milestone "Registration server not defined"
+  fi
+}
+
+# add the self-update repositories into the system
+add_update_repos() {
+  milestone "Adding self update repositories..."
+  # add the self-update repositories
+  while read -r update_url; do
+    if [ -n "$update_url" ]; then
+      local repo
+      repo="self-update-$index"
+
+      if grep -q "\binst.self_update_ssl=0\b" /run/agama/cmdline.d/agama.conf; 
then
+        warning "Disabling SSL check for repository $update_url"
+        # add "ssl_verify=no" query to the repository URL
+        update_url=$(url_add_query "$update_url" "ssl_verify=no")
+      fi
+
+      local zypper_options
+      zypper_options=()
+      # allow using unsigned repository
+      if grep -q "\binst.self_update_unsigned_repo=1\b" 
/run/agama/cmdline.d/agama.conf; then
+        warning "Unsigned repository is allowed"
+        zypper_options+=("--gpgcheck-allow-unsigned-repo")
+      fi
+
+      # completely disable GPG checks, not recommended, if possible the options
+      # above should be preferred
+      if grep -q "\binst.self_update_gpg=0\b" /run/agama/cmdline.d/agama.conf; 
then
+        warning "Disabling all GPG checks!"
+        zypper_options+=("--no-gpgcheck")
+      fi
+
+      run_command zypper addrepo "${zypper_options[@]}" -f "$update_url" 
"$repo"
+      self_update_repos+=("$repo")
+      ((++index))
+    fi
+  done < "$1"
+}
+
+# Reads the configured fallback repository, the URL might contain several
+# placeholders. This way, it works across multiple architectures and does not
+# contain a hardcoded version (the fallback URL should work with SLES-16.0,
+# SLES-16.1, SLES-16.2...)
+read_fallback_repos() {
+  # Substituting $arch pattern with the architecture of the current system.
+  # Substituting these variables with the /etc/os-release content:
+  #   $os_release_name       => NAME
+  #   $os_release_id         => ID
+  #   $os_release_version    => VERSION
+  #   $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"
+}
+
+# Applies all the updates
+#
+# 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
+    add_update_repos "$REPO_FILE"
+  else
+    # try SCC/RMT
+    query_reg_server
+
+    # repo from the registration server
+    if [ -s "$REG_REPO_FILE" ]; then
+      prepare_chroot
+      add_update_repos "$REG_REPO_FILE"
+    # use a fallback URL
+    elif [ -s "$CONFIG_FALLBACK_FILE" ]; then
+      milestone "Using fallback repository"
+      read_fallback_repos
+      prepare_chroot
+      add_update_repos "$FALLBACK_REPOS_FILE"
+    # no self-update repo found, exit (in the openSUSE installer)
+    else
+      milestone "No self-update repository configured, skipping self-update"
+      exit 0
+    fi
+  fi
+
+  local zypper_options
+  # automatically import the repository GPG key
+  if grep -q "\binst.self_update_import_key=1\b" 
/run/agama/cmdline.d/agama.conf; then
+    warning "Enabled GPG key autoimport"
+    zypper_options="--gpg-auto-import-keys"
+  fi
+
+  milestone "Loading repositories..."
+  run_command zypper $zypper_options refresh "${self_update_repos[@]}"
+
+  # build the list of repository options passed to zypper
+  repo_options=()
+  for repo in "${self_update_repos[@]}"; do
+    repo_options+=("--repo" "$repo")
+  done
+
+  milestone "Updating packages..."
+  # update the system only using the predefined self-update repositories,
+  # allow downgrading and changing vendor (can be useful for testing)
+  run_command zypper --non-interactive update --allow-downgrade 
--allow-vendor-change --details --no-recommends "${repo_options[@]}"
+
+  milestone "Cleaning the system..."
+  # 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
+}
+
+# add a query parameter to URL
+# $1 - base URL ("http://example.com";)
+# $2 - the query part ("foo=bar")
+# returns "http://example.com?foo=bar";
+url_add_query() {
+  local base
+  local query
+
+  # split the string at the "?" separator
+  query="${1#*\?}"
+  base="${1%\?*}"
+
+  # if the "?" separator is missing then "$query" equals to "$base"
+  if [ -z "$query" ] || [ "$query" = "$base" ]; then
+    # no query present, add a query part to the URL
+    echo "${base}?${2}"
+  else
+    # a query is already present, append the new part
+    echo "${base}?${query}&${2}"
+  fi
+}
+
+install_updates
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usr/lib/dracut/modules.d/99agama-dud/agama-dud-apply.sh 
new/usr/lib/dracut/modules.d/99agama-dud/agama-dud-apply.sh
--- old/usr/lib/dracut/modules.d/99agama-dud/agama-dud-apply.sh 2025-08-25 
15:18:22.000000000 +0200
+++ new/usr/lib/dracut/modules.d/99agama-dud/agama-dud-apply.sh 2025-11-10 
13:53:12.000000000 +0100
@@ -245,7 +245,7 @@
 setup_from_modules_order() {
   dud_modules_dir=$1
 
-  module_order=$(<"${dud_modules_dir}/module.order")
+  readarray -t module_order <"${dud_modules_dir}/module.order"
   # unload the modules in reverse order
   local idx
   idx=("${!module_order[@]}")
@@ -253,7 +253,7 @@
     rmmod "${module_order[$i]}" 2>&1
   done
 
-  cp "${dud_modules_dir}/module.order" 
"${NEWROOT}/etc/modules-load.d/99-agama.conf"
+  cat "${dud_modules_dir}/module.order" 
>>"${NEWROOT}/etc/modules-load.d/99-agama.conf"
 }
 
 # Sets up the kernel modules.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usr/lib/dracut/modules.d/99live-self-update/live-self-update-parser.sh 
new/usr/lib/dracut/modules.d/99live-self-update/live-self-update-parser.sh
--- old/usr/lib/dracut/modules.d/99live-self-update/live-self-update-parser.sh  
1970-01-01 01:00:00.000000000 +0100
+++ new/usr/lib/dracut/modules.d/99live-self-update/live-self-update-parser.sh  
2025-11-10 13:53:12.000000000 +0100
@@ -0,0 +1,86 @@
+#!/bin/bash
+
+# redirect stdout/stderr to systemd journal using the "live-self-update"
+# identifier, later the self-update logs can be filtered by using command
+# "journalctl -t live-self-update" which includes the output from this dracut
+# hook and the self-update service as well
+exec > >(systemd-cat -t live-self-update) 2>&1
+
+. /lib/dracut-lib.sh
+# generate Dracut command line options
+FILE="/etc/cmdline.d/live-self-update-generated.conf"
+
+# source the shared self-update configuration variables
+. ./lib/live-self-update/conf.sh
+
+mkdir -p "$RUN_DIR"
+
+configure_network() {
+  # skip the network configuration if "rd.neednet=0" option was used by user
+  if getargbool 1 rd.neednet; then
+    echo "<5>Enabling network configuration"
+    echo "rd.neednet=1" > "$FILE"
+    # use DHCP if there is no network configuration provided by user
+    if ! getarg "ip="; then
+      echo "Using default DHCP network configuration"
+      echo "ip=dhcp" >> "$FILE"
+    fi
+  else
+    echo "<5>Network configuration disabled by the rd.neednet=0 boot parameter"
+  fi
+}
+
+# skip self-update, either it was explicitly disabled by user or is not
+# configured in the product (like openSUSE)
+skip() {
+  echo "<5>$1"
+  # create a skip file
+  true > "$SKIP_FILE"
+}
+
+# evaluate the registration server (SCC or RMT)
+get_reg_server() {
+  local url
+  url=$(getargs "inst.register_url=")
+
+  if [ -n "$url" ]; then
+    echo "<5>Will use a custom registration server $url for obtaining the 
self-update repository"
+    echo "$url" > "$SERVER_FILE"
+    configure_network
+  elif [ -s "$CONFIG_DEFAULT_REG_SERVER_FILE" ]; then
+    echo "<5>Will use the default registration server $(cat 
"$CONFIG_DEFAULT_REG_SERVER_FILE") for obtaining the self-update repository"
+    configure_network
+  elif [ -s "$CONFIG_FALLBACK_FILE" ]; then
+    echo "<5>Will use the fallback self-update URL $(cat 
"$CONFIG_FALLBACK_FILE")"
+    configure_network
+  else
+    skip "Self update not configured"
+  fi
+}
+
+# evaluate the self-update URL:
+# 1. explicitly set with the "inst.self_update" boot option
+# 2. SCC or RMT server is configured (it will be asked later)
+# 3. fallback URL if present
+# 4. if no URL is set self-update is skipped
+get_url() {
+  local url
+  url=$(getargs "inst.self_update=")
+
+  if [ "$url" == "0" ]; then
+    skip "Self update disabled via boot parameter"
+  elif [ -z "$url" ]; then
+    get_reg_server
+  else
+    echo "<5>Using custom self update repository: $url"
+    echo "$url" > "$REPO_FILE"
+
+    # automatically configure network when a remote self-update repository is 
used,
+    # match all remote protocols supported by zypper (see "man zypper"),
+    if grep -q -s -E -e "https?://" -e "ftp://"; -e "smb://" -e "cifs://" -e 
"nfs4?://" -e "obs://" "$REPO_FILE"; then
+      configure_network
+    fi
+  fi
+}
+
+get_url
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usr/lib/dracut/modules.d/99live-self-update/module-setup.sh 
new/usr/lib/dracut/modules.d/99live-self-update/module-setup.sh
--- old/usr/lib/dracut/modules.d/99live-self-update/module-setup.sh     
1970-01-01 01:00:00.000000000 +0100
+++ new/usr/lib/dracut/modules.d/99live-self-update/module-setup.sh     
2025-11-10 13:53:12.000000000 +0100
@@ -0,0 +1,50 @@
+#!/bin/bash
+# module-setup.sh for Agama self-update
+# see https://www.man7.org/linux/man-pages/man7/dracut.modules.7.html
+
+# called by dracut
+check() {
+  # always include this dracut module in the initramfs
+  return 0
+}
+
+# called by dracut
+depends() {
+  echo network
+  return 0
+}
+
+installkernel() {
+  return 0
+}
+
+# install hook for dracut
+install() {
+  # install the hook for processing the boot parameters
+  inst_hook cmdline 99 "$moddir/live-self-update-parser.sh"
+
+  # needed by the live-self-update-parser.sh script
+  inst_multiple systemd-cat dirname /usr/lib/live-self-update/conf.sh jq
+
+  # install the systemd service and the self-update script to the initramfs
+  inst_multiple "$systemdsystemconfdir"/live-self-update.service 
live-self-update
+
+  # needed by the live-self-update script
+  inst_multiple grep tail sed
+
+  # include the self-update configuration if present
+  if [ -d /etc/live-self-update ]; then
+    . /usr/lib/live-self-update/conf.sh
+
+    if [ -f "$CONFIG_DEFAULT_REG_SERVER_FILE" ]; then
+      inst_simple "$CONFIG_DEFAULT_REG_SERVER_FILE"
+    fi
+
+    if [ -f "$CONFIG_FALLBACK_FILE" ]; then
+      inst_simple "$CONFIG_FALLBACK_FILE"
+    fi
+  fi
+
+  # enable the self-update service in the initramfs
+  $SYSTEMCTL -q --root "$initdir" enable live-self-update.service
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usr/lib/live-self-update/conf.sh 
new/usr/lib/live-self-update/conf.sh
--- old/usr/lib/live-self-update/conf.sh        1970-01-01 01:00:00.000000000 
+0100
+++ new/usr/lib/live-self-update/conf.sh        2025-11-10 13:53:12.000000000 
+0100
@@ -0,0 +1,17 @@
+# this is a shared configuration for the live-self-update script, the
+# live-self-update-parser.sh dracut hook script and the Kiwi config.sh
+
+RUN_DIR="/run/live-self-update"
+REPO_FILE="$RUN_DIR/repositories"
+SERVER_FILE="$RUN_DIR/server"
+SKIP_FILE="$RUN_DIR/skip"
+RESULT_FILE="$RUN_DIR/result"
+
+CONFIG_DIR="/etc/live-self-update"
+# file with fallback repositories (template URLs)
+CONFIG_FALLBACK_FILE="$CONFIG_DIR/fallback_url"
+# default registration server URL (SCC in SLE, undefined in openSUSE)
+CONFIG_DEFAULT_REG_SERVER_FILE="$CONFIG_DIR/default_reg_server_url"
+
+# fallback repositories with expanded variables
+FALLBACK_REPOS_FILE="${CONFIG_FALLBACK_FILE}_expanded"

Reply via email to