From 91ea74a2399a8c7a583fef15308fa34cf12d0034 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Mon, 15 Sep 2025 11:47:00 +0000 Subject: [PATCH] import CS bootc-1.5.1-1.el9 --- .bootc.metadata | 4 +- .gitignore | 4 +- SOURCES/0000-bootc-inistall-provision.patch | 65 +++++++++ SOURCES/0001-bootc-inistall-provision.patch | 14 ++ ...ove-empty-etc-resolv.conf-and-etc-ho.patch | 127 ------------------ SPECS/bootc.spec | 27 +++- 6 files changed, 106 insertions(+), 135 deletions(-) create mode 100644 SOURCES/0000-bootc-inistall-provision.patch create mode 100644 SOURCES/0001-bootc-inistall-provision.patch delete mode 100644 SOURCES/0001-store-Really-remove-empty-etc-resolv.conf-and-etc-ho.patch diff --git a/.bootc.metadata b/.bootc.metadata index 21d54a4..d26c494 100644 --- a/.bootc.metadata +++ b/.bootc.metadata @@ -1,2 +1,2 @@ -b510de9ff7f1db1de20d16ff0ac74146bc949ade SOURCES/bootc-1.1.6-vendor.tar.zstd -ea19bc6d59574d49df54a8fbe5101c2b8dece0ec SOURCES/bootc-1.1.6.tar.zstd +a62bce5ad60a0ebc5394115b81943409cbc244a0 SOURCES/bootc-1.5.1-vendor.tar.zstd +295af3a167611aaf6fe9504b79debb42124a034e SOURCES/bootc-1.5.1.tar.zstd diff --git a/.gitignore b/.gitignore index 7bfc6e4..4da6b20 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/bootc-1.1.6-vendor.tar.zstd -SOURCES/bootc-1.1.6.tar.zstd +SOURCES/bootc-1.5.1-vendor.tar.zstd +SOURCES/bootc-1.5.1.tar.zstd diff --git a/SOURCES/0000-bootc-inistall-provision.patch b/SOURCES/0000-bootc-inistall-provision.patch new file mode 100644 index 0000000..e250bdf --- /dev/null +++ b/SOURCES/0000-bootc-inistall-provision.patch @@ -0,0 +1,65 @@ +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" < -Date: Wed, 5 Mar 2025 12:58:07 -0500 -Subject: [PATCH] store: Really remove empty /etc/resolv.conf and /etc/hostname - -The previous change here was a no-op for two reasons: - -- It's actually usr/etc at this point -- We were operating on the wrong rootfs - -Fixes: https://github.com/containers/bootc/pull/1096/commits/57bd0dc9835669274696998386a547afb6709ff5 -Signed-off-by: Colin Walters ---- - ostree-ext/src/container/store.rs | 32 +++++++++++--------- - tests/booted/readonly/011-test-resolvconf.nu | 23 ++++++++++++++ - 2 files changed, 40 insertions(+), 15 deletions(-) - create mode 100644 tests/booted/readonly/011-test-resolvconf.nu - -diff --git a/ostree-ext/src/container/store.rs b/ostree-ext/src/container/store.rs -index 71a9824..2b3f5df 100644 ---- a/ostree-ext/src/container/store.rs -+++ b/ostree-ext/src/container/store.rs -@@ -466,7 +466,7 @@ fn timestamp_of_manifest_or_config( - /// Automatically clean up files that may have been injected by container - /// builds. xref https://github.com/containers/buildah/issues/4242 - fn cleanup_root(root: &Dir) -> Result<()> { -- const RUNTIME_INJECTED: &[&str] = &["etc/hostname", "etc/resolv.conf"]; -+ const RUNTIME_INJECTED: &[&str] = &["usr/etc/hostname", "usr/etc/resolv.conf"]; - for ent in RUNTIME_INJECTED { - if let Some(meta) = root.symlink_metadata_optional(ent)? { - if meta.is_file() && meta.size() == 0 { -@@ -1055,6 +1055,8 @@ impl ImageImporter { - .with_context(|| format!("Checking out layer {commit}"))?; - } - -+ let root_dir = td.open_dir(rootpath)?; -+ - let modifier = - ostree::RepoCommitModifier::new(ostree::RepoCommitModifierFlags::CONSUME, None); - modifier.set_devino_cache(&devino); -@@ -1062,8 +1064,7 @@ impl ImageImporter { - // the derived layers include custom policy. Just relabel everything - // in this case. - if have_derived_layers { -- let rootpath = td.open_dir(rootpath)?; -- let sepolicy = ostree::SePolicy::new_at(rootpath.as_raw_fd(), cancellable)?; -+ let sepolicy = ostree::SePolicy::new_at(root_dir.as_raw_fd(), cancellable)?; - tracing::debug!("labeling from merged tree"); - modifier.set_sepolicy(Some(&sepolicy)); - } else if let Some(base) = base_commit.as_ref() { -@@ -1074,7 +1075,7 @@ impl ImageImporter { - unreachable!() - } - -- cleanup_root(&td)?; -+ cleanup_root(&root_dir)?; - - let mt = ostree::MutableTree::new(); - repo.write_dfd_to_mtree( -@@ -1965,23 +1966,24 @@ mod tests { - #[test] - fn test_cleanup_root() -> Result<()> { - let td = cap_tempfile::TempDir::new(cap_std::ambient_authority())?; -- -+ let usretc = "usr/etc"; - cleanup_root(&td).unwrap(); -- td.create_dir("etc")?; -- td.write("etc/hostname", b"hostname")?; -+ td.create_dir_all(usretc)?; -+ let usretc = &td.open_dir(usretc)?; -+ usretc.write("hostname", b"hostname")?; - cleanup_root(&td).unwrap(); -- assert!(td.try_exists("etc/hostname")?); -- td.write("etc/hostname", b"")?; -+ assert!(usretc.try_exists("hostname")?); -+ usretc.write("hostname", b"")?; - cleanup_root(&td).unwrap(); -- assert!(!td.try_exists("etc/hostname")?); -+ assert!(!td.try_exists("hostname")?); - -- td.symlink_contents("../run/systemd/stub-resolv.conf", "etc/resolv.conf")?; -+ usretc.symlink_contents("../run/systemd/stub-resolv.conf", "resolv.conf")?; - cleanup_root(&td).unwrap(); -- assert!(td.symlink_metadata("etc/resolv.conf")?.is_symlink()); -- td.remove_file("etc/resolv.conf")?; -- td.write("etc/resolv.conf", b"")?; -+ assert!(usretc.symlink_metadata("resolv.conf")?.is_symlink()); -+ usretc.remove_file("resolv.conf")?; -+ usretc.write("resolv.conf", b"")?; - cleanup_root(&td).unwrap(); -- assert!(!td.try_exists("etc/resolv.conf")?); -+ assert!(!usretc.try_exists("resolv.conf")?); - - Ok(()) - } -diff --git a/tests/booted/readonly/011-test-resolvconf.nu b/tests/booted/readonly/011-test-resolvconf.nu -new file mode 100644 -index 0000000..a5f8fe9 ---- /dev/null -+++ b/tests/booted/readonly/011-test-resolvconf.nu -@@ -0,0 +1,23 @@ -+use std assert -+use tap.nu -+ -+tap begin "verify there's not an empty /etc/resolv.conf in the image" -+ -+let st = bootc status --json | from json -+ -+let booted_ostree = $st.status.booted.ostree.checksum; -+ -+# ostree ls should probably have --json and a clean way to not error on ENOENT -+let resolvconf = ostree ls $booted_ostree /usr/etc | split row (char newline) | find resolv.conf -+if ($resolvconf | length) > 0 { -+ let parts = $resolvconf | first | split row -r '\s+' -+ let ty = $parts | first | split chars | first -+ # If resolv.conf exists in the image, currently require it in our -+ # test suite to be a symlink (which is hopefully to the systemd/stub-resolv.conf) -+ assert equal $ty 'l' -+ print "resolv.conf is a symlink" -+} else { -+ print "No resolv.conf found in commit" -+} -+ -+tap ok --- -2.48.1 - diff --git a/SPECS/bootc.spec b/SPECS/bootc.spec index 31b5a22..d309e42 100644 --- a/SPECS/bootc.spec +++ b/SPECS/bootc.spec @@ -1,5 +1,5 @@ %bcond_without check -%if 0%{?rhel} >= 10 || 0%{?fedora} > 41 +%if 0%{?rhel} >= 9 || 0%{?fedora} > 41 %bcond_without ostree_ext %else %bcond_with ostree_ext @@ -12,8 +12,8 @@ %endif Name: bootc -Version: 1.1.6 -Release: 3%{?dist} +Version: 1.5.1 +Release: 1%{?dist} Summary: Bootable container system # Apache-2.0 @@ -29,7 +29,10 @@ URL: https://github.com/containers/bootc Source0: %{url}/releases/download/v%{version}/bootc-%{version}.tar.zstd Source1: %{url}/releases/download/v%{version}/bootc-%{version}-vendor.tar.zstd -Patch0: 0001-store-Really-remove-empty-etc-resolv.conf-and-etc-ho.patch +# 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} @@ -150,6 +153,22 @@ chmod +x %{?buildroot}/%{system_reinstall_bootc_install_podman_path} %{system_reinstall_bootc_install_podman_path} %changelog +* Fri Jul 22 2025 Gursewak Mangat - 1.5.1-1 +- Update to 1.5.1 +- Resolves: #RHEL-104335 + +* Fri Jul 11 2025 Gursewak Mangat - 1.4.0-1 +- Update to 1.4.0 +- Resolves: #RHEL-103125 + +* Fri May 30 2025 Joseph Marrero - 1.3.0-1 +- Update to 1.3.0 +- Resolves: #RHEL-94597 + +* Tue Apr 15 2025 John Eckersberg - 1.1.7-1 +- Update to 1.1.7 +- Resolves: #RHEL-87207 + * Thu Mar 06 2025 Joseph Marrero - 1.1.6-3 - Backport https://github.com/containers/bootc/pull/1167 - Resolves: #RHEL-82293