* new upstream release

* pacman hooks - remove info file handling from install script
* fix Intel ucode handling (FS#47941)
* remove trailing white spaces from PKGBUILD
This commit is contained in:
Christian Hesse 2016-07-29 07:59:10 +00:00
parent 25ca70055e
commit b7cfff4062
10 changed files with 110 additions and 519 deletions

54
0002-intel-ucode.patch Normal file
View File

@ -0,0 +1,54 @@
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index 5a78513..39bd854 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -136,10 +136,12 @@ EOF
if test -n "${initrd}" ; then
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
message="$(gettext_printf "Loading initial ramdisk ...")"
- sed "s/^/$submenu_indentation/" << EOF
- echo '$(echo "$message" | grub_quote)'
- initrd ${rel_dirname}/${initrd}
-EOF
+ printf ' %s\n' "echo '$(echo "$message" | grub_quote)'" | sed "s/^/$submenu_indentation/"
+ printf ' %s ' 'initrd' | sed "s/^/$submenu_indentation/"
+ for i in ${initrd}; do
+ printf ' %s/%s' "${rel_dirname}" "${i}"
+ done
+ printf '\n'
fi
sed "s/^/$submenu_indentation/" << EOF
}
@@ -189,6 +191,11 @@ while [ "x$list" != "x" ] ; do
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
initrd=
+ for i in intel-ucode.img; do
+ if test -e "${dirname}/${i}" ; then
+ initrd+=" ${i}"
+ fi
+ done
for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
@@ -198,7 +205,7 @@ while [ "x$list" != "x" ] ; do
"initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
"initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
if test -e "${dirname}/${i}" ; then
- initrd="$i"
+ initrd+=" $i"
break
fi
done
@@ -217,7 +224,7 @@ while [ "x$list" != "x" ] ; do
fi
if test -n "${initrd}" ; then
- gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2
+ gettext_printf "Found initrd image(s) in %s:%s\n" "${dirname}" "${initrd}" >&2
elif test -z "${initramfs}" ; then
# "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. Since there's
# no initrd or builtin initramfs, it can't work here.
--
2.7.1

View File

@ -1,194 +0,0 @@
#!/usr/bin/env bash
##
## grub-mkconfig helper script specific to Arch Linux
## Contributed by "Keshav Amburay" <the ddoott ridikulus ddoott rat aatt geemmayil ddoott ccoomm>
## Updated on 08 February 2014
##
## 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.
##
_FUNC_GRUB_FILE_PRESENT() {
[[ -z "${GRUB_PLATFORM}" ]] && GRUB_PLATFORM="x86"
if [[ "${GRUB_PLATFORM}" == "x86" ]]; then
check="--is-x86-linux32"
elif [[ "${GRUB_PLATFORM}" == "i386-xen-pae" ]]; then
check="--is-i386-xen-pae-domu"
elif [[ "${GRUB_PLATFORM}" == "x86_64-xen" ]]; then
check="--is-x86_64-xen-domu"
else
check="--is-${GRUB_PLATFORM}-linux"
fi
case "${GRUB_PLATFORM}" in
x86)
list="$(for i in "${GRUB_ROOT}"/boot/vmlinuz-linux* ; do
if grub_file_is_not_garbage "${i}" && "${grub_file}" ${check} "${i}" ; then echo -n "${i} " ; fi
done)" ;;
*)
list="$(for i in "${GRUB_ROOT}"/boot/vmlinuz-linux* ; do
if grub_file_is_not_garbage "${i}" && "${grub_file}" ${check} "${i}" ; then echo -n "${i} " ; fi
done)" ;;
esac
}
set -e
prefix="/usr"
exec_prefix="${prefix}"
datarootdir="/usr/share"
datadir="${datarootdir}"
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"
[[ "${grub_file}" != "" ]] && _FUNC_GRUB_FILE_PRESENT
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 || true)"
BOOT_PART_FS="$(${grub_probe} --target="fs" "/boot" 2>/dev/null)"
ROOT_PART_GRUB_DEVICE="$(${grub_probe} --target=device / || true)"
ROOT_PART_FS="$(${grub_probe} --device ${ROOT_PART_GRUB_DEVICE} --target=fs 2> /dev/null || echo "unknown")"
if [[ "${GRUB_LINUX_ROOT_DEVICE}" == "" ]]; then
case "${ROOT_PART_FS}" in
btrfs)
rootsubvol="$(make_system_path_relative_to_its_root /)"
rootsubvol="${rootsubvol#/}"
if [[ "${rootsubvol}" != "" ]]; then
GRUB_LINUX_ROOT_DEVICE="subvol=${rootsubvol}"
fi
;;
zfs)
rpool="$(${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true)"
bootfs="$(make_system_path_relative_to_its_root / | sed -e "s,@$,,")"
GRUB_LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs}"
;;
esac
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 ${list} ; do
echo "Found linux image: ${_KERNEL_}" >&2
basename="$(basename "${_KERNEL_}")"
dirname="$(dirname "${_KERNEL_}")"
REAL_DIR="$(make_system_path_relative_to_its_root "${dirname}")"
_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} {
$(save_default_entry)
if [ x\$feature_all_video_module = xy ]; then
insmod all_video
fi
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 ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel initramfs ...'
initrd ${REAL_DIR}/${_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} {
$(save_default_entry)
if [ x\$feature_all_video_module = xy ]; then
insmod all_video
fi
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 ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
echo 'Loading Arch Linux ${_KERNEL_PKG_} kernel fallback initramfs ...'
initrd ${REAL_DIR}/${_INITRAMFS_FALLBACK_}
}
EOF
fi
if [[ ! -e "/boot/${_INITRAMFS_}" ]] && [[ ! -e "/boot/${_INITRAMFS_FALLBACK_}" ]]; then
cat << EOF
menuentry "Arch Linux ${_KERNEL_PKG_} kernel (no initramfs)" ${CLASS} {
$(save_default_entry)
if [ x\$feature_all_video_module = xy ]; then
insmod all_video
fi
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 ${REAL_DIR}/${_KERNEL_FILE_} root=${GRUB_LINUX_ROOT_DEVICE} rw ${GRUB_LINUX_PARAMS}
}
EOF
fi
done

127
PKGBUILD
View File

@ -9,8 +9,8 @@ _IA32_EFI_IN_ARCH_X64="1"
_GRUB_EMU_BUILD="0" _GRUB_EMU_BUILD="0"
_pkgver="2.02" _pkgver="2.02"
_GRUB_GIT_TAG="grub-2.02-beta2" _GRUB_GIT_TAG="grub-2.02-beta3"
_GRUB_EXTRAS_COMMIT=4a56e2c2cc3d78f12f1788c27669a651071dee49 _GRUB_EXTRAS_COMMIT="f2a079441939eee7251bf141986cdd78946e1d20"
_UNIFONT_VER="6.3.20131217" _UNIFONT_VER="6.3.20131217"
@ -22,8 +22,8 @@ _UNIFONT_VER="6.3.20131217"
pkgname="grub" pkgname="grub"
pkgdesc="GNU GRand Unified Bootloader (2)" pkgdesc="GNU GRand Unified Bootloader (2)"
pkgver=2.02.beta2 pkgver=2.02.beta3
pkgrel=6 pkgrel=1
epoch=1 epoch=1
url="https://www.gnu.org/software/grub/" url="https://www.gnu.org/software/grub/"
arch=('x86_64' 'i686') arch=('x86_64' 'i686')
@ -41,7 +41,7 @@ makedepends=('git' 'rsync' 'xz' 'freetype2' 'ttf-dejavu' 'python' 'autogen'
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'
'dosfstools: For grub-mkrescue FAT FS and EFI support' 'dosfstools: For grub-mkrescue FAT FS and EFI support'
'efibootmgr: For grub-install EFI support' 'efibootmgr: For grub-install EFI support'
'libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue' 'libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue'
'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'
@ -58,9 +58,9 @@ source=("grub-${_pkgver}::git+git://git.sv.gnu.org/grub.git#tag=${_GRUB_GIT_TAG}
"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"
"http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz.sig" "http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz.sig"
'0001-Fix-security-issue-when-reading-username-and-passwor.patch' '0001-Fix-security-issue-when-reading-username-and-passwor.patch'
'grub-10_linux-detect-archlinux-initramfs.patch' '0002-intel-ucode.patch'
'grub-intel-ucode.patch' '0003-10_linux-detect-archlinux-initramfs.patch'
'grub-add-GRUB_COLOR_variables.patch' '0004-add-GRUB_COLOR_variables.patch'
'60_memtest86+' '60_memtest86+'
'grub.default' 'grub.default'
'grub.cfg') 'grub.cfg')
@ -70,8 +70,8 @@ md5sums=('SKIP'
'728b7439ac733a7c0d56049adec364c7' '728b7439ac733a7c0d56049adec364c7'
'SKIP' 'SKIP'
'9589ec46a04f9bb4d5da987340a4a324' '9589ec46a04f9bb4d5da987340a4a324'
'e582a1ca6b06444e891f3b46af13d563'
'945527e0de8d384166a4cf23439ae9ee' '945527e0de8d384166a4cf23439ae9ee'
'a678629bc82c4e70c48d28242036d1d7'
'e506ae4a9f9f7d1b765febfa84e10d48' 'e506ae4a9f9f7d1b765febfa84e10d48'
'be55eabc102f2c60b38ed35c203686d6' 'be55eabc102f2c60b38ed35c203686d6'
'a03ffd56324520393bf574cefccb893d' 'a03ffd56324520393bf574cefccb893d'
@ -84,80 +84,77 @@ _pkgver() {
} }
prepare() { prepare() {
cd "${srcdir}/grub-${_pkgver}/" cd "${srcdir}/grub-${_pkgver}/"
# CVE-2015-8370 # CVE-2015-8370
patch -Np1 -i ../0001-Fix-security-issue-when-reading-username-and-passwor.patch patch -Np1 -i ../0001-Fix-security-issue-when-reading-username-and-passwor.patch
msg "Patch to load Intel microcode" msg "Patch to load Intel microcode"
patch -Np1 -i "${srcdir}/grub-intel-ucode.patch" patch -Np1 -i "${srcdir}/0002-intel-ucode.patch"
echo echo
msg "Patch to detect of Arch Linux initramfs images by grub-mkconfig" msg "Patch to detect of Arch Linux initramfs images by grub-mkconfig"
patch -Np1 -i "${srcdir}/grub-10_linux-detect-archlinux-initramfs.patch" patch -Np1 -i "${srcdir}/0003-10_linux-detect-archlinux-initramfs.patch"
echo echo
msg "Patch to enable GRUB_COLOR_* variables in grub-mkconfig" msg "Patch to enable GRUB_COLOR_* variables in grub-mkconfig"
## Based on http://lists.gnu.org/archive/html/grub-devel/2012-02/msg00021.html ## Based on http://lists.gnu.org/archive/html/grub-devel/2012-02/msg00021.html
patch -Np1 -i "${srcdir}/grub-add-GRUB_COLOR_variables.patch" patch -Np1 -i "${srcdir}/0004-add-GRUB_COLOR_variables.patch"
echo 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"
msg "Fix mkinitcpio 'rw' FS#36275" msg "Fix mkinitcpio 'rw' FS#36275"
sed 's| ro | rw |g' -i "${srcdir}/grub-${_pkgver}/util/grub.d/10_linux.in" sed 's| ro | rw |g' -i "${srcdir}/grub-${_pkgver}/util/grub.d/10_linux.in"
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 not 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-${_UNIFONT_VER}.bdf" "${srcdir}/grub-${_pkgver}/unifont.bdf" cp "${srcdir}/unifont-${_UNIFONT_VER}.bdf" "${srcdir}/grub-${_pkgver}/unifont.bdf"
} }
_build_grub-common_and_bios() { _build_grub-common_and_bios() {
msg "Set ARCH dependent variables for bios build" msg "Set ARCH dependent variables for bios build"
if [[ "${CARCH}" == 'x86_64' ]]; then if [[ "${CARCH}" == 'x86_64' ]]; then
_EFIEMU="--enable-efiemu" _EFIEMU="--enable-efiemu"
else else
_EFIEMU="--disable-efiemu" _EFIEMU="--disable-efiemu"
fi fi
msg "Copy the source for building the bios part" 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"
cp -r "${srcdir}/grub-extras/915resolution" "${srcdir}/grub-${_pkgver}-bios/grub-extras/915resolution" cp -r "${srcdir}/grub-extras/915resolution" "${srcdir}/grub-${_pkgver}-bios/grub-extras/915resolution"
export GRUB_CONTRIB="${srcdir}/grub-${_pkgver}-bios/grub-extras/" export GRUB_CONTRIB="${srcdir}/grub-${_pkgver}-bios/grub-extras/"
msg "Unset all compiler FLAGS for bios build" msg "Unset all compiler FLAGS for bios 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}-bios/" cd "${srcdir}/grub-${_pkgver}-bios/"
msg "Run autogen.sh for bios build" msg "Run autogen.sh for bios build"
./autogen.sh ./autogen.sh
echo echo
msg "Run ./configure for bios build" msg "Run ./configure for bios build"
./configure \ ./configure \
--with-platform="pc" \ --with-platform="pc" \
@ -183,31 +180,30 @@ _build_grub-common_and_bios() {
--disable-silent-rules \ --disable-silent-rules \
--disable-werror --disable-werror
echo echo
msg "Run make for bios build" msg "Run make for bios build"
make make
echo echo
} }
_build_grub-efi() { _build_grub-efi() {
msg "Copy the source for building the ${_EFI_ARCH} efi part" msg "Copy the source for building the ${_EFI_ARCH} efi part"
cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}" cp -r "${srcdir}/grub-${_pkgver}" "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}"
cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/" cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
msg "Unset all compiler FLAGS for ${_EFI_ARCH} efi build" msg "Unset all compiler FLAGS for ${_EFI_ARCH} 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-${_EFI_ARCH}/" cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
msg "Run autogen.sh for ${_EFI_ARCH} efi build" msg "Run autogen.sh for ${_EFI_ARCH} efi build"
./autogen.sh ./autogen.sh
echo echo
msg "Run ./configure for ${_EFI_ARCH} efi build" msg "Run ./configure for ${_EFI_ARCH} efi build"
./configure \ ./configure \
--with-platform="efi" \ --with-platform="efi" \
@ -233,31 +229,29 @@ _build_grub-efi() {
--disable-silent-rules \ --disable-silent-rules \
--disable-werror --disable-werror
echo echo
msg "Run make for ${_EFI_ARCH} efi build" msg "Run make for ${_EFI_ARCH} efi build"
make make
echo echo
} }
_build_grub-emu() { _build_grub-emu() {
msg "Copy the source for building the emu part" msg "Copy the source for building the emu part"
cp -r "${srcdir}/grub-${_pkgver}/" "${srcdir}/grub-${_pkgver}-emu/" cp -r "${srcdir}/grub-${_pkgver}/" "${srcdir}/grub-${_pkgver}-emu/"
msg "Unset all compiler FLAGS for emu build" msg "Unset all compiler FLAGS for emu 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}-emu/" cd "${srcdir}/grub-${_pkgver}-emu/"
msg "Run autogen.sh for emu build" msg "Run autogen.sh for emu build"
./autogen.sh ./autogen.sh
echo echo
msg "Run ./configure for emu build" msg "Run ./configure for emu build"
./configure \ ./configure \
--with-platform="emu" \ --with-platform="emu" \
@ -284,113 +278,102 @@ _build_grub-emu() {
--disable-silent-rules \ --disable-silent-rules \
--disable-werror --disable-werror
echo echo
msg "Run make for emu build" msg "Run make for emu build"
make make
echo echo
} }
build() { build() {
cd "${srcdir}/grub-${_pkgver}/" cd "${srcdir}/grub-${_pkgver}/"
msg "Build grub bios stuff" msg "Build grub bios stuff"
_build_grub-common_and_bios _build_grub-common_and_bios
echo echo
msg "Build grub ${_EFI_ARCH} efi stuff" msg "Build grub ${_EFI_ARCH} efi stuff"
_build_grub-efi _build_grub-efi
echo echo
if [[ "${CARCH}" == "x86_64" ]] && [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then if [[ "${CARCH}" == "x86_64" ]] && [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then
msg "Build grub i386 efi stuff" msg "Build grub i386 efi stuff"
_EFI_ARCH="i386" _build_grub-efi _EFI_ARCH="i386" _build_grub-efi
echo echo
fi fi
if [[ "${_GRUB_EMU_BUILD}" == "1" ]]; then if [[ "${_GRUB_EMU_BUILD}" == "1" ]]; then
msg "Build grub emu stuff" msg "Build grub emu stuff"
_build_grub-emu _build_grub-emu
echo echo
fi fi
} }
_package_grub-common_and_bios() { _package_grub-common_and_bios() {
cd "${srcdir}/grub-${_pkgver}-bios/" cd "${srcdir}/grub-${_pkgver}-bios/"
msg "Run make install for bios build" msg "Run make install for bios 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 bios build" 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"/*.module || true
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 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+"
msg "Install /etc/default/grub (used by grub-mkconfig)" msg "Install /etc/default/grub (used by grub-mkconfig)"
install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub" install -D -m0644 "${srcdir}/grub.default" "${pkgdir}/etc/default/grub"
msg "Install grub.cfg for backup array" msg "Install grub.cfg for backup array"
install -D -m0644 "${srcdir}/grub.cfg" "${pkgdir}/boot/grub/grub.cfg" install -D -m0644 "${srcdir}/grub.cfg" "${pkgdir}/boot/grub/grub.cfg"
} }
_package_grub-efi() { _package_grub-efi() {
cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/" cd "${srcdir}/grub-${_pkgver}-efi-${_EFI_ARCH}/"
msg "Run make install for ${_EFI_ARCH} 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_ARCH} 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
} }
_package_grub-emu() { _package_grub-emu() {
cd "${srcdir}/grub-${_pkgver}-emu/" cd "${srcdir}/grub-${_pkgver}-emu/"
msg "Run make install for emu build" msg "Run make install for emu 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 emu build" msg "Remove gdb debugging related files for emu build"
rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/*.module || true rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/*.module || true
rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/*.image || true rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/*.image || true
rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/{kernel.exec,gdb_grub,gmodule.pl} || true rm -f "${pkgdir}/usr/lib/grub/${_EMU_ARCH}-emu"/{kernel.exec,gdb_grub,gmodule.pl} || true
} }
package() { package() {
cd "${srcdir}/grub-${_pkgver}/" cd "${srcdir}/grub-${_pkgver}/"
msg "Package grub ${_EFI_ARCH} efi stuff" msg "Package grub ${_EFI_ARCH} efi stuff"
_package_grub-efi _package_grub-efi
if [[ "${CARCH}" == "x86_64" ]] && [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then if [[ "${CARCH}" == "x86_64" ]] && [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then
msg "Package grub i386 efi stuff" msg "Package grub i386 efi stuff"
_EFI_ARCH="i386" _package_grub-efi _EFI_ARCH="i386" _package_grub-efi
echo echo
fi fi
if [[ "${_GRUB_EMU_BUILD}" == "1" ]]; then if [[ "${_GRUB_EMU_BUILD}" == "1" ]]; then
msg "Package grub emu stuff" msg "Package grub emu stuff"
_package_grub-emu _package_grub-emu
echo echo
fi fi
msg "Package grub bios stuff" msg "Package grub bios stuff"
_package_grub-common_and_bios _package_grub-common_and_bios
} }

View File

@ -1,143 +0,0 @@
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index db58ab9..e66e139 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -212,6 +212,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 9838720..dbb5dd2 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
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index e27d6f7..0a255f5 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -87,6 +87,8 @@ linux_entry ()
case $type in
recovery)
title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;;
+ fallback)
+ title="$(gettext_printf "%s, with Linux %s (Fallback initramfs)" "${os}" "${version}")" ;;
*)
title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
esac
@@ -100,7 +102,7 @@ linux_entry ()
else
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
fi
- if [ x$type != xrecovery ] ; then
+ if [ x$type != xrecovery ] && [ x$type != xfallback ] ; then
save_default_entry | grub_add_tab
fi
@@ -132,7 +134,8 @@ linux_entry ()
fi
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
fi
- message="$(gettext_printf "Loading Linux %s ..." ${version})"
+
+ message="$(gettext_printf "Loading Linux %s ..." "${version}")"
sed "s/^/$submenu_indentation/" << EOF
echo '$(echo "$message" | grub_quote)'
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
@@ -190,7 +193,22 @@ while [ "x$list" != "x" ] ; do
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+ if test -e "/etc/arch-release" ; then
+ if echo "${basename}" | grep -q 'vmlinuz-linux' ; then
+ version="`echo "${basename}" | sed -e 's,vmlinuz-linux,,g'`"
+
+ if [ "x${version}" = "x" ] ; then
+ version="core repo kernel"
+ else
+ version="`echo "${version}" | sed -e 's,-,,g'`"
+ version="${version} kernel"
+ fi
+ fi
+ fi
+
initrd=
+ initrd_arch="`echo "${basename}" | sed -e 's,vmlinuz,initramfs,g'`"
+
for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
@@ -198,7 +216,8 @@ while [ "x$list" != "x" ] ; do
"initramfs-genkernel-${version}" \
"initramfs-genkernel-${alt_version}" \
"initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
- "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" \
+ "${initrd_arch}.img" ; do
if test -e "${dirname}/${i}" ; then
initrd="$i"
break
@@ -226,6 +245,22 @@ while [ "x$list" != "x" ] ; do
linux_root_device_thisversion=${GRUB_DEVICE}
fi
+ if test -e "/etc/arch-release" ; then
+ is_first_entry="false"
+
+ linux_entry "${OS}" "${version}" true \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+
+ for i in "${initrd_arch}-fallback.img" "initramfs-${version}-fallback.img" ; do
+ if test -e "${dirname}/${i}" ; then
+ initrd="${i}"
+ linux_entry "${OS}" "${version}" fallback \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+ break
+ fi
+ done
+ fi
+
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
linux_entry "${OS}" "${version}" simple \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
@@ -240,8 +275,11 @@ while [ "x$list" != "x" ] ; do
is_top_level=false
fi
+ if ! test -e "/etc/arch-release" ; then
linux_entry "${OS}" "${version}" advanced \
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+ fi
+
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
linux_entry "${OS}" "${version}" recovery \
"single ${GRUB_CMDLINE_LINUX}"
@@ -252,8 +290,10 @@ done
# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
+if ! test -e "/etc/arch-release" ; then
if [ x"$is_top_level" != xtrue ]; then
echo '}'
fi
+fi
echo "$title_correction_code"

View File

@ -1,11 +0,0 @@
--- util/grub.d/10_linux.in.old 2013-07-28 08:55:47.825946239 +0200
+++ util/grub.d/10_linux.in 2013-07-28 08:56:14.082201512 +0200
@@ -138,7 +138,7 @@
message="$(gettext_printf "Loading Linux %s ..." "${version}")"
sed "s/^/$submenu_indentation/" << EOF
echo '$(echo "$message" | grub_quote)'
- linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
+ linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} rw ${args}
EOF
if test -n "${initrd}" ; then
# TRANSLATORS: ramdisk isn't identifier. Should be translated.

View File

@ -1,54 +0,0 @@
There is no explicit option to turn off alignment; it is implicitly
disabled if one of --separator or --nameprefixes option is used.
--separator was added in 2007, --nameprefixes - in 2009. So let's use
--separator to extend range of versions we are compatible with. Note that
one or another must be used, current parsing is broken otherwise.
Signed-off-by: Andrey Borzenkov <address@hidden>
---
util/getroot.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/util/getroot.c b/util/getroot.c
index 2ad8a55..3afcf96 100644
--- a/util/getroot.c
+++ b/util/getroot.c
@@ -1322,7 +1322,7 @@ grub_util_get_dev_abstraction (const char *os_dev)
static void
pull_lvm_by_command (const char *os_dev)
{
- char *argv[6];
+ char *argv[8];
int fd;
pid_t pid;
FILE *mdadm;
@@ -1351,12 +1351,17 @@ pull_lvm_by_command (const char *os_dev)
/* execvp has inconvenient types, hence the casts. None of these
strings will actually be modified. */
+ /* by default PV name is left aligned in 10 character field, meaning that
+ we do not know where name ends. Using dummy --separator disables
+ alignment. We have a single field, so separator itself is not output */
argv[0] = (char *) "vgs";
argv[1] = (char *) "--options";
argv[2] = (char *) "pv_name";
argv[3] = (char *) "--noheadings";
- argv[4] = vgname;
- argv[5] = NULL;
+ argv[4] = (char *) "--separator";
+ argv[5] = (char *) ":";
+ argv[6] = vgname;
+ argv[7] = NULL;
pid = exec_pipe (argv, &fd);
free (vgname);
@@ -1376,6 +1381,7 @@ pull_lvm_by_command (const char *os_dev)
while (getline (&buf, &len, mdadm) > 0)
{
char *ptr;
+ /* LVM adds two spaces as standard prefix */
for (ptr = buf; ptr < buf + 2 && *ptr == ' '; ptr++);
if (*ptr == '\0')
continue;

View File

@ -1,26 +0,0 @@
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index d2e2a8f..f67e50f 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -65,6 +65,12 @@ case x"$GRUB_FS" in
;;
esac
+intel_ucode=
+if test -e "/boot/intel-ucode.img" ; then
+ gettext_printf "Found Intel Microcode image\n" >&2
+ intel_ucode="$(make_system_path_relative_to_its_root /boot/intel-ucode.img)"
+fi
+
title_correction_code=
linux_entry ()
@@ -136,7 +142,7 @@ EOF
message="$(gettext_printf "Loading initial ramdisk ...")"
sed "s/^/$submenu_indentation/" << EOF
echo '$(echo "$message" | grub_quote)'
- initrd ${rel_dirname}/${initrd}
+ initrd ${intel_ucode} ${rel_dirname}/${initrd}
EOF
fi
sed "s/^/$submenu_indentation/" << EOF

View File

@ -1,6 +1,3 @@
infodir="usr/share/info"
filelist=('grub.info' 'grub-dev.info')
post_install() { post_install() {
if [ -f /boot/grub/grub.cfg.pacsave ]; then if [ -f /boot/grub/grub.cfg.pacsave ]; then
echo "Copying /boot/grub/grub.cfg.pacsave to /boot/grub/grub.cfg" echo "Copying /boot/grub/grub.cfg.pacsave to /boot/grub/grub.cfg"
@ -11,23 +8,8 @@ post_install() {
Generating grub.cfg.example config file... Generating grub.cfg.example config file...
This may fail on some machines running a custom kernel. This may fail on some machines running a custom kernel.
EOM EOM
grub-mkconfig -o /boot/grub/grub.cfg.example 2> /dev/null grub-mkconfig -o /boot/grub/grub.cfg.example 2> /dev/null
echo "done." echo "done."
for file in ${filelist[@]}; do
install-info ${infodir}/${file}.gz ${infodir}/dir 2> /dev/null
done
} }
post_upgrade() {
for file in ${filelist[@]}; do
install-info ${infodir}/${file}.gz ${infodir}/dir 2> /dev/null
done
}
pre_remove() {
for file in ${filelist[@]}; do
install-info --delete ${infodir}/${file} ${infodir}/dir 2> /dev/null
done
}