From 72bf06b858985d86145cf21c91656655846c0a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Fri, 8 Nov 2024 14:54:01 +0100 Subject: [PATCH 1/3] Remove tag_version from kiwi Setting a tag version results in the kiwi #!BuildVersion magic entry not including the patch version, which prevents publishing to the registry as no version sorts higher than the existing entries --- src/bci_build/package/kiwi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bci_build/package/kiwi.py b/src/bci_build/package/kiwi.py index e02f8835f..1f383c93c 100644 --- a/src/bci_build/package/kiwi.py +++ b/src/bci_build/package/kiwi.py @@ -23,10 +23,10 @@ version=format_version( kiwi_ver := get_pkg_version("python-kiwi", os_version), ParseVersion.PATCH ), - tag_version=(kiwi_minor := format_version(kiwi_ver, ParseVersion.MINOR)), version_in_uid=False, additional_versions=[ format_version(kiwi_ver, ParseVersion.MAJOR), + kiwi_minor := format_version(kiwi_ver, ParseVersion.MINOR), ], license="GPL-3.0-or-later", package_list=[ From e4402d410d5fde3c7479dfb9f5e46104add000b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Fri, 8 Nov 2024 15:56:33 +0100 Subject: [PATCH 2/3] [kiwi] Indent package list for readability --- src/bci_build/package/kiwi.py | 52 ++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/src/bci_build/package/kiwi.py b/src/bci_build/package/kiwi.py index 1f383c93c..79172f320 100644 --- a/src/bci_build/package/kiwi.py +++ b/src/bci_build/package/kiwi.py @@ -29,31 +29,33 @@ kiwi_minor := format_version(kiwi_ver, ParseVersion.MINOR), ], license="GPL-3.0-or-later", - package_list=[ - "checkmedia", - "dracut-kiwi-oem-repart", - "enchant-devel", - "gcc", - "glibc-devel", - "iproute2", - "java-21-openjdk-headless", - "jing", - "kiwi-systemdeps-filesystems", - "kpartx", - "libxml2-devel", - "lvm2", - "make", - "netcat-openbsd", - "python3-devel", - "python3-kiwi", - "python3-pip", - "tack", - "timezone", - "xorriso", - "xz", - *os_version.release_package_names, - ] - + os_version.common_devel_packages, + package_list=( + [ + "checkmedia", + "dracut-kiwi-oem-repart", + "enchant-devel", + "gcc", + "glibc-devel", + "iproute2", + "java-21-openjdk-headless", + "jing", + "kiwi-systemdeps-filesystems", + "kpartx", + "libxml2-devel", + "lvm2", + "make", + "netcat-openbsd", + "python3-devel", + "python3-kiwi", + "python3-pip", + "tack", + "timezone", + "xorriso", + "xz", + *os_version.release_package_names, + ] + + os_version.common_devel_packages + ), custom_end=f"{generate_package_version_check('python3-kiwi', kiwi_minor, ParseVersion.MINOR)}", build_recipe_type=BuildType.DOCKER, _min_release_counter=(15 if os_version.is_sle15 else None), From 3f3ad2d6acc3ed96050ef7ce1b0ad30dd8c3a6e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Fri, 8 Nov 2024 16:04:36 +0100 Subject: [PATCH 3/3] Create /etc/kiwi.yml for kiwi >= 10.0 Kiwi 10 switched to use partx, which requires udev to operate. As we don't have udev in the container, we create a custom config file that forces the usage of kpartx --- src/bci_build/package/kiwi.py | 133 +++++++++++++++++++--------------- 1 file changed, 76 insertions(+), 57 deletions(-) diff --git a/src/bci_build/package/kiwi.py b/src/bci_build/package/kiwi.py index 79172f320..8468f4596 100644 --- a/src/bci_build/package/kiwi.py +++ b/src/bci_build/package/kiwi.py @@ -11,61 +11,80 @@ from bci_build.package.versions import format_version from bci_build.package.versions import get_pkg_version -KIWI_CONTAINERS = [ - DevelopmentContainer( - name="kiwi", - pretty_name="KIWI Appliance Builder (kiwi)", - custom_description="{pretty_name} container {based_on_container}. {privileged_only}", - os_version=os_version, - is_latest=os_version in CAN_BE_LATEST_OS_VERSION, - # kiwi is not L3 supported - # support_level=SupportLevel.L3, - version=format_version( - kiwi_ver := get_pkg_version("python-kiwi", os_version), ParseVersion.PATCH - ), - version_in_uid=False, - additional_versions=[ - format_version(kiwi_ver, ParseVersion.MAJOR), - kiwi_minor := format_version(kiwi_ver, ParseVersion.MINOR), - ], - license="GPL-3.0-or-later", - package_list=( - [ - "checkmedia", - "dracut-kiwi-oem-repart", - "enchant-devel", - "gcc", - "glibc-devel", - "iproute2", - "java-21-openjdk-headless", - "jing", - "kiwi-systemdeps-filesystems", - "kpartx", - "libxml2-devel", - "lvm2", - "make", - "netcat-openbsd", - "python3-devel", - "python3-kiwi", - "python3-pip", - "tack", - "timezone", - "xorriso", - "xz", - *os_version.release_package_names, - ] - + os_version.common_devel_packages - ), - custom_end=f"{generate_package_version_check('python3-kiwi', kiwi_minor, ParseVersion.MINOR)}", - build_recipe_type=BuildType.DOCKER, - _min_release_counter=(15 if os_version.is_sle15 else None), - extra_labels={ - "usage": "This container requires an openSUSE/SUSE host kernel for full functionality.", - }, - extra_files={ - # kiwi pulls in a ton of dependencies and fails on 4GB disk workers - "_constraints": generate_disk_size_constraints(8) - }, +KIWI_CONTAINERS = [] + +for os_version in list(set(ALL_NONBASE_OS_VERSIONS) | set((OsVersion.SLE16_0,))): + kiwi_ver = format_version( + get_pkg_version("python-kiwi", os_version), ParseVersion.PATCH + ) + kiwi_major = format_version(kiwi_ver, ParseVersion.MAJOR) + use_kpartx = int(kiwi_major) >= 10 + + KIWI_CONTAINERS.append( + DevelopmentContainer( + name="kiwi", + pretty_name="KIWI Appliance Builder (kiwi)", + custom_description="{pretty_name} container {based_on_container}. {privileged_only}", + os_version=os_version, + is_latest=os_version in CAN_BE_LATEST_OS_VERSION, + # kiwi is not L3 supported + # support_level=SupportLevel.L3, + version=kiwi_ver, + version_in_uid=False, + additional_versions=[ + kiwi_major, + kiwi_minor := format_version(kiwi_ver, ParseVersion.MINOR), + ], + license="GPL-3.0-or-later", + package_list=( + [ + "checkmedia", + "dracut-kiwi-oem-repart", + "enchant-devel", + "gcc", + "glibc-devel", + "iproute2", + "java-21-openjdk-headless", + "jing", + "kiwi-systemdeps-filesystems", + "kpartx", + "libxml2-devel", + "lvm2", + "make", + "netcat-openbsd", + "python3-devel", + "python3-kiwi", + "python3-pip", + "tack", + "timezone", + "xorriso", + "xz", + *os_version.release_package_names, + ] + + (["kpartx"] if use_kpartx else []) + + os_version.common_devel_packages + ), + custom_end=( + generate_package_version_check( + "python3-kiwi", kiwi_minor, ParseVersion.MINOR + ) + + r""" +SHELL ["/bin/bash", "-c"] +RUN echo $'mapper: \n\ + - part_mapper: kpartx\n\ +' > /etc/kiwi.yml +""" + if use_kpartx + else "" + ), + build_recipe_type=BuildType.DOCKER, + _min_release_counter=(15 if os_version.is_sle15 else None), + extra_labels={ + "usage": "This container requires an openSUSE/SUSE host kernel for full functionality.", + }, + extra_files={ + # kiwi pulls in a ton of dependencies and fails on 4GB disk workers + "_constraints": generate_disk_size_constraints(8) + }, + ) ) - for os_version in list(set(ALL_NONBASE_OS_VERSIONS) | set((OsVersion.SLE16_0,))) -]