Hello community, here is the log from the commit of package grub2 for openSUSE:Factory checked in at 2020-11-05 21:53:08 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/grub2 (Old) and /work/SRC/openSUSE:Factory/.grub2.new.11331 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "grub2" Thu Nov 5 21:53:08 2020 rev:231 rq:845585 version:2.04 Changes: -------- --- /work/SRC/openSUSE:Factory/grub2/grub2.changes 2020-10-26 16:12:16.394714020 +0100 +++ /work/SRC/openSUSE:Factory/.grub2.new.11331/grub2.changes 2020-11-05 21:53:10.404419783 +0100 @@ -1,0 +2,6 @@ +Mon Nov 2 06:42:04 UTC 2020 - Michael Chang <mch...@suse.com> + +- Fix boot failure in blocklist installation (bsc#1178278) + * Modified 0002-grub-install-Avoid-incompleted-install-on-i386-pc.patch + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ 0002-grub-install-Avoid-incompleted-install-on-i386-pc.patch ++++++ --- /var/tmp/diff_new_pack.xZuldl/_old 2020-11-05 21:53:12.716414585 +0100 +++ /var/tmp/diff_new_pack.xZuldl/_new 2020-11-05 21:53:12.716414585 +0100 @@ -18,6 +18,11 @@ This fixed "failed to get canonical path of `/boot/grub2/i386-pc`" error during grub-install. +V2: Do not clean up core.img and boot.img in i386-pc platform directory. + The core.img is required by blocklist install that will load it from + platform directory. Both files can be used by grub2-bios-setup to + reinstall images to disk made by previous grub2-install. + Signed-off-by: Michael Chang <mch...@suse.com> --- util/grub-install.c | 7 +++++-- @@ -56,3 +61,37 @@ break; } case GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275: +Index: grub-2.04/util/grub-install-common.c +=================================================================== +--- grub-2.04.orig/util/grub-install-common.c ++++ grub-2.04/util/grub-install-common.c +@@ -190,18 +190,28 @@ clean_grub_dir (const char *di) + { + grub_util_fd_dir_t d; + grub_util_fd_dirent_t de; ++ int skip_img = 0; + + d = grub_util_fd_opendir (di); + if (!d) + grub_util_error (_("cannot open directory `%s': %s"), + di, grub_util_fd_strerror ()); + ++ { ++ char *plat_i386_pc = grub_install_get_platform_name (GRUB_INSTALL_PLATFORM_I386_PC); ++ const char *plat = strrchr (di, '/'); ++ ++ if (plat && strcmp (plat + 1, plat_i386_pc) == 0) ++ skip_img = 1; ++ free (plat_i386_pc); ++ } ++ + while ((de = grub_util_fd_readdir (d))) + { + const char *ext = strrchr (de->d_name, '.'); + if ((ext && (strcmp (ext, ".mod") == 0 + || strcmp (ext, ".lst") == 0 +- || strcmp (ext, ".img") == 0 ++ || (!skip_img && strcmp (ext, ".img") == 0) + || strcmp (ext, ".mo") == 0) + && strcmp (de->d_name, "menu.lst") != 0) + || strcmp (de->d_name, "efiemu32.o") == 0