From 0fd3d890996c2aee52280174e80c04eca6953f68 Mon Sep 17 00:00:00 2001 From: Joseph Marrero Corchado Date: Fri, 5 Dec 2025 15:07:12 -0500 Subject: [PATCH] Release 1.11.0 Resolves: #RHEL-134017 Resolves: #RHEL-130799 Resolves: #RHEL-131317 --- .gitignore | 2 + ...dd-RHEL-entries-to-os-image-map.json.patch | 45 +++++++++++ bootc.spec | 77 +++++++++++++------ provision-packit.sh | 2 +- sources | 4 +- 5 files changed, 105 insertions(+), 25 deletions(-) create mode 100644 0001-Add-RHEL-entries-to-os-image-map.json.patch diff --git a/.gitignore b/.gitignore index 943ecf6..2344bea 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,5 @@ /bootc-1.8.0.tar.zstd /bootc-1.10.0.tar.zstd /bootc-1.10.0-vendor.tar.zstd +/bootc-1.11.0.tar.zstd +/bootc-1.11.0-vendor.tar.zstd diff --git a/0001-Add-RHEL-entries-to-os-image-map.json.patch b/0001-Add-RHEL-entries-to-os-image-map.json.patch new file mode 100644 index 0000000..b99c3ed --- /dev/null +++ b/0001-Add-RHEL-entries-to-os-image-map.json.patch @@ -0,0 +1,45 @@ +From: bootc maintainers +Subject: Add RHEL entries to os-image-map.json + +The os-image-map.json file is missing entries for RHEL, which causes +the provision-packit.sh script to fail when running on RHEL systems. +The jq lookup returns "null" when the rhel-X.Y key is not found, resulting +in skopeo failing with: + Error parsing image name "docker://null" + +This patch adds entries for RHEL 9.7, 9.8, 10.0, 10.1, and 10.2 pointing +to CentOS Stream 9 and 10 images respectively. + +--- + hack/os-image-map.json | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/hack/os-image-map.json b/hack/os-image-map.json +--- a/hack/os-image-map.json ++++ b/hack/os-image-map.json +@@ -4,13 +4,23 @@ + "centos-10": "quay.io/centos-bootc/centos-bootc:stream10", + "fedora-42": "quay.io/fedora/fedora-bootc:42", + "fedora-43": "quay.io/fedora/fedora-bootc:43", +- "fedora-44": "quay.io/fedora/fedora-bootc:rawhide" ++ "fedora-44": "quay.io/fedora/fedora-bootc:rawhide", ++ "rhel-9.7": "quay.io/centos-bootc/centos-bootc:stream9", ++ "rhel-9.8": "quay.io/centos-bootc/centos-bootc:stream9", ++ "rhel-10.0": "quay.io/centos-bootc/centos-bootc:stream10", ++ "rhel-10.1": "quay.io/centos-bootc/centos-bootc:stream10", ++ "rhel-10.2": "quay.io/centos-bootc/centos-bootc:stream10" + }, + "buildroot-base": { + "centos-9": "quay.io/centos/centos:stream9", + "centos-10": "quay.io/centos/centos:stream10", + "fedora-42": "quay.io/fedora/fedora:42", + "fedora-43": "quay.io/fedora/fedora:43", +- "fedora-44": "quay.io/fedora/fedora:rawhide" ++ "fedora-44": "quay.io/fedora/fedora:rawhide", ++ "rhel-9.7": "quay.io/centos/centos:stream9", ++ "rhel-9.8": "quay.io/centos/centos:stream9", ++ "rhel-10.0": "quay.io/centos/centos:stream10", ++ "rhel-10.1": "quay.io/centos/centos:stream10", ++ "rhel-10.2": "quay.io/centos/centos:stream10" + } + } diff --git a/bootc.spec b/bootc.spec index feb3ca4..c9ac466 100644 --- a/bootc.spec +++ b/bootc.spec @@ -1,4 +1,5 @@ %bcond_without check +%bcond_with tests %if 0%{?rhel} >= 9 || 0%{?fedora} > 41 %bcond_without ostree_ext %else @@ -21,7 +22,7 @@ %endif Name: bootc -Version: 1.10.0 +Version: 1.11.0 Release: %{autorelease} Summary: Bootable container system @@ -38,6 +39,9 @@ URL: https://github.com/bootc-dev/bootc Source0: %{url}/releases/download/v%{version}/bootc-%{version}.tar.zstd Source1: %{url}/releases/download/v%{version}/bootc-%{version}-vendor.tar.zstd +# Add RHEL entries to os-image-map.json for gating tests +Patch0: 0001-Add-RHEL-entries-to-os-image-map.json.patch + # https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval ExcludeArch: %{ix86} @@ -84,52 +88,73 @@ Recommends: podman %description -n system-reinstall-bootc This package provides a utility to simplify reinstalling the current system to a given bootc image. +%if %{with tests} +%package tests +Summary: Integration tests for bootc +Requires: %{name} = %{version}-%{release} + +%description tests +This package contains the integration test suite for bootc. +%endif + %global system_reinstall_bootc_install_podman_path %{_prefix}/lib/system-reinstall-bootc/install-podman +%if 0%{?container_build} +# Source is already at /src, no subdirectory +%global _buildsubdir . +%endif + %prep +%if ! 0%{?container_build} %autosetup -p1 -a1 # Default -v vendor config doesn't support non-crates.io deps (i.e. git) cp .cargo/vendor-config.toml . %cargo_prep -N cat vendor-config.toml >> .cargo/config.toml rm vendor-config.toml +%else +# Container build: source already at _builddir (/src), nothing to extract +# RPM's %mkbuilddir creates a subdirectory; symlink it back to the source +cd .. +rm -rf %{name}-%{version}-build +ln -s . %{name}-%{version}-build +cd %{name}-%{version}-build +%endif %build -# Build the main bootc binary -%if %new_cargo_macros - %cargo_build %{?with_rhsm:-f rhsm} -%else - %cargo_build %{?with_rhsm:--features rhsm} -%endif - -# Build the system reinstallation CLI binary -%global cargo_args -p system-reinstall-bootc export SYSTEM_REINSTALL_BOOTC_INSTALL_PODMAN_PATH=%{system_reinstall_bootc_install_podman_path} -%if %new_cargo_macros - # In cargo-rpm-macros, the cargo_build macro does flag processing, - # so we need to pass '--' to signify that cargo_args is not part - # of the macro args - %cargo_build -- %cargo_args -%else - # Older macros from rust-toolset do *not* do flag processing, so - # '--' would be passed through to cargo directly, which is not - # what we want. - %cargo_build %cargo_args -%endif - +# Build this first to avoid feature skew make manpages +# Build all binaries +%if 0%{?container_build} +# Container build: use cargo directly with cached dependencies to avoid RPM macro overhead +cargo build -j%{_smp_build_ncpus} --release %{?with_rhsm:--features rhsm} --bins +%else +# Non-container build: use RPM macros for proper dependency tracking +%if %new_cargo_macros + %cargo_build %{?with_rhsm:-f rhsm} -- --bins +%else + %cargo_build %{?with_rhsm:--features rhsm} -- --bins +%endif +%endif + +%if ! 0%{?container_build} %cargo_vendor_manifest # https://pagure.io/fedora-rust/rust-packaging/issue/33 sed -i -e '/https:\/\//d' cargo-vendor.txt %cargo_license_summary %{cargo_license} > LICENSE.dependencies +%endif %install %make_install INSTALL="install -p -c" %if %{with ostree_ext} make install-ostree-hooks DESTDIR=%{?buildroot} %endif +%if %{with tests} +install -D -m 0755 target/release/tests-integration %{buildroot}%{_bindir}/bootc-integration-tests +%endif mkdir -p %{buildroot}/%{dirname:%{system_reinstall_bootc_install_podman_path}} cat >%{?buildroot}/%{system_reinstall_bootc_install_podman_path} <