diff --git a/.bootc.metadata b/.bootc.metadata index e848a85..7f7fbd6 100644 --- a/.bootc.metadata +++ b/.bootc.metadata @@ -1,2 +1,2 @@ -9ca5bceee40bd840b691c0a8024b2b6a916c36e7 SOURCES/bootc-1.8.0-vendor.tar.zstd -b97adc7d411b192030dddea89366e2d6ebc5c7c2 SOURCES/bootc-1.8.0.tar.zstd +41a56ab6bb51f99445735cf567ace0e9297fe8bc SOURCES/bootc-1.13.0-vendor.tar.zstd +46a80d31f9b5e715e75a5ff7d09a5663d48b0ab0 SOURCES/bootc-1.13.0.tar.zstd diff --git a/.gitignore b/.gitignore index a539478..8fb968e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/bootc-1.8.0-vendor.tar.zstd -SOURCES/bootc-1.8.0.tar.zstd +SOURCES/bootc-1.13.0-vendor.tar.zstd +SOURCES/bootc-1.13.0.tar.zstd diff --git a/SOURCES/0000-bootc-inistall-provision.patch b/SOURCES/0000-bootc-inistall-provision.patch deleted file mode 100644 index e250bdf..0000000 --- a/SOURCES/0000-bootc-inistall-provision.patch +++ /dev/null @@ -1,65 +0,0 @@ -diff --git i/tmt/tests/bootc-install-provision.sh w/tmt/tests/bootc-install-provision.sh -index c4c884b..29df30c 100755 ---- i/tmt/tests/bootc-install-provision.sh -+++ w/tmt/tests/bootc-install-provision.sh -@@ -4,6 +4,8 @@ set -exuo pipefail - BOOTC_TEMPDIR=$(mktemp -d) - trap 'rm -rf -- "$BOOTC_TEMPDIR"' EXIT - -+ARCH=$(uname -m) -+ - # LBI only enabled for test-22-logically-bound-install - LBI="${LBI:-disabled}" - -@@ -16,6 +18,28 @@ case "$ID" in - "fedora") - TIER1_IMAGE_URL="${TIER1_IMAGE_URL:-quay.io/fedora/fedora-bootc:${VERSION_ID}}" - ;; -+ "rhel") -+ TIER1_IMAGE_URL="${TIER1_IMAGE_URL:-images.paas.redhat.com/bootc/rhel-bootc:latest-${VERSION_ID}}" -+ -+ CURRENT_COMPOSE_ID=$(skopeo inspect --no-tags --retry-times=5 --tls-verify=false "docker://${TIER1_IMAGE_URL}" | jq -r '.Labels."redhat.compose-id"') -+ -+ if [[ -n ${CURRENT_COMPOSE_ID} ]]; then -+ if [[ ${CURRENT_COMPOSE_ID} == *-updates-* ]]; then -+ BATCH_COMPOSE="updates/" -+ else -+ BATCH_COMPOSE="" -+ fi -+ else -+ BATCH_COMPOSE="updates/" -+ CURRENT_COMPOSE_ID=latest-RHEL-$VERSION_ID -+ fi -+ -+ # use latest compose if specific compose is not accessible -+ RC=$(curl -skIw '%{http_code}' -o /dev/null "http://download.eng.bos.redhat.com/rhel-${VERSION_ID%%.*}/nightly/${BATCH_COMPOSE}RHEL-${VERSION_ID%%.*}/${CURRENT_COMPOSE_ID}/STATUS") -+ if [[ $RC != "200" ]]; then -+ CURRENT_COMPOSE_ID=latest-RHEL-${VERSION_ID%%} -+ fi -+ ;; - esac - - if [ "$TMT_REBOOT_COUNT" -eq 0 ]; then -@@ -93,6 +117,22 @@ COMMONEOF - tee "$FEDORA_CI_CONTAINERFILE" > /dev/null << FEDORACIEOF - FROM $TIER1_IMAGE_URL - -+RUN </dev/null <"$CONTAINERFILE" <= 9 || 0%{?fedora} > 41 %bcond_without ostree_ext %else @@ -11,9 +12,18 @@ %bcond_with rhsm %endif +%global rust_minor %(rustc --version | cut -f2 -d" " | cut -f2 -d".") + +# https://github.com/bootc-dev/bootc/issues/1640 +%if 0%{?fedora} || 0%{?rhel} >= 10 || 0%{?rust_minor} >= 89 + %global new_cargo_macros 1 +%else + %global new_cargo_macros 0 +%endif + Name: bootc -Version: 1.8.0 -Release: 2%{?dist} +Version: 1.13.0 +Release: 1%{?dist} Summary: Bootable container system # Apache-2.0 @@ -25,15 +35,10 @@ Summary: Bootable container system # MIT OR Apache-2.0 # Unlicense OR MIT License: Apache-2.0 AND BSD-3-Clause AND MIT AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (Unlicense OR MIT) -URL: https://github.com/containers/bootc +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 -# Don't remove, downstream patch only -# Patch for integration test RHEL 9.x and 10.x support -Patch0: 0000-bootc-inistall-provision.patch -Patch1: 0001-bootc-inistall-provision.patch - # https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval ExcludeArch: %{ix86} @@ -41,6 +46,7 @@ BuildRequires: libzstd-devel BuildRequires: make BuildRequires: ostree-devel BuildRequires: openssl-devel +BuildRequires: go-md2man %if 0%{?rhel} BuildRequires: rust-toolset %else @@ -52,10 +58,13 @@ BuildRequires: skopeo ostree # Backing storage tooling https://github.com/containers/composefs/issues/125 Requires: composefs -# For OS updates +# Keep this list in sync with workspace.metadata.binary-dependencies until we sync +# it automatically Requires: ostree Requires: skopeo Requires: podman +Requires: util-linux-core +Requires: /usr/bin/chcon # For bootloader updates Recommends: bootupd @@ -76,83 +85,152 @@ 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 0%{?fedora} || 0%{?rhel} >= 10 - %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 0%{?fedora} || 0%{?rhel} >= 10 - # 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 +# 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 - # 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 +# 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" +# Pass CARGO_FEATURES explicitly to prevent auto-detection rebuild in install environment +%make_install INSTALL="install -p -c" CARGO_FEATURES="%{?with_rhsm:rhsm}" %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} < bootcdoclist.txt + +rm -f %{buildroot}/%{_datadir}/elvish/lib/bootc.elv +rm -f %{buildroot}/%{_datadir}/powershell/Modules/Bootc/Bootc.psm1 %if %{with check} %check -%cargo_test +if grep -qEe 'Seccomp:.*0$' /proc/self/status; then + %cargo_test +else + echo "skipping unit tests due to https://github.com/rpm-software-management/mock/pull/1613#issuecomment-3421908652" +fi %endif -%files +%files -f bootcdoclist.txt %license LICENSE-MIT %license LICENSE-APACHE +%if ! 0%{?container_build} %license LICENSE.dependencies %license cargo-vendor.txt +%endif %doc README.md %{_bindir}/bootc %{_prefix}/lib/bootc/ %{_prefix}/lib/systemd/system-generators/* +%{_prefix}/lib/dracut/modules.d/51bootc/ %if %{with ostree_ext} %{_prefix}/libexec/libostree/ext/* %endif %{_unitdir}/* -%{_docdir}/bootc/* -%{_mandir}/man*/bootc* +%{_mandir}/man*/*bootc* +%if 0%{?rhel} && 0%{?rhel} <= 9 +%{_datadir}/bash-completion/completions/bootc +%{_datadir}/zsh/site-functions/_bootc +%{_datadir}/fish/vendor_completions.d/bootc.fish +%else +%{bash_completions_dir}/bootc +%{zsh_completions_dir}/_bootc +%{fish_completions_dir}/bootc.fish +%endif %files -n system-reinstall-bootc %{_bindir}/system-reinstall-bootc %{system_reinstall_bootc_install_podman_path} +%if %{with tests} +%files tests +%{_bindir}/bootc-integration-tests +%endif + %changelog +* Mon Feb 24 2026 Colin Walters - 1.13.0-1 +- Update to 1.13.0 +- https://github.com/bootc-dev/bootc/releases/tag/v1.13.0 +- Resolves: RHEL-151443 + +* Fri Jan 17 2026 Colin Walters - 1.12.1-1 +- Update to 1.12.1 +- Fix mount point check regression breaking bootc-image-builder +- Resolves: RHEL-142112 + +* Thu Jan 09 2026 Colin Walters - 1.12.0-1 +- Update to 1.12.0 +- Resolves: RHEL-140335 + +* Thu Oct 30 2025 Joseph Marrero - 1.10.0-1 +- Update to 1.10.0 +- Resolves: #RHEL-125340 + * Fri Sep 05 2025 Colin Walters - 1.8.0-2 - Update to 1.8.0