diff options
author | Mike Gilbert <floppym@gentoo.org> | 2013-04-28 19:44:09 +0000 |
---|---|---|
committer | Mike Gilbert <floppym@gentoo.org> | 2013-04-28 19:44:09 +0000 |
commit | 99f956ce1d3028288c445e0ae3ecd5df6f45869c (patch) | |
tree | 289efa9aecc698b79391be1308a970d9887156de /sys-boot | |
parent | Version bump; remove old. (diff) | |
download | gentoo-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/ChangeLog | 6 | ||||
-rw-r--r-- | sys-boot/grub/grub-9999.ebuild | 338 | ||||
-rw-r--r-- | sys-boot/grub/metadata.xml | 4 |
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> |