diff --git a/opensuse-leap-image/_multibuild b/opensuse-leap-image/_multibuild
index 3c5272c..07060e8 100644
--- a/opensuse-leap-image/_multibuild
+++ b/opensuse-leap-image/_multibuild
@@ -1,3 +1,4 @@
docker
+ lxc
diff --git a/opensuse-leap-image/config.kiwi b/opensuse-leap-image/config.kiwi
index 9a3fc6d..7c9117f 100644
--- a/opensuse-leap-image/config.kiwi
+++ b/opensuse-leap-image/config.kiwi
@@ -29,6 +29,7 @@
+
@@ -37,33 +38,68 @@
16.0.0
zypper
+ true
+
+
+
+ 1.0.0
+ zypper
+ false
+ true
+
+
+
+ 1.0.0
+ zypper
false
true
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
-
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
diff --git a/opensuse-leap-image/config.sh b/opensuse-leap-image/config.sh
index 1968daa..7d8848b 100644
--- a/opensuse-leap-image/config.sh
+++ b/opensuse-leap-image/config.sh
@@ -1,36 +1,26 @@
#!/bin/bash
-
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
-#
-# All modifications and additions to the file contributed by third parties
-# remain the property of their copyright owners, unless otherwise agreed
-# upon. The license for this file, and modifications and additions to the
-# file, is the same license as for the pristine package itself (unless the
-# license for the pristine package is not an Open Source License, in which
-# case the license is the MIT License). An "Open Source License" is a
-# license that conforms to the Open Source Definition (Version 1.9)
-# published by the Open Source Initiative.
-
test -f /.kconfig && . /.kconfig
test -f /.profile && . /.profile
-set -euo pipefail
+set -euxo pipefail
echo "Configure image: [$kiwi_iname]..."
-#======================================
-# Setup baseproduct link
-#--------------------------------------
-suseSetupProduct
-
#======================================
# Import repositories' keys
#--------------------------------------
suseImportBuildKey
+# don't have multiple licenses of the same type
+jdupes -1 -L -r /usr/share/licenses
+
#======================================
# openSUSE-repos-* now provide repos
#--------------------------------------
+zypper --non-interactive rm -u jdupes
+# Not needed, but neither rpm nor libzypp handle rpmlib(X-CheckUnifiedSystemdir) yet
+# which would avoid it being installed by the filesystem package
+rpm -e compat-usrmerge-tools
#======================================
# Disable recommends
@@ -38,23 +28,19 @@ suseImportBuildKey
sed -i 's/.*solver.onlyRequires.*/solver.onlyRequires = true/g' /etc/zypp/zypp.conf
#======================================
-# Exclude docs intallation
+# Exclude docs installation
#--------------------------------------
-sed -i 's/.*rpm.install.excludedocs.*/# rpm.install.excludedocs = yes/g' /etc/zypp/zypp.conf
+sed -i 's/.*rpm.install.excludedocs.*/rpm.install.excludedocs = yes/g' /etc/zypp/zypp.conf
#======================================
# Remove locale files
#--------------------------------------
-find /usr/share/locale -name '*.mo' -delete
+shopt -s globstar
+rm -f /usr/share/locale/**/*.mo
-#======================================
# Remove zypp uuid (bsc#1098535)
-#--------------------------------------
rm -f /var/lib/zypp/AnonymousUniqueId
-#==========================================
-# Clean up log files
-#------------------------------------------
# Remove various log files. While it's possible to just rm -rf /var/log/*, that
# would also remove some package owned directories (not %ghost) and some files
# are actually wanted, like lastlog in the !docker case.
@@ -67,22 +53,28 @@ rm -rf /var/log/{zypper.log,zypp/history,YaST2}
# Remove the entire zypper cache content (not the dir itself, owned by libzypp)
rm -rf /var/cache/zypp/*
-#==========================================
-# Hack! The go container management tools can't handle sparse files:
-# https://github.com/golang/go/issues/13548
-# If lastlog doesn't exist, useradd doesn't attempt to reserve space,
-# also in derived containers.
-#------------------------------------------
+# Assign a fixed architecture in zypp.conf, to use the container's arch even if
+# the host arch differs (e.g. docker with --platform doesn't affect uname)
+arch=$(rpm -q --qf %{arch} glibc)
+if [ "$arch" = "i586" ] || [ "$arch" = "i686" ]; then
+ sed -i "s/^# arch =.*\$/arch = i686/" /etc/zypp/zypp.conf
+ # Verify that it's applied
+ grep -q '^arch =' /etc/zypp/zypp.conf
+fi
+
if [[ "$kiwi_profiles" == *"docker"* ]]; then
# Hack! The go container management tools can't handle sparse files:
# https://github.com/golang/go/issues/13548
# When lastlog doesn't exist, useradd doesn't attempt to reserve space.
- rm /var/log/lastlog
+ rm -f /var/log/lastlog
fi
-#======================================
-# Remove locale files
-#--------------------------------------
-find /usr/share/locale -name '*.mo' -delete
+if [[ "$kiwi_profiles" == *"networkd"* ]]; then
+ systemctl enable systemd-networkd
+ systemctl enable systemd-resolved
+ # FIXME: kiwi deletes /etc/resolv.conf so we have to use tmpfiles here.
+ # Should come via some preset package anyways I guess.
+ echo "L /etc/resolv.conf - - - - /run/systemd/resolve/stub-resolv.conf" > /etc/tmpfiles.d/stub-resolv.conf
+fi
exit 0
diff --git a/opensuse-leap-image/opensuse-leap-image.changes b/opensuse-leap-image/opensuse-leap-image.changes
index 13db881..d78a02a 100644
--- a/opensuse-leap-image/opensuse-leap-image.changes
+++ b/opensuse-leap-image/opensuse-leap-image.changes
@@ -1,3 +1,13 @@
+-------------------------------------------------------------------
+Mon Aug 18 12:28:57 UTC 2025 - Lubos Kocman
+
+- Sync config.sh and package list with Tumbleweed
+
+-------------------------------------------------------------------
+Mon Aug 18 12:22:11 UTC 2025 - Lubos Kocman
+
+- Use glibc-locale-base instead of kubic-locale-archive
+
-------------------------------------------------------------------
Mon Aug 18 12:09:34 UTC 2025 - Lubos Kocman