diff --git a/gcc46-fixes.patch b/gcc46-fixes.patch new file mode 100644 index 0000000..e9fcb95 --- /dev/null +++ b/gcc46-fixes.patch @@ -0,0 +1,16 @@ +--- + include/grub/test.h | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/include/grub/test.h ++++ b/include/grub/test.h +@@ -49,8 +49,7 @@ int grub_test_run (grub_test_t test); + /* Test `cond' for nonzero; log failure otherwise. */ + void grub_test_nonzero (int cond, const char *file, + const char *func, grub_uint32_t line, +- const char *fmt, ...) +- __attribute__ ((format (printf, 5, 6))); ++ const char *fmt, ...); + + /* Macro to fill in location details and an optional error message. */ + #define grub_test_assert(cond, ...) \ diff --git a/gccwarn.patch b/gccwarn.patch index c928a45..8ff9db7 100644 --- a/gccwarn.patch +++ b/gccwarn.patch @@ -1,12 +1,27 @@ -Index: lib/libgcrypt-grub/cipher/camellia.c -=================================================================== ---- lib/libgcrypt-grub/cipher/camellia.c.orig -+++ lib/libgcrypt-grub/cipher/camellia.c -@@ -25,11 +25,9 @@ - * http://info.isl.ntt.co.jp/crypt/eng/camellia/specifications.html - */ +--- + grub-core/lib/libgcrypt-grub/cipher/camellia.c | 3 +-- + grub-core/lib/libgcrypt/cipher/camellia.c | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +--- a/grub-core/lib/libgcrypt-grub/cipher/camellia.c ++++ b/grub-core/lib/libgcrypt-grub/cipher/camellia.c +@@ -29,9 +29,8 @@ GRUB_MOD_LICENSE ("GPLv3+"); + + + #include "camellia.h" ++#include "memory.h" + +-/* u32 must be 32bit word */ +-typedef unsigned int u32; + typedef unsigned char u8; + + /* key constants */ +--- a/grub-core/lib/libgcrypt/cipher/camellia.c ++++ b/grub-core/lib/libgcrypt/cipher/camellia.c +@@ -26,10 +26,9 @@ + #include + #include -- +#include "memory.h" #include "camellia.h" diff --git a/grub-1.95-grubdir.patch b/grub-1.95-grubdir.patch deleted file mode 100644 index 2e72533..0000000 --- a/grub-1.95-grubdir.patch +++ /dev/null @@ -1,19 +0,0 @@ -This should ideally be done using transformations. -Alternatively, /boot/grub may be used, no grub's files there should conflict -with grub2 and they both can share the same device.map. - -Lubomir Rintel - -Index: include/grub/util/misc.h -=================================================================== ---- include/grub/util/misc.h.orig -+++ include/grub/util/misc.h -@@ -32,7 +32,7 @@ - /* NetBSD uses /boot for its boot block. */ - # define DEFAULT_DIRECTORY "/grub" - #else --# define DEFAULT_DIRECTORY "/boot/grub" -+# define DEFAULT_DIRECTORY "/boot/grub2" - #endif - - #define DEFAULT_DEVICE_MAP DEFAULT_DIRECTORY "/device.map" diff --git a/grub-1.98-follow-dev-mapper-symlinks.patch b/grub-1.98-follow-dev-mapper-symlinks.patch deleted file mode 100644 index 8ba54ab..0000000 --- a/grub-1.98-follow-dev-mapper-symlinks.patch +++ /dev/null @@ -1,60 +0,0 @@ ---- a/util/getroot.c 2010-03-06 20:51:37.000000000 +0000 -+++ b/util/getroot.c 2010-05-28 18:23:19.892788564 +0100 -@@ -180,7 +180,8 @@ grub_get_prefix (const char *dir) - - static char * - find_root_device (const char *dir __attribute__ ((unused)), -- dev_t dev __attribute__ ((unused))) -+ dev_t dev __attribute__ ((unused)) -+ int depth __attribute__ ((unused))) - { - return 0; - } -@@ -188,7 +189,7 @@ find_root_device (const char *dir __attr - #elif ! defined(__CYGWIN__) - - static char * --find_root_device (const char *dir, dev_t dev) -+find_root_device (const char *dir, dev_t dev, int depth) - { - DIR *dp; - char *saved_cwd; -@@ -222,16 +223,27 @@ find_root_device (const char *dir, dev_t - /* Ignore any error. */ - continue; - -- if (S_ISLNK (st.st_mode)) -+ if (S_ISLNK (st.st_mode)) { -+#ifdef __linux__ -+ /* If we're in /dev/mapper, follow symbolic links. */ -+ if (depth == 1 && strcmp(dir, "mapper") == 0) { -+ if (stat(ent->d_name, &st) == -1) -+ continue; -+ if (S_ISDIR (st.st_mode)) -+ continue; -+ } -+#else - /* Don't follow symbolic links. */ - continue; -+#endif -+ } - - if (S_ISDIR (st.st_mode)) - { - /* Find it recursively. */ - char *res; - -- res = find_root_device (ent->d_name, dev); -+ res = find_root_device (ent->d_name, dev, depth + 1); - - if (res) - { -@@ -454,7 +466,7 @@ grub_guess_root_device (const char *dir) - #else - - /* This might be truly slow, but is there any better way? */ -- os_dev = find_root_device ("/dev", st.st_dev); -+ os_dev = find_root_device ("/dev", st.st_dev, 0); - #endif - #endif /* !__GNU__ */ - diff --git a/grub-1.98.tar.bz2 b/grub-1.98.tar.bz2 deleted file mode 100644 index 423e73f..0000000 --- a/grub-1.98.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e96e824b4c53ee8c0efca360789f0531b625369e648760eab4829726ec3a82b -size 1858208 diff --git a/grub-1.99~rc2.tar.xz b/grub-1.99~rc2.tar.xz new file mode 100644 index 0000000..c45c14c --- /dev/null +++ b/grub-1.99~rc2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:533a3a6b4cc227632365f09fda91069cfd49f779f00ddf2448a0f9bad07a6e31 +size 2507644 diff --git a/grub2-linux.patch b/grub2-linux.patch index 2509ed6..fe78bd0 100644 --- a/grub2-linux.patch +++ b/grub2-linux.patch @@ -8,39 +8,15 @@ Index: util/grub.d/10_linux.in else - OS="${GRUB_DISTRIBUTOR} GNU/Linux" + OS="${GRUB_DISTRIBUTOR}" - CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]') ${CLASS}" + CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) ${CLASS}" fi @@ -84,7 +84,7 @@ EOF - printf '%s\n' "${prepare_boot_cache}" + message="$(gettext_printf "Loading Linux %s ..." ${version})" cat << EOF - echo $(printf "$(gettext "Loading Linux %s ...")" ${version}) + echo '$message' - linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} + linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ${args} EOF if test -n "${initrd}" ; then - cat << EOF -@@ -97,9 +97,21 @@ EOF - EOF - } - -+# do not output vmlinux if vmlinuz of same version exists - list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* ; do -- if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi -- done` -+ if grub_file_is_not_garbage "$i" ; then -+ case $i in -+ */vmlinux*) -+ j=${i/vmlinux/vmlinuz} -+ k=${j/.gz/} -+ if test ! -e $k ; then echo -n "$i "; fi -+ ;; -+ *) -+ echo -n "$i " -+ ;; -+ esac -+ fi -+ done` - prepare_boot_cache= - - while [ "x$list" != "x" ] ; do + message="$(gettext_printf "Loading initial ramdisk ...")" diff --git a/grub2.changes b/grub2.changes index 3aa2911..19b5fab 100644 --- a/grub2.changes +++ b/grub2.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Sat May 7 12:33:43 CEST 2011 - jslaby@suse.de + +- fix build with gcc 4.6 +- build in parallel (fixed finally in 1.99) +- add translations from translations project +- update to 1.99-rc2 + * See NEWS file for changes + ------------------------------------------------------------------- Wed Oct 27 16:57:13 CEST 2010 - jslaby@suse.de diff --git a/grub2.rpmlintrc b/grub2.rpmlintrc index 8e30d5b..642056f 100644 --- a/grub2.rpmlintrc +++ b/grub2.rpmlintrc @@ -1,2 +1,7 @@ +addFilter("zero-length /boot/grub2/grub.cfg") +addFilter("non-etc-or-var-file-marked-as-conffile /boot/grub2/grub.cfg") +addFilter("non-conffile-in-etc /etc/bash_completion.d/grub") +addFilter("non-conffile-in-etc /etc/grub.d/README") +addFilter("statically-linked-binary .*/grub2/i386-pc/kernel.img") # We need to supply unstripped files for grub -addFilter("unstripped-binary-or-object .*") +addFilter("unstripped-binary-or-object .*/grub2/i386-pc/.*.mod") diff --git a/grub2.spec b/grub2.spec index 2548360..392cca4 100644 --- a/grub2.spec +++ b/grub2.spec @@ -1,7 +1,7 @@ # -# spec file for package grub2 (Version 1.98) +# spec file for package grub2 # -# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,11 +19,13 @@ Name: grub2 %ifarch x86_64 -BuildRequires: freetype2-devel-32bit gcc-32bit glibc-devel-32bit libncurses5-32bit libusb-1_0-devel-32bit ncurses-devel-32bit +BuildRequires: freetype2-devel-32bit gcc-32bit glibc-32bit glibc-devel-32bit +BuildRequires: libncurses5-32bit libusb-1_0-devel-32bit ncurses-devel-32bit %else -BuildRequires: freetype2-devel gcc glibc-devel libncurses5 libusb-1_0-devel ncurses-devel +BuildRequires: freetype2-devel gcc glibc-devel libncurses5 libusb-1_0-devel +BuildRequires: ncurses-devel %endif -BuildRequires: bison flex ruby +BuildRequires: bison device-mapper-devel flex lzma ruby xz # Modules always contain just 32-bit code %define _libdir %{_exec_prefix}/lib @@ -33,23 +35,27 @@ BuildRequires: bison flex ruby %ifarch x86_64 %define _target_platform i386-%{_vendor}-%{_target_os}%{?_gnu} %endif -Version: 1.98 +Version: 1.98.99.rc2 +%define tar_version 1.99~rc2 Release: 9 Summary: Bootloader with support for Linux, Multiboot and more Group: System/Boot License: GPLv3+ Url: http://www.gnu.org/software/grub/ -Source0: ftp://alpha.gnu.org/gnu/grub/grub-%{version}.tar.bz2 +Source0: ftp://alpha.gnu.org/gnu/grub/grub-%{tar_version}.tar.xz Source1: 90_persistent Source2: grub.default Source3: README.openSUSE Source4: grub2.rpmlintrc -Patch0: grub-1.95-grubdir.patch +# rsync -Lrtvz translationproject.org::tp/latest/grub/ po +Source5: translations-20110507.tar.bz2 +Patch0: gcc46-fixes.patch Patch2: grub2-linux.patch Patch3: gccwarn.patch -Patch4: grub-1.98-follow-dev-mapper-symlinks.patch PreReq: perl-Bootloader Requires: gettext-runtime +Requires(post): /sbin/install-info +Requires(preun):/sbin/install-info BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -70,17 +76,26 @@ file that is part of this package's documentation for more information. %prep -%setup -q -n grub-%{version} -%patch0 -p0 -b .grubdir -%patch2 -p0 -b .linux -%patch3 -p0 -b .gccwarn -%patch4 -p1 -b .dev-mapper +%setup -q -n grub-%{tar_version} -a 5 +(cd po && ls *.po | cut -d. -f1 | xargs) >po/LINGUAS +sed 's,@setfilename grub.info,@setfilename grub2.info,' docs/grub.texi >docs/grub2.texi +sed -i 's,grub.texi,grub2.texi,' docs/Makefile.am +%patch0 -p1 +%patch2 -p0 +%patch3 -p1 # README.openSUSE cp %{SOURCE3} . %build -#sh autogen.sh +#./autogen.sh + +# we don't want to let rpm to override *FLAGS by bogus ones +CFLAGS=" " +CXXFLAGS=" " +FFLAGS=" " +export CFLAGS CXXFLAGS FFLAGS + # -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 \ @@ -88,7 +103,7 @@ cp %{SOURCE3} . --enable-grub-emu-usb \ --program-transform-name=s,grub,%{name}, -make +make %{?_smp_mflags} %install make DESTDIR=$RPM_BUILD_ROOT install @@ -101,8 +116,6 @@ install -d $RPM_BUILD_ROOT/boot/%{name} touch $RPM_BUILD_ROOT/boot/%{name}/grub.cfg ln -s ../boot/%{name}/grub.cfg $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.cfg -# XXX: Remove for now, should be renamed to grub2.info -rm $RPM_BUILD_ROOT/%{_infodir}/grub.info* # Remove devel files rm $RPM_BUILD_ROOT/%{_libdir}/%{name}/*/*.h @@ -111,6 +124,9 @@ install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/default/grub %find_lang grub %post +/sbin/install-info %{_infodir}/grub-dev.info %{_infodir}/dir || : +/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || : + mkdir -p /boot/%{name}/ 2>/dev/null || true # Create device.map or reuse one from GRUB Legacy if [ ! -e /boot/%{name}/device.map ] ; then @@ -131,10 +147,15 @@ if [ -e /boot/%{name}/device.map ]; then fi %preun +if [ $1 = 0 ]; then + /sbin/install-info --delete %{_infodir}/grub-dev.info %{_infodir}/dir || : + /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || : +fi + exec >/dev/null if [ -e /boot/%{name}/core.img ] ; then - /sbin/update-bootloader --remove --image /boot/%{name}/core.img --name="GNU GRUB 2" - /sbin/update-bootloader --refresh + /sbin/update-bootloader --remove --image /boot/%{name}/core.img --name="GNU GRUB 2" || : + /sbin/update-bootloader --refresh || : ## XXX Ugly rm -f /boot/%{name}/*.mod rm -f /boot/%{name}/*.img @@ -142,50 +163,35 @@ if [ -e /boot/%{name}/core.img ] ; then rm -f /boot/%{name}/device.map fi -#%triggerin -- kernel, kernel-PAE +#%%triggerin -- kernel, kernel-PAE #exec >/dev/null 2>&1 ## Generate grub.cfg -#%{name}-mkconfig +#%%{name}-mkconfig # # -#%triggerun -- kernel, kernel-PAE +#%%triggerun -- kernel, kernel-PAE #exec >/dev/null 2>&1 ## Generate grub.cfg -#%{name}-mkconfig +#%%{name}-mkconfig %files -f grub.lang %defattr(-,root,root,-) %{_libdir}/%{name} %{_libdir}/grub/ -%{_sbindir}/%{name}-mkdevicemap -%{_sbindir}/%{name}-install -%{_sbindir}/%{name}-probe -%{_sbindir}/%{name}-setup -%{_sbindir}/%{name}-mkconfig -%{_sbindir}/%{name}-reboot -%{_sbindir}/%{name}-set-default -%{_bindir}/%{name}-bin2h -%{_bindir}/%{name}-mkisofs -%{_bindir}/%{name}-mkrelpath -%{_bindir}/%{name}-script-check -%{_bindir}/%{name}-mkimage -%{_bindir}/%{name}-mkelfimage -%{_bindir}/%{name}-editenv -%{_bindir}/%{name}-fstest -%{_bindir}/%{name}-mkfont -%{_bindir}/%{name}-mkrescue -%{_bindir}/%{name}-mkpasswd-pbkdf2 -%dir %{_sysconfdir}/grub.d -%config %{_sysconfdir}/grub.d/??_* -%{_sysconfdir}/grub.d/README -%{_sysconfdir}/%{name}.cfg +%{_sbindir}/%{name}-* +%{_bindir}/%{name}-* +%{_sysconfdir}/bash_completion.d/grub %config %{_sysconfdir}/default/grub +%dir %{_sysconfdir}/grub.d +%{_sysconfdir}/grub.d/README +%config %{_sysconfdir}/grub.d/??_* +%{_sysconfdir}/%{name}.cfg %dir /boot/%{name} # Actually, this is replaced by update-grub from scriptlets, # but it takes care of modified persistent part %config(noreplace) /boot/%{name}/grub.cfg %doc COPYING INSTALL NEWS README THANKS TODO ChangeLog README.openSUSE -#%exclude %{_mandir} -#%{_infodir}/%{name}.info* +%{_infodir}/grub-dev.info* +%{_infodir}/%{name}.info* %changelog diff --git a/translations-20110507.tar.bz2 b/translations-20110507.tar.bz2 new file mode 100644 index 0000000..0e086e6 --- /dev/null +++ b/translations-20110507.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b78742eedf41d22c410b77d31ac9744202c81472dd211f5c4a9f801e660cab8 +size 157473