# vim: syn=sh ft=sh et sw=2 sts=2 ts=2 tw=0:
#Packager: Dimitris Tzemos <dijemos@gmail.com>

pkgname=grub
pkgver=2.06
_unifontver=13.0.06
_dejavuver=2.37
pkgrel=7dj

source=(
  "grub-default"
  "slackel.png"
  "update-grub"
  "windows_uefi"
  "setup.grubconfig"
  "grubconfig"
  "initrd_naming.patch.gz"
  "0198-align-struct-efi_variable-better.patch.gz"
  "grub.dejavusansmono.gfxterm.font.diff.gz"
  "ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-$pkgver.tar.xz"
 "http://unifoundry.com/pub/unifont/unifont-$_unifontver/font-builds/unifont-$_unifontver.pcf.gz"
  "0004-add-GRUB_COLOR_variables.patch"
  "http://sourceforge.net/projects/dejavu/files/dejavu/$_dejavuver/dejavu-sans-ttf-$_dejavuver.zip"
  "a4b495520e4dc41a896a8b916a64eda9970c50ea.patch.gz"
  "grub-2.06-fs-ext2-ignore-checksum-seed.patch.gz "
)
docs=("readme" "install" "copying" "changelog" "authors" "news" "todo")
url=http://www.gnu.org/software/grub/
options=('noextract' 'nostrip' 'noautodotnew')
dotnew=('etc/default/grub' 'etc/grub.d/00_header' 'etc/grub.d/10_linux' 'etc/grub.d/20_linux_xen' 'etc/grub.d/30_os-prober' 'etc/grub.d/40_custom' 'etc/grub.d/41_custom')

slackdesc=\
(
#|-----handy-ruler------------------------------------------------------|
"$pkgname (the second GNU GRand Unified Bootloader)"
"GRUB 2 has been rewritten from scratch to clean up everything for"
"modularity and portability."
"Features are: Scripting support, Graphical interface, Rescue mode,"
"cross-platform and many more"
"Briefly, boot loader is the first software program that runs when a"
"computer starts. It is responsible for loading and transferring"
"control to the operating system kernel software (such as the Hurd or"
"the Linux). The kernel initializes the rest of the operating system."
"* gettextvar, eval, getdate commands added."
)

build() {
	
  # Don't use icecream:
  PATH=$(echo $PATH | sed "s|/usr/libexec/icecc/bin||g" | tr -s : | sed "s/^://g" | sed "s/:$//g")

  # CFLAGS and CXXFLAGS should not contains fPIC or compile will fail
  export CFLAGS=" -Os "
  export CFLAGS=$(echo "$CFLAGS"|sed 's/-fPIC/-fno-PIC/')
  export CXXFLAGS=$(echo "$CXXFLAGS"|sed 's/-fPIC/-fno-PIC/')
  cd $SRC || return 1
  tar xf grub-$pkgver.tar.xz || return 1
  unzip $SRC/dejavu-sans-ttf-$_dejavuver.zip || return 1
  cd grub-$pkgver || return 1
  # Use /boot/initrd.gz as a valid initrd name:
  zcat $SRC/initrd_naming.patch.gz | patch -p1 --verbose || return 1
  
  # Fix alignment error with gcc8:
  zcat $SRC/0198-align-struct-efi_variable-better.patch.gz | patch -p1 --verbose ||return 1
  
  # Support DejaVuSansMono font (dejavusansmono.pf2) by default:
  zcat $SRC/grub.dejavusansmono.gfxterm.font.diff.gz | patch -p1 --verbose || return 1

  patch -Np1 -i "${SRC}/0004-add-GRUB_COLOR_variables.patch" || return 1
  
  # Fix unreadable XFS filesystem with v4 superblock:
  zcat $SRC/a4b495520e4dc41a896a8b916a64eda9970c50ea.patch.gz | patch -p1 --verbose || return 1
  # https://www.linuxquestions.org/questions/slackware-14/requests-for-current-next-15-0-15-1-a-4175706801/page125.html#post6416367 
	# https://git.savannah.gnu.org/cgit/grub.git/patch/?id=7fd5feff97c4b1f446f8fcf6d37aca0c64e7c763
	zcat $SRC/grub-2.06-fs-ext2-ignore-checksum-seed.patch.gz | patch -p1 --verbose || return 1

  cp $SRC/unifont-$_unifontver.pcf.gz unifont.pcf.gz || return 1
  cp $SRC/dejavu-sans-ttf-$_dejavuver/ttf/DejaVuSans.ttf . || return 1
autoreconf -vif  
  ./configure \
    --with-platform="pc" \
    --target="i386" \
    --prefix=/usr \
    --libdir=/usr/lib${LIBDIRSUFFIX} \
    --localstatedir=/var \
    --sysconfdir=/etc \
    --mandir=/usr/man \
    --infodir=/usr/share/info \
    --docdir=/usr/doc/$pkgname-$pkgver \
    --program-prefix= \
    --enable-cache-stats \
    --enable-boot-time \
    --enable-device-mapper \
    $([ $ARCH = x86_64 ] && echo '--enable-efiemu' || echo '--disable-efiemu') \
    --enable-grub-emu-usb \
    --enable-grub-mkfont \
    --enable-grub-mount \
    --enable-nls \
    --with-bootdir="/boot" \
    --with-grubdir="grub" \
    --disable-silent-rules \
    --disable-werror \
    --build=$arch-slackware-linux || return 1
  make -j $numjobs || return 1
  make install DESTDIR=$PKG || return 1
  # EFI compilation
  ./configure \
    --with-platform="efi" \
    --target=$(echo $ARCH | grep -q "i.86" && echo "i386" || echo $ARCH) \
    --prefix=/usr \
    --libdir=/usr/lib${LIBDIRSUFFIX} \
    --localstatedir=/var \
    --sysconfdir=/etc \
    --mandir=/usr/man \
    --infodir=/usr/share/info \
    --docdir=/usr/doc/$pkgname-$pkgver \
    --program-prefix= \
    --disable-efiemu \
    --enable-cache-stats \
    --enable-boot-time \
    --enable-device-mapper \
    --enable-grub-emu-usb \
    --enable-grub-mkfont \
    --enable-grub-mount \
    --enable-nls \
    --with-bootdir="/boot" \
    --with-grubdir="grub" \
    --disable-silent-rules \
    --disable-werror \
    --build=$arch-slackware-linux || return 1
  make clean || return 1
  make -j $numjobs || return 1
  make install DESTDIR=$PKG || return 1
  install -D -m644 $SRC/grub-default $PKG/etc/default/grub || return 1
  install -D -m644 $SRC/slackel.png $PKG/boot/grub/slackel.png || return 1
  install -D -m755 $SRC/update-grub $PKG/usr/sbin/update-grub || return 1
  install -D -m755 $SRC/windows_uefi $PKG/usr/sbin/windows_uefi || return 1
  install -D -m755 $SRC/grubconfig $PKG/sbin/grubconfig || return 1
  install -D -m755 $SRC/setup.grubconfig $PKG/var/log/setup/setup.grubconfig || return 1
}
