diff options
Diffstat (limited to 'sys-boot/grub/grub-9999.ebuild')
-rw-r--r-- | sys-boot/grub/grub-9999.ebuild | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/sys-boot/grub/grub-9999.ebuild b/sys-boot/grub/grub-9999.ebuild new file mode 100644 index 0000000..913e512 --- /dev/null +++ b/sys-boot/grub/grub-9999.ebuild @@ -0,0 +1,137 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +# FIXME: somehow depend on python-2 only; using python eclass maybe? +# NOTE: good idea would be to move grub-2 to new package called grub2 + +EAPI=4 + +if [[ ${PV} == "9999" ]] ; then + EBZR_REPO_URI="http://bzr.savannah.gnu.org/r/grub/trunk/grub/" + LIVE_ECLASS="autotools bzr" + SRC_URI="" +else + MY_P=${P/_/\~} + SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.xz + mirror://gentoo/${MY_P}.tar.xz" + S=${WORKDIR}/${MY_P} +fi + +inherit mount-boot eutils flag-o-matic toolchain-funcs ${LIVE_ECLASS} +unset LIVE_ECLASS + +DESCRIPTION="GNU GRUB boot loader" +HOMEPAGE="http://www.gnu.org/software/grub/" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="" +IUSE="custom-cflags debug device-mapper static sdl truetype" + +RDEPEND=">=sys-libs/ncurses-5.2-r5 + dev-libs/lzo + debug? ( + sdl? ( media-libs/libsdl ) + ) + device-mapper? ( >=sys-fs/lvm2-2.02.45 ) + truetype? ( media-libs/freetype >=media-fonts/unifont-5 )" +DEPEND="${RDEPEND} + >=dev-lang/python-2.5.2 +" +if [[ ${PV} == "9999" ]]; then + DEPEND+=" >=sys-devel/autogen-5.10 sys-apps/help2man" +else + DEPEND+=" app-arch/xz-utils" +fi + +export STRIP_MASK="*/grub/*/*.mod" +QA_EXECSTACK=" + sbin/grub-probe + sbin/grub-setup + sbin/grub-mkdevicemap + bin/grub-script-check + bin/grub-fstest +" + +DOCS=( AUTHORS ChangeLog NEWS README THANKS TODO ) + +src_prepare() { + epatch_user + + # autogen.sh does more than just run autotools + if [[ ${PV} == "9999" ]] ; then + sed -i -e '/^autoreconf/s:^:e:' autogen.sh || die + (. ./autogen.sh) || die + fi +} + +src_configure() { + use custom-cflags || unset CFLAGS CPPFLAGS LDFLAGS + use static && append-ldflags -static + + econf \ + --disable-werror \ + --sbindir=/sbin \ + --bindir=/bin \ + --libdir=/$(get_libdir) \ + --disable-efiemu \ + $(use_enable device-mapper) \ + $(use_enable truetype grub-mkfont) \ + $(use_enable debug mm-debug) \ + $(use sdl && use_enable debug grub-emu-sdl) \ + $(use_enable debug grub-emu-usb) +} + +src_install() { + default + + insinto /etc/default + newins "${FILESDIR}"/defaults grub + cat <<-EOF >> "${D}"/lib*/grub/grub-mkconfig_lib + GRUB_DISTRIBUTOR="Gentoo" +EOF +} + +setup_boot_dir() { + local dir=$1 + + if [[ ! -e ${dir}/grub.cfg ]]; then + # display the link to guide if user didn't set up anything yet. + elog "For informations how to configure grub-2 please reffer to guide:" + # FIXME: we don't have any guide yet! + # Lets just use archlinux wiki until we have some. + elog " https://wiki.archlinux.org/index.php/GRUB2" + fi + + if [[ ! -e ${dir}/grub.cfg && -e ${dir}/menu.lst ]] ; then + # This is first grub2 install and we have old configuraton for + # grub1 around. Lets try to generate grub.cfg from it so user + # does not loose any stuff when rebooting. + # NOTE: in long term he still NEEDS to migrate to grub.d stuff. + einfo "Running: grub-menulst2cfg '${dir}/menu.lst' '${dir}/grub.cfg'" + grub-menulst2cfg "${dir}/menu.lst" "${dir}/grub.cfg" || \ + ewarn "Running grub-menulst2cfg failed!" + + einfo "Even if we just created configuration for your grub-2 using old" + einfo "grub-1 configuration file you should migrate to use new style" + einfo "configuration in '${ROOT}/etc/grub.d'." + else + # we need to refresh the grub.cfg everytime just to play it safe + einfo "Running: grub-mkconfig -o '${dir}/grub.cfg'" + grub-mkconfig -o "${dir}/grub.cfg" || \ + ewarn "Running grub-mkconfig failed! Check your configuration files!" + fi + + elog "Remember to run \"grub-mkconfig -o '${dir}/grub.cfg'\" every time" + elog "you update the configuration files." +} + +pkg_postinst() { + mount-boot_mount_boot_partition + + setup_boot_dir "${ROOT}"boot/grub + + # needs to be called after we call setup_boot_dir + mount-boot_pkg_postinst +} |