diff options
Diffstat (limited to 'libre/grub/PKGBUILD')
-rw-r--r-- | libre/grub/PKGBUILD | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/libre/grub/PKGBUILD b/libre/grub/PKGBUILD new file mode 100644 index 000000000..df6956f96 --- /dev/null +++ b/libre/grub/PKGBUILD @@ -0,0 +1,275 @@ +# Maintainer : Tobias Powalowski <tpowa@archlinux.org> +# Maintainer : Ronald van Haren <ronald.archlinux.org> +# Contributor: Keshav Padram Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> +# Maintainer (Parabola): André Silva <emulatorman@parabola.nu> +# Contributor (Parabola): Márcio Silva <coadde@parabola.nu> + +_pkgver="2.02" +_GRUB_GIT_TAG="grub-2.02-beta2" + +_UNIFONT_VER="6.3.20131217" + +[[ "${CARCH}" == "x86_64" ]] && _EFI_ARCH="x86_64" +[[ "${CARCH}" == "i686" ]] && _EFI_ARCH="i386" + +pkgname="grub" +pkgdesc="GNU GRand Unified Bootloader (2), (Parabola rebranded)" +pkgver=2.02.beta2 +pkgrel=1.1 +epoch="1" +url="https://www.gnu.org/software/grub/" +arch=('x86_64' 'i686') +license=('GPL3') +backup=('etc/default/grub' 'etc/grub.d/40_custom') +install="${pkgname}.install" +options=('!makeflags') + +conflicts=('grub-common' 'grub-bios' "grub-efi-${_EFI_ARCH}" 'grub-legacy') +replaces=('grub-common' 'grub-bios' "grub-efi-${_EFI_ARCH}") +provides=('grub-common' 'grub-bios' "grub-efi-${_EFI_ARCH}") + +makedepends=('git' 'rsync' 'xz' 'freetype2' 'ttf-dejavu' 'python' 'autogen' + 'texinfo' 'help2man' 'gettext' 'device-mapper' 'fuse') +depends=('sh' 'xz' 'gettext' 'device-mapper') +optdepends=('freetype2: For grub-mkfont usage' + 'fuse: For grub-mount usage' + 'dosfstools: For grub-mkrescue FAT FS and EFI support' + 'efibootmgr: For grub-install EFI support' + 'libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue' + 'os-prober: To detect other OSes when generating grub.cfg in BIOS systems' + 'mtools: For grub-mkrescue FAT FS support') + +source=("grub-${_pkgver}::git+git://git.sv.gnu.org/grub.git#tag=${_GRUB_GIT_TAG}" + "grub-extras::git+git://git.sv.gnu.org/grub-extras.git#branch=master" + "http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz" + "http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz.sig" + 'grub-add-GRUB_COLOR_variables.patch' + '09_parabola' + '60_memtest86+' + 'grub.default' + '10_linux.in.patch') +md5sums=('SKIP' + 'SKIP' + '728b7439ac733a7c0d56049adec364c7' + 'SKIP' + 'e506ae4a9f9f7d1b765febfa84e10d48' + 'd272e5fa811859838cfb60cc656d66ed' + 'be55eabc102f2c60b38ed35c203686d6' + '52d374e0194e3f2e39ff7c92ecd58a6c' + 'b23a144b7001c88734b79ed3bec491c4') + +pkgver() { + cd "${srcdir}/grub-${_pkgver}/" + echo "$(git describe --tags)" | sed -e 's|grub.||g' -e 's|-|\.|g' +} + +prepare() { + + cd "${srcdir}/grub-${_pkgver}/" + + msg "Patch to enable GRUB_COLOR_* variables in grub-mkconfig" + ## Based on http://lists.gnu.org/archive/html/grub-devel/2012-02/msg00021.html + patch -Np1 -i "${srcdir}/grub-add-GRUB_COLOR_variables.patch" + echo + + msg "Fix DejaVuSans.ttf location so that grub-mkfont can create *.pf2 files for starfield theme" + sed 's|/usr/share/fonts/dejavu|/usr/share/fonts/dejavu /usr/share/fonts/TTF|g' -i "${srcdir}/grub-${_pkgver}/configure.ac" + + msg "Rebranding for some free distros" + patch -Np1 -i "${srcdir}/10_linux.in.patch" + echo + + msg "Fix mkinitcpio 'rw' FS#36275" + sed 's| ro | rw |g' -i "${srcdir}/grub-${_pkgver}/util/grub.d/10_linux.in" + + # msg "autogen.sh requires python (2/3). since bzr is in makedepends, use python2 and no need to pull python3" + # sed 's|python |python2 |g' -i "${srcdir}/grub-${_pkgver}/autogen.sh" + + msg "Pull in latest language files" + ./linguas.sh + echo + + msg "Remove not working langs which need LC_ALL=C.UTF-8" + sed -e 's#en@cyrillic en@greek##g' -i "${srcdir}/grub-${_pkgver}/po/LINGUAS" + + msg "Avoid problem with unifont during compile of grub, http://savannah.gnu.org/bugs/?40330 and https://bugs.archlinux.org/task/37847" + cp "${srcdir}/unifont-${_UNIFONT_VER}.bdf" "${srcdir}/grub-${_pkgver}/unifont.bdf" + +} + +_build_grub-common_and_bios() { + + msg "Set ARCH dependent variables for bios build" + if [[ "${CARCH}" == 'x86_64' ]]; then + _EFIEMU="--enable-efiemu" + else + _EFIEMU="--disable-efiemu" + fi + + msg "Copy the source for building the bios part" + cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-bios" + cd "${srcdir}/grub-${_pkgver}-bios/" + + msg "Add the grub-extra sources for bios build" + install -d "${srcdir}/grub-${_pkgver}-bios/grub-extras" + cp -r "${srcdir}/grub-extras/915resolution" "${srcdir}/grub-${_pkgver}-bios/grub-extras/915resolution" + export GRUB_CONTRIB="${srcdir}/grub-${_pkgver}-bios/grub-extras/" + + msg "Unset all compiler FLAGS for bios build" + unset CFLAGS + unset CPPFLAGS + unset CXXFLAGS + unset LDFLAGS + unset MAKEFLAGS + + cd "${srcdir}/grub-${_pkgver}-bios/" + + msg "Run autogen.sh for bios build" + ./autogen.sh + echo + + msg "Run ./configure for bios build" + ./configure \ + --with-platform="pc" \ + --target="i386" \ + "${_EFIEMU}" \ + --enable-mm-debug \ + --enable-nls \ + --enable-device-mapper \ + --enable-cache-stats \ + --enable-boot-time \ + --enable-grub-mkfont \ + --enable-grub-mount \ + --prefix="/usr" \ + --bindir="/usr/bin" \ + --sbindir="/usr/bin" \ + --mandir="/usr/share/man" \ + --infodir="/usr/share/info" \ + --datarootdir="/usr/share" \ + --sysconfdir="/etc" \ + --program-prefix="" \ + --with-bootdir="/boot" \ + --with-grubdir="grub" \ + --disable-silent-rules \ + --disable-werror + echo + + msg "Run make for bios build" + make + echo +} + +_build_grub-efi() { + + msg "Copy the source for building the ${_EFI_ARCH} efi part" + cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}" + cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/" + + msg "Unset all compiler FLAGS for ${_EFI_ARCH} efi build" + unset CFLAGS + unset CPPFLAGS + unset CXXFLAGS + unset LDFLAGS + unset MAKEFLAGS + + cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/" + + msg "Run autogen.sh for ${_EFI_ARCH} efi build" + ./autogen.sh + echo + + msg "Run ./configure for ${_EFI_ARCH} efi build" + ./configure \ + --with-platform="efi" \ + --target="${_EFI_ARCH}" \ + --disable-efiemu \ + --enable-mm-debug \ + --enable-nls \ + --enable-device-mapper \ + --enable-cache-stats \ + --enable-boot-time \ + --enable-grub-mkfont \ + --enable-grub-mount \ + --prefix="/usr" \ + --bindir="/usr/bin" \ + --sbindir="/usr/bin" \ + --mandir="/usr/share/man" \ + --infodir="/usr/share/info" \ + --datarootdir="/usr/share" \ + --sysconfdir="/etc" \ + --program-prefix="" \ + --with-bootdir="/boot" \ + --with-grubdir="grub" \ + --disable-silent-rules \ + --disable-werror + echo + + msg "Run make for ${_EFI_ARCH} efi build" + make + echo + +} + +build() { + + cd "${srcdir}/grub-${_pkgver}/" + + msg "Build grub bios stuff" + _build_grub-common_and_bios + echo + + msg "Build grub ${_EFI_ARCH} efi stuff" + _build_grub-efi + echo + +} + +_package_grub-common_and_bios() { + + cd "${srcdir}/grub-${_pkgver}-bios/" + + msg "Run make install for bios build" + make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install + echo + + msg "Remove gdb debugging related files for bios build" + rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.module || true + rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.image || true + rm -f "${pkgdir}/usr/lib/grub/i386-pc"/{kernel.exec,gdb_grub,gmodule.pl} || true + + msg "Install 09_parabola helper script for grub-mkconfig" + install -D -m0755 "${srcdir}/09_parabola" "${pkgdir}/etc/grub.d/09_parabola" + + msg "Install extra /etc/grub.d/ files" + install -D -m0755 "${srcdir}/60_memtest86+" "${pkgdir}/etc/grub.d/60_memtest86+" + + msg "Install /etc/default/grub (used by grub-mkconfig)" + install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub" + + +} + +_package_grub-efi() { + + cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/" + + msg "Run make install for ${_EFI_ARCH} efi build" + make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install + echo + + msg "Remove gdb debugging related files for ${_EFI_ARCH} efi build" + rm -f "${pkgdir}/usr/lib/grub/${_EFI_ARCH}-efi"/*.module || true + rm -f "${pkgdir}/usr/lib/grub/${_EFI_ARCH}-efi"/*.image || true + rm -f "${pkgdir}/usr/lib/grub/${_EFI_ARCH}-efi"/{kernel.exec,gdb_grub,gmodule.pl} || true + +} + +package() { + + msg "Package grub ${_EFI_ARCH} efi stuff" + _package_grub-efi + + msg "Package grub bios stuff" + _package_grub-common_and_bios + +} |