]> git.pld-linux.org Git - packages/grub2.git/blob - grub2.spec
Dropped the target_cpu macro (not needed here)
[packages/grub2.git] / grub2.spec
1 # TODO
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
5 # - grubemu notes
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
9 # - warning: Installed (but unpackaged) file(s) found:
10 #   /sbin/grub-sparc64-setup
11 #   /usr/share/man/man8/grub-sparc64-setup.8.gz
12
13 #   /boot/grub/config.h
14 #   /etc/bash_completion.d/grub
15 #   /sbin/grub-sparc64-setup
16 #   /boot/grub/gdb_grub
17 #   /boot/grub/gmodule.pl
18 #   /sbin/grub-sparc64-setup
19 #
20 # Conditional build:
21 %bcond_with     grubemu # build grub-emu debugging utility
22 %bcond_without  efiemu  # build efiemu runtimes
23 %bcond_without  pc      # do not build for PC BIOS platform
24 %bcond_without  efi     # do not build for EFI platform
25
26 %if "%{cc_version}" < "3.4"
27 # cc does not support:
28 # cc1: sorry, unimplemented: code model `large' not supported yet
29 %undefine       with_efiemu
30 %endif
31
32 %ifnarch %{x8664}
33 # non-x86_64 arch doesn't support this
34 %undefine       with_efiemu
35 %endif
36
37 # the 'most natural' platform should go last
38 %define         platforms %{?with_efi:efi} %{?with_pc:pc}
39
40 Summary:        GRand Unified Bootloader
41 Summary(de.UTF-8):      GRUB2 - ein Bootloader für x86 und ppc
42 Summary(hu.UTF-8):      GRUB2 - rendszerbetöltő x86 és ppc gépekhez
43 Summary(pl.UTF-8):      GRUB2 - bootloader dla x86 i ppc
44 Summary(pt_BR.UTF-8):   Gerenciador de inicialização GRUB2
45 Name:           grub2
46 Version:        2.00
47 Release:        0.1
48 License:        GPL v2
49 Group:          Base
50 Source0:        http://ftp.gnu.org/gnu/grub/grub-%{version}.tar.xz
51 # Source0-md5:  a1043102fbc7bcedbf53e7ee3d17ab91
52 Source1:        update-grub
53 Source2:        update-grub.8
54 Source3:        grub.sysconfig
55 Source4:        grub-custom.cfg
56 URL:            http://www.gnu.org/software/grub/
57 Patch0:         pld-initrd.patch
58 Patch1:         pld-sysconfdir.patch
59 Patch2:         grub-garbage.patch
60 Patch3:         grub-lvmdevice.patch
61 Patch4:         pld-mkconfigdir.patch
62 Patch5:         grub-mkconfig-diagnostics.patch
63 Patch6:         ppc.patch
64 Patch7:         %{name}-awk.patch
65 Patch8:         posix.patch
66 Patch9:         %{name}-gets.patch
67 Patch10:        %{name}-fonts_path.patch
68 BuildRequires:  autoconf >= 2.53
69 BuildRequires:  automake >= 1:1.11.1-1
70 BuildRequires:  bison
71 BuildRequires:  device-mapper-devel
72 BuildRequires:  fonts-TTF-DejaVu
73 BuildRequires:  freetype-devel
74 BuildRequires:  gawk
75 BuildRequires:  gettext-devel
76 BuildRequires:  help2man
77 BuildRequires:  libtool
78 BuildRequires:  texinfo
79 %ifarch %{x8664}
80 BuildRequires:  /usr/lib/libc.so
81 %if "%{pld_release}" == "ac"
82 BuildRequires:  libgcc32
83 %else
84 BuildRequires:  gcc-multilib
85 %endif
86 %endif
87 BuildRequires:  glibc-static
88 BuildRequires:  ncurses-devel
89 BuildRequires:  rpm >= 4.4.9-56
90 BuildRequires:  rpmbuild(macros) >= 1.213
91 BuildRequires:  sed >= 4.0
92 Requires:       which
93 Suggests:       cdrkit-mkisofs
94 Suggests:       os-prober
95 Provides:       bootloader
96 Conflicts:      grub
97 Suggests:       %{name}-pc
98 Suggests:       %{name}-efi
99 ExclusiveArch:  %{ix86} %{x8664} ppc sparc64
100 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
101
102 %define         _sbindir        /sbin
103 %define         _bindir         %{_sbindir}
104 %define         _libdir         /lib
105 %define         _datadir        %{_libdir}
106 %define         _libexecdir     %{_libdir}/grub
107 %define         _grubdir        /boot/grub
108
109 # part of grub code is not relocable (these are not Linux libs)
110 # stack protector also breaks non-Linux binaries
111 %define         filterout_c     -fPIC -fstack-protector
112
113 %description
114 GRUB is a GPLed bootloader intended to unify bootloading across x86
115 operating systems. In addition to loading the Linux and *BSD kernels,
116 it implements the Multiboot standard, which allows for flexible
117 loading of multiple boot images (needed for modular kernels such as
118 the GNU Hurd).
119
120 GRUB 2 is derived from PUPA which was a research project to
121 investigate the next generation of GRUB. GRUB 2 has been rewritten
122 from scratch to clean up everything for modularity and portability.
123
124 GRUB 2 targets at the following goals:
125 - Scripting support, such as conditionals, loops, variables and
126   functions.
127 - Graphical interface.
128 - Dynamic loading of modules in order to extend itself at the run time
129   rather than at the build time.
130 - Portability for various architectures.
131 - Internationalization. This includes support for non-ASCII character
132   code, message catalogs like gettext, fonts, graphics console, and so
133   on.
134 - Real memory management, to make GNU GRUB more extensible.
135 - Modular, hierarchical, object-oriented framework for file systems,
136   files, devices, drives, terminals, commands, partition tables and OS
137   loaders.
138 - Cross-platform installation which allows for installing GRUB from a
139   different architecture.
140 - Rescue mode saves unbootable cases. Stage 1.5 was eliminated.
141 - Fix design mistakes in GRUB Legacy, which could not be solved for
142   backward-compatibility, such as the way of numbering partitions.
143
144 %description -l de.UTF-8
145 GRUB (GRand Unified Boot-loader) ist ein Bootloader, der oft auf
146 Rechnern eingesetzt wird, auf denen das freie Betriebssystem Linux
147 läuft. GRUB löst den betagten LILO (Linux-Loader) ab.
148
149 GRUB wurde innerhalb des GNU Hurd-Projektes als Boot-Loader entwickelt
150 und wird unter der GPL vertrieben. Aufgrund seiner höheren
151 Flexibilität verdrängt GRUB in vielen Linux-Distributionen den
152 traditionellen Boot-Loader LILO.
153
154 %description -l hu.UTF-8
155 GRUB egy GPL liszenszű rendszerbetöltő. Linux és *BSD kernelek
156 betöltése mellett támogatja a Multiboot standard-ot, amely lehetővé
157 teszi boot képek betöltését (moduláris kerneleknek kell, mint pl. a
158 GNU Hurd).
159
160 GRUB2 céljai a következők:
161 - szkriptelés támogatása, úgymint feltételek, ciklusok, változók,
162   függvények.
163 - grafikus felület
164 - modulok dinamikus betöltése futási időben
165 - hordozhatóság több architektúrára
166 - többnyelvűség: nem-ASCII karakterek támogatása, üzenetkatalógusok,
167   mint gettext, betűtípusok, grafikus konzolon, és így tovább
168 - valós memória kezelés, amellyel még bővíthetőbbé tehetjük
169 - moduláris, hierarchikus, objektum-orientált keretrendszer
170   fájlrendszerekhez, fájlokhoz, eszközökhöz, meghajtókhoz,
171   terminálokhoz, parancsokhoz, partíciós táblákhoz és OS betöltőkhöz
172
173 %description -l es.UTF-8
174 Éste es GRUB - Grand Unified Boot Loader - un administrador de
175 inicialización capaz de entrar en la mayoría de los sistemas
176 operacionales libres - Linux, FreeBSD, NetBSD, GNU Mach, etc. como
177 también en la mayoría de los sistemas operacionales comerciales para
178 PC.
179
180 El administrador GRUB puede ser una buena alternativa a LILO, para
181 usuarios conmás experiencia y que deseen obtener más recursos de su
182 cargador de inicialización (boot loader).
183
184 %description -l pl.UTF-8
185 GRUB jest bootloaderem na licencji GNU, mającym na celu unifikację
186 procesu bootowania na systemach x86. Potrafi nie tylko ładować jądra
187 Linuksa i *BSD: posiada również implementacje standardu Multiboot,
188 który pozwala na elastyczne ładowanie wielu obrazów bootowalnych
189 (czego wymagają modułowe jądra, takie jak GNU Hurd).
190
191 %description -l pt_BR.UTF-8
192 Esse é o GRUB - Grand Unified Boot Loader - um gerenciador de boot
193 capaz de entrar na maioria dos sistemas operacionais livres - Linux,
194 FreeBSD, NetBSD, GNU Mach, etc. assim como na maioria dos sistemas
195 operacionais comerciais para PC.
196
197 O GRUB pode ser uma boa alternativa ao LILO, para usuários mais
198 avançados e que querem mais recursos de seu boot loader.
199
200 %package -n bash-completion-%{name}
201 Summary:        bash-completion for GRUB
202 Summary(pl.UTF-8):      bashowe uzupełnianie nazw dla GRUB
203 Group:          Applications/Shells
204 Requires:       bash-completion
205
206 %description -n bash-completion-%{name}
207 This package provides bash-completion for GRUB.
208
209 %description -n bash-completion-%{name} -l pl.UTF-8
210 Pakiet ten dostarcza bashowe uzupełnianie nazw dla GRUB.
211
212 %package pc
213 Summary:        PC BIOS platform support for GRUB
214 Group:          Base
215 Requires:       %{name} = %{version}-%{release}
216
217 %description pc
218 PC BIOS platform support for GRUB.
219
220 %package efi
221 Summary:        (U)EFI platform support for GRUB
222 Group:          Base
223 Requires:       %{name} = %{version}-%{release}
224
225 %description efi
226 (U)EFI platform support for GRUB.
227
228 %package mkfont
229 Summary:        GRUB font files converter
230 Group:          Base
231
232 %description mkfont
233 Converts common font file formats into PF2.
234
235 %prep
236 %setup -q -n grub-%{version}
237 %patch0 -p1
238 %patch1 -p1
239 %patch2 -p1
240 %patch3 -p1
241 %patch4 -p1
242 %patch5 -p1
243 %patch6 -p1
244 %patch7 -p1
245 %patch8 -p1
246 %patch9 -p1
247 %patch10 -p1
248
249 %if "%{cc_version}" < "3.4"
250 grep -rl -- -Wno-missing-field-initializers . | xargs %{__sed} -i -e 's,-Wno-missing-field-initializers,,'
251 %{__sed} -i -e '/video_mod_CFLAGS/s/$/ -Wno-error/' conf/common.rmk
252 %endif
253
254 %build
255 # if gold is used then grub doesn't even boot
256 install -d our-ld
257 ln -s /usr/bin/ld.bfd our-ld/ld
258 export PATH=$(pwd)/our-ld:$PATH
259
260 cp -f /usr/share/automake/config.sub .
261 %{__libtoolize}
262 %{__aclocal} -I m4
263 %{__autoheader}
264 echo timestamp > stamp-h.in
265 %{__autoconf}
266 export CFLAGS="%{rpmcflags} -Os %{?debug:-g}"
267
268 for platform in %{platforms} ; do
269         install -d build-${platform}
270         cd build-${platform}
271
272         if [ "$platform" != "efi" ] ; then
273                 platform_opts="--%{!?with_efiemu:dis}%{?with_efiemu:en}able-efiemu"
274         else
275                 platform_opts=""
276         fi
277
278         ln -s ../configure .
279         # mawk stalls at ./genmoddep.awk, so force gawk
280         AWK=gawk \
281         %configure \
282                 --with-platform=${platform} \
283                 --disable-werror \
284         %if %{with grubemu}
285                 --enable-grub-emu-usb \
286                 --enable-grub-emu-sdl \
287                 --enable-grub-emu-pci \
288         %endif
289                 $platform_opts \
290                 TARGET_LDFLAGS=-static
291
292         %{__make}
293         cd ..
294 done
295
296 %install
297 rm -rf $RPM_BUILD_ROOT
298
299 for platform in %{platforms} ; do
300         cd build-${platform}
301         %{__make} install \
302                 pkgdatadir=%{_libexecdir} \
303                 pkglibdir=%{_libexecdir} \
304                 DESTDIR=$RPM_BUILD_ROOT
305         cd ..
306 done
307
308 # not in Th (?)
309 %{__rm} -r $RPM_BUILD_ROOT%{_localedir}/de@hebrew
310 %{__rm} -r $RPM_BUILD_ROOT%{_localedir}/en@{arabic,cyrillic,greek,hebrew,piglatin}
311
312 %find_lang grub
313
314 # this must be after 'make install'
315 install -d $RPM_BUILD_ROOT%{_libexecdir}/locale
316
317 install -d $RPM_BUILD_ROOT%{_grubdir}
318 cp -p docs/grub.cfg $RPM_BUILD_ROOT%{_grubdir}
319
320 # grub.d/41_custom
321 cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_grubdir}/custom.cfg
322 %{__rm} $RPM_BUILD_ROOT/lib/grub.d/40_custom
323
324 install -p %{SOURCE1} $RPM_BUILD_ROOT%{_sbindir}/update-grub
325 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man8/update-grub.8
326
327 install -d $RPM_BUILD_ROOT/etc/sysconfig
328 cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/grub
329
330 # rm -f, because it sometimes exists, sometimes not, depending which texlive you have installed
331 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
332
333 # core.img - bootable image generated by grub-mkimage(1) via grub-install(1)
334 touch $RPM_BUILD_ROOT%{_grubdir}/core.img
335 touch $RPM_BUILD_ROOT%{_grubdir}/device.map
336
337 # needs to be exactly 1KiB
338 # but we're ghosting it. so whom are we kidding here? :P (maybe %config it in future?)
339 dd bs=1024 if=/dev/zero count=1 of=$RPM_BUILD_ROOT%{_grubdir}/grubenv
340
341 %clean
342 rm -rf $RPM_BUILD_ROOT
343
344 %post -p %{_sbindir}/postshell
345 -/usr/sbin/fix-info-dir -c %{_infodir}
346
347 %postun -p %{_sbindir}/postshell
348 -/usr/sbin/fix-info-dir -c %{_infodir}
349
350 %triggerpostun -- %{name} < %{version}-0
351 # Note this trigger on version upgrade
352 # don't do anything on --downgrade
353 if [ $1 -le 1 ]; then
354         exit 0
355 fi
356 echo "Grub was upgraded, trying to setup it to boot sector"
357 /sbin/grub-install '(hd0)' || :
358
359 %triggerpostun -- %{name} < 1.99-7.3
360 # migrate /etc/grub.d/custom.cfg.rpmsave  -> /boot/grub/custom.cfg
361 if [ -f %{_sysconfdir}/grub.d/custom.cfg.rpmsave ]; then
362         cp -f %{_grubdir}/custom.cfg{,.rpmnew}
363         mv -f  %{_sysconfdir}/grub.d/custom.cfg.rpmsave %{_grubdir}/custom.cfg
364 fi
365
366 %files -f grub.lang
367 %defattr(644,root,root,755)
368 %doc AUTHORS ChangeLog NEWS README THANKS TODO
369 %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/grub
370 %attr(755,root,root) %{_sbindir}/grub-bios-setup
371 %attr(755,root,root) %{_sbindir}/grub-editenv
372 %attr(755,root,root) %{_sbindir}/grub-fstest
373 %attr(755,root,root) %{_sbindir}/grub-kbdcomp
374 %attr(755,root,root) %{_sbindir}/grub-install
375 %attr(755,root,root) %{_sbindir}/grub-menulst2cfg
376 %attr(755,root,root) %{_sbindir}/grub-mkconfig
377 %attr(755,root,root) %{_sbindir}/grub-mklayout
378 %attr(755,root,root) %{_sbindir}/grub-mknetdir
379 %attr(755,root,root) %{_sbindir}/grub-mkpasswd-pbkdf2
380 %attr(755,root,root) %{_sbindir}/grub-mkrelpath
381 %attr(755,root,root) %{_sbindir}/grub-mkrescue
382 %attr(755,root,root) %{_sbindir}/grub-mkstandalone
383 %attr(755,root,root) %{_sbindir}/grub-mount
384 %attr(755,root,root) %{_sbindir}/grub-ofpathname
385 %attr(755,root,root) %{_sbindir}/grub-reboot
386 %attr(755,root,root) %{_sbindir}/grub-script-check
387 %attr(755,root,root) %{_sbindir}/grub-set-default
388 %attr(755,root,root) %{_sbindir}/update-grub
389 %ifarch %{ix86} %{x8664}
390 %attr(755,root,root) %{_sbindir}/grub-mkimage
391 %{_mandir}/man1/grub-mkimage.1*
392 %else
393 %attr(755,root,root) %{_sbindir}/grub-probe
394 %{_mandir}/man8/grub-probe.8*
395 %endif
396 %{_mandir}/man1/grub-editenv.1*
397 %{_mandir}/man1/grub-fstest.1*
398 %{_mandir}/man1/grub-kbdcomp.1*
399 %{_mandir}/man1/grub-menulst2cfg.1*
400 %{_mandir}/man1/grub-mklayout.1*
401 %{_mandir}/man1/grub-mkpasswd-pbkdf2.1*
402 %{_mandir}/man1/grub-mkrelpath.1*
403 %{_mandir}/man1/grub-mkrescue.1*
404 %{_mandir}/man1/grub-mkstandalone.1*
405 %{_mandir}/man1/grub-mount.1*
406 %{_mandir}/man1/grub-script-check.1*
407 %{_mandir}/man8/grub-bios-setup.8*
408 %{_mandir}/man8/grub-install.8*
409 %{_mandir}/man8/grub-mkconfig.8*
410 %{_mandir}/man8/grub-mknetdir.8*
411 %{_mandir}/man8/grub-ofpathname.8*
412 %{_mandir}/man8/grub-reboot.8*
413 %{_mandir}/man8/grub-set-default.8*
414 %{_mandir}/man8/update-grub.8*
415 %if %{with grubemu}
416 %attr(755,root,root) %{_sbindir}/grub-emu
417 %{_mandir}/man8/grub-emu.8*
418 %endif
419 %{_libexecdir}/grub-mkconfig_lib
420
421 %dir %{_grubdir}
422 %dir %{_libexecdir}
423 # XXX: check this locale dir location and if it is neccesaary to exist on /boot
424
425 %dir %{_libexecdir}/locale
426 %config(noreplace) %verify(not md5 mtime size) %{_grubdir}/grub.cfg
427 %config(noreplace) %verify(not md5 mtime size) %{_grubdir}/custom.cfg
428
429 # generated by grub at runtime
430 %ghost %{_grubdir}/device.map
431 %ghost %{_grubdir}/core.img
432 %ghost %{_grubdir}/grubenv
433
434 %dir /lib/grub.d
435 %doc /lib/grub.d/README
436 %attr(755,root,root) /lib/grub.d/00_header
437 %attr(755,root,root) /lib/grub.d/10_linux
438 %attr(755,root,root) /lib/grub.d/20_linux_xen
439 %attr(755,root,root) /lib/grub.d/30_os-prober
440 %attr(755,root,root) /lib/grub.d/41_custom
441
442 %ifarch %{ix86} %{x8664}
443 %attr(755,root,root) %{_sbindir}/grub-probe
444 %{_mandir}/man8/grub-probe.8*
445 %endif
446
447 %{_infodir}/grub*.info*
448
449 %if %{with pc}
450 %files pc
451 %defattr(644,root,root,755)
452 %dir %{_libexecdir}/*-pc
453 %{_libexecdir}/*-pc/modinfo.sh
454 %{_libexecdir}/*-pc/*.exec
455 %{_libexecdir}/*-pc/*.image
456 %{_libexecdir}/*-pc/*.lst
457 %{_libexecdir}/*-pc/*.mod
458 %{_libexecdir}/*-pc/*.module
459 %{_libexecdir}/*-pc/lzma_decompress.img
460 %{_libexecdir}/*-pc/config.h
461 %{_libexecdir}/*-pc/gdb_grub
462 %{_libexecdir}/*-pc/gmodule.pl
463 %if %{with efiemu}
464 %ifarch %{x8664}
465 %{_libexecdir}/*-pc/efiemu*.o
466 %endif
467 %endif
468 %{_libexecdir}/*-pc/kernel.img
469 %ifarch %{ix86} %{x8664} sparc sparc64
470 %{_libexecdir}/*-pc/boot.img
471 %{_libexecdir}/*-pc/cdboot.img
472 %{_libexecdir}/*-pc/diskboot.img
473 %{_libexecdir}/*-pc/lnxboot.img
474 %{_libexecdir}/*-pc/pxeboot.img
475 %endif
476 %endif
477
478 %if %{with efi}
479 %files efi
480 %defattr(644,root,root,755)
481 %dir %{_libexecdir}/*-efi
482 %{_libexecdir}/*-efi/modinfo.sh
483 %{_libexecdir}/*-efi/*.exec
484 %{_libexecdir}/*-efi/*.lst
485 %{_libexecdir}/*-efi/*.mod
486 %{_libexecdir}/*-efi/*.module
487 %{_libexecdir}/*-efi/config.h
488 %{_libexecdir}/*-efi/gdb_grub
489 %{_libexecdir}/*-efi/gmodule.pl
490 %{_libexecdir}/*-efi/kernel.img
491 %endif
492
493 %files mkfont
494 %defattr(644,root,root,755)
495 %{_mandir}/man1/grub-mkfont.1*
496 %attr(755,root,root) %{_sbindir}/grub-mkfont
497
498 %files -n bash-completion-%{name}
499 %defattr(644,root,root,755)
500 /etc/bash_completion.d/grub
This page took 0.089488 seconds and 4 git commands to generate.