summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gilbert <floppym@gentoo.org>2013-04-28 19:44:09 +0000
committerMike Gilbert <floppym@gentoo.org>2013-04-28 19:44:09 +0000
commit99f956ce1d3028288c445e0ae3ecd5df6f45869c (patch)
tree289efa9aecc698b79391be1308a970d9887156de /sys-boot
parentVersion bump; remove old. (diff)
downloadgentoo-2-99f956ce1d3028288c445e0ae3ecd5df6f45869c.tar.gz
gentoo-2-99f956ce1d3028288c445e0ae3ecd5df6f45869c.tar.bz2
gentoo-2-99f956ce1d3028288c445e0ae3ecd5df6f45869c.zip
Rewrite ebuild around autotools-utils and multibuild eclasses. Add USE=multislot to toggle renaming of binaries and grubdir.
(Portage version: 2.2.0_alpha173/cvs/Linux x86_64, signed Manifest commit with key 0BBEEA1FEA4843A4)
Diffstat (limited to 'sys-boot')
-rw-r--r--sys-boot/grub/ChangeLog6
-rw-r--r--sys-boot/grub/grub-9999.ebuild338
-rw-r--r--sys-boot/grub/metadata.xml4
3 files changed, 112 insertions, 236 deletions
diff --git a/sys-boot/grub/ChangeLog b/sys-boot/grub/ChangeLog
index 861f9bd6a968..d7c4b824b471 100644
--- a/sys-boot/grub/ChangeLog
+++ b/sys-boot/grub/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for sys-boot/grub
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-boot/grub/ChangeLog,v 1.257 2013/04/27 20:58:24 floppym Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-boot/grub/ChangeLog,v 1.258 2013/04/28 19:44:09 floppym Exp $
+
+ 28 Apr 2013; Mike Gilbert <floppym@gentoo.org> grub-9999.ebuild, metadata.xml:
+ Rewrite ebuild around autotools-utils and multibuild eclasses. Add
+ USE=multislot to toggle renaming of binaries and grubdir.
27 Apr 2013; Mike Gilbert <floppym@gentoo.org> grub-9999.ebuild:
Refresh live ebuild.
diff --git a/sys-boot/grub/grub-9999.ebuild b/sys-boot/grub/grub-9999.ebuild
index 59dc2bbc31a4..d4e7f4d8678a 100644
--- a/sys-boot/grub/grub-9999.ebuild
+++ b/sys-boot/grub/grub-9999.ebuild
@@ -1,38 +1,48 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-boot/grub/grub-9999.ebuild,v 1.88 2013/04/27 20:58:24 floppym Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-boot/grub/grub-9999.ebuild,v 1.89 2013/04/28 19:44:09 floppym Exp $
-EAPI=4
+EAPI=5
+AUTOTOOLS_AUTO_DEPEND=yes
-if [[ ${PV} == "9999" ]] ; then
- EBZR_REPO_URI="http://bzr.savannah.gnu.org/r/grub/trunk/grub/"
- LIVE_ECLASS="bzr"
- SRC_URI=""
- DO_AUTORECONF="true"
-else
+inherit autotools-utils eutils flag-o-matic multibuild pax-utils toolchain-funcs
+
+if [[ ${PV} != 9999 ]]; then
MY_P=${P/_/\~}
if [[ ${PV} == *_alpha* || ${PV} == *_beta* || ${PV} == *_rc* ]]; then
SRC_URI="mirror://gnu-alpha/${PN}/${MY_P}.tar.xz"
else
SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.xz
- mirror://gentoo/${MY_P}.tar.xz"
+ mirror://gentoo/${MY_P}.tar.xz"
fi
KEYWORDS="~amd64 ~x86"
S=${WORKDIR}/${MY_P}
- DO_AUTORECONF="true"
+ PATCHES=(
+ "${FILESDIR}/${P}-parallel-make.patch" #424231
+ "${FILESDIR}/${P}-no-gets.patch" #424703
+ "${FILESDIR}/${P}-config-quoting.patch" #426364
+ "${FILESDIR}/${P}-tftp-endian.patch" # 438612
+ "${FILESDIR}/${P}-hardcoded-awk.patch" #424137
+ "${FILESDIR}/${P}-freebsd.patch" #442050
+ "${FILESDIR}/${P}-compression.patch" #424527
+ "${FILESDIR}/${P}-zfs-feature-flag-support-r1.patch" #455358
+ "${FILESDIR}/${P}-20_linux_xen.patch" #463992
+ "${FILESDIR}/${P}-dmraid.patch" #430748
+ "${FILESDIR}/${P}-texinfo.patch"
+ )
+else
+ inherit bzr
+ EBZR_REPO_URI="http://bzr.savannah.gnu.org/r/grub/trunk/grub/"
fi
-inherit eutils flag-o-matic multiprocessing pax-utils toolchain-funcs ${DO_AUTORECONF:+autotools} ${LIVE_ECLASS}
-unset LIVE_ECLASS
-
DESCRIPTION="GNU GRUB boot loader"
HOMEPAGE="http://www.gnu.org/software/grub/"
LICENSE="GPL-3"
SLOT="2"
-IUSE="custom-cflags debug device-mapper doc efiemu mount nls static sdl truetype libzfs"
+IUSE="custom-cflags debug device-mapper doc efiemu mount multislot nls static sdl truetype libzfs"
-GRUB_PLATFORMS=(
+GRUB_ALL_PLATFORMS=(
# everywhere:
emu
# mips only:
@@ -44,7 +54,7 @@ GRUB_PLATFORMS=(
# amd64, ia64:
efi-64
)
-IUSE+=" ${GRUB_PLATFORMS[@]/#/grub_platforms_}"
+IUSE+=" ${GRUB_ALL_PLATFORMS[@]/#/grub_platforms_}"
REQUIRED_USE="grub_platforms_qemu? ( truetype )
grub_platforms_yeeloong? ( truetype )"
@@ -69,11 +79,13 @@ RDEPEND="
ppc64? ( sys-apps/ibm-powerpc-utils sys-apps/powerpc-utils )
"
DEPEND="${RDEPEND}
+ app-misc/pax-utils
>=dev-lang/python-2.5.2
sys-devel/flex
sys-devel/bison
sys-apps/help2man
sys-apps/texinfo
+ >=sys-devel/autogen-5.10
static? (
truetype? (
app-arch/bzip2[static-libs(+)]
@@ -87,23 +99,18 @@ RDEPEND+="
grub_platforms_efi-32? ( sys-boot/efibootmgr )
grub_platforms_efi-64? ( sys-boot/efibootmgr )
)
+ !multislot? ( !sys-boot/grub:0 )
"
-if [[ -n ${DO_AUTORECONF} ]] ; then
- DEPEND+=" >=sys-devel/autogen-5.10"
-fi
-if [[ ${PV} != 9999 ]]; then
- DEPEND+=" app-arch/xz-utils"
-fi
-export STRIP_MASK="*/grub/*/*.{mod,img}"
+STRIP_MASK="*/grub/*/*.{mod,img}"
QA_EXECSTACK="
usr/bin/grub*
usr/sbin/grub*
usr/lib*/grub/*/*.mod
+ usr/lib*/grub/*/*.module
usr/lib*/grub/*/kernel.exec
usr/lib*/grub/*/kernel.img
- usr/lib*/grub/*/setjmp.module
"
QA_WX_LOAD="
@@ -116,110 +123,6 @@ QA_PRESTRIPPED="
usr/lib.*/grub/.*/kernel.img
"
-grub_run_phase() {
- local phase=$1
- local platform=$2
- [[ -z ${phase} || -z ${platform} ]] && die "${FUNCNAME} [phase] [platform]"
-
- [[ -d "${WORKDIR}/build-${platform}" ]] || \
- { mkdir "${WORKDIR}/build-${platform}" || die ; }
- pushd "${WORKDIR}/build-${platform}" > /dev/null || die
-
- echo ">>> Running ${phase} for platform \"${platform}\""
- echo ">>> Working in: \"${WORKDIR}/build-${platform}\""
-
- grub_${phase} ${platform}
-
- popd > /dev/null || die
-}
-
-grub_src_configure() {
- local platform=$1
- local with_platform=
- local enable_efiemu="--disable-efiemu"
-
- [[ -z ${platform} ]] && die "${FUNCNAME} [platform]"
-
- # Used below for efi cross-building
- tc-export CC NM OBJCOPY STRIP
-
- estack_push CTARGET "${CTARGET}"
- estack_push TARGET_CC "${TARGET_CC}"
- estack_push TARGET_CFLAGS "${TARGET_CFLAGS}"
- estack_push TARGET_CPPFLAGS "${TARGET_CPPFLAGS}"
-
- case ${platform} in
- efi-32)
- if [[ ${CHOST} == x86_64* ]]; then
- CTARGET="${CTARGET:-i386}"
- TARGET_CC="${TARGET_CC:-${CC}}"
- export TARGET_CC
- fi
- with_platform="--with-platform=efi"
- ;;
- efi-64)
- if [[ ${CHOST} == i?86* ]]; then
- CTARGET="${CTARGET:-x86_64}"
- TARGET_CC="${TARGET_CC:-${CC}}"
- TARGET_CFLAGS="-Os -march=x86-64 ${TARGET_CFLAGS}"
- TARGET_CPPFLAGS="-march=x86-64 ${TARGET_CPPFLAGS}"
- export TARGET_CC TARGET_CFLAGS TARGET_CPPFLAGS
- fi
- with_platform="--with-platform=efi"
- ;;
- guessed) ;;
- *)
- with_platform="--with-platform=${platform}"
- case ${CTARGET:-${CHOST}} in
- i?86*|x86_64*)
- enable_efiemu=$(use_enable efiemu)
- ;;
- esac
- ;;
- esac
-
- ECONF_SOURCE="${S}" \
- econf \
- --libdir=/usr/lib \
- --htmldir="${EPREFIX}/usr/share/doc/${PF}/html" \
- --disable-werror \
- --program-prefix= \
- --program-transform-name="s,grub,grub2," \
- --with-grubdir=grub2 \
- ${with_platform} \
- $(use_enable debug mm-debug) \
- $(use_enable debug grub-emu-usb) \
- $(use_enable device-mapper) \
- ${enable_efiemu} \
- $(use_enable mount grub-mount) \
- $(use_enable nls) \
- $(use_enable truetype grub-mkfont) \
- $(use_enable libzfs) \
- $(use sdl && use_enable debug grub-emu-sdl)
-
- estack_pop CTARGET CTARGET || die
- estack_pop TARGET_CC TARGET_CC || die
- estack_pop TARGET_CFLAGS TARGET_CFLAGS || die
- estack_pop TARGET_CPPFLAGS TARGET_CPPFLAGS || die
-}
-
-grub_src_compile() {
- default_src_compile
- pax-mark -mpes "${grub_binaries[@]}"
-}
-
-grub_build_docs() {
- emake -C docs html
-}
-
-grub_src_install() {
- default_src_install
-}
-
-grub_install_docs() {
- emake -C docs DESTDIR="${D}" install-html
-}
-
pkg_pretend() {
if [[ ${MERGE_TYPE} != binary ]]; then
# Bug 439082
@@ -232,142 +135,107 @@ pkg_pretend() {
}
src_prepare() {
- if [[ ${PV} != 9999 ]]; then
- epatch "${FILESDIR}/${P}-parallel-make.patch" #424231
- epatch "${FILESDIR}/${P}-no-gets.patch" #424703
- epatch "${FILESDIR}/${P}-config-quoting.patch" #426364
- epatch "${FILESDIR}/${P}-tftp-endian.patch" # 438612
- epatch "${FILESDIR}/${P}-hardcoded-awk.patch" #424137
- epatch "${FILESDIR}/${P}-freebsd.patch" #442050
- epatch "${FILESDIR}/${P}-compression.patch" #424527
- epatch "${FILESDIR}/${P}-zfs-feature-flag-support-r1.patch" #455358
- epatch "${FILESDIR}/${P}-20_linux_xen.patch" #463992
- epatch "${FILESDIR}/${P}-dmraid.patch" #430748
- epatch "${FILESDIR}/${P}-texinfo.patch"
- fi
+ [[ ${PATCHES} ]] && epatch "${PATCHES[@]}"
+ sed -i -e /autoreconf/d autogen.sh || die
+ epatch_user
+ bash autogen.sh || die
+ autopoint() { return 0; }
+ eautoreconf
+}
- # fix texinfo file name, bug 416035
- sed -i \
- -e 's/^\* GRUB:/* GRUB2:/' \
- -e 's/(grub)/(grub2)/' -- \
- "${S}"/docs/grub.texi
+grub_configure() {
+ local platform
- epatch_user
+ case ${MULTIBUILD_VARIANT} in
+ efi-32)
+ platform=efi
+ if [[ ${CTARGET:-${CHOST}} == x86_64* ]]; then
+ local CTARGET=${CTARGET:-i386}
+ fi ;;
+ efi-64)
+ platform=efi
+ if [[ ${CTARGET:-${CHOST}} == i?86* ]]; then
+ local CTARGET=${CTARGET:-x86_64}
+ local TARGET_CFLAGS="-Os -march=x86-64 ${TARGET_CFLAGS}"
+ local TARGET_CPPFLAGS="-march=x86-64 ${TARGET_CPPFLAGS}"
+ export TARGET_CFLAGS TARGET_CPPFLAGS
+ fi ;;
+ guessed) ;;
+ *) platform=${MULTIBUILD_VARIANT} ;;
+ esac
- # autogen.sh does more than just run autotools
- if [[ -n ${DO_AUTORECONF} ]] ; then
- sed -i -e '/^autoreconf/s:^:set +e; e:' autogen.sh || die
- (
- autopoint() { :; }
- . ./autogen.sh
- ) || die
- fi
+ local myeconfargs=(
+ --disable-werror
+ --program-prefix=
+ --libdir=/usr/lib
+ --htmldir=/usr/share/doc/${PF}/html
+ $(use_enable debug mm-debug)
+ $(use_enable debug grub-emu-usb)
+ $(use_enable efiemu)
+ $(use_enable mount grub-mount)
+ $(use_enable nls)
+ $(use_enable truetype grub-mkfont)
+ $(use_enable libzfs)
+ $(use sdl && use_enable debug grub-emu-sdl)
+ ${platform:+--with-platform=}${platform}
+ )
- # install into the right dir for eselect #372735
- sed -i \
- -e '/^bashcompletiondir =/s:=.*:= $(datarootdir)/bash-completion:' \
- util/bash-completion.d/Makefile.in || die
+ if use multislot; then
+ myeconfargs+=(
+ --program-transform-name="s,grub,grub2,"
+ --with-grubdir=grub2
+ )
+ fi
- # get enabled platforms
- GRUB_ENABLED_PLATFORMS=""
- local i
- for i in ${GRUB_PLATFORMS[@]}; do
- use grub_platforms_${i} && GRUB_ENABLED_PLATFORMS+=" ${i}"
- done
- [[ -z ${GRUB_ENABLED_PLATFORMS} ]] && GRUB_ENABLED_PLATFORMS="guessed"
- einfo "Going to build following platforms: ${GRUB_ENABLED_PLATFORMS}"
+ autotools-utils_src_configure
}
src_configure() {
- local i
-
use custom-cflags || unset CCASFLAGS CFLAGS CPPFLAGS LDFLAGS
use static && append-ldflags -static
- use elibc_FreeBSD && append-cppflags "-isystem /usr/include"
- # Sandbox bug 404013.
- use libzfs && addpredict /etc/dfs:/dev/zfs
+ tc-export CC NM OBJCOPY STRIP
+ export TARGET_CC=${TARGET_CC:-${CC}}
- multijob_init
- for i in ${GRUB_ENABLED_PLATFORMS}; do
- multijob_child_init grub_run_phase ${FUNCNAME} ${i}
- done
- multijob_finish || die
+ # Portage will take care of cleaning up GRUB_PLATFORMS
+ MULTIBUILD_VARIANTS=( ${GRUB_PLATFORMS:-guessed} )
+ multibuild_parallel_foreach_variant grub_configure
}
src_compile() {
- # Used for pax marking in grub_src_compile
- local grub_binaries=(
- grub-editenv
- grub-fstest
- grub-menulst2cfg
- grub-mkimage
- grub-mklayout
- grub-mkpasswd-pbkdf2
- grub-mkrelpath
- grub-script-check
- grub-bios-setup
- grub-ofpathname
- grub-probe
- grub-sparc64-setup
- )
- use mount && grub_binaries+=( grub-mount )
- use truetype && grub_binaries+=( grub-mkfont )
-
- local i
-
- for i in ${GRUB_ENABLED_PLATFORMS}; do
- grub_run_phase ${FUNCNAME} ${i}
- done
+ multibuild_foreach_variant autotools-utils_src_compile
- # Just build docs once
- use doc && grub_run_phase build_docs ${i}
+ use doc && multibuild_for_best_variant \
+ autotools-utils_src_compile -C docs html
}
src_install() {
- local i
+ multibuild_foreach_variant autotools-utils_src_install \
+ bashcompletiondir=/usr/share/bash-completion
- for i in ${GRUB_ENABLED_PLATFORMS}; do
- grub_run_phase ${FUNCNAME} ${i}
- done
+ use doc && multibuild_for_best_variant run_in_build_dir \
+ emake -C docs DESTDIR="${D}" install-html
- use doc && grub_run_phase install_docs ${i}
-
- mv "${ED}"usr/share/info/grub{,2}.info || die
+ if use multislot; then
+ mv "${ED}"usr/share/info/grub{,2}.info || die
+ fi
- # can't be in docs array as we use default_src_install in different builddir
- dodoc AUTHORS ChangeLog NEWS README THANKS TODO
insinto /etc/default
newins "${FILESDIR}"/grub.default-2 grub
-}
-pkg_preinst() {
- has_version "<sys-boot/grub-2.00-r2:2" && \
- [[ "$(df -TP /boot | awk 'NR>1{print $2}')" = 'zfs' ]]
- display_zfs_feature_flag_warning=$?
+ cd "${ED}" || die
+ pax-mark mpes $(scanelf -BF %F usr/{bin,sbin})
}
pkg_postinst() {
- # display the link to guide
elog "For information on how to configure grub-2 please refer to the guide:"
elog " http://wiki.gentoo.org/wiki/GRUB2_Quick_Start"
- if ! has_version sys-boot/os-prober; then
- elog "Install sys-boot/os-prober to enable detection of other operating systems using grub2-mkconfig."
- fi
- if ! has_version dev-libs/libisoburn; then
- elog "Install dev-libs/libisoburn to enable creation of rescue media using grub2-mkrescue."
- fi
- if has_version sys-boot/grub:0; then
- ewarn "If you want to keep GRUB Legacy (grub-0.97) installed, please run"
- ewarn "the following to add sys-boot/grub:0 to your world file."
- ewarn "emerge --noreplace sys-boot/grub:0"
- fi
- if [[ $display_zfs_feature_flag_warning -eq 0 ]]; then
- zfs_pool=$(df -TP /boot | awk 'NR>1{print $1}')
- zfs_pool=${zfs_pool%%/*}
- ewarn "The previous version of sys-boot/grub lacked support for ZFS feature flags."
- ewarn "Your /boot is on ZFS. Running \"zpool upgrade ${zfs_pool}\" or \"zpool upgrade -a\""
- ewarn "to upgrade your pool to support feature flags will prevent your system from booting."
- ewarn "You should use grub2-install to reinstall your boot code. This will avoid problems."
+ if [[ -z ${REPLACING_VERSIONS} ]]; then
+ if ! has_version sys-boot/os-prober; then
+ elog "Install sys-boot/os-prober to enable detection of other operating systems using grub2-mkconfig."
+ fi
+ if ! has_version dev-libs/libisoburn; then
+ elog "Install dev-libs/libisoburn to enable creation of rescue media using grub2-mkrescue."
+ fi
fi
}
diff --git a/sys-boot/grub/metadata.xml b/sys-boot/grub/metadata.xml
index 86409b549406..1a6944c9391e 100644
--- a/sys-boot/grub/metadata.xml
+++ b/sys-boot/grub/metadata.xml
@@ -22,5 +22,9 @@
<flag name='libzfs'>
Enable support for <pkg>sys-fs/zfs</pkg>
</flag>
+ <flag name='multislot'>
+ Allow concurrent installation of <pkg>sys-boot/grub:0</pkg> and
+ <pkg>sys-boot/grub:2</pkg> by renaming all programs and /boot/grub
+ </flag>
</use>
</pkgmetadata>