diff --git a/grub-0.97-nx-multiinstall.patch b/grub-0.97-nx-multiinstall.patch new file mode 100644 index 0000000..f0e4ec0 --- /dev/null +++ b/grub-0.97-nx-multiinstall.patch @@ -0,0 +1,60 @@ +2006-03-09 Alexandre Oliva + + * lib/builtins.c (install_blocklist_helper): Move static + last_lenght... + (install_func_context): ... here. + (install_func): Reset it. + +Index: grub-0.97/stage2/builtins.c +=================================================================== +--- grub-0.97.orig/stage2/builtins.c 2006-03-09 10:26:41.000000000 -0300 ++++ grub-0.97/stage2/builtins.c 2006-03-09 11:36:18.000000000 -0300 +@@ -1926,11 +1926,13 @@ static struct { + int saved_sector; + int installaddr; + int installlist; ++ int last_length; + char *stage2_first_buffer; + } install_func_context = { + .saved_sector = 0, + .installaddr = 0, + .installlist = 0, ++ .last_length = SECTOR_SIZE, + .stage2_first_buffer = NULL, + }; + +@@ -1960,19 +1962,19 @@ install_blocklist_helper (int sector, in + int *installlist = &install_func_context.installlist; + char **stage2_first_buffer = &install_func_context.stage2_first_buffer; + /* Was the last sector full? */ +- static int last_length = SECTOR_SIZE; ++ int *last_length = &install_func_context.last_length; + + if (debug) + printf("[%d]", sector); + +- if (offset != 0 || last_length != SECTOR_SIZE) ++ if (offset != 0 || *last_length != SECTOR_SIZE) + { + /* We found a non-sector-aligned data block. */ + errnum = ERR_UNALIGNED; + return; + } + +- last_length = length; ++ *last_length = length; + + if (*((unsigned long *) (*installlist - 4)) + + *((unsigned short *) *installlist) != sector +@@ -2027,7 +2029,11 @@ install_func (char *arg, int flags) + int is_open = 0; + /* If LBA is forced? */ + int is_force_lba = 0; ++ int *last_length = &install_func_context.last_length; + ++ /* Reset state. */ ++ *last_length = SECTOR_SIZE; ++ + *stage2_first_buffer = old_sect + SECTOR_SIZE; + #ifdef GRUB_UTIL + /* If the Stage 2 is in a partition mounted by an OS, this will store diff --git a/grub.spec b/grub.spec index c0235d0..94596af 100644 --- a/grub.spec +++ b/grub.spec @@ -69,34 +69,34 @@ Patch1103: grub-0.95-splash-error-term.patch # Mark the simulation stack executable Patch1104: grub-0.97-nxstack.patch +Patch1105: grub-0.97-nx-multiinstall.patch # always use a full path for mdadm. -Patch1105: grub-0.97-mdadm-path.patch - +Patch1110: grub-0.97-mdadm-path.patch # always install into the mbr if we're on a raid1 /boot. -Patch1106: grub-0.95-md-mbr.patch +Patch1111: grub-0.95-md-mbr.patch # gcc4 fixes. -Patch1107: grub-0.97-gcc4.patch +Patch1115: grub-0.97-gcc4.patch # Make non-MBR installs work again on non-raid1. -Patch1108: grub-0.95-nonmbr.patch +Patch1120: grub-0.95-nonmbr.patch # Make "grub-install --recheck" look like the menace it is. -Patch1109: grub-0.95-recheck-bad.patch +Patch1130: grub-0.95-recheck-bad.patch # Fix missing prototypes, since grub nicely sets -Wmissing-prototypes and # then tries to build conftests without them. -Patch1110: grub-0.97-prototypes.patch +Patch1135: grub-0.97-prototypes.patch # put /usr/lib/grub back in /usr/share/grub like it was before, so other # scripts don't screw up. -Patch1111: grub-0.97-datadir.patch +Patch1140: grub-0.97-datadir.patch # install correctly on dmraid devices -Patch1112: grub-0.97-dmraid.patch -Patch1113: grub-0.97-dmraid-recheck-bad.patch -Patch1114: grub-0.97-dmraid-partition-names.patch +Patch1145: grub-0.97-dmraid.patch +Patch1146: grub-0.97-dmraid-recheck-bad.patch +Patch1147: grub-0.97-dmraid-partition-names.patch ExclusiveArch: i386 x86_64 BuildRequires: binutils >= 2.9.1.0.23, ncurses-devel, texinfo @@ -152,23 +152,24 @@ systems. %patch1103 -p1 -b .splash-error-term %patch1104 -p1 -b .nxstack +%patch1105 -p1 -b .nx-multiinstall -%patch1105 -p1 -b .mdadm-path -%patch1106 -p1 -b .md-mbr +%patch1110 -p1 -b .mdadm-path +%patch1111 -p1 -b .md-mbr -%patch1107 -p1 -b .gcc4 +%patch1115 -p1 -b .gcc4 -%patch1108 -p1 -b .nonmbr +%patch1120 -p1 -b .nonmbr -%patch1109 -p1 -b .recheck-bad +%patch1130 -p1 -b .recheck-bad -%patch1110 -p1 -b .prototypes +%patch1135 -p1 -b .prototypes -%patch1111 -p1 -b .datadir +%patch1140 -p1 -b .datadir -%patch1112 -p1 -b .dmraid -%patch1113 -p1 -b .dmraid-recheck-bad -%patch1114 -p1 -b .dmraid-partition-names +%patch1145 -p1 -b .dmraid +%patch1146 -p1 -b .dmraid-recheck-bad +%patch1147 -p1 -b .dmraid-partition-names %build autoreconf --install --force @@ -222,6 +223,10 @@ fi %{_datadir}/grub %changelog +* Mon Mar 9 2006 Peter Jones - 0.97-4 +- Fix running "install" multiple times on the same fs in the same invocation + of grub. (bz #158426 , patch from lxo@redhat.com) + * Mon Feb 13 2006 Peter Jones - 0.97-3 - fix partition names on dmraid