diff options
Diffstat (limited to 'sys-firmware/seabios/seabios-1.7.5-r1.ebuild')
-rw-r--r-- | sys-firmware/seabios/seabios-1.7.5-r1.ebuild | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/sys-firmware/seabios/seabios-1.7.5-r1.ebuild b/sys-firmware/seabios/seabios-1.7.5-r1.ebuild new file mode 100644 index 000000000000..e4186d0cc664 --- /dev/null +++ b/sys-firmware/seabios/seabios-1.7.5-r1.ebuild @@ -0,0 +1,146 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-firmware/seabios/seabios-1.7.5-r1.ebuild,v 1.1 2015/02/15 08:02:48 vapier Exp $ + +EAPI=5 + +PYTHON_COMPAT=( python{2_6,2_7} ) + +inherit eutils toolchain-funcs python-any-r1 + +#BACKPORTS=1 + +# SeaBIOS maintainers sometimes don't release stable tarballs or stable +# binaries to generate the stable tarball the following is necessary: +# git clone git://git.seabios.org/seabios.git && cd seabios +# git archive --output seabios-${PV}.tar.gz --prefix seabios-${PV}/ rel-${PV} + +if [[ ${PV} = *9999* || ! -z "${EGIT_COMMIT}" ]]; then + EGIT_REPO_URI="git://git.seabios.org/seabios.git" + inherit git-2 +else + KEYWORDS="~amd64 ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd" + SRC_URI="!binary? ( http://code.coreboot.org/p/seabios/downloads/get/${P}.tar.gz ) + binary? ( + http://code.coreboot.org/p/seabios/downloads/get/bios.bin-${PV}.gz + seavgabios? ( + mirror://debian/pool/main/s/${PN}/${PN}_${PV}-1_all.deb + ) + ) + ${BACKPORTS:+http://dev.gentoo.org/~cardoe/distfiles/${P}-${BACKPORTS}.tar.xz}" +fi + +DESCRIPTION="Open Source implementation of a 16-bit x86 BIOS" +HOMEPAGE="http://www.seabios.org" + +LICENSE="LGPL-3 GPL-3" +SLOT="0" +IUSE="+binary +seavgabios" + +REQUIRED_USE="ppc? ( binary ) + ppc64? ( binary )" + +DEPEND=" + !binary? ( + >=sys-power/iasl-20060912 + ${PYTHON_DEPS} + )" +RDEPEND="" + +pkg_pretend() { + if ! use binary; then + ewarn "You have decided to compile your own SeaBIOS. This is not" + ewarn "supported by upstream unless you use their recommended" + ewarn "toolchain (which you are not)." + elog + ewarn "If you are intending to use this build with QEMU, realize" + ewarn "you will not receive any support if you have compiled your" + ewarn "own SeaBIOS. Virtual machines subtly fail based on changes" + ewarn "in SeaBIOS." + fi + + local myld=$(tc-getLD) + + ${myld} -v | grep -q "GNU gold" && \ + ewarn "gold linker unable to handle 16-bit code using ld.bfd. bug #438058" +} + +pkg_setup() { + use binary || python-any-r1_pkg_setup +} + +src_unpack() { + default + if use binary && use seavgabios ; then + unpack ./data.tar.xz + mv usr/share/seabios/vgabios*.bin ./ || die + fi + + # This simplifies the logic between binary & source builds. + mkdir -p "${S}" +} + +src_prepare() { + use binary && return + + if [[ -z "${EGIT_COMMIT}" ]]; then + sed -e "s/VERSION=.*/VERSION=${PV}/" \ + -i Makefile || die + else + sed -e "s/VERSION=.*/VERSION=${PV}_pre${EGIT_COMMIT}/" \ + -i Makefile || die + fi + + epatch_user +} + +src_configure() { + : +} + +_emake() { + LANG=C \ + emake V=1 \ + CC=$(tc-getCC) \ + LD="$(tc-getLD).bfd" \ + AR=$(tc-getAR) \ + OBJCOPY=$(tc-getOBJCOPY) \ + RANLIB=$(tc-getRANLIB) \ + OBJDUMP=$(tc-getPROG OBJDUMP objdump) \ + HOST_CC=$(tc-getBUILD_CC) \ + "$@" +} + +src_compile() { + use binary && return + + _emake out/bios.bin + mv out/bios.bin ../bios.bin + + if use seavgabios ; then + local config t targets=( + cirrus + isavga + qxl + stdvga + vmware + ) + for t in "${targets[@]}" ; do + emake clean distclean + cp "${FILESDIR}/seavgabios/config.vga-${t}" .config || die + _emake oldnoconfig + _emake out/vgabios.bin + cp out/vgabios.bin ../vgabios-${t}.bin || die + done + fi +} + +src_install() { + insinto /usr/share/seabios + newins ../bios.bin* bios.bin + + if use seavgabios ; then + insinto /usr/share/seavgabios + doins ../vgabios*.bin + fi +} |