Added sys-boot/grub-0.97-r16.

This commit is contained in:
László Valkó 2017-04-24 02:54:43 +02:00
parent 8f1651ab96
commit 0a22cb9b70
6 changed files with 438 additions and 0 deletions

8
sys-boot/grub/Manifest Normal file
View file

@ -0,0 +1,8 @@
AUX grub-0.97-Add-esp-to-list-of-clobbered-registers.patch 1612 SHA256 515d609d54602c285e98aeaec66ac95136512d54bb16ee80f22cf06f02999948 SHA512 85241fc4f939cbf6dc9e18b0b68034835bcb4ac7162fa1dc497e169422b66f0320d59d8270bc13c827a325f45d260028276641cff3f12b4d6096e2d33a12261b WHIRLPOOL 4dda1385591e71766a7d3141038f67bee1ceda3d1deef97913a2a684dbea03ac5fd982291ae017d8bb82ac222e378db5c9cac537a0a7b47328361e00314e5ff3
AUX grub-0.97-ncurses-pkgconfig.patch 799 SHA256 273bd077ae5591cd8fdcd6dc61bf8890e30a1c84a04ef05d5e5fa32176583162 SHA512 9456c422e05e75e4221101d66bf1c1ba3efa195ef67872a75790362da825bffe1bcd74c5ff6e3f5a9ccda6b364f02c631c0d513c0de5aa19a78be9bea525c13f WHIRLPOOL dd285a51cd10461b1b74b1a1bc892911015fbbc68c33de15b50cf642284ec67165b6d6ec0de345addcd4964bab694d444c0ab041a7f547efe8d29bbfb7095c67
AUX grub.conf.gentoo 591 SHA256 e656b5716d6a5904a035960b460494431d8c1327df51fcd9ffb39243425fe142 SHA512 23036b9e558b604082d9ae8c848f18ea552181416937e3ef62287e53c38086b8d7ffef0e67d04af04f05f5b23c6da7aaf1f1f23e0ee1cffd5dbd5320e8648cb1 WHIRLPOOL 184284cac00bc039d36c5b2f8d7be0f425e75ba904c4c04c2ec531a094cd191c42cb7382276e73a5d176e1661dcdd1bdc5e3806b9d7abe9b38563575ecb6ee76
DIST grub-0.97-patches-1.14.tar.bz2 52916 SHA256 5c7ca31fd9b2123471daf2e46a1936c4044ad0c12e353d9d3d8c3f83a1c7a0e5 SHA512 d9a8d420fd5a36f181ca608f9b70be90f9d82cee66c8484636fda5085290586071b5d9379d917e8141b993ffc4777859cd02971c916d6167dca6f50d83282c26 WHIRLPOOL 60abd5087e85d9969784b9f5a100934606a76da03b665533d9d4d1d13f4e2d15de233a71e67a32d18a5fbfe128c2c8bf04c0d4451de24e6ca4fbd8dd862e23ea
DIST grub-0.97.tar.gz 971783 SHA256 4e1d15d12dbd3e9208111d6b806ad5a9857ca8850c47877d36575b904559260b SHA512 c2bc9ffc8583aeae71cee9ddcc4418969768d4e3764d47307da54f93981c0109fb07d84b061b3a3628bd00ba4d14a54742bc04848110eb3ae8ca25dbfbaabadb WHIRLPOOL 0ad7f5dc035e2a3ad5fd29b6388f06fd12a8cc694117b4cbd42b5302433aa522db23566222d35219fe17fb95edb5090553156198507f70208eda5d858fd52dd5
DIST splash.xpm.gz 33856 SHA256 b95600f777331b0dd31d51c68f60f0e846e4c8b628857a41165f4e6b30e6acaf SHA512 5ae1f786f7d46a95a7061068d5b2b3ad64607c7b190d6f28379508c5dce67e26308325bfd637542a84855dfcf1ea3d143947326fdb189a6a8972208d3ead23da WHIRLPOOL d95b7b588ea8ac7c2c8c53eb8057aef21c825da6411afe3b7e864c606aeffaaebce8ae41ce3e979f277bd6b48a9e82a1f2ea8afc836213b56523d8a854227d7b
EBUILD grub-0.97-r16.ebuild 9941 SHA256 eb18a4a923f131bdf9ebf007468697a2d4c2ba9e6359e87bf827a70d12e22c8c SHA512 257ece3504d862b5b85bc05e6b312552f7e633d9ff1eabf4076590efb4d83c7bf2e47283bdade3fc48b5635e7dc9f41681dea00acc0594b7f06f45e1e7ffaf4e WHIRLPOOL 4901e0de7b13da1e6940dd1118425772961f2e5a2359657102b9b3c3bd540be2b1366cc39f7f41677e669607b8d10a371aa7246efe50b0fa41c905c0c8a4924b
MISC metadata.xml 1154 SHA256 bc5e3ef3b0ed12c8a87116c81af6797f52f2aeeaaf3b54630ca244844fc9dece SHA512 70fbe1b2d79c7715ba700217c95d29ff8bee2ee1debdb3828cb0104f3640973df1a13f20175899fed32d030bac6a7b68f6e787ed72f300283656b664c14d4abe WHIRLPOOL d6aed2c9b8ce119e3335eba174495fd537ddfc9068b7dbad375606e21bd3650e9e83fcf748234a82ef30b06019d7c9fdb684cf213417b339db3096b7b767cbce

View file

@ -0,0 +1,53 @@
From 5a52ee4b5cd152fa4ccd1c1f938ce2eba652af52 Mon Sep 17 00:00:00 2001
From: Sergei Trofimovich <slyfox@gentoo.org>
Date: Mon, 14 Dec 2015 23:59:17 +0000
Subject: [PATCH] Add %esp to list of clobbered registers
GCC assumes that it can combine stacks from
outer
grub_stage2()
and inner
trampoline doit()
functions (optimisation -fcombine-stack-adjustments).
But doit() function clobbers %esp in inline
assebly statement as:
asm volatile ("movl %%esp, %0\n\tmovl %1, %%esp\n"
: "=&r" (realstack) : "r" (simstack));
which tricks gcc into computing invalid local variable
offsets from current %esp value.
Fix by hinting gcc about %esp change in clobber list.
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
---
grub/asmstub.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/grub/asmstub.c b/grub/asmstub.c
index 6354806..44b056f 100644
--- a/grub/asmstub.c
+++ b/grub/asmstub.c
@@ -174,7 +174,7 @@ grub_stage2 (void)
{
/* Make sure our stack lives in the simulated memory area. */
asm volatile ("movl %%esp, %0\n\tmovl %1, %%esp\n"
- : "=&r" (realstack) : "r" (simstack));
+ : "=&r" (realstack) : "r" (simstack) : "%esp");
/* Do a setjmp here for the stop command. */
if (! setjmp (env_for_exit))
@@ -191,7 +191,7 @@ grub_stage2 (void)
}
/* Replace our stack before we use any local variables. */
- asm volatile ("movl %0, %%esp\n" : : "r" (realstack));
+ asm volatile ("movl %0, %%esp\n" : : "r" (realstack) : "%esp");
}
assert (grub_scratch_mem == 0);
--
2.6.3

View file

@ -0,0 +1,18 @@
--- a/configure.ac 2015-12-17 11:09:56.807893315 -0500
+++ b/configure.ac 2015-12-17 11:11:06.697570856 -0500
@@ -234,10 +234,14 @@
# Unless the user specify --without-curses, check for curses.
if test "x$with_curses" != "xno"; then
+ PKG_CHECK_MODULES([NCURSES],[ncurses],[
+ AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])
+ GRUB_LIBS="$GRUB_LIBS $NCURSES_LIBS"
+ ],[
AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lncurses"
AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])],
[AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lcurses"
- AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])])])
+ AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])])])])
fi
AC_SUBST(GRUB_LIBS)

View file

@ -0,0 +1,16 @@
# This is a sample grub.conf for use with Genkernel, per the Gentoo handbook
# http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=10#doc_chap2
# If you are not using Genkernel and you need help creating this file, you
# should consult the handbook. Alternatively, consult the grub.conf.sample that
# is included with the Grub documentation.
default 0
timeout 30
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz
#title Gentoo Linux 3.8.13
#root (hd0,0)
#kernel /boot/kernel-genkernel-x86-3.8.13-gentoo root=/dev/sda3
#initrd /boot/initramfs-genkernel-x86-3.8.13
# vim:ft=conf:

View file

@ -0,0 +1,308 @@
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# XXX: we need to review menu.lst vs grub.conf handling. We've been converting
# all systems to grub.conf (and symlinking menu.lst to grub.conf), but
# we never updated any of the source code (it still all wants menu.lst),
# and there is no indication that upstream is making the transition.
# If you need to roll a new grub-static distfile, here is how.
# - Robin H. Johnson <robbat2@gentoo.org> - 29 Nov 2010
# FEATURES='-noauto -noinfo -nodoc -noman -splitdebug nostrip' \
# USE='static -ncurses -netboot -custom-cflags' \
# PORTAGE_COMPRESS=true GRUB_STATIC_PACKAGE_BUILDING=1 ebuild \
# grub-${PVR}.ebuild clean package && \
# qtbz2 -s -j ${PKGDIR}/${CAT}/${PF}.tbz2 && \
# mv ${PF}.tar.bz2 ${DISTDIR}/grub-static-${PVR}.tar.bz2
EAPI="5"
inherit eutils mount-boot toolchain-funcs linux-info flag-o-matic autotools pax-utils multiprocessing
PATCHVER="1.14" # Should match the revision ideally
DESCRIPTION="GNU GRUB Legacy boot loader"
HOMEPAGE="https://www.gnu.org/software/grub/"
SRC_URI="mirror://gentoo/${P}.tar.gz
mirror://gnu-alpha/${PN}/${P}.tar.gz
mirror://gentoo/splash.xpm.gz
mirror://gentoo/${P}-patches-${PATCHVER}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 x86 ~x86-fbsd"
IUSE="custom-cflags ncurses netboot static"
LIB_DEPEND="ncurses? ( >=sys-libs/ncurses-5.9-r3:0[static-libs(+),abi_x86_32(-)] )"
RDEPEND="!static? ( ${LIB_DEPEND//[static-libs(+),/=[} )"
DEPEND="${RDEPEND}
static? ( ${LIB_DEPEND} )"
RDEPEND+=" !sys-boot/grub:2[-multislot]"
pkg_setup() {
case $(tc-arch) in
amd64) CONFIG_CHECK='~IA32_EMULATION' check_extra_config ;;
esac
}
src_prepare() {
# Grub will not handle a kernel larger than EXTENDED_MEMSIZE Mb as
# discovered in bug 160801. We can change this, however, using larger values
# for this variable means that Grub needs more memory to run and boot. For a
# kernel of size N, Grub needs (N+1)*2. Advanced users should set a custom
# value in make.conf, it is possible to make kernels ~16Mb in size, but it
# needs the kitchen sink built-in.
local t="custom"
if [[ -z ${GRUB_MAX_KERNEL_SIZE} ]] ; then
case $(tc-arch) in
amd64) GRUB_MAX_KERNEL_SIZE=9 ;;
x86) GRUB_MAX_KERNEL_SIZE=5 ;;
esac
t="default"
fi
einfo "Grub will support the ${t} maximum kernel size of ${GRUB_MAX_KERNEL_SIZE} Mb (GRUB_MAX_KERNEL_SIZE)"
sed -i \
-e "/^#define.*EXTENDED_MEMSIZE/s,3,${GRUB_MAX_KERNEL_SIZE},g" \
"${S}"/grub/asmstub.c \
|| die
EPATCH_SUFFIX="patch" epatch "${WORKDIR}"/patch
# Work around issue where the default CFLAGS fail with gcc-4.9.3 (possibly newer), force -O0 instead
# bug 564890, 566638
if [[ $(gcc-major-version) -ge 5 || $(gcc-major-version) -eq 4 && $(gcc-minor-version) -ge 9 ]]; then
if use custom-cflags; then
ewarn "You are using custom cflags with gcc-4.9 or newer."
ewarn "Be aware the result may segfault at runtime due to unknown optimization"
ewarn "incompatibilities."
else
einfo "Forcing -O0 to get around optimization issue caused by gcc-4.9 and newer with -O2"
sed -i -e "/CFLAGS/s/-O2/-O0/" \
"${S}"/configure.ac || die
fi
fi
if [[ $(gcc-major-version) -ge 5 ]]; then
einfo "Forcing -std=gnu89 for gcc-5"
sed -i -e "/CFLAGS/s/-O2/-std=gnu89 -O2/" \
-e "/CFLAGS/s/-O0/-std=gnu89 -O0/" \
-e "/CFLAGS/s/-Os/-std=gnu89-Os/" \
"${S}"/configure.ac || die
fi
rm -f "${S}"/aclocal.m4 # seems to keep bug 418287 away
eautoreconf
}
src_configure() {
filter-flags -fPIE #168834
use amd64 && multilib_toolchain_setup x86
unset BLOCK_SIZE #73499
### i686-specific code in the boot loader is a bad idea; disabling to ensure
### at least some compatibility if the hard drive is moved to an older or
### incompatible system.
# grub-0.95 added -fno-stack-protector detection, to disable ssp for stage2,
# but the objcopy's (faulty) test fails if -fstack-protector is default.
# create a cache telling configure that objcopy is ok, and add -C to econf
# to make use of the cache.
#
# CFLAGS has to be undefined running econf, else -fno-stack-protector detection fails.
# STAGE2_CFLAGS is not allowed to be used on emake command-line, it overwrites
# -fno-stack-protector detected by configure, removed from netboot's emake.
use custom-cflags || unset CFLAGS
tc-ld-disable-gold #439082 #466536 #526348
export grub_cv_prog_objcopy_absolute=yes #79734
use static && append-ldflags -static
if use amd64 && use static ; then
if [[ -n ${GRUB_STATIC_PACKAGE_BUILDING} ]] ; then
eerror "You have set GRUB_STATIC_PACKAGE_BUILDING. This"
eerror "is specifically intended for building the tarballs for the"
eerror "grub-static package via USE='static -ncurses'."
eerror "All bets are now off."
fi
fi
multijob_init
# build the net-bootable grub first, but only if "netboot" is set
if use netboot ; then
(
multijob_child_init
mkdir -p "${WORKDIR}"/netboot
pushd "${WORKDIR}"/netboot >/dev/null
ECONF_SOURCE=${S} \
econf \
--libdir=/lib \
--datadir=/usr/lib/grub \
--exec-prefix=/ \
--disable-auto-linux-mem-opt \
--enable-diskless \
--enable-{3c{5{03,07,09,29,95},90x},cs89x0,davicom,depca,eepro{,100}} \
--enable-{epic100,exos205,ni5210,lance,ne2100,ni{50,65}10,natsemi} \
--enable-{ne,ns8390,wd,otulip,rtl8139,sis900,sk-g16,smc9000,tiara} \
--enable-{tulip,via-rhine,w89c840}
popd >/dev/null
) &
multijob_post_fork
fi
# Now build the regular grub
# Note that FFS and UFS2 support are broken for now - stage1_5 files too big
econf \
--libdir=/lib \
--datadir=/usr/lib/grub \
--exec-prefix=/ \
--disable-auto-linux-mem-opt \
$(use_with ncurses curses)
# sanity check due to common failure
use ncurses && ! grep -qs "HAVE_LIBCURSES.*1" config.h && die "USE=ncurses but curses not found"
multijob_finish
}
src_compile() {
use netboot && emake -C "${WORKDIR}"/netboot w89c840_o_CFLAGS="-O"
emake
}
src_test() {
# non-default block size also give false pass/fails.
unset BLOCK_SIZE
emake -j1 check
}
src_install() {
default
if use netboot ; then
exeinto /usr/lib/grub/${CHOST}
doexe "${WORKDIR}"/netboot/stage2/{nbgrub,pxegrub}
newexe "${WORKDIR}"/netboot/stage2/stage2 stage2.netboot
fi
pax-mark -m "${D}"/sbin/grub #330745
newdoc docs/menu.lst grub.conf.sample
dodoc "${FILESDIR}"/grub.conf.gentoo
[[ -n ${GRUB_STATIC_PACKAGE_BUILDING} ]] && \
mv "${D}"/usr/share/doc/{${PF},grub-static-${PF/grub-}}
insinto /usr/share/grub
doins "${DISTDIR}"/splash.xpm.gz
}
setup_boot_dir() {
local boot_dir=$1
local dir=${boot_dir}
mkdir -p "${dir}"
[[ ! -L ${dir}/boot ]] && ln -s . "${dir}/boot"
dir="${dir}/grub"
if [[ ! -e ${dir} ]] ; then
mkdir "${dir}" || die
fi
# change menu.lst to grub.conf
if [[ ! -e ${dir}/grub.conf ]] && [[ -e ${dir}/menu.lst ]] ; then
mv -f "${dir}"/menu.lst "${dir}"/grub.conf
ewarn "*** IMPORTANT NOTE: menu.lst has been renamed to grub.conf"
echo
fi
if [[ ! -e ${dir}/menu.lst ]]; then
einfo "Linking from new grub.conf name to menu.lst"
ln -snf grub.conf "${dir}"/menu.lst
fi
if [[ -e ${dir}/stage2 ]] ; then
mv "${dir}"/stage2{,.old}
ewarn "*** IMPORTANT NOTE: you must run grub and install"
ewarn "the new version's stage1 to your MBR. Until you do,"
ewarn "stage1 and stage2 will still be the old version, but"
ewarn "later stages will be the new version, which could"
ewarn "cause problems such as an unbootable system."
ewarn
ewarn "This means you must use either grub-install or perform"
ewarn "root/setup manually."
ewarn
ewarn "For more help, see the wiki:"
ewarn "https://wiki.gentoo.org/wiki/GRUB"
echo
fi
einfo "Copying files from /lib/grub and /usr/share/grub to ${dir}"
for x in \
"${ROOT}"/lib*/grub/*/* \
"${ROOT}"/usr/share/grub/* ; do
[[ -f ${x} ]] && cp -p "${x}" "${dir}"/
done
if [[ ! -e ${dir}/grub.conf ]] ; then
s="${ROOT}/usr/share/doc/${PF}/grub.conf.gentoo"
[[ -e "${s}" ]] && cat "${s}" >${dir}/grub.conf
[[ -e "${s}.gz" ]] && zcat "${s}.gz" >${dir}/grub.conf
[[ -e "${s}.bz2" ]] && bzcat "${s}.bz2" >${dir}/grub.conf
fi
# Per bug 218599, we support grub.conf.install for users that want to run a
# specific set of Grub setup commands rather than the default ones.
grub_config=${dir}/grub.conf.install
[[ -e ${grub_config} ]] || grub_config=${dir}/grub.conf
if [[ -e ${grub_config} ]] ; then
egrep \
-v '^[[:space:]]*(#|$|default|fallback|initrd|password|splashimage|timeout|title)' \
"${grub_config}" | \
/sbin/grub --batch \
--device-map="${dir}"/device.map \
> /dev/null
fi
# the grub default commands silently piss themselves if
# the default file does not exist ahead of time
if [[ ! -e ${dir}/default ]] ; then
grub-set-default --root-directory="${boot_dir}" default
fi
einfo "Grub has been installed to ${boot_dir} successfully."
}
pkg_postinst() {
mount-boot_mount_boot_partition
if [[ -n ${DONT_MOUNT_BOOT} ]]; then
elog "WARNING: you have DONT_MOUNT_BOOT in effect, so you must apply"
elog "the following instructions for your /boot!"
elog "Neglecting to do so may cause your system to fail to boot!"
elog
else
setup_boot_dir "${ROOT}"/boot
# Trailing output because if this is run from pkg_postinst, it gets mixed into
# the other output.
einfo ""
fi
elog "To interactively install grub files to another device such as a USB"
elog "stick, just run the following and specify the directory as prompted:"
elog " emerge --config =${PF}"
elog "Alternately, you can export GRUB_ALT_INSTALLDIR=/path/to/use to tell"
elog "grub where to install in a non-interactive way."
# needs to be after we call setup_boot_dir
mount-boot_pkg_postinst
}
pkg_config() {
local dir
if [ ! -d "${GRUB_ALT_INSTALLDIR}" ]; then
einfo "Enter the directory where you want to setup grub:"
read dir
else
dir="${GRUB_ALT_INSTALLDIR}"
fi
setup_boot_dir "${dir}"
}

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer restrict="&gt;=sys-boot/grub-2" type="person">
<email>floppym@gentoo.org</email>
</maintainer>
<maintainer type="project">
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
<use>
<flag name="device-mapper">
Enable support for device-mapper from <pkg>sys-fs/lvm2</pkg>
</flag>
<flag name="efiemu">
Build and install the efiemu runtimes
</flag>
<flag name="fonts">Build and install fonts for the gfxterm module</flag>
<flag name="mount">
Build and install the grub-mount utility
</flag>
<flag name="libzfs">
Enable support for <pkg>sys-fs/zfs</pkg>
</flag>
<flag name="multislot">
Allow concurrent installation of <pkg>sys-boot/grub</pkg> SLOT 0 and
<pkg>sys-boot/grub</pkg> SLOT 2 by renaming all programs.
</flag>
<flag name="themes">Build and install GRUB themes (starfield)</flag>
<flag name="truetype">Build and install grub-mkfont conversion utility</flag>
</use>
<upstream>
<remote-id type="sourceforge">dejavu</remote-id>
</upstream>
</pkgmetadata>