Advertisement
Guest User

mw

a guest
Feb 7th, 2010
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.58 KB | None | 0 0
  1. #!/usr/bin/make -f
  2.  
  3. SHELL := bash
  4. package := grub2
  5.  
  6. DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)
  7.  
  8. include /usr/share/cdbs/1/rules/debhelper.mk
  9. include /usr/share/cdbs/1/rules/simple-patchsys.mk
  10.  
  11. CFLAGS := -g -Wall
  12.  
  13. ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
  14. CFLAGS += -O0
  15. else
  16. CFLAGS += -O2
  17. endif
  18.  
  19. CC := gcc-4.4
  20.  
  21. # grub-extras components
  22. export enable_zfs := yes
  23. export enable_915resolution := yes
  24.  
  25. CONFIGURE = CC=$(CC) \
  26. $(CURDIR)/configure --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --includedir="\$${prefix}/include" \
  27. --mandir="\$${prefix}/share/man" --infodir="\$${prefix}/share/info" --sysconfdir=/etc --localstatedir=/var \
  28. --libexecdir="\$${prefix}/lib/$(package)" --srcdir=$(CURDIR) \
  29. --enable-grub-emu --enable-grub-mkfont --disable-grub-fstest
  30.  
  31. DEB_UPDATE_RCD_PARAMS_grub-common += start 99 2 3 4 5 .
  32.  
  33. AUTOGEN_FILES = configure config.h.in conf/*.mk
  34. AUTOGEN_DEB_FILES = docs examples manpages config templates postinst postrm dirs install
  35.  
  36. $(AUTOGEN_FILES): autogen.sh configure.ac conf/*.rmk
  37. ./autogen.sh
  38.  
  39. configure/grub-pc configure/grub-ieee1275 configure/grub-coreboot:: $(AUTOGEN_FILES)
  40. mkdir -p $(subst configure/,build/,$@)
  41. cd $(subst configure/,build/,$@) && $(CONFIGURE) --with-platform=$(subst configure/grub-,,$@)
  42.  
  43. # This name scheme leaves room for things like ia64 or amd32 someday
  44. configure/grub-efi-ia32:: $(AUTOGEN_FILES)
  45. mkdir -p $(subst configure/,build/,$@)
  46. cd $(subst configure/,build/,$@) && $(CONFIGURE) --with-platform=efi --target=i386-pe --program-prefix=""
  47. configure/grub-efi-amd64:: $(AUTOGEN_FILES)
  48. mkdir -p $(subst configure/,build/,$@)
  49. cd $(subst configure/,build/,$@) && $(CONFIGURE) --with-platform=efi --target=amd64-pe --program-prefix=""
  50.  
  51. configure/grub-firmware-qemu:: $(AUTOGEN_FILES)
  52. mkdir -p $(subst configure/,build/,$@)
  53. cd $(subst configure/,build/,$@) && $(CONFIGURE) --with-platform=qemu
  54.  
  55. configure/grub-common configure/grub-emu:: $(AUTOGEN_FILES)
  56. mkdir -p $(subst configure/,build/,$@)
  57. cd $(subst configure/,build/,$@) && $(CONFIGURE)
  58.  
  59. build/grub-common build/grub-pc build/grub-efi-ia32 build/grub-efi-amd64 build/grub-ieee1275 build/grub-coreboot::
  60. $(MAKE) -C $@
  61.  
  62. build/grub-emu::
  63. $(MAKE) -C $@ grub-emu
  64.  
  65. build/grub-rescue-pc:: build/grub-pc
  66. mkdir -p $@
  67. mkdir -p $@/rescue-disk/boot/grub
  68. cp docs/grub.cfg $@/rescue-disk/boot/grub/
  69. $(CURDIR)/build/grub-pc/grub-mkrescue \
  70. --pkglibdir=$(CURDIR)/build/grub-pc \
  71. --grub-mkimage=$(CURDIR)/build/grub-pc/grub-mkimage \
  72. --overlay=$@/rescue-disk/ \
  73. --image-type=floppy \
  74. $(CURDIR)/$@/grub-rescue-floppy.img
  75. $(CURDIR)/build/grub-pc/grub-mkrescue \
  76. --pkglibdir=$(CURDIR)/build/grub-pc \
  77. --grub-mkimage=$(CURDIR)/build/grub-pc/grub-mkimage \
  78. --overlay=$@/rescue-disk/ \
  79. --image-type=cdrom \
  80. $(CURDIR)/$@/grub-rescue-cdrom.iso
  81.  
  82. build/grub-firmware-qemu::
  83. $(MAKE) -C $@
  84. grub_dir=`mktemp -d` ; \
  85. grub_memdisk=`mktemp` ; \
  86. mkdir -p $${grub_dir}/boot/grub ; \
  87. cp debian/grub-firmware-qemu_grub.cfg $${grub_dir}/boot/grub/grub.cfg ; \
  88. tar -cf - -C $${grub_dir} boot > $${grub_memdisk} ; \
  89. $(CURDIR)/$@/grub-mkimage \
  90. -d $(CURDIR)/$@ \
  91. $(CURDIR)/$@/*.mod \
  92. -m $${grub_memdisk} \
  93. -o $(CURDIR)/$@/grub.bin
  94.  
  95. install/grub-emu::
  96. mkdir -p $(CURDIR)/debian/$(subst install/,,$@)/usr/sbin
  97. install -m755 build/grub-emu/grub-emu $(CURDIR)/debian/$(subst install/,,$@)/usr/sbin/grub-emu
  98.  
  99. install/grub-pc install/grub-efi-ia32 install/grub-efi-amd64 install/grub-ieee1275 install/grub-coreboot::
  100. $(MAKE) -C $(subst install/,build/,$@) install DESTDIR=$(CURDIR)/debian/$(subst install/,,$@)/
  101.  
  102. # shipped with grub-common
  103. rm -rf $(CURDIR)/debian/$(subst install/,,$@)/etc/grub.d
  104. rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/{sbin,share/man/man8}/{grub-dumpbios,grub-probe,grub-emu,grub-mkconfig,grub-mkdevicemap,grub-ofpathname}{,.8}
  105. rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/{bin,share/man/man1}/{grub-mkelfimage,grub-mkfont,grub-editenv}{,.1}
  106. rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/lib/grub/{grub-mkconfig_lib,update-grub_lib}
  107. rm -rf $(CURDIR)/debian/$(subst install/,,$@)/usr/share/{grub,info}/
  108. rm -rf $(CURDIR)/debian/$(subst install/,,$@)/usr/include
  109.  
  110. for i in $(AUTOGEN_DEB_FILES) ; do \
  111. sed debian/$$i.in \
  112. -e "s/@PACKAGE@/$(subst install/,,$@)/g" \
  113. > debian/$(subst install/,,$@).$$i ; \
  114. done
  115.  
  116. # grub-pc is a bit special. It includes a few overlays for autogen files.
  117. if [ "$@" = "install/grub-pc" ] ; then \
  118. for i in templates install dirs ; do \
  119. cat debian/grub-pc.$$i.in >> debian/grub-pc.$$i ; \
  120. done ; \
  121. fi
  122.  
  123. if [ "$@" != "install/grub-pc" ] && [ "$(DEB_HOST_ARCH_CPU)" != "sparc" ] ; then \
  124. i=$(CURDIR)/debian/$(subst install/,,$@)/usr/lib/grub/*/kernel.img ; if test -e $$i ; then strip -s $$i ; fi \
  125. fi
  126.  
  127. mkdir -p $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides
  128. echo "$(subst install/,,$@): unstripped-binary-or-object *.mod" \
  129. >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@)
  130. if [ "$@" != "install/grub-pc" ] && [ "$(DEB_HOST_ARCH_CPU)" != "sparc" ] ; then \
  131. cd $(CURDIR)/debian/$(subst install/,,$@) && find ./usr/lib/grub -name kernel.img \
  132. | sed -e "s%.*%$(subst install/,,$@): statically-linked-binary &%g" \
  133. >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@) ; \
  134. fi
  135. if [ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ] ; then \
  136. echo "$(subst install/,,$@): binary-from-other-architecture *.mod" \
  137. >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@) ; \
  138. fi
  139. if [ "$@" = "install/grub-pc" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ] ; then \
  140. echo "$(subst install/,,$@): binary-from-other-architecture *efiemu64.o" \
  141. >> $(CURDIR)/debian/$(subst install/,,$@)/usr/share/lintian/overrides/$(subst install/,,$@) ; \
  142. fi
  143.  
  144. install/grub-common::
  145. $(MAKE) -C $(subst install/,build/,$@) install DESTDIR=$(CURDIR)/debian/$(subst install/,,$@)/
  146. rm -rf $(CURDIR)/debian/$(subst install/,,$@)/usr/lib/grub/{i386,powerpc,sparc64}-*
  147. rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/{sbin,share/man/man8}/{update-grub,grub-install,grub-setup,grub-emu,grub-reboot,grub-set-default}{,.8}
  148. rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/{bin,share/man/man1}/grub-{mkimage,mkrescue}{,.1}
  149. rm -f $(CURDIR)/debian/$(subst install/,,$@)/usr/share/info/dir*
  150. install -m 0755 debian/grub-common.pm-sleep $(CURDIR)/debian/$(subst install/,,$@)/etc/pm/sleep.d/10_grub-common
  151.  
  152. clean:: debian/legacy/update-grub debian/grub-extras
  153. chmod +x debian/{script,grub.d/*,legacy/*}
  154. for i in $(AUTOGEN_DEB_FILES) ; do \
  155. rm -f debian/grub-{pc,efi-*,ieee1275,coreboot}.$$i ; \
  156. done
  157. -rm -rf build
  158.  
  159. # make sure PO files are always up-to-date
  160. debconf-updatepo
  161.  
  162. debian/legacy/update-grub:
  163. @echo "Missing $@. Try: \"svn cat svn://svn.debian.org/pkg-grub/grub/trunk/debian/update-grub > $@\""
  164. exit 1
  165.  
  166. debian/grub-extras:
  167. @echo "Missing $@. Try: \"svn export svn://svn.sv.nongnu.org/grub-extras/trunk $@\""
  168. exit 1
  169.  
  170. # Grab fixes from SVN using our version as reference.
  171. svn-sync:
  172. svn co svn://svn.sv.gnu.org/grub/trunk/grub2 grub2-svn; \
  173. UVERSION=$$(dpkg-parsechangelog | grep Version \
  174. | sed 's,Version: ,,g;s,-[0-9]*$$,,g;s,\.,_,g'); \
  175. cd grub2-svn && \
  176. svn diff -uN -r release_$$UVERSION -r HEAD > ../debian/patches/00_svn-sync.patch; \
  177. cd .. && rm -rf grub2-svn
  178.  
  179. svn-snapshot:
  180. UVERSION=$$(dpkg-parsechangelog | grep Version \
  181. | sed 's,Version: ,,g;s,-[0-9]*$$,,g'); \
  182. svn co svn://svn.sv.gnu.org/grub/trunk/grub2 grub2-$$UVERSION; \
  183. tar -czf grub2_$$UVERSION.orig.tar.gz grub2-$$UVERSION; \
  184. rm -rf grub2-$$UVERSION; \
  185. mv grub2_$$UVERSION.orig.tar.gz ../tarballs/
  186.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement