# $Id: PKGBUILD 22874 2008-12-29 18:25:08Z tpowa $
# Maintainer: Ronald van Haren <ronald.archlinux.org>

pkgname=grub
pkgver=0.97
pkgrel=31
pkgdesc="A GNU multiboot boot loader"
arch=('i686' 'x86_64')
license=('GPL')
url="http://www.gnu.org/software/grub/"
groups=('base')
depends=('ncurses' 'diffutils' 'sed')
source=(ftp://alpha.gnu.org/gnu/grub/grub-$pkgver.tar.gz
        menu.lst
        install-grub
        040_all_grub-0.96-nxstack.patch
        05-grub-0.97-initrdaddr.diff
        i2o.patch
        special-devices.patch
        more-raid.patch
        intelmac.patch
        grub-inode-size.patch
	ext4.patch)
backup=('boot/grub/menu.lst')
install=grub.install

build() {
  cd $srcdir/$pkgname-$pkgver

  #set destination architecture here
  DESTARCH="i686"
  #DESTARCH="x86_64"
  # optimizations break the build -- disable them
  # adding special devices to grub, patches are from fedora
  patch -Np1 -i ../special-devices.patch || return 1
  patch -Np1 -i ../i2o.patch || return 1
  patch -Np1 -i ../more-raid.patch || return 1
  patch -Np1 -i ../intelmac.patch || return 1
  # Add support for bigger inode size to e2fs_stage1_5
  patch -Np1 -i ../grub-inode-size.patch || return 1
  # Add ext4 support
  # http://www.mail-archive.com/bug-grub@gnu.org/msg11458.html
  patch -Np1 -i ../ext4.patch || return 1

  #arch64 fixes for static build
  if [ "$CARCH" = "x86_64" ]; then
    echo "this package has to be built on i686, won't compile on x86_64"
    sleep 5
  else
    if [ "$DESTARCH" = "x86_64" ]; then
      # patch from gentoo for fixing a segfault
      patch -Np1 -i ../040_all_grub-0.96-nxstack.patch || return 1
      # patch from frugalware to make it boot when more than 2GB ram installed
      patch -Np1 -i ../05-grub-0.97-initrdaddr.diff || return 1
      CFLAGS="-static" ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \
                           --mandir=/usr/share/man --infodir=/usr/share/info
    else
      CFLAGS= ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin \
                  --mandir=/usr/share/man --infodir=/usr/share/info
    fi
  fi

  CFLAGS= make || return 1
  make DESTDIR=$pkgdir install || return 1
  install -D -m644 ../menu.lst $startdir/pkg/boot/grub/menu.lst
  install -D -m755 ../install-grub $startdir/pkg/sbin/install-grub
 
  rm -f $pkgdir/usr/share/info/dir || return 1
  gzip /$pkgdir/usr/share/info/*

  if [ "$DESTARCH" = "x86_64" ]; then
    # fool makepkg into building a x86_64 package
    export CARCH="x86_64"
  fi
}