diff --git a/.gitignore b/.gitignore index 20426de..4ef4604 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/libostree-2024.4.tar.xz +SOURCES/libostree-2024.6.tar.xz diff --git a/.ostree.metadata b/.ostree.metadata index 008a7d5..e6e0ad4 100644 --- a/.ostree.metadata +++ b/.ostree.metadata @@ -1 +1 @@ -2aab75147722cc35e7bce341aa836fff81c6f176 SOURCES/libostree-2024.4.tar.xz +8a6d47e77553bab2e9853649182aef0fcdc7550c SOURCES/libostree-2024.6.tar.xz diff --git a/SOURCES/0001-bootloader-grub2-Don-t-do-anything-if-we-have-static.patch b/SOURCES/0001-bootloader-grub2-Don-t-do-anything-if-we-have-static.patch deleted file mode 100644 index b26cfc1..0000000 --- a/SOURCES/0001-bootloader-grub2-Don-t-do-anything-if-we-have-static.patch +++ /dev/null @@ -1,105 +0,0 @@ -From e47b37096343efa3bea8295f3f44c4dc90cc04e2 Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Tue, 27 Feb 2024 13:14:16 -0500 -Subject: [PATCH] bootloader/grub2: Don't do anything if we have static configs - -This builds on top of https://github.com/coreos/bootupd/pull/609/commits/fa9924e4fe403c3751392c041cd98614a2cc3611 -(But in a very hacky way because we don't currently link to a JSON library) - -Basically, bootupd supports injecting static configs, and this -is the currently least hacky way for us to detect this and understand -that we shouldn't try to run `grub2-mkconfig`. - -A further patch I'd like to do here is also change the probing -logic to gracefully no-op if `grub2-mkconfig` doesn't exist, -but that has a bit more risk and involvement. ---- - src/libostree/ostree-bootloader-grub2.c | 21 ++++++++++++ - tests/kolainst/destructive/bootupd-static.sh | 36 ++++++++++++++++++++ - 2 files changed, 57 insertions(+) - create mode 100755 tests/kolainst/destructive/bootupd-static.sh - -diff --git a/src/libostree/ostree-bootloader-grub2.c b/src/libostree/ostree-bootloader-grub2.c -index e1ee7868..cbe7605d 100644 ---- a/src/libostree/ostree-bootloader-grub2.c -+++ b/src/libostree/ostree-bootloader-grub2.c -@@ -26,6 +26,11 @@ - - #include - -+// Written by bootupd -+#define BOOTUPD_CONFIG "boot/bootupd-state.json" -+// Horrible hack, to avoid including a JSON parser we just grep for this -+#define BOOTUPD_CONFIG_STATIC_JSON_FRAGMENT "\"static-configs\"" -+ - /* Maintain backwards compatibility with legacy GRUB - * installations that might rely on the -16 suffix - * for real-mode booting. -@@ -75,6 +80,22 @@ _ostree_bootloader_grub2_query (OstreeBootloader *bootloader, gboolean *out_is_a - { - OstreeBootloaderGrub2 *self = OSTREE_BOOTLOADER_GRUB2 (bootloader); - -+ g_autoptr (GFile) bootupd_config -+ = g_file_resolve_relative_path (self->sysroot->path, BOOTUPD_CONFIG); -+ if (g_file_query_exists (bootupd_config, NULL)) -+ { -+ g_autofree char *bootupd_config_contents = NULL; -+ if (!g_file_load_contents (bootupd_config, cancellable, &bootupd_config_contents, NULL, NULL, -+ error)) -+ return glnx_prefix_error (error, "Failed to read bootupd config"); -+ if (strstr (bootupd_config_contents, BOOTUPD_CONFIG_STATIC_JSON_FRAGMENT) != NULL) -+ { -+ g_debug ("Found static bootupd config"); -+ *out_is_active = FALSE; -+ return TRUE; -+ } -+ } -+ - /* Look for the BIOS path first */ - if (g_file_query_exists (self->config_path_bios_1, NULL) - || g_file_query_exists (self->config_path_bios_2, NULL)) -diff --git a/tests/kolainst/destructive/bootupd-static.sh b/tests/kolainst/destructive/bootupd-static.sh -new file mode 100755 -index 00000000..cf836813 ---- /dev/null -+++ b/tests/kolainst/destructive/bootupd-static.sh -@@ -0,0 +1,36 @@ -+#!/bin/bash -+set -xeuo pipefail -+ -+. ${KOLA_EXT_DATA}/libinsttest.sh -+ -+require_writable_sysroot -+prepare_tmpdir -+ -+bootupd_state=/boot/bootupd-state.json -+mount -o remount,rw /boot -+if grep -qFe "\"static-configs\"" "${bootupd_state}"; then -+ echo "Host is using static configs already, overriding this" -+ jq 'del(.["static-configs"])' < "${bootupd_state}" > "${bootupd_state}".new -+ mv "${bootupd_state}.new" "${bootupd_state}" -+fi -+ -+# Print the current value for reference, it's "none" on FCOS derivatives -+ostree config get sysroot.bootloader || true -+ostree config set sysroot.bootloader auto -+ -+ostree admin deploy --stage "${host_commit}" -+systemctl stop ostree-finalize-staged.service -+used_bootloader=$(journalctl -u ostree-finalize-staged -o json MESSAGE_ID=dd440e3e549083b63d0efc7dc15255f1 | tail -1 | jq -r .OSTREE_BOOTLOADER) -+# We're verifying the legacy default now -+assert_streq "${used_bootloader}" "grub2" -+ostree admin undeploy 0 -+ -+# Now synthesize a bootupd config which uses static configs -+jq '. + {"static-configs": {}}' < "${bootupd_state}" > "${bootupd_state}".new -+mv "${bootupd_state}.new" "${bootupd_state}" -+ostree admin deploy --stage "${host_commit}" -+systemctl stop ostree-finalize-staged.service -+used_bootloader=$(journalctl -u ostree-finalize-staged -o json MESSAGE_ID=dd440e3e549083b63d0efc7dc15255f1 | tail -1 | jq -r .OSTREE_BOOTLOADER) -+assert_streq "${used_bootloader}" "none" -+ -+echo "ok bootupd static" --- -2.41.0 - diff --git a/SPECS/ostree.spec b/SPECS/ostree.spec index 79432c5..845efae 100644 --- a/SPECS/ostree.spec +++ b/SPECS/ostree.spec @@ -7,15 +7,12 @@ Summary: Tool for managing bootable, immutable filesystem trees Name: ostree -Version: 2024.4 -Release: 3%{?dist} +Version: 2024.6 +Release: 1%{?dist} Source0: https://github.com/ostreedev/%{name}/releases/download/v%{version}/libostree-%{version}.tar.xz Source1: ostree-readonly-sysroot-migration Source2: ostree-readonly-sysroot-migration.service -# https://issues.redhat.com/browse/RHEL-27199 -Patch0: 0001-bootloader-grub2-Don-t-do-anything-if-we-have-static.patch - License: LGPLv2+ URL: https://ostree.readthedocs.io/en/latest/ @@ -29,6 +26,7 @@ BuildRequires: gtk-doc BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(libcurl) BuildRequires: openssl-devel +BuildRequires: pkgconfig(composefs) # The tests still require soup BuildRequires: pkgconfig(libsoup-2.4) BuildRequires: libattr-devel @@ -51,6 +49,7 @@ Requires: dracut Requires: /usr/bin/gpgv2 Requires: systemd-units Requires: %{name}-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: composefs %description libostree is a shared library designed primarily for @@ -180,6 +179,10 @@ find %{buildroot} -name '*.la' -delete %endif %changelog +* Fri May 17 2024 Joseph Marrero - 2024.6-1 +- https://github.com/ostreedev/ostree/releases/tag/v2024.6 + Resolves: #RHEL-36770 + * Wed Feb 28 2024 Colin Walters - 2024.4-3 - Backport https://github.com/ostreedev/ostree/pull/3205/commits/e47b37096343efa3bea8295f3f44c4dc90cc04e2