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"