2 # - reap out which in probe scripts and drop R: which
3 # - subpackages? e.g. modules and utils
4 # - check where is that locale path: /boot/grub/locale and fix it or change it
6 # --enable-grub-emu-usb conflicts with --enable-grub-emu-pci, emu-pci seems experimental
7 # - to build and install the `grub-emu' debugging utility we need to re-run build with --target=emu
8 # - put grub-emu to subpackage if it is fixed
11 %bcond_with grubemu # build grub-emu debugging utility
12 %bcond_without efiemu # build efiemu runtimes
13 %bcond_without pc # do not build for PC BIOS platform
14 %bcond_without efi # do not build for EFI platform
16 %if "%{cc_version}" < "3.4"
17 # cc does not support:
18 # cc1: sorry, unimplemented: code model `large' not supported yet
22 %ifnarch %{ix86} %{x8664}
25 %ifnarch %{ix86} %{x8664} ia64
30 # non-x86_64 arch doesn't support this
34 # the 'most natural' platform should go last
35 %ifarch %{ix86} %{x8664} ia64
36 %define platforms %{?with_efi:efi} %{?with_pc:pc}
38 %ifarch ppc ppc64 sparc64
39 %define platforms ieee1275
45 %define platforms loongson
48 %define _enable_debug_packages 0
50 Summary: GRand Unified Bootloader
51 Summary(de.UTF-8): GRUB2 - ein Bootloader für x86 und ppc
52 Summary(hu.UTF-8): GRUB2 - rendszerbetöltő x86 és ppc gépekhez
53 Summary(pl.UTF-8): GRUB2 - bootloader dla x86 i ppc
54 Summary(pt_BR.UTF-8): Gerenciador de inicialização GRUB2
60 Source0: http://ftp.gnu.org/gnu/grub/grub-%{version}.tar.xz
61 # Source0-md5: a1043102fbc7bcedbf53e7ee3d17ab91
63 Source2: update-grub.8
64 Source3: grub.sysconfig
65 Source4: grub-custom.cfg
66 Patch1: pld-sysconfdir.patch
67 Patch2: grub-garbage.patch
68 Patch3: grub-lvmdevice.patch
69 Patch4: pld-mkconfigdir.patch
70 Patch5: grub-mkconfig-diagnostics.patch
72 Patch7: %{name}-awk.patch
74 Patch9: %{name}-gets.patch
75 Patch10: %{name}-fonts_path.patch
76 Patch11: %{name}-tftp_fix.patch
77 Patch12: add-vlan-tag-support.patch
78 Patch13: just-say-linux.patch
79 Patch14: add-GRUB-DISABLE-SUBMENU-option.patch
80 Patch15: add-X-option-to-printf-functions.patch
81 Patch16: dhcp-client-id-and-uuid-options-added.patch
82 Patch17: fix-http-crash.patch
83 Patch18: Issue-separate-DNS-queries-for-ipv4-and-ipv6.patch
84 Patch19: search-for-specific-config-file-for-netboot.patch
85 Patch20: ignore-kernel-symlinks.patch
86 Patch21: choose-preferred-initrd.patch
87 URL: http://www.gnu.org/software/grub/
88 BuildRequires: autoconf >= 2.53
89 BuildRequires: automake >= 1:1.11.1-1
91 BuildRequires: device-mapper-devel
92 BuildRequires: flex >= 2.5.35
93 BuildRequires: fonts-TTF-DejaVu
94 BuildRequires: freetype-devel >= 2
96 BuildRequires: gettext-devel
97 BuildRequires: glibc-static
98 BuildRequires: help2man
99 BuildRequires: libfuse-devel
100 BuildRequires: libtool
101 BuildRequires: ncurses-devel
102 BuildRequires: rpm >= 4.4.9-56
103 BuildRequires: rpmbuild(macros) >= 1.213
104 BuildRequires: sed >= 4.0
105 BuildRequires: tar >= 1:1.22
106 BuildRequires: texinfo
108 BuildRequires: xz-devel
110 BuildRequires: /usr/lib/libc.so
111 %if "%{pld_release}" == "ac"
112 BuildRequires: libgcc32
114 BuildRequires: gcc-multilib
117 Requires: %{name}-platform = %{version}-%{release}
119 %ifarch %{ix86} %{x8664}
120 Suggests: %{name}-platform-pc
122 Suggests: cdrkit-mkisofs
126 ExclusiveArch: %{ix86} %{x8664} ia64 mips mipsel ppc ppc64 sparc64
127 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
129 %define _sbindir /sbin
130 %define _bindir %{_sbindir}
132 %define _datadir %{_libdir}
133 %define _libexecdir %{_libdir}/grub
134 %define _grubdir /boot/grub
135 %define _localedir /usr/share/locale
137 # part of grub code is not relocable (these are not Linux libs)
138 # stack protector also breaks non-Linux binaries
139 %define filterout_c -fPIC -O.
140 %undefine _ssp_cflags
141 %undefine _fortify_cflags
144 GRUB is a GPLed bootloader intended to unify bootloading across x86
145 operating systems. In addition to loading the Linux and *BSD kernels,
146 it implements the Multiboot standard, which allows for flexible
147 loading of multiple boot images (needed for modular kernels such as
150 GRUB 2 is derived from PUPA which was a research project to
151 investigate the next generation of GRUB. GRUB 2 has been rewritten
152 from scratch to clean up everything for modularity and portability.
154 GRUB 2 targets at the following goals:
155 - Scripting support, such as conditionals, loops, variables and
157 - Graphical interface.
158 - Dynamic loading of modules in order to extend itself at the run time
159 rather than at the build time.
160 - Portability for various architectures.
161 - Internationalization. This includes support for non-ASCII character
162 code, message catalogs like gettext, fonts, graphics console, and so
164 - Real memory management, to make GNU GRUB more extensible.
165 - Modular, hierarchical, object-oriented framework for file systems,
166 files, devices, drives, terminals, commands, partition tables and OS
168 - Cross-platform installation which allows for installing GRUB from a
169 different architecture.
170 - Rescue mode saves unbootable cases. Stage 1.5 was eliminated.
171 - Fix design mistakes in GRUB Legacy, which could not be solved for
172 backward-compatibility, such as the way of numbering partitions.
174 %description -l de.UTF-8
175 GRUB (GRand Unified Boot-loader) ist ein Bootloader, der oft auf
176 Rechnern eingesetzt wird, auf denen das freie Betriebssystem Linux
177 läuft. GRUB löst den betagten LILO (Linux-Loader) ab.
179 GRUB wurde innerhalb des GNU Hurd-Projektes als Boot-Loader entwickelt
180 und wird unter der GPL vertrieben. Aufgrund seiner höheren
181 Flexibilität verdrängt GRUB in vielen Linux-Distributionen den
182 traditionellen Boot-Loader LILO.
184 %description -l hu.UTF-8
185 GRUB egy GPL liszenszű rendszerbetöltő. Linux és *BSD kernelek
186 betöltése mellett támogatja a Multiboot standard-ot, amely lehetővé
187 teszi boot képek betöltését (moduláris kerneleknek kell, mint pl. a
190 GRUB2 céljai a következők:
191 - szkriptelés támogatása, úgymint feltételek, ciklusok, változók,
194 - modulok dinamikus betöltése futási időben
195 - hordozhatóság több architektúrára
196 - többnyelvűség: nem-ASCII karakterek támogatása, üzenetkatalógusok,
197 mint gettext, betűtípusok, grafikus konzolon, és így tovább
198 - valós memória kezelés, amellyel még bővíthetőbbé tehetjük
199 - moduláris, hierarchikus, objektum-orientált keretrendszer
200 fájlrendszerekhez, fájlokhoz, eszközökhöz, meghajtókhoz,
201 terminálokhoz, parancsokhoz, partíciós táblákhoz és OS betöltőkhöz
203 %description -l es.UTF-8
204 Éste es GRUB - Grand Unified Boot Loader - un administrador de
205 inicialización capaz de entrar en la mayoría de los sistemas
206 operacionales libres - Linux, FreeBSD, NetBSD, GNU Mach, etc. como
207 también en la mayoría de los sistemas operacionales comerciales para
210 El administrador GRUB puede ser una buena alternativa a LILO, para
211 usuarios conmás experiencia y que deseen obtener más recursos de su
212 cargador de inicialización (boot loader).
214 %description -l pl.UTF-8
215 GRUB jest bootloaderem na licencji GNU GPL, mającym na celu unifikację
216 procesu bootowania na systemach x86. Potrafi nie tylko ładować jądra
217 Linuksa i *BSD: posiada również implementację standardu Multiboot,
218 który pozwala na elastyczne ładowanie wielu obrazów bootowalnych
219 (czego wymagają modułowe jądra, takie jak GNU Hurd).
221 %description -l pt_BR.UTF-8
222 Esse é o GRUB - Grand Unified Boot Loader - um gerenciador de boot
223 capaz de entrar na maioria dos sistemas operacionais livres - Linux,
224 FreeBSD, NetBSD, GNU Mach, etc. assim como na maioria dos sistemas
225 operacionais comerciais para PC.
227 O GRUB pode ser uma boa alternativa ao LILO, para usuários mais
228 avançados e que querem mais recursos de seu boot loader.
230 %package -n bash-completion-%{name}
231 Summary: bash-completion for GRUB
232 Summary(pl.UTF-8): Bashowe uzupełnianie nazw dla GRUB-a
233 Group: Applications/Shells
234 Requires: bash-completion
236 %description -n bash-completion-%{name}
237 This package provides bash-completion for GRUB.
239 %description -n bash-completion-%{name} -l pl.UTF-8
240 Pakiet ten dostarcza bashowe uzupełnianie nazw dla GRUB-a.
243 Summary: PC BIOS platform support for GRUB
244 Summary(pl.UTF-8): Obsługa platformy PC BIOS dla GRUB-a
246 Provides: %{name}-platform = %{version}-%{release}
248 %description platform-pc
249 PC BIOS platform support for GRUB.
251 %description platform-pc -l pl.UTF-8
252 Obsługa platformy PC BIOS dla GRUB-a.
254 %package platform-efi
255 Summary: (U)EFI platform support for GRUB
256 Summary(pl.UTF-8): Obsługa platformy (U)EFI dla GRUB-a
259 Provides: %{name}-platform = %{version}-%{release}
261 %description platform-efi
262 (U)EFI platform support for GRUB.
264 %description platform-efi -l pl.UTF-8
265 Obsługa platformy (U)EFI dla GRUB-a.
268 Summary: GRUB font files converter
269 Summary(pl.UTF-8): Konwerter plików fontów GRUB-a
273 Converts common font file formats into PF2.
275 %description mkfont -l pl.UTF-8
276 Program do konwersji popularnych formatów plików fontów do PF2.
278 %package theme-starfield
279 Summary: starfield theme for GRUB
280 Summary(pl.UTF-8): Motyw starfield dla GRUB-a
283 %description theme-starfield
284 starfield theme for GRUB.
286 %description theme-starfield -l pl.UTF-8
287 Motyw starfield dla GRUB-a.
290 %setup -q -n grub-%{version}
313 %if "%{cc_version}" < "3.4"
314 grep -rl -- -Wno-missing-field-initializers . | xargs %{__sed} -i -e 's,-Wno-missing-field-initializers,,'
315 %{__sed} -i -e '/video_mod_CFLAGS/s/$/ -Wno-error/' conf/common.rmk
319 # if gold is used then grub doesn't even boot
321 #ln -s /usr/bin/ld.bfd our-ld/ld
322 #export PATH=$(pwd)/our-ld:$PATH
324 cp -f /usr/share/automake/config.sub .
328 echo timestamp > stamp-h.in
331 #export CFLAGS="%{rpmcflags} -Os %{?debug:-g}"
333 for platform in %{platforms} ; do
334 install -d build-${platform}
337 if [ "$platform" != "efi" ] ; then
338 platform_opts="--enable-efiemu%{!?with_efiemu:=no}"
344 # mawk stalls at ./genmoddep.awk, so force gawk
347 --with-platform=${platform} \
350 --enable-grub-emu-usb \
351 --enable-grub-emu-sdl \
352 --enable-grub-emu-pci \
355 TARGET_LDFLAGS=-static
362 rm -rf $RPM_BUILD_ROOT
364 for platform in %{platforms} ; do
367 pkgdatadir=%{_libexecdir} \
368 pkglibdir=%{_libexecdir} \
369 DESTDIR=$RPM_BUILD_ROOT
374 %{__rm} -r $RPM_BUILD_ROOT%{_localedir}/de@hebrew
375 %{__rm} -r $RPM_BUILD_ROOT%{_localedir}/en@{arabic,cyrillic,greek,hebrew,piglatin}
379 # this must be after 'make install'
380 install -d $RPM_BUILD_ROOT%{_libexecdir}/locale
382 install -d $RPM_BUILD_ROOT%{_grubdir}
383 cp -p docs/grub.cfg $RPM_BUILD_ROOT%{_grubdir}
386 cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_grubdir}/custom.cfg
387 %{__rm} $RPM_BUILD_ROOT/lib/grub.d/40_custom
389 install -p %{SOURCE1} $RPM_BUILD_ROOT%{_sbindir}/update-grub
390 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man8/update-grub.8
392 install -d $RPM_BUILD_ROOT/etc/sysconfig
393 cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/grub
395 # rm -f, because it sometimes exists, sometimes not, depending which texlive you have installed
396 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
398 # platform specific, unnecessarily always installed
399 %ifnarch %{ix86} %{x8664}
400 %{__rm} $RPM_BUILD_ROOT{%{_sbindir}/grub-bios-setup,%{_mandir}/man8/grub-bios-setup.8}
403 %{__rm} $RPM_BUILD_ROOT{%{_sbindir}/grub-sparc64-setup,%{_mandir}/man8/grub-sparc64-setup.8}
406 # core.img - bootable image generated by grub-mkimage(1) via grub-install(1)
407 touch $RPM_BUILD_ROOT%{_grubdir}/core.img
408 touch $RPM_BUILD_ROOT%{_grubdir}/device.map
410 # needs to be exactly 1KiB
411 # but we're ghosting it. so whom are we kidding here? :P (maybe %config it in future?)
412 dd bs=1024 if=/dev/zero count=1 of=$RPM_BUILD_ROOT%{_grubdir}/grubenv
415 rm -rf $RPM_BUILD_ROOT
417 %post -p %{_sbindir}/postshell
418 -/usr/sbin/fix-info-dir -c %{_infodir}
420 %postun -p %{_sbindir}/postshell
421 -/usr/sbin/fix-info-dir -c %{_infodir}
423 %triggerpostun -- %{name} < 2.00-0.1
424 # Note this trigger on version upgrade
425 # needed only for upgrade from old grub2 packages
426 # which contained modules in /boot/grub
427 # don't do anything on --downgrade
428 if [ $1 -le 1 ]; then
431 echo "Grub was upgraded, trying to setup it to boot sector"
432 /sbin/grub-install '(hd0)' || :
434 %triggerpostun -- %{name} < 1.99-7.3
435 # migrate /etc/grub.d/custom.cfg.rpmsave -> /boot/grub/custom.cfg
436 if [ -f %{_sysconfdir}/grub.d/custom.cfg.rpmsave ]; then
437 cp -f %{_grubdir}/custom.cfg{,.rpmnew}
438 mv -f %{_sysconfdir}/grub.d/custom.cfg.rpmsave %{_grubdir}/custom.cfg
442 %defattr(644,root,root,755)
443 %doc AUTHORS ChangeLog NEWS README THANKS TODO
444 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/grub
445 %attr(755,root,root) %{_sbindir}/grub-editenv
446 %attr(755,root,root) %{_sbindir}/grub-fstest
447 %attr(755,root,root) %{_sbindir}/grub-kbdcomp
448 %attr(755,root,root) %{_sbindir}/grub-install
449 %attr(755,root,root) %{_sbindir}/grub-menulst2cfg
450 %attr(755,root,root) %{_sbindir}/grub-mkconfig
451 %attr(755,root,root) %{_sbindir}/grub-mklayout
452 %attr(755,root,root) %{_sbindir}/grub-mknetdir
453 %attr(755,root,root) %{_sbindir}/grub-mkpasswd-pbkdf2
454 %attr(755,root,root) %{_sbindir}/grub-mkrelpath
455 %attr(755,root,root) %{_sbindir}/grub-mkrescue
456 %attr(755,root,root) %{_sbindir}/grub-mkstandalone
457 %attr(755,root,root) %{_sbindir}/grub-mount
458 %attr(755,root,root) %{_sbindir}/grub-ofpathname
459 %attr(755,root,root) %{_sbindir}/grub-reboot
460 %attr(755,root,root) %{_sbindir}/grub-script-check
461 %attr(755,root,root) %{_sbindir}/grub-set-default
462 %attr(755,root,root) %{_sbindir}/update-grub
463 %ifarch %{ix86} %{x8664}
464 %attr(755,root,root) %{_sbindir}/grub-bios-setup
465 %{_mandir}/man8/grub-bios-setup.8*
467 %ifarch %{ix86} %{x8664}
468 %attr(755,root,root) %{_sbindir}/grub-mkimage
469 %{_mandir}/man1/grub-mkimage.1*
471 %attr(755,root,root) %{_sbindir}/grub-probe
472 %{_mandir}/man8/grub-probe.8*
475 %attr(755,root,root) %{_sbindir}/grub-sparc64-setup
476 %{_mandir}/man8/grub-sparc64-setup.8*
478 %{_mandir}/man1/grub-editenv.1*
479 %{_mandir}/man1/grub-fstest.1*
480 %{_mandir}/man1/grub-kbdcomp.1*
481 %{_mandir}/man1/grub-menulst2cfg.1*
482 %{_mandir}/man1/grub-mklayout.1*
483 %{_mandir}/man1/grub-mkpasswd-pbkdf2.1*
484 %{_mandir}/man1/grub-mkrelpath.1*
485 %{_mandir}/man1/grub-mkrescue.1*
486 %{_mandir}/man1/grub-mkstandalone.1*
487 %{_mandir}/man1/grub-mount.1*
488 %{_mandir}/man1/grub-script-check.1*
489 %{_mandir}/man8/grub-install.8*
490 %{_mandir}/man8/grub-mkconfig.8*
491 %{_mandir}/man8/grub-mknetdir.8*
492 %{_mandir}/man8/grub-ofpathname.8*
493 %{_mandir}/man8/grub-reboot.8*
494 %{_mandir}/man8/grub-set-default.8*
495 %{_mandir}/man8/update-grub.8*
497 %attr(755,root,root) %{_sbindir}/grub-emu
498 %{_mandir}/man8/grub-emu.8*
500 %{_libexecdir}/grub-mkconfig_lib
504 # XXX: check this locale dir location and if it is neccesaary to exist on /boot
506 %dir %{_libexecdir}/locale
507 %config(noreplace) %verify(not md5 mtime size) %{_grubdir}/grub.cfg
508 %config(noreplace) %verify(not md5 mtime size) %{_grubdir}/custom.cfg
510 # generated by grub at runtime
511 %ghost %{_grubdir}/device.map
512 %ghost %{_grubdir}/core.img
513 %ghost %{_grubdir}/grubenv
516 %doc /lib/grub.d/README
517 %attr(755,root,root) /lib/grub.d/00_header
518 %attr(755,root,root) /lib/grub.d/10_linux
519 %attr(755,root,root) /lib/grub.d/20_linux_xen
520 %attr(755,root,root) /lib/grub.d/30_os-prober
521 %attr(755,root,root) /lib/grub.d/41_custom
523 %ifarch %{ix86} %{x8664}
524 %attr(755,root,root) %{_sbindir}/grub-probe
525 %{_mandir}/man8/grub-probe.8*
528 %{_infodir}/grub*.info*
530 %dir %{_datadir}/grub/themes
534 %defattr(644,root,root,755)
535 %dir %{_libexecdir}/*-pc
536 %{_libexecdir}/*-pc/modinfo.sh
537 %{_libexecdir}/*-pc/*.exec
538 %{_libexecdir}/*-pc/*.image
539 %{_libexecdir}/*-pc/*.lst
540 %{_libexecdir}/*-pc/*.mod
541 %{_libexecdir}/*-pc/*.module
542 %{_libexecdir}/*-pc/lzma_decompress.img
543 %{_libexecdir}/*-pc/config.h
544 %{_libexecdir}/*-pc/gdb_grub
545 %{_libexecdir}/*-pc/gmodule.pl
547 %{_libexecdir}/*-pc/efiemu*.o
549 %{_libexecdir}/*-pc/kernel.img
550 %ifarch %{ix86} %{x8664} sparc sparc64
551 %{_libexecdir}/*-pc/boot.img
552 %{_libexecdir}/*-pc/cdboot.img
553 %{_libexecdir}/*-pc/diskboot.img
554 %{_libexecdir}/*-pc/lnxboot.img
555 %{_libexecdir}/*-pc/pxeboot.img
561 %defattr(644,root,root,755)
562 %dir %{_libexecdir}/*-efi
563 %{_libexecdir}/*-efi/modinfo.sh
564 %{_libexecdir}/*-efi/*.exec
565 %{_libexecdir}/*-efi/*.lst
566 %{_libexecdir}/*-efi/*.mod
567 %{_libexecdir}/*-efi/*.module
568 %{_libexecdir}/*-efi/config.h
569 %{_libexecdir}/*-efi/gdb_grub
570 %{_libexecdir}/*-efi/gmodule.pl
571 %{_libexecdir}/*-efi/kernel.img
575 %defattr(644,root,root,755)
576 %attr(755,root,root) %{_sbindir}/grub-mkfont
577 %{_mandir}/man1/grub-mkfont.1*
579 %files theme-starfield
580 %defattr(644,root,root,755)
581 %{_datadir}/grub/themes/starfield
583 %files -n bash-completion-%{name}
584 %defattr(644,root,root,755)
585 /etc/bash_completion.d/grub