upgpkg: 1:2.02.beta1-1

1) Removal of archlinux_grub_mkconfig_fixes.patch, replaced with 10_archlinux helper script, and grub-add-GRUB_COLOR_variables.patch (small non-Arch specific part of the earlier patch). Fixes https://bugs.archlinux.org/task/37904 .

2) Bump directly used unifont bdf file to working ver 6.3.20131217 as mentioned at http://savannah.gnu.org/bugs/?40330

3) grub-extras is now available as GIT repo, so removed bzr from makedepends. As a consequence removed python2 and used python(3) in makedepends. Incorrect GRUB_CONTRIB var also fixed.

4) grub-extras LUA and ntldr-img are set to be deprecated, so they are not built. The only grub-extras version built is 915resolution (for grub-bios aka target i386-pc alone)

5) PKGBUILD directly used GIT TAG support by makepkg to checkout the souce instead of downloading the upstream tarball

6) https://bugs.archlinux.org/task/38054 already fixed in 2.02-beta1.

7) https://bugs.archlinux.org/task/38053 also fixed in 2.02-beta1. I personally never experienced this issue so cannot comment on this

8) Added  suffix grub-efi build dir so that it is easy for users to modify the PKGBUILD to build i386-efi in Arch x86_64 if required (not officially supported).
This commit is contained in:
Tobias Powalowski 2013-12-21 18:42:03 +00:00
parent 35fe335514
commit 514d26f6eb
3 changed files with 220 additions and 53 deletions

142
10_archlinux Executable file
View File

@ -0,0 +1,142 @@
#!/usr/bin/env bash
##
## grub-mkconfig helper script specific to Arch Linux
## Contributed by "Keshav Padram Amburay" <the ddoott ridikulus ddoott rat aatt geemmayil ddoott ccoomm>
##
## Script based on do_grub_config() function in Arch Linux Archboot ISO Installer/Setup script
## Some parts taken from /etc/grub.d/10_linux script shipped by GRUB(2) upstream
##
## This script can be freely distributed and/or modified
## under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This script is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
set -e
prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
sysconfdir="/etc"
. "${datarootdir}/grub/grub-mkconfig_lib"
. "${sysconfdir}/default/grub"
export TEXTDOMAIN="grub"
export TEXTDOMAINDIR="${datarootdir}/locale"
CLASS="--class arch-linux --class arch --class gnu-linux --class gnu --class os"
BOOT_PART_FS_UUID="$(grub-probe --target="fs_uuid" "/boot" 2>/dev/null)"
BOOT_PART_HINTS_STRING="$(grub-probe --target="hints_string" "/boot" 2>/dev/null)"
BOOT_PART_FS="$(grub-probe --target="fs" "/boot" 2>/dev/null)"
ROOT_PART_FS_UUID="$(grub-probe --target="fs_uuid" "/" 2>/dev/null)"
ROOT_PART_HINTS_STRING="$(grub-probe --target="hints_string" "/" 2>/dev/null)"
ROOT_PART_FS="$(grub-probe --target="fs" "/" 2>/dev/null)"
if [[ "${ROOT_PART_FS_UUID}" == "${BOOT_PART_FS_UUID}" ]]; then
SUBDIR="/boot"
else
SUBDIR=""
fi
if [[ "${GRUB_LINUX_ROOT_DEVICE}" == "" ]]; then
if [[ "${GRUB_DEVICE_UUID}" == "" ]] || \
[[ "${GRUB_DISABLE_LINUX_UUID}" == "true" ]] || \
[[ ! -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" ]] || \
uses_abstraction "${GRUB_DEVICE}" lvm ; then
GRUB_LINUX_ROOT_DEVICE="${GRUB_DEVICE}"
else
GRUB_LINUX_ROOT_DEVICE="UUID=${GRUB_DEVICE_UUID}"
fi
fi
[[ "${GRUB_LINUX_PARAMS}" == "" ]] && GRUB_LINUX_PARAMS="${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
for _KERNEL_ in $(ls /boot/vmlinuz-linux*) ; do
echo "Found linux image: ${_KERNEL_}" >&2
_KERNEL_FILE_="$(echo ${_KERNEL_} | sed 's,/boot/,,g')"
_KERNEL_PKG_="pkg-$(echo ${_KERNEL_FILE_} | sed 's,vmlinuz-,,g')"
_INITRAMFS_="${_KERNEL_FILE_/vmlinuz-/initramfs-}.img"
if [[ -e "/boot/${_INITRAMFS_}" ]]; then
echo "Found initramfs image: /boot/${_INITRAMFS_}" >&2
cat << EOF
menuentry "Arch Linux ${_KERNEL_PKG_} kernel" ${CLASS} {
load_video
set gfxpayload=keep
insmod ${BOOT_PART_FS}
if [ x\$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root ${BOOT_PART_HINTS_STRING} ${BOOT_PART_FS_UUID}
else
search --no-floppy --fs-uuid --set=root ${BOOT_PART_FS_UUID}
fi
echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel ...'
linux ${SUBDIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel initramfs ...'
initrd ${subdir}/${_INITRAMFS_}
}
EOF
fi
_INITRAMFS_FALLBACK_="${_KERNEL_FILE_/vmlinuz-/initramfs-}-fallback.img"
if [[ -e "/boot/${_INITRAMFS_FALLBACK_}" ]]; then
echo "Found fallback initramfs image: /boot/${_INITRAMFS_FALLBACK_}" >&2
cat << EOF
menuentry "Arch Linux ${_KERNEL_PKG_} kernel (fallback initramfs)" ${CLASS} {
load_video
set gfxpayload=keep
insmod ${BOOT_PART_FS}
if [ x\$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root ${BOOT_PART_HINTS_STRING} ${BOOT_PART_FS_UUID}
else
search --no-floppy --fs-uuid --set=root ${BOOT_PART_FS_UUID}
fi
echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel ...'
linux ${SUBDIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel fallback initramfs ...'
initrd ${subdir}/${_INITRAMFS_FALLBACK_}
}
EOF
fi
if [[ ! -e "/boot/${_INITRAMFS_}" ]] && [[ ! -e "/boot/${_INITRAMFS_FALLBACK_}" ]]; then
cat << EOF
menuentry "Arch Linux ${_KERNEL_PKG_} kernel (no initramfs)" ${CLASS} {
load_video
set gfxpayload=keep
insmod ${BOOT_PART_FS}
if [ x\$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root ${BOOT_PART_HINTS_STRING} ${BOOT_PART_FS_UUID}
else
search --no-floppy --fs-uuid --set=root ${BOOT_PART_FS_UUID}
fi
echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel ...'
linux ${SUBDIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
}
EOF
fi
done

View File

@ -2,17 +2,17 @@
# Maintainer : Ronald van Haren <ronald.archlinux.org> # Maintainer : Ronald van Haren <ronald.archlinux.org>
# Contributor: Keshav Padram Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> # Contributor: Keshav Padram Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
_pkgver="2.00" _pkgver="2.02"
_GRUB_GIT_COMMIT="5ae5c54c7e5cb048cdd78a53181cee0da698a953" _GRUB_GIT_TAG="grub-2.02-beta1"
## grub-extras gpxe is not needed _UNIFONT_VER="6.3.20131217"
[[ "${CARCH}" == "x86_64" ]] && _EFI_ARCH="x86_64" [[ "${CARCH}" == "x86_64" ]] && _EFI_ARCH="x86_64"
[[ "${CARCH}" == "i686" ]] && _EFI_ARCH="i386" [[ "${CARCH}" == "i686" ]] && _EFI_ARCH="i386"
pkgname="grub" pkgname="grub"
pkgdesc="GNU GRand Unified Bootloader (2)" pkgdesc="GNU GRand Unified Bootloader (2)"
pkgver=2.00.1282.g5ae5c54 pkgver=2.02.beta1
pkgrel=1 pkgrel=1
epoch="1" epoch="1"
url="https://www.gnu.org/software/grub/" url="https://www.gnu.org/software/grub/"
@ -26,9 +26,8 @@ conflicts=('grub-common' 'grub-bios' "grub-efi-${_EFI_ARCH}" 'grub-legacy')
replaces=('grub-common' 'grub-bios' "grub-efi-${_EFI_ARCH}") replaces=('grub-common' 'grub-bios' "grub-efi-${_EFI_ARCH}")
provides=('grub-common' 'grub-bios' "grub-efi-${_EFI_ARCH}") provides=('grub-common' 'grub-bios' "grub-efi-${_EFI_ARCH}")
makedepends=('git' 'bzr' 'rsync' 'xz' 'freetype2' 'ttf-dejavu' makedepends=('git' 'rsync' 'xz' 'freetype2' 'ttf-dejavu' 'python' 'autogen'
'python2' 'autogen' 'texinfo' 'help2man' 'texinfo' 'help2man' 'gettext' 'device-mapper' 'fuse')
'gettext' 'device-mapper' 'fuse')
depends=('sh' 'xz' 'gettext' 'device-mapper') depends=('sh' 'xz' 'gettext' 'device-mapper')
optdepends=('freetype2: For grub-mkfont usage' optdepends=('freetype2: For grub-mkfont usage'
'fuse: For grub-mount usage' 'fuse: For grub-mount usage'
@ -38,39 +37,39 @@ optdepends=('freetype2: For grub-mkfont usage'
'os-prober: To detect other OSes when generating grub.cfg in BIOS systems' 'os-prober: To detect other OSes when generating grub.cfg in BIOS systems'
'mtools: For grub-mkrescue FAT FS support') 'mtools: For grub-mkrescue FAT FS support')
# source=("http://ftp.gnu.org/gnu/grub/grub-${pkgver}.tar.xz" source=("grub-${_pkgver}::git+git://git.sv.gnu.org/grub.git#tag=${_GRUB_GIT_TAG}"
source=("grub-${_pkgver}::git+git://git.sv.gnu.org/grub.git#commit=${_GRUB_GIT_COMMIT}" "grub-extras::git+git://git.sv.gnu.org/grub-extras.git#branch=master"
'http://unifoundry.com/unifont-5.1.20080820.bdf.gz' "http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz"
'archlinux_grub_mkconfig_fixes.patch' "http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz.sig"
'grub-add-GRUB_COLOR_variables.patch'
'10_archlinux'
'60_memtest86+' '60_memtest86+'
'grub.default' 'grub.default'
'grub.cfg') 'grub.cfg')
md5sums=('SKIP' md5sums=('SKIP'
'6b8263ceccef33bd633aa019d74b7943' 'SKIP'
'b9cbff4a67e463722a113c66d57c4042' '728b7439ac733a7c0d56049adec364c7'
'SKIP'
'e506ae4a9f9f7d1b765febfa84e10d48'
'b7f3fc13d5afcb1e6f7d49010025b725'
'be55eabc102f2c60b38ed35c203686d6' 'be55eabc102f2c60b38ed35c203686d6'
'a03ffd56324520393bf574cefccb893d' 'a03ffd56324520393bf574cefccb893d'
'c8b9511586d57d6f2524ae7898397a46' 'c8b9511586d57d6f2524ae7898397a46')
'SKIP'
'SKIP'
'SKIP')
for _DIR_ in 915resolution lua ntldr-img ; do
source+=("grub-extras-${_DIR_}::bzr+bzr://bzr.savannah.gnu.org/grub-extras/${_DIR_}/#revision=")
done
pkgver() { pkgver() {
cd "${srcdir}/grub-${_pkgver}/" cd "${srcdir}/grub-${_pkgver}/"
echo "$(git describe --tags)" | sed -e 's|-|\.|g' echo "$(git describe --tags)" | sed -e 's|grub.||g' -e 's|-|\.|g'
} }
prepare() { prepare() {
cd "${srcdir}/grub-${_pkgver}/" cd "${srcdir}/grub-${_pkgver}/"
msg "Patch to enable grub-mkconfig detect Arch kernels and initramfs" msg "Patch to enable GRUB_COLOR_* variables in grub-mkconfig"
patch -Np1 -i "${srcdir}/archlinux_grub_mkconfig_fixes.patch" ## 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" 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" sed 's|/usr/share/fonts/dejavu|/usr/share/fonts/dejavu /usr/share/fonts/TTF|g' -i "${srcdir}/grub-${_pkgver}/configure.ac"
@ -81,18 +80,18 @@ prepare() {
msg "Fix OS naming FS#33393" msg "Fix OS naming FS#33393"
sed 's|GNU/Linux|Linux|' -i "${srcdir}/grub-${_pkgver}/util/grub.d/10_linux.in" sed 's|GNU/Linux|Linux|' -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" # 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" # sed 's|python |python2 |g' -i "${srcdir}/grub-${_pkgver}/autogen.sh"
msg "Pull in latest language files" msg "Pull in latest language files"
./linguas.sh ./linguas.sh
echo echo
msg "Remove non working langs which need LC_ALL=C.UTF-8" 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" 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" 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-5.1.20080820.bdf" "${srcdir}/grub-${_pkgver}/unifont.bdf" cp "${srcdir}/unifont-${_UNIFONT_VER}.bdf" "${srcdir}/grub-${_pkgver}/unifont.bdf"
} }
@ -105,16 +104,14 @@ _build_grub-common_and_bios() {
_EFIEMU="--disable-efiemu" _EFIEMU="--disable-efiemu"
fi fi
msg "Copy the source for building the bios package" msg "Copy the source for building the bios part"
cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-bios" cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-bios"
cd "${srcdir}/grub-${_pkgver}-bios/" cd "${srcdir}/grub-${_pkgver}-bios/"
msg "Add the grub-extra sources for bios build" msg "Add the grub-extra sources for bios build"
install -d "${srcdir}/grub-${_pkgver}-bios/grub-extras" install -d "${srcdir}/grub-${_pkgver}-bios/grub-extras"
for _DIR_ in 915resolution ntldr-img ; do cp -r "${srcdir}/grub-extras/915resolution" "${srcdir}/grub-${_pkgver}-bios/grub-extras/915resolution"
cp -r "${srcdir}/grub-extras-${_DIR_}" "${srcdir}/grub-${_pkgver}-bios/grub-extras/${_DIR_}" export GRUB_CONTRIB="${srcdir}/grub-${_pkgver}-bios/grub-extras/"
done
export GRUB_CONTRIB="${srcdir}/grub-bios/grub-extras/"
msg "Unset all compiler FLAGS for bios build" msg "Unset all compiler FLAGS for bios build"
unset CFLAGS unset CFLAGS
@ -162,31 +159,24 @@ _build_grub-common_and_bios() {
_build_grub-efi() { _build_grub-efi() {
msg "Copy the source for building the efi package" msg "Copy the source for building the ${_EFI_ARCH} efi part"
cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-efi" cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}"
cd "${srcdir}/grub-${_pkgver}-efi/" cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
msg "Add the grub-extra sources for efi build" msg "Unset all compiler FLAGS for ${_EFI_ARCH} efi build"
install -d "${srcdir}/grub-${_pkgver}-efi/grub-extras/"
for _DIR_ in lua ; do
cp -r "${srcdir}/grub-extras-${_DIR_}" "${srcdir}/grub-${_pkgver}-efi/grub-extras/${_DIR_}"
done
# export GRUB_CONTRIB="${srcdir}/grub-efi/grub-extras/"
msg "Unset all compiler FLAGS for efi build"
unset CFLAGS unset CFLAGS
unset CPPFLAGS unset CPPFLAGS
unset CXXFLAGS unset CXXFLAGS
unset LDFLAGS unset LDFLAGS
unset MAKEFLAGS unset MAKEFLAGS
cd "${srcdir}/grub-${_pkgver}-efi/" cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
msg "Run autogen.sh for efi build" msg "Run autogen.sh for ${_EFI_ARCH} efi build"
./autogen.sh ./autogen.sh
echo echo
msg "Run ./configure for efi build" msg "Run ./configure for ${_EFI_ARCH} efi build"
./configure \ ./configure \
--with-platform="efi" \ --with-platform="efi" \
--target="${_EFI_ARCH}" \ --target="${_EFI_ARCH}" \
@ -212,7 +202,7 @@ _build_grub-efi() {
--disable-werror --disable-werror
echo echo
msg "Run make for efi build" msg "Run make for ${_EFI_ARCH} efi build"
make make
echo echo
@ -226,7 +216,7 @@ build() {
_build_grub-common_and_bios _build_grub-common_and_bios
echo echo
msg "Build grub efi stuff" msg "Build grub ${_EFI_ARCH} efi stuff"
_build_grub-efi _build_grub-efi
echo echo
@ -245,6 +235,9 @@ _package_grub-common_and_bios() {
rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.image || 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 rm -f "${pkgdir}/usr/lib/grub/i386-pc"/{kernel.exec,gdb_grub,gmodule.pl} || true
msg "Install 10_archlinux helper script for grub-mkconfig"
install -D -m0755 "${srcdir}/10_archlinux" "${pkgdir}/etc/grub.d/10_archlinux"
msg "Install extra /etc/grub.d/ files" msg "Install extra /etc/grub.d/ files"
install -D -m0755 "${srcdir}/60_memtest86+" "${pkgdir}/etc/grub.d/60_memtest86+" install -D -m0755 "${srcdir}/60_memtest86+" "${pkgdir}/etc/grub.d/60_memtest86+"
@ -258,13 +251,13 @@ _package_grub-common_and_bios() {
_package_grub-efi() { _package_grub-efi() {
cd "${srcdir}/grub-${_pkgver}-efi/" cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
msg "Run make install for efi build" msg "Run make install for ${_EFI_ARCH} efi build"
make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install make DESTDIR="${pkgdir}/" bashcompletiondir="/usr/share/bash-completion/completions" install
echo echo
msg "Remove gdb debugging related files for efi build" 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"/*.module || true
rm -f "${pkgdir}/usr/lib/grub/${_EFI_ARCH}-efi"/*.image || 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 rm -f "${pkgdir}/usr/lib/grub/${_EFI_ARCH}-efi"/{kernel.exec,gdb_grub,gmodule.pl} || true
@ -273,7 +266,7 @@ _package_grub-efi() {
package() { package() {
msg "Package grub efi stuff" msg "Package grub ${_EFI_ARCH} efi stuff"
_package_grub-efi _package_grub-efi
msg "Package grub bios stuff" msg "Package grub bios stuff"

View File

@ -0,0 +1,32 @@
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index 3390ba9..c416489 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -218,6 +218,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 d2e7252..8259f45 100644
--- a/util/grub.d/00_header.in
+++ b/util/grub.d/00_header.in
@@ -125,6 +125,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