[grub2] Make 1.99~rc1 build on i686...
Peter Jones
pjones at fedoraproject.org
Mon Mar 7 15:52:35 UTC 2011
commit 1fcd613638c40d012deec26f6bafe22830baf604
Author: Peter Jones <pjones at redhat.com>
Date: Thu Mar 3 17:08:24 2011 -0500
Make 1.99~rc1 build on i686...
.gitignore | 1 +
grub-1.95-grubdir.patch | 17 ---
grub-1.97.1-initramfs.patch | 13 --
grub-1.98-follow-dev-mapper-symlinks.patch | 60 ----------
grub-1.99-grub_test_assert_printf.patch | 167 ++++++++++++++++++++++++++++
grub-1.99-handle-fwrite-return.patch | 59 ++++++++++
grub-1.99-unused-variable.patch | 31 +++++
grub2.spec | 74 ++++++++-----
sources | 1 +
9 files changed, 306 insertions(+), 117 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 691b1cb..b30db43 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
grub-1.98.tar.gz
+/grub-1.99~rc1.tar.gz
diff --git a/grub-1.99-grub_test_assert_printf.patch b/grub-1.99-grub_test_assert_printf.patch
new file mode 100644
index 0000000..55f514f
--- /dev/null
+++ b/grub-1.99-grub_test_assert_printf.patch
@@ -0,0 +1,167 @@
+From e51968bcd089db5efd5e33043e6e23592f696371 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Wed, 2 Mar 2011 13:13:44 -0500
+Subject: [PATCH] Make get_test_assert() correctly format its output.
+
+The old code gives arguments to a printf function which can't work
+correctly, and the compiler complains.
+---
+ grub-core/tests/example_functional_test.c | 2 +-
+ grub-core/tests/lib/test.c | 88 +++++++++++++++++++++++++++--
+ include/grub/test.h | 10 ++-
+ 3 files changed, 90 insertions(+), 10 deletions(-)
+
+diff --git a/grub-core/tests/example_functional_test.c b/grub-core/tests/example_functional_test.c
+index 5259881..0c69749 100644
+--- a/grub-core/tests/example_functional_test.c
++++ b/grub-core/tests/example_functional_test.c
+@@ -24,7 +24,7 @@ static void
+ example_test (void)
+ {
+ /* Check if 1st argument is true and report with default error message. */
+- grub_test_assert (1 == 1);
++ grub_test_assert (1 == 1, "1 equal 1 expected");
+
+ /* Check if 1st argument is true and report with custom error message. */
+ grub_test_assert (2 == 2, "2 equal 2 expected");
+diff --git a/grub-core/tests/lib/test.c b/grub-core/tests/lib/test.c
+index 06d78b7..8453d5b 100644
+--- a/grub-core/tests/lib/test.c
++++ b/grub-core/tests/lib/test.c
+@@ -42,22 +42,75 @@ typedef struct grub_test_failure *grub_test_failure_t;
+ grub_test_t grub_test_list;
+ static grub_test_failure_t failure_list;
+
+-static void
+-add_failure (const char *file,
+- const char *funp,
+- grub_uint32_t line, const char *fmt, va_list args)
++static grub_test_failure_t
++failure_start(const char *file, const char *funp, grub_uint32_t line);
++static grub_test_failure_t
++failure_start(const char *file, const char *funp, grub_uint32_t line)
+ {
+ grub_test_failure_t failure;
+
+ failure = (grub_test_failure_t) grub_malloc (sizeof (*failure));
+ if (!failure)
+- return;
++ return NULL;
+
+ failure->file = grub_strdup (file ? : "<unknown_file>");
++ if (!failure->file)
++ {
++ grub_free(failure);
++ return NULL;
++ }
++
+ failure->funp = grub_strdup (funp ? : "<unknown_function>");
++ if (!failure->funp)
++ {
++ grub_free(failure->file);
++ grub_free(failure);
++ return NULL;
++ }
++
+ failure->line = line;
+- failure->message = grub_xvasprintf (fmt, args);
+
++ failure->message = NULL;
++
++ return failure;
++}
++
++static void
++failure_append_vtext(grub_test_failure_t failure, const char *fmt, va_list args);
++static void
++failure_append_vtext(grub_test_failure_t failure, const char *fmt, va_list args)
++{
++ char *msg = grub_xvasprintf(fmt, args);
++ if (failure->message)
++ {
++ char *oldmsg = failure->message;
++
++ failure->message = grub_xasprintf("%s%s", oldmsg, msg);
++ grub_free(oldmsg);
++ }
++ else
++ {
++ failure->message = msg;
++ }
++}
++
++static void
++failure_append_text(grub_test_failure_t failure, const char *fmt, ...)
++{
++ va_list args;
++
++ va_start(args, fmt);
++ failure_append_vtext(failure, fmt, args);
++ va_end(args);
++}
++
++static void
++add_failure (const char *file,
++ const char *funp,
++ grub_uint32_t line, const char *fmt, va_list args)
++{
++ grub_test_failure_t failure = failure_start(file, funp, line);
++ failure_append_text(failure, fmt, args);
+ grub_list_push (GRUB_AS_LIST_P (&failure_list), GRUB_AS_LIST (failure));
+ }
+
+@@ -100,6 +153,29 @@ grub_test_nonzero (int cond,
+ }
+
+ void
++grub_test_assert_helper (int cond, const char *file, const char *funp,
++ grub_uint32_t line, const char *condstr,
++ const char *fmt, ...)
++{
++ va_list ap;
++ grub_test_failure_t failure;
++
++ if (cond)
++ return;
++
++ failure = failure_start(file, funp, line);
++ failure_append_text(failure, "assert failed: %s ", condstr);
++
++ va_start(ap, fmt);
++
++ failure_append_vtext(failure, fmt, ap);
++
++ va_end(ap);
++
++ grub_list_push (GRUB_AS_LIST_P (&failure_list), GRUB_AS_LIST (failure));
++}
++
++void
+ grub_test_register (const char *name, void (*test_main) (void))
+ {
+ grub_test_t test;
+diff --git a/include/grub/test.h b/include/grub/test.h
+index 336d3b6..77a7598 100644
+--- a/include/grub/test.h
++++ b/include/grub/test.h
+@@ -53,10 +53,14 @@ void grub_test_nonzero (int cond, const char *file,
+ __attribute__ ((format (printf, 5, 6)));
+
+ /* Macro to fill in location details and an optional error message. */
++void grub_test_assert_helper (int cond, const char *file,
++ const char *func, grub_uint32_t line,
++ const char *condstr, const char *fmt, ...)
++ __attribute__ ((format (printf, 6, 7)));
++
+ #define grub_test_assert(cond, ...) \
+- grub_test_nonzero(cond, GRUB_FILE, __FUNCTION__, __LINE__, \
+- ## __VA_ARGS__, \
+- "assert failed: %s", #cond)
++ grub_test_assert_helper(cond, GRUB_FILE, __FUNCTION__, __LINE__, \
++ #cond, ## __VA_ARGS__);
+
+ /* Macro to define a unit test. */
+ #define GRUB_UNIT_TEST(name, funp) \
+--
+1.7.3.1
+
diff --git a/grub-1.99-handle-fwrite-return.patch b/grub-1.99-handle-fwrite-return.patch
new file mode 100644
index 0000000..8cbced6
--- /dev/null
+++ b/grub-1.99-handle-fwrite-return.patch
@@ -0,0 +1,59 @@
+From de1c35857ee803653d3ffd94eb5d3f3b45ab000e Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Wed, 2 Mar 2011 11:29:28 -0500
+Subject: [PATCH] Don't ignore fwrite's return since we build with -Wno-unused.
+
+---
+ util/grub-mklayout.c | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/util/grub-mklayout.c b/util/grub-mklayout.c
+index 04501cb..beea3eb 100644
+--- a/util/grub-mklayout.c
++++ b/util/grub-mklayout.c
+@@ -324,6 +324,7 @@ write_file (FILE *out, struct grub_keyboard_layout *layout)
+ {
+ grub_uint32_t version;
+ unsigned i;
++ int rc;
+
+ version = grub_cpu_to_le32 (GRUB_KEYBOARD_LAYOUTS_VERSION);
+
+@@ -342,10 +343,10 @@ write_file (FILE *out, struct grub_keyboard_layout *layout)
+ layout->keyboard_map_shift_l3[i]
+ = grub_cpu_to_le32(layout->keyboard_map_shift_l3[i]);
+
+- fwrite (GRUB_KEYBOARD_LAYOUTS_FILEMAGIC, 1,
++ rc = fwrite (GRUB_KEYBOARD_LAYOUTS_FILEMAGIC, 1,
+ GRUB_KEYBOARD_LAYOUTS_FILEMAGIC_SIZE, out);
+- fwrite (&version, sizeof (version), 1, out);
+- fwrite (layout, 1, sizeof (*layout), out);
++ rc = fwrite (&version, sizeof (version), 1, out);
++ rc = fwrite (layout, 1, sizeof (*layout), out);
+ }
+
+ static void
+--
+1.7.3.1
+
+diff --git a/util/grub-menulst2cfg.c b/util/grub-menulst2cfg.c
+index 513af47..308f8e9 100644
+--- a/util/grub-menulst2cfg.c
++++ b/util/grub-menulst2cfg.c
+@@ -34,6 +34,7 @@ main (int argc, char **argv)
+ size_t bufsize = 0;
+ char *suffix = xstrdup ("");
+ int suffixlen = 0;
++ int rc;
+
+ if (argc >= 2 && argv[1][0] == '-')
+ {
+@@ -111,7 +112,7 @@ main (int argc, char **argv)
+ if (entryname)
+ fprintf (out, "}\n\n");
+
+- fwrite (suffix, 1, suffixlen, out);
++ rc = fwrite (suffix, 1, suffixlen, out);
+
+ free (buf);
+ free (suffix);
diff --git a/grub-1.99-unused-variable.patch b/grub-1.99-unused-variable.patch
new file mode 100644
index 0000000..df3c950
--- /dev/null
+++ b/grub-1.99-unused-variable.patch
@@ -0,0 +1,31 @@
+From 755da11214d4695fbf8245d6d591ae633cadc791 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Wed, 2 Mar 2011 13:47:04 -0500
+Subject: [PATCH] Get rid of unused variable in zfs.
+
+---
+ grub-core/fs/zfs/zfs.c | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
+index 5b575f3..3a94d88 100644
+--- a/grub-core/fs/zfs/zfs.c
++++ b/grub-core/fs/zfs/zfs.c
+@@ -837,14 +837,12 @@ zap_leaf_lookup (zap_leaf_phys_t * l, grub_zfs_endian_t endian,
+ name))
+ {
+ struct zap_leaf_array *la;
+- grub_uint8_t *ip;
+
+ if (le->le_int_size != 8 || le->le_value_length != 1)
+ return grub_error (GRUB_ERR_BAD_FS, "invalid leaf chunk entry");
+
+ /* get the uint64_t property value */
+ la = &ZAP_LEAF_CHUNK (l, blksft, le->le_value_chunk).l_array;
+- ip = la->la_array;
+
+ *value = grub_be_to_cpu64 (la->la_array64);
+
+--
+1.7.3.1
+
diff --git a/grub2.spec b/grub2.spec
index cd28465..cbe6919 100644
--- a/grub2.spec
+++ b/grub2.spec
@@ -13,20 +13,21 @@
Name: grub2
Epoch: 1
-Version: 1.98
-Release: 4%{?dist}
+Version: 1.99
+%define filever 1.99~rc1
+Release: 0.1%{?dist}
Summary: Bootloader with support for Linux, Multiboot and more
Group: System Environment/Base
License: GPLv3+
URL: http://www.gnu.org/software/grub/
-Source0: ftp://alpha.gnu.org/gnu/grub/grub-%{version}.tar.gz
+Source0: ftp://alpha.gnu.org/gnu/grub/grub-%{filever}.tar.gz
Source1: 90_persistent
Source2: grub.default
Source3: README.Fedora
-Patch0: grub-1.95-grubdir.patch
-Patch1: grub-1.97.1-initramfs.patch
-Patch2: grub-1.98-follow-dev-mapper-symlinks.patch
+Patch0: grub-1.99-handle-fwrite-return.patch
+Patch1: grub-1.99-unused-variable.patch
+Patch2: grub-1.99-grub_test_assert_printf.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -38,14 +39,15 @@ BuildRequires: /usr/lib64/crt1.o glibc-static
%else
BuildRequires: /usr/lib/crt1.o glibc-static
%endif
-BuildRequires: autoconf automake gettext-devel
+BuildRequires: autoconf automake autogen device-mapper-devel
+BuildRequires: freetype-devel gettext-devel git
-# grubby
+Requires: gettext
Requires(pre): dracut
Requires(post): dracut
# TODO: ppc
-ExclusiveArch: %{ix86} x86_64 %{sparc}
+# ExclusiveArch: %{ix86} x86_64 %{sparc}
%description
This is the second version of the GRUB (Grand Unified Bootloader),
@@ -61,11 +63,13 @@ file that is part of this package's documentation for more information.
%prep
-%setup -q -n grub-%{version}
-
-%patch0 -p1 -b .grubdir
-%patch1 -p1 -b .initramfs
-%patch2 -p1 -b .follow-symlinks
+%setup -q -n grub-%{filever}
+git init
+git config user.email "pjones at fedoraproject.org"
+git config user.name "Fedora Ninjas"
+git add .
+git commit -a -q -m "%{version} baseline."
+git am %{patches}
# README.Fedora
cp %{SOURCE3} .
@@ -75,7 +79,12 @@ cp %{SOURCE3} .
sh autogen.sh
# -static is needed so that autoconf script is able to link
# test that looks for _start symbol on 64 bit platforms
-%configure TARGET_LDFLAGS=-static \
+%configure CFLAGS="$(echo $RPM_OPT_FLAGS | sed \
+ -e 's/-fstack-protector//g' \
+ -e 's/--param=ssp-buffer-size=4//g' \
+ -e 's/-mregparm=3/-mregparm=4//g' \
+ -e 's/-fasynchronous-unwind-tables//g' )" \
+ TARGET_LDFLAGS=-static \
%ifarch %{sparc}
--with-platform=ieee1275 \
%else
@@ -121,11 +130,12 @@ do
# install -m 755 -D $BASE$EXT $TGT
done
+mv $RPM_BUILD_ROOT%{_infodir}/grub.info $RPM_BUILD_ROOT%{_infodir}/grub2.info
+rm $RPM_BUILD_ROOT%{_infodir}/dir
+
# Defaults
install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/default/grub
-%find_lang grub
-
%clean
rm -rf $RPM_BUILD_ROOT
@@ -143,9 +153,15 @@ BOOT_PARTITION=$(df -h /boot |(read; awk '{print $1; exit}'))
/sbin/grubby --remove-kernel=/boot/%{name}/core.img
# Add core.img as multiboot kernel to GRUB Legacy menu
/sbin/grubby --add-kernel=/boot/%{name}/core.img --title="GNU GRUB 2, (%{version})"
+if [ "$1" = 1 ]; then
+ /sbin/install-info --info-dir=%{_infodir} %{_infodir}/grub2.info.gz || :
+fi
%preun
+if [ "$1" = 0 ]; then
+ /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/grub2.info.gz || :
+fi
exec >/dev/null
/sbin/grubby --remove-kernel=/boot/%{name}/core.img
# XXX Ugly
@@ -167,33 +183,38 @@ exec >/dev/null 2>&1
%{name}-mkconfig -o /boot/grub2/grub.cfg
-%files -f grub.lang
+%files
%defattr(-,root,root,-)
+/etc/bash_completion.d/grub
%{_libdir}/%{name}
%{_libdir}/grub/
+%{_sbindir}/%{name}-mkconfig
%{_sbindir}/%{name}-mkdevicemap
+%{_sbindir}/%{name}-mknetdir
%{_sbindir}/%{name}-install
%{_sbindir}/%{name}-probe
-%{_sbindir}/%{name}-setup
-%{_sbindir}/%{name}-mkconfig
%{_sbindir}/%{name}-reboot
%{_sbindir}/%{name}-set-default
-%{_bindir}/%{name}-mkimage
-%{_bindir}/%{name}-mkelfimage
+%{_sbindir}/%{name}-setup
+%{_bindir}/%{name}-bin2h
%{_bindir}/%{name}-editenv
%{_bindir}/%{name}-fstest
+%{_bindir}/%{name}-kbdcomp
+%{_bindir}/%{name}-menulst2cfg
+# %{_bindir}/%{name}-mkelfimage
%{_bindir}/%{name}-mkfont
-%{_bindir}/%{name}-bin2h
-%{_bindir}/%{name}-mkisofs
+%{_bindir}/%{name}-mklayout
+%{_bindir}/%{name}-mkimage
+# %{_bindir}/%{name}-mkisofs
%{_bindir}/%{name}-mkpasswd-pbkdf2
%{_bindir}/%{name}-mkrelpath
-%{_bindir}/%{name}-script-check
%ifnarch %{sparc}
%{_bindir}/%{name}-mkrescue
%endif
%ifarch %{sparc}
%{_sbindir}/%{name}-ofpathname
%endif
+%{_bindir}/%{name}-script-check
%dir %{_sysconfdir}/grub.d
%config %{_sysconfdir}/grub.d/??_*
%{_sysconfdir}/grub.d/README
@@ -205,8 +226,7 @@ exec >/dev/null 2>&1
%config(noreplace) /boot/%{name}/grub.cfg
%doc COPYING INSTALL NEWS README THANKS TODO ChangeLog README.Fedora
%exclude %{_mandir}
-
-
+%{_infodir}/grub2*
%changelog
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1:1.98-4
diff --git a/sources b/sources
index 60b73e8..ec9fb3b 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
c0bcf60e524739bb64e3a2d4e3732a59 grub-1.98.tar.gz
+fd602ffaada5ba7939d0ea47091841a5 grub-1.99~rc1.tar.gz
More information about the scm-commits
mailing list