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-07-23 16:35:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/agama-installer (Old)
and /work/SRC/openSUSE:Factory/.agama-installer.new.8875 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "agama-installer"
Wed Jul 23 16:35:55 2025 rev:17 rq:1294905 version:17.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/agama-installer/agama-installer.changes
2025-07-01 11:36:15.998573997 +0200
+++
/work/SRC/openSUSE:Factory/.agama-installer.new.8875/agama-installer.changes
2025-07-23 16:39:27.370230623 +0200
@@ -1,0 +2,66 @@
+Mon Jul 21 15:07:42 UTC 2025 - Imobach Gonzalez Sosa <[email protected]>
+
+- Version 17
+
+-------------------------------------------------------------------
+Mon Jul 21 14:12:22 UTC 2025 - Ancor Gonzalez Sosa <[email protected]>
+
+- Disabled udev rules that interfere with the activation process of
+ libstorage-ng (bsc#1246133 and bsc#1245159).
+
+-------------------------------------------------------------------
+Thu Jul 17 21:51:19 UTC 2025 - Ancor Gonzalez Sosa <[email protected]>
+
+- Masked some systemd services that interfere with the activation
+ process of libstorage-ng (bsc#1246133).
+
+-------------------------------------------------------------------
+Thu Jul 17 08:08:40 UTC 2025 - Ladislav Slezák <[email protected]>
+
+- Added "inst.dud_insecure" boot option for ignoring SSL
+ certificate problems when downloading DUD from an HTTPS server
+ (related to bsc#1245393)
+- Skip updating kernel module dependencies if the DUD image does
+ not provide any kernel module
+
+-------------------------------------------------------------------
+Tue Jul 15 16:19:21 UTC 2025 - Ladislav Slezák <[email protected]>
+
+- Fixed downloading DUD files from HTTPS URL
+ (link the SSL certificates and config from the root image)
+ (bsc#1245393)
+
+-------------------------------------------------------------------
+Mon Jul 14 11:25:22 UTC 2025 - Ladislav Slezák <[email protected]>
+
+- Use "plaindir" repository type for the DUD package repository,
+ we do not need to create any repository index
+ (gh#agama-project/agama#2543)
+- Automatically configure network when a remote DUD is used,
+ the "rd.neednet=1" boot option is not required anymore
+ (by default uses the DHCP configuration, can be changed via the
+ "ip=" boot option)
+
+-------------------------------------------------------------------
+Thu Jul 10 13:09:26 UTC 2025 - Imobach Gonzalez Sosa <[email protected]>
+
+- Add support to update kernel modules from a Driver Update Disk
+ (jsc#AGM-158, jsc#PED-3670, gh#agama-project/agama#2548).
+
+-------------------------------------------------------------------
+Wed Jul 9 12:07:21 UTC 2025 - Imobach Gonzalez Sosa <[email protected]>
+
+- Add the tpm2.0-tools package (jsc#PED-13114).
+
+-------------------------------------------------------------------
+Wed Jul 2 13:28:46 UTC 2025 - Eugenio Paolantonio
<[email protected]>
+
+- live: fix_bootconfig.s390x: strip CDLABEL from the kiwi-generated
+ grub config (bsc#1245453)
+
+-------------------------------------------------------------------
+Tue Jul 1 15:29:36 UTC 2025 - Bernhard Wiedemann <[email protected]>
+
+- Make agama-installer build more reproducible (boo#1245501)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ agama-installer.kiwi ++++++
--- /var/tmp/diff_new_pack.WJxb8s/_old 2025-07-23 16:39:28.118261515 +0200
+++ /var/tmp/diff_new_pack.WJxb8s/_new 2025-07-23 16:39:28.122261680 +0200
@@ -21,7 +21,7 @@
<profile name="Leap_16.0_PXE" description="openSUSE Leap OEM image for
remote installation" import="true" />
</profiles>
<preferences>
- <version>16.0.0</version>
+ <version>17.0.0</version>
<packagemanager>zypper</packagemanager>
<locale>en_US</locale>
<keytable>us</keytable>
@@ -145,7 +145,7 @@
<package name="agama-web-ui"/>
<package name="agama-cli"/>
<package name="agama-cli-bash-completion"/>
- <package name="agama-auto"/>
+ <package name="agama-autoinstall"/>
<package name="rubygem(agama-yast)"/>
<package name="rubygem(byebug)"/>
<package name="psmisc"/>
@@ -157,12 +157,13 @@
<package name="qrencode"/>
<package name="qemu-guest-agent" />
<package name="aaa_base-extras"/>
- <package name="createrepo_c" />
<!-- it can be used by users in AutoYaST pre-scripts -->
<package name="perl-XML-Simple"/>
<archive name="live-root.tar.xz"/>
<!-- IPMI support -->
<package name="ipmitool" />
+ <!-- jsc#PED-13114 -->
+ <package name="tpm2.0-tools" />
</packages>
<!-- packages for local installation (desktop, browser, etc.) -->
++++++ config-cdroot.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fix_bootconfig.s390x new/fix_bootconfig.s390x
--- old/fix_bootconfig.s390x 2025-06-30 18:04:50.000000000 +0200
+++ new/fix_bootconfig.s390x 2025-07-21 17:15:39.000000000 +0200
@@ -62,6 +62,7 @@
#
boot_dir=$dst/boot/s390x
+grub_dir=$dst/boot/grub2
# if files are in a 'loader' subdir, move them out
if [ -d $boot_dir/loader ] ; then
@@ -150,6 +151,12 @@
'IPL 00C'
XXX
+# Strip CDLABEL from the kiwi-generated grub configuration
+# We are specifying the correct one in /etc/cmdline.d (see config.sh)
+# and having it here might be confusing to repackers such as
+# mksusecd (bsc#1245453)
+sed -i -E 's|root=live:CDLABEL=[^ ]+||g' $grub_dir/grub.cfg
+
# Note:
#
# SUSE installer media also have boot/s390x/zpxe.rexx - a rexx script
++++++ config.sh ++++++
--- /var/tmp/diff_new_pack.WJxb8s/_old 2025-07-23 16:39:28.258267297 +0200
+++ /var/tmp/diff_new_pack.WJxb8s/_new 2025-07-23 16:39:28.262267462 +0200
@@ -16,7 +16,7 @@
# kiwi_metainfo_helper service before starting the build
mkdir -p /var/log/build
cat << EOF > /var/log/build/info
-Build date: $(LC_ALL=C date -u "+%F %T %Z")
+Build date: $(LC_ALL=C date -u -d "@${SOURCE_DATE_EPOCH:-$(date +%s)}" "+%F
%T %Z")
Build number: Build%RELEASE%
Image profile: $kiwi_profiles
Image version: $kiwi_iversion
@@ -24,6 +24,11 @@
Source URL: %SOURCEURL%
EOF
+# for reproducible builds:
+echo -n > /var/log/alternatives.log
+sed -i 's/# AutoInstalled generated.*/# AutoInstalled generated in kiwi
reproducible build/' /var/lib/zypp/AutoInstalled # drop timestamp
+rm /var/tmp/rpm-tmp.*
+
# enable the corresponding repository
DISTRO=$(grep "^NAME" /etc/os-release | cut -f2 -d\= | tr -d '"' | tr " " "_")
REPO="/etc/zypp/repos.d/agama-${DISTRO}.repo"
@@ -54,7 +59,7 @@
systemctl enable agama.service
systemctl enable agama-web-server.service
systemctl enable agama-dbus-monitor.service
-systemctl enable agama-auto.service
+systemctl enable agama-autoinstall.service
systemctl enable agama-hostname.service
systemctl enable agama-proxy-setup.service
systemctl enable agama-certificate-issue.path
@@ -91,6 +96,13 @@
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
+
+# Prevent premature assembly of MD RAIDs (bsc#1245159)
+touch /etc/udev/rules.d/64-md-raid-assembly.rules
+
# the "eurlatgr" is the default font for the English locale
echo -e "\nFONT=eurlatgr.psfu" >> /etc/vconsole.conf
++++++ live-root-PXE.tar.xz ++++++
++++++ live-root.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/usr/bin/agama-dud new/usr/bin/agama-dud
--- old/usr/bin/agama-dud 2025-06-30 18:04:50.000000000 +0200
+++ new/usr/bin/agama-dud 1970-01-01 01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-# Experimental DUD funtionality for Agama
-#
-# Usage: inst.dud=URI [inst.dud=URI]
-#
-# This is a very simple version of the DUD functionality
-# - There can be multiple inst.dud=URI entries, but...
-# - All of them are considered to be RPMs
-# - The script does not check if downloading succeeded
-# - Or for any deps of the package
-# - Of whether installation/upgrade succeeded
-# - Does not restart itself if the script is updated
-
-# check if there is any DUD
-if ! grep -q "\b\(inst\|agama\)\.dud=.\+\b" /run/agama/cmdline.d/agama.conf;
then
- echo "No DUD present"
- exit 0
-fi
-
-for URI in `sed -n
's/\(.*[[:space:]]\|^\)\(inst\|agama\)\.dud=\([^[:space:]]\+\).*/\3/p'
/run/agama/cmdline.d/agama.conf`; do
- echo "Downloading DUD from" $URI
- TMPDUD=`mktemp /tmp/agama-XXXXXXXXXX.rpm`
- agama download $URI $TMPDUD;
- rpm --upgrade --force --verbose --hash --noverify --nodeps --excludedocs
$TMPDUD
- rm $TMPDUD
-done
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-06-30
18:04:50.000000000 +0200
+++ new/usr/lib/dracut/modules.d/99agama-dud/agama-dud-apply.sh 2025-07-21
17:15:39.000000000 +0200
@@ -2,7 +2,11 @@
[ -e /dracut-state.sh ] && . /dracut-state.sh
+# see /usr/lib/dracut/modules.d/99base/dracut-lib.sh
+# or
https://github.com/dracut-ng/dracut-ng/blob/main/modules.d/80base/dracut-lib.sh
. /lib/dracut-lib.sh
+# see /usr/lib/dracut/modules.d/99img-lib/img-lib.sh
+# or
https://github.com/dracut-ng/dracut-ng/blob/main/modules.d/70img-lib/img-lib.sh
. /lib/img-lib.sh
DUD_DIR="$NEWROOT/run/agama/dud"
@@ -12,22 +16,32 @@
shopt -s nullglob
-# Apply all the updates.
+# Applies all the updates
#
-# Read the URL of the updates from $AGAMA_DUD_INFO and process each one.
+# Reads the URL of the updates from $AGAMA_DUD_INFO and process each one.
apply_updates() {
local file
local dud_url
local dud_root
+ local options
index=0
+ # make sure the HTTPS downloads work correctly
+ configure_ssl
+
+ # ignore SSL problems when the "inst.dud_insecure" or "inst.dud_insecure=1"
boot options are present
+ if getargbool 0 inst.dud_insecure; then
+ echo "WARNING: Disabling SSL checks in DUD downloads"
+ options="--insecure"
+ fi
+
while read -r dud_url; do
mkdir -p "$DUD_DIR"
filename=${dud_url##*/}
file="${DUD_DIR}/${filename}"
# FIXME: use an index because two updates, coming from different places,
can have the same name.
echo "Fetching a Driver Update Disk from $dud_url to ${file}"
- if ! $AGAMA_CLI download "$dud_url" "${file}"; then
+ if ! $AGAMA_CLI download $options "$dud_url" "${file}"; then
warn "Failed to fetch the Driver Update Disk"
continue
fi
@@ -49,8 +63,6 @@
((index++))
done <$AGAMA_DUD_INFO
-
- create_repo "$DUD_RPM_REPOSITORY"
}
# Applies an update from an RPM package
@@ -81,6 +93,7 @@
dud_root=$(echo "${dir}/linux/suse/${arch}"-*)
install_update "${dud_root}/inst-sys"
copy_packages "$dud_root" "$DUD_RPM_REPOSITORY"
+ update_kernel_modules "$dud_root"
}
# Extracts an RPM file
@@ -98,7 +111,7 @@
popd || exit 1
}
-# Applies an update to the installation system.
+# Applies an update to the installation system
#
# Updates are applied by copying files instead of installing packages. For that
# reason, it might be needed to do some adjustments "manually", like settings
@@ -114,7 +127,7 @@
set_alternative "$dud_dir" "agama-proxy-setup"
}
-# Sets the alternative links.
+# Sets the alternative links
set_alternative() {
dud_instsys=$1
name=$2
@@ -123,7 +136,7 @@
executables=("$dud_instsys/usr/bin/${name}.ruby"*-*)
executable=${executables[0]}
- if [ ! -z "$executable" ]; then
+ if [ -n "$executable" ]; then
"$NEWROOT/usr/bin/chroot" "$NEWROOT" /usr/sbin/update-alternatives \
--install "/usr/bin/$name" "$name" "${executable##"$dud_instsys"}"
"$priority"
"$NEWROOT/usr/bin/chroot" "$NEWROOT" /usr/sbin/update-alternatives \
@@ -136,7 +149,7 @@
# This function is mainly a PoC.
#
# This is a simplistic version that just copies all the RPMs to the new
repository.
-# In the future, it might need to put each package under a different
respository depending
+# In the future, it might need to put each package under a different
repository depending
# on the distribution (e.g., "/run/agama/dud/repo/tw" for "x86_64-tw").
copy_packages() {
dud_dir=$1
@@ -149,11 +162,110 @@
done
}
-# Creates the repository metadata.
-create_repo() {
- repo_dir=$1
+# Finds the kernel modules to update
+#
+# It searches for the modules in the modules/ directory of the update.
+find_kernel_modules() {
+ local directory=$1
+ local -n modules=$2
+ local module_name
+ local files
+
+ modules=()
+ files=("${directory}"/*.ko*)
+ for module in "${files[@]}"; do
+ module_name=${module#"${directory}/"}
+ module_name=${module_name%.ko*}
+
+ if [[ ! " ${modules[*]} " =~ " ${module_name} " ]]; then
+ modules+=("$module_name")
+ fi
+ done
+
+ echo "Found ${#files[@]} kernel modules"
+}
+
+# Copies a kernel module
+#
+# It searches for a module with the same name. If found, it replaces it.
+# Otherwise, it copies the module to the top-level modules directory.
+copy_kernel_module() {
+ local source_dir=$1
+ local module=$2
+ local target_dir=$3
+ local source_file
+
+ echo "Copying ${module}..."
+
+ # expect a single file with $module.ko* name
+ source_file=("${source_dir}/${module}".ko*)
+
+ old_module=("${target_dir}"/**/*/"${module}".ko*)
+ if [ "${#old_module[@]}" -eq "1" ]; then
+ info " Replacing the module ${old_module[0]}"
+ cp "${source_file[0]}" "${old_module[0]}"
+ elif [ "${#old_module[@]}" -eq "0" ]; then
+ info " Not found the module to replace, so copying to kernel/ directory."
+ cp "${source_file[0]}" "${target_dir}"
+ else
+ info " Skipping the module because several modules with the same name
were found."
+ fi
+}
+
+# Updates kernel modules
+#
+# It copies the kernel modules from the Driver Update Disk to the system under
+# /sysroot. If it finds a `module.order` file, it unloads the modules included
+# in the list and add them to /etc/modules-load.d/99-agama.conf file so they
+# will be loaded by systemd after pivoting.
+update_kernel_modules() {
+ local dud_dir=$1
+ local kernel_modules_dir
+ kernel_modules_dir="${NEWROOT}/lib/modules/$(uname -r)"
+ local dud_modules_dir="${dud_dir}/modules"
+
+ # find and copy kernel modules
+ local dud_modules
+ find_kernel_modules "$dud_modules_dir" dud_modules
+
+ # finish if no kernel module is included in DUD
+ if (( ${#dud_modules[@]} == 0 )); then
+ echo "Skipping kernel modules update"
+ return
+ fi
+
+ for module in "${dud_modules[@]}"; do
+ echo "Processing ${module} module"
+ copy_kernel_module "$dud_modules_dir" "$module"
"${kernel_modules_dir}/kernel"
+ rmmod "${module}" 2>&1
+ done
+
+ # unload modules in the module.order file and make sure they will be loaded
+ if [ -f "${dud_modules_dir}/module.order" ]; then
+ module_order=$(<"${dud_modules_dir}/module.order")
+ # unload the modules in reverse order
+ local idx
+ idx=("${!module_order[@]}")
+ for ((i = ${#idx[@]} - 1; i >= 0; i--)); do
+ rmmod "${module_order[$i]}" 2>&1
+ done
+
+ cp "${dud_modules_dir}/module.order"
"${NEWROOT}/etc/modules-load.d/99-agama.conf"
+ fi
+
+ # update modules dependencies on the live medium
+ info "Updating modules dependencies..."
+ depmod -a -b "$NEWROOT"
+}
+
+# link the SSL certificates and related configuration from the root image so
"agama download"
+# works correctly with the HTTPS resources (expects using correct and
well-known certificates)
+configure_ssl() {
+ # link the SSL certificates
+ ! [ -d /etc/ssl ] && ln -s "$NEWROOT/etc/ssl" /etc
- "$NEWROOT/usr/bin/chroot" "$NEWROOT" createrepo_c "${repo_dir##"$NEWROOT"}"
+ # link crypto configuration (which ciphers are allowed, etc)
+ ! [ -d /etc/crypto-policies ] && ln -s "$NEWROOT/etc/crypto-policies" /etc
}
if [ -f "$AGAMA_DUD_INFO" ]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/usr/lib/dracut/modules.d/99agama-dud/agama-dud-parser.sh
new/usr/lib/dracut/modules.d/99agama-dud/agama-dud-parser.sh
--- old/usr/lib/dracut/modules.d/99agama-dud/agama-dud-parser.sh
2025-06-30 18:04:50.000000000 +0200
+++ new/usr/lib/dracut/modules.d/99agama-dud/agama-dud-parser.sh
2025-07-21 17:15:39.000000000 +0200
@@ -10,6 +10,18 @@
updates=$(getargs inst.dud=)
if [ -n "$updates" ]; then
echo "$updates" >/tmp/agamadud.info
+
+ # automatically configure network when a remote DUD is used,
+ # check for all remote URL scheme supported by the "agama download"
+ # (anything supported by the curl backend
https://everything.curl.dev/protocols/curl.html),
+ # because it can match everywhere in the text it also matches the tftp://
and sftp://
+ if grep -q -s -E -e "https?://" -e "ftps?://" -e "smbs?://" -e "scp://"
/tmp/agamadud.info; then
+ echo "rd.neednet=1" > /etc/cmdline.d/agama-generated.conf
+ # use DHCP if there is no network configuration provided by user
+ if ! getarg "ip="; then
+ echo "ip=dhcp" >> /etc/cmdline.d/agama-generated.conf
+ fi
+ fi
fi
}