# vim: set syn=sh et ai sw=2 st=2 ts=2 tw=0:
#Packager: JRD <jrd@enialis.net>

pkgname=grub2
pkgver=2.00
_intelresver=r9
_luaver=r24
_ntldrver=r21
_unifontver=5.1.20080820
_dejavuver=2.33
pkgrel=3cp
source=(
  "grub2-title_menu.patch"
  "gettextvar.tar.xz"
  "menuclear.tar.xz"
  "getdate.tar.xz"
  "grub-default"
  "salix.png"
  "update-grub"
  "ftp://ftp.gnu.org/gnu/grub/grub-$pkgver.tar.xz"
  "ftp://ftp.archlinux.org/other/grub2/grub2_extras_915resolution_$_intelresver.tar.xz"
  "ftp://ftp.archlinux.org/other/grub2/grub2_extras_lua_$_luaver.tar.xz"
  "ftp://ftp.archlinux.org/other/grub2/grub2_extras_ntldr-img_$_ntldrver.tar.xz"
  "http://unifoundry.com/unifont-$_unifontver.pcf.gz"
  "http://sourceforge.net/projects/dejavu/files/dejavu/$_dejavuver/dejavu-sans-ttf-$_dejavuver.zip"
)
sourcetemplate=http://people.salixos.org/jrd/salix/$pkgname/$pkgver-\$arch-$pkgrel/
docs=("readme" "install" "copying" "changelog" "authors" "news" "todo")
url=http://www.gnu.org/software/grub/
options=('noextract' '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, menuclear, getdate commands added."
)

build() {
  # CFLAGS and CXXFLAGS should not contains fPIC or compile will fail
  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
  # patch to define menu colors in default/grub (get from Arch Linux)
  cat <<'EOF' | patch -p1 || return 1
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index 516be86..5f37db2 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -213,6 +213,8 @@ export GRUB_DEFAULT \
   GRUB_THEME \
   GRUB_GFXPAYLOAD_LINUX \
   GRUB_DISABLE_OS_PROBER \
+  GRUB_COLOR_NORMAL \
+  GRUB_COLOR_HIGHLIGHT \
   GRUB_INIT_TUNE \
   GRUB_SAVEDEFAULT \
   GRUB_ENABLE_CRYPTODISK \
diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
index 765bfdc..b148558 100644
--- a/util/grub.d/00_header.in
+++ b/util/grub.d/00_header.in
@@ -115,6 +115,14 @@ cat <<EOF

 EOF

+if [ x$GRUB_COLOR_NORMAL != x ] && [ x$GRUB_COLOR_HIGHLIGHT != x ] ; then
+    cat << EOF
+set menu_color_normal=$GRUB_COLOR_NORMAL
+set menu_color_highlight=$GRUB_COLOR_HIGHLIGHT
+
+EOF
+fi
+
 serial=0;
 gfxterm=0;
 for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
EOF
  # patch to customize the title text and position in normal and theme mode.
  # it uses the 'title' variable to override the default text.
  # 'title_posx' is used in normal and theme mode to position the left-aligned text column.
  # 'title_posy' is used only in theme mode to position the title from the top of the screen.
  patch -p1 -i $SRC/grub2-title_menu.patch || return 1
  mkdir grub-extras
  export GRUB_CONTRIB="$PWD/grub-extras/"
  tar xf $SRC/grub2_extras_915resolution_$_intelresver.tar.xz -C "$GRUB_CONTRIB" || return 1
  tar xf $SRC/grub2_extras_lua_$_luaver.tar.xz -C "$GRUB_CONTRIB" || return 1
  tar xf $SRC/grub2_extras_ntldr-img_$_ntldrver.tar.xz -C "$GRUB_CONTRIB" || return 1
  tar xf $SRC/gettextvar.tar.xz -C "$GRUB_CONTRIB" || return 1
  tar xf $SRC/menuclear.tar.xz -C "$GRUB_CONTRIB" || return 1
  tar xf $SRC/getdate.tar.xz -C "$GRUB_CONTRIB" || return 1
  cp $SRC/unifont-$_unifontver.pcf.gz unifont.pcf.gz || return 1
  cp $SRC/dejavu-sans-ttf-$_dejavuver/ttf/DejaVuSans.ttf . || return 1
  ./autogen.sh
  ./configure \
    --with-platform="pc" \
    --prefix=/usr \
    --libdir=/usr/lib${LIBDIRSUFFIX} \
    --localstatedir=/var \
    --sysconfdir=/etc \
    --mandir=/usr/man \
    --infodir=/usr/share/info \
    --docdir=/usr/doc/$pkgname-$pkgver \
    --enable-nls \
    $([ $ARCH = x86_64 ] && echo '--enable-efiemu' || echo '--disable-efiemu') \
    --enable-cache-stats \
    --enable-grub-mkfont \
    --enable-grub-mount \
    --enable-device-mapper \
    --with-bootdir="/boot" \
    --with-grubdir="grub" \
    --disable-werror \
    --build=$arch-slackware-linux || 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/salix.png $PKG/boot/grub/salix.png || return 1
  install -D -m755 $SRC/update-grub $PKG/usr/sbin/update-grub || return 1
}
