diff --git a/0001-grub2-Exit-gracefully-if-the-configuration-has-BLS-e.patch b/0001-grub2-Exit-gracefully-if-the-configuration-has-BLS-e.patch new file mode 100644 index 0000000..4e14eb0 --- /dev/null +++ b/0001-grub2-Exit-gracefully-if-the-configuration-has-BLS-e.patch @@ -0,0 +1,56 @@ +From 985a14100295c99d0c6d712bfbee0ec52a3a1601 Mon Sep 17 00:00:00 2001 +From: Javier Martinez Canillas +Date: Thu, 26 Sep 2019 17:33:57 +0200 +Subject: [PATCH] grub2: Exit gracefully if the configuration has BLS enabled + +Since Fedora 30 grub2 has support to populate its menu entries from the +BootLoaderSpec fragments in /boot/loader/entries, so there's no need to +generate menu entries anymore using the /etc/grub.d/15_ostree script. + +But since ostree doesn't update the bootloader, it may be that the grub2 +installed is an old one that doesn't have BLS support. + +For new installs, GRUB_ENABLE_BLSCFG=true is set in /etc/default/grub to +tell the /etc/grub.d/10_linux script if a blscfg command has to be added +to the generated grub2 config file. + +So check if BLS is enabled in /etc/default/grub and only add the entries +if that's not the case. Otherwise the menu entries will be duplicated. + +The approach has the drawback that if a user sets GRUB_ENABLE_BLSCFG=true +in /etc/default/grub without updating grub2, they will get an empty menu. +Since there won't be any entries created by the 30_ostree script and the +blscfg command won't work on the older grub2. + +Unfortunately there is no way to know if the installed grub2 already has +BLS support or not. + +Related: https://bugzilla.redhat.com/show_bug.cgi?id=1751272#c27 + +Closes: #1929 +Approved by: jlebon +--- + src/boot/grub2/grub2-15_ostree | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/boot/grub2/grub2-15_ostree b/src/boot/grub2/grub2-15_ostree +index 0b9bf930..160ac2ca 100644 +--- a/src/boot/grub2/grub2-15_ostree ++++ b/src/boot/grub2/grub2-15_ostree +@@ -26,6 +26,13 @@ if ! test -d /ostree/repo; then + exit 0 + fi + ++# Gracefully exit if the grub2 configuration has BLS enabled, ++# since there is no need to create menu entries in that case. ++. /etc/default/grub ++if test ${GRUB_ENABLE_BLSCFG} = "true"; then ++ exit 0 ++fi ++ + # Make sure we're in the right environment + if ! test -n "${GRUB_DEVICE}"; then + echo "This script must be run as a child of grub2-mkconfig" 1>&2 +-- +2.21.0 + diff --git a/ostree.spec b/ostree.spec index 41347d2..19fa170 100644 --- a/ostree.spec +++ b/ostree.spec @@ -8,11 +8,13 @@ Summary: Tool for managing bootable, immutable filesystem trees Name: ostree Version: 2019.4 -Release: 1%{?dist} +Release: 2%{?dist} Source0: https://github.com/ostreedev/%{name}/releases/download/v%{version}/libostree-%{version}.tar.xz License: LGPLv2+ URL: https://ostree.readthedocs.io/en/latest/ +Patch0: 0001-grub2-Exit-gracefully-if-the-configuration-has-BLS-e.patch + BuildRequires: git # We always run autogen.sh BuildRequires: autoconf automake libtool @@ -162,6 +164,10 @@ find %{buildroot} -name '*.la' -delete %endif %changelog +* Thu Sep 26 2019 Jonathan Lebon - 2019.4-2 +- Backport patch to fix duplicate GRUB2 entries when using BLS + https://bugzilla.redhat.com/show_bug.cgi?id=1751272#c27 + * Wed Sep 25 2019 Jonathan Lebon - 2019.4-1 - https://github.com/ostreedev/ostree/releases/tag/v2019.4