From 65cce143f8849f0089708c6ca78ab997dbc21fbc Mon Sep 17 00:00:00 2001 From: Adrien Dessemond Date: Fri, 26 Aug 2011 18:14:14 -0400 Subject: [PATCH] Qemu-0.15 is here ;) --- app-emulation/qemu/Manifest | 11 + .../files/qemu-0.11.0-mips64-user-fix.patch | 11 + app-emulation/qemu/files/qemu-ifdown | 20 ++ app-emulation/qemu/files/qemu-ifup | 22 ++ app-emulation/qemu/metadata.xml | 26 +++ app-emulation/qemu/qemu-0.11.1.ebuild | 150 +++++++++++++ app-emulation/qemu/qemu-0.14.0.ebuild | 198 ++++++++++++++++++ app-emulation/qemu/qemu-0.15.0.ebuild | 198 ++++++++++++++++++ app-emulation/qemu/qemu-9999.ebuild | 198 ++++++++++++++++++ 9 files changed, 834 insertions(+) create mode 100644 app-emulation/qemu/Manifest create mode 100644 app-emulation/qemu/files/qemu-0.11.0-mips64-user-fix.patch create mode 100644 app-emulation/qemu/files/qemu-ifdown create mode 100644 app-emulation/qemu/files/qemu-ifup create mode 100644 app-emulation/qemu/metadata.xml create mode 100644 app-emulation/qemu/qemu-0.11.1.ebuild create mode 100644 app-emulation/qemu/qemu-0.14.0.ebuild create mode 100644 app-emulation/qemu/qemu-0.15.0.ebuild create mode 100644 app-emulation/qemu/qemu-9999.ebuild diff --git a/app-emulation/qemu/Manifest b/app-emulation/qemu/Manifest new file mode 100644 index 0000000..2c60c1d --- /dev/null +++ b/app-emulation/qemu/Manifest @@ -0,0 +1,11 @@ +AUX qemu-0.11.0-mips64-user-fix.patch 313 RMD160 db016e0a48990a435dd6cf6e807145b33ada4908 SHA1 2ea913b1bcd29734a6d4011794bdb4aa3599a184 SHA256 b4173fc177bd0d0ba67f5551a3512047a19a9b2c0a122f968e32fbd834848d2f +AUX qemu-ifdown 478 RMD160 2187fbf352e6b84686f0cf0e9e9ebe5d26359858 SHA1 1daccb4785fe503687562798f90be1414267e27d SHA256 7d90c39184fd7531d9b8ae787122b68ac768b41afeb0ef2b3baa6461f77af03d +AUX qemu-ifup 554 RMD160 9769d79ab6456bdd7e3e689005f629e2a67b858d SHA1 dde2b27acabe6fe23ca40f90ff6950bb12a4b506 SHA256 eae9b50680442acc29c65a245a2d26a63756ad4cb894e08cb5ea249686801f1d +DIST qemu-0.11.1.tar.gz 3830070 RMD160 4da00fa6c01d7ff6af0ee781bc9260da577ea7d3 SHA1 7b983cd18f44c6e7627532b662f010389d3bcdff SHA256 2ecd2fc0af2ce5d96067ae82cc98a08275c596de53fc929484bedee1d6e7893a +DIST qemu-0.14.0.tar.gz 5439695 RMD160 1409264387e4cfe45143e10dd77b2574935e2d78 SHA1 cf8d916436d4b8775289399648e1f0ca9d867d18 SHA256 ba21e84d7853217830e167dae9999cdbff481189c6a0bb600ac7fb7201453108 +DIST qemu-0.15.0.tar.gz 9577243 RMD160 f33048765e48e1dc6413ef079df99944b2329211 SHA1 57a7269b58544054a90b158225fce05fe1d04a85 SHA256 0197e52dba07aeb6dfe0343b0c2ae08ed374d2cb0af3bb9ec73fed5baa0cb74d +EBUILD qemu-0.11.1.ebuild 4908 RMD160 1662fa8fe1b4d4571b5ae00a5e3be7fcd8af77e4 SHA1 dcdee575c6aa2a79835d7776b6d687c4d9e13b5b SHA256 e3e9eaa84bbe061bb7966e0bb3b1f371cb177ec9982ef658aab378f5b5ff4fd1 +EBUILD qemu-0.14.0.ebuild 6013 RMD160 12e4d03a3547eb852095f808e226e74cc2f34435 SHA1 f4d0999ac782a3b8d86cd71673efd0ad878f9160 SHA256 266e6dad0cf244a707e38a70bc583cc8d0412990b3b3c694d6c23f0b5d1f3355 +EBUILD qemu-0.15.0.ebuild 6055 RMD160 f473d5a1bf2d90b1497cfc0b031b43cf13d8210f SHA1 9224ff3ce61f6ffae849e863c504ce61c0d09394 SHA256 fcc59a8f9f89814d18e489a6eece4ccf5283236869883efb48b13b8b19a6711f +EBUILD qemu-9999.ebuild 6011 RMD160 2fd36aaa4fb1fc7d50bf65980e2a5f31ad381094 SHA1 9700590e860b0b5addf85f48083ba0d542d1f504 SHA256 6a34ab18c7a985b61bb5d27ff6ddbf7e45c9cf5eabe4201283aa738f9c98e90c +MISC metadata.xml 1309 RMD160 c4d9c673a1afb3aaf558d3c45afe4f1d8f13e60d SHA1 9897fae7eff6ba5bf82579669751c5c60422b259 SHA256 097421ad2ed0435cdf6bb30c966eaac35a48c7ff085f94d83690eb1e77285366 diff --git a/app-emulation/qemu/files/qemu-0.11.0-mips64-user-fix.patch b/app-emulation/qemu/files/qemu-0.11.0-mips64-user-fix.patch new file mode 100644 index 0000000..c069f89 --- /dev/null +++ b/app-emulation/qemu/files/qemu-0.11.0-mips64-user-fix.patch @@ -0,0 +1,11 @@ +--- qemu-0.11.0.orig/linux-user/main.c 2009-10-23 02:19:57.000000000 +0200 ++++ qemu-0.11.0/linux-user/main.c 2009-10-23 02:47:09.000000000 +0200 +@@ -1469,6 +1469,8 @@ + + #ifdef TARGET_MIPS + ++#define TARGET_QEMU_ESIGRETURN 255 ++ + #define MIPS_SYS(name, args) args, + + static const uint8_t mips_syscall_args[] = { diff --git a/app-emulation/qemu/files/qemu-ifdown b/app-emulation/qemu/files/qemu-ifdown new file mode 100644 index 0000000..c173e43 --- /dev/null +++ b/app-emulation/qemu/files/qemu-ifdown @@ -0,0 +1,20 @@ +#!/bin/sh + +if [ -x /sbin/brctl ]; then + BRCTL="/sbin/brctl" +elif [ -x /usr/sbin/brctl ]; then + BRCTL="/usr/sbin/brctl" +else + echo "no bridge utils installed" + exit 1 +fi + +if [ -x /sbin/ip ]; then + switch=( $(/sbin/ip route list | awk '/^default / { sub(/.* dev /, ""); print $1 }') ) + ${BRCTL} delif ${switch} $1 + /sbin/ip link set $1 down +else + switch=( $(/bin/netstat -rn | awk '/^0\.0\.0\.0/ { print $NF }') ) + ${BRCTL} delif ${switch} $1 + /sbin/ifconfig $1 down +fi diff --git a/app-emulation/qemu/files/qemu-ifup b/app-emulation/qemu/files/qemu-ifup new file mode 100644 index 0000000..4a30e7d --- /dev/null +++ b/app-emulation/qemu/files/qemu-ifup @@ -0,0 +1,22 @@ +#!/bin/sh + +if [ -x /sbin/brctl ]; then + BRCTL="/sbin/brctl" +elif [ -x /usr/sbin/brctl ]; then + BRCTL="/usr/sbin/brctl" +else + echo "no bridge utils installed" + exit 1 +fi + +if [ -x /sbin/ip ]; then + switch=( $(/sbin/ip route list | awk '/^default / { sub(/.* dev /, ""); print $1 }') ) + /sbin/ip link set $1 up +else + switch=( $(/bin/netstat -rn | awk '/^0\.0\.0\.0/ { print $NF }') ) + /sbin/ifconfig $1 0.0.0.0 up +fi + +[[ ${switch#} -ne "1" ]] && logger -t qemu "$0 found more than one bridge connecting $1 to ${switch}" +${BRCTL} addif ${switch} $1 + diff --git a/app-emulation/qemu/metadata.xml b/app-emulation/qemu/metadata.xml new file mode 100644 index 0000000..a02b242 --- /dev/null +++ b/app-emulation/qemu/metadata.xml @@ -0,0 +1,26 @@ + + + +qemu + + lu_zero@gentoo.org + + + Enables support for Linux's Async IO + Adds support for braille displays using brltty + Enables firmware device tree support + Enables the kernel acceleration module on a x86/x86-64 cpu + Use the KVM (Kernel Virtual Machine) infrastructure on compatible hardware + Enable alsa output for sound emulation + Enable esound output for sound emulation + Enable TLS support for the VNC console server + Enable the ncurses-based console + Enable pulseaudio output for sound emulation + Provides the qemu-ifup script for use with + QEMU's built in bridging + Enable the SDL-based console + Enable static build, useful to chroot in user-mode + emulation + Enable Virtual Distributed Ethernet (VDE) based networking + + diff --git a/app-emulation/qemu/qemu-0.11.1.ebuild b/app-emulation/qemu/qemu-0.11.1.ebuild new file mode 100644 index 0000000..7b5adc9 --- /dev/null +++ b/app-emulation/qemu/qemu-0.11.1.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/qemu/qemu-0.11.1.ebuild,v 1.5 2011/03/24 19:50:14 angelos Exp $ + +EAPI="2" + +inherit eutils flag-o-matic toolchain-funcs linux-info + +DESCRIPTION="QEMU emulator and ABI wrapper" +HOMEPAGE="http://www.qemu.org" +SRC_URI="http://download.savannah.gnu.org/releases/qemu/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~ppc ~ppc64 x86" +IUSE="alsa bluetooth esd gnutls ncurses pulseaudio sasl +sdl vde kqemu kvm" + +COMMON_TARGETS="i386 x86_64 arm cris m68k mips mipsel mips64 mips64el ppc ppc64 sh4 sh4eb sparc" + +IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} ppcemb" +IUSE_USER_TARGETS="${COMMON_TARGETS} alpha armeb ppc64abi32 sparc64 sparc32plus" + +for target in ${IUSE_SOFTMMU_TARGETS}; do + IUSE="${IUSE} +qemu_softmmu_targets_${target}" +done + +for target in ${IUSE_USER_TARGETS}; do + IUSE="${IUSE} +qemu_user_targets_${target}" +done + +RDEPEND="!app-emulation/qemu-softmmu + !app-emulation/qemu-user + !=media-libs/alsa-lib-1.0.13 ) + esd? ( media-sound/esound ) + pulseaudio? ( media-sound/pulseaudio ) + gnutls? ( net-libs/gnutls ) + ncurses? ( sys-libs/ncurses ) + sasl? ( dev-libs/cyrus-sasl ) + sdl? ( >=media-libs/libsdl-1.2.11 ) + vde? ( net-misc/vde ) + kvm? ( >=sys-kernel/linux-headers-2.6.29 ) + bluetooth? ( net-wireless/bluez ) + kqemu? ( >=app-emulation/kqemu-1.4.0_pre1 )" +# fdt? ( sys-apps/dtc ) + +DEPEND="${RDEPEND} + gnutls? ( dev-util/pkgconfig ) + app-text/texi2html" + +src_prepare() { + # avoid fdt till an updated release appears + sed -i -e 's:fdt="yes":fdt="no":' configure + # prevent docs to get automatically installed + sed -i '/$(DESTDIR)$(docdir)/d' Makefile + # Alter target makefiles to accept CFLAGS set via flag-o + sed -i 's/^\(C\|OP_C\|HELPER_C\)FLAGS=/\1FLAGS+=/' \ + Makefile Makefile.target tests/Makefile + [[ -x /sbin/paxctl ]] && \ + sed -i 's/^VL_LDFLAGS=$/VL_LDFLAGS=-Wl,-z,execheap/' \ + Makefile.target + # Append CFLAGS while linking + sed -i 's/$(LDFLAGS)/$(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS)/' rules.mak + epatch "${FILESDIR}/qemu-0.11.0-mips64-user-fix.patch" +} + +src_configure() { + local mycc conf_opts audio_opts softmmu_targets user_targets target_list + + for target in ${IUSE_SOFTMMU_TARGETS} ; do + use "qemu_softmmu_targets_${target}" && \ + softmmu_targets="${softmmu_targets} ${target}-softmmu" + done + + for target in ${IUSE_USER_TARGETS} ; do + use "qemu_user_targets_${target}" && \ + user_targets="${user_targets} ${target}-linux-user" + done + + conf_opts="--disable-darwin-user --disable-bsd-user --disable-strip" + + if test ! -z "${softmmu_targets}" ; then + einfo "Building following softmmu targets: ${softmmu_targets}" + use gnutls || conf_opts="$conf_opts --disable-vnc-tls" + use ncurses || conf_opts="$conf_opts --disable-curses" + use sasl || conf_opts="$conf_opts --disable-vnc-sasl" + use sdl || conf_opts="$conf_opts --disable-sdl" + use vde || conf_opts="$conf_opts --disable-vde" + use bluetooth || conf_opts="$conf_opts --disable-bluez" + use kqemu || conf_opts="$conf_opts --disable-kqemu" + use kvm || conf_opts="$conf_opts --disable-kvm" + + audio_opts="oss" + use alsa && audio_opts="alsa $audio_opts" + use esd && audio_opts="esd $audio_opts" + use pulseaudio && audio_opts="pa $audio_opts" + use sdl && audio_opts="sdl $audio_opts" + else + einfo "Disabling softmmu emulation (no softmmu targets specified)" + conf_opts="$conf_opts --disable-system --disable-vnc-tls \ + --disable-curses --disable-sdl --disable-vde \ + --disable-kqemu --disable-kvm" + fi + + if test ! -z "${user_targets}" ; then + einfo "Building following user targets: ${user_targets}" + conf_opts="$conf_opts --enable-linux-user" + else + einfo "Disabling usermode emulation (no usermode targets specified)" + conf_opts="$conf_opts --disable-linux-user" + fi + +# use fdt || conf_opts="$conf_opts --disable-fdt" + + conf_opts="$conf_opts --prefix=/usr" + + target_list="${softmmu_targets} ${user_targets}" + + filter-flags -fPIE + + ./configure ${conf_opts} \ + --audio-drv-list="$audio_opts" \ + --cc="$(tc-getCC)" --host-cc="$(tc-getCC)" \ + --target-list="${target_list}" \ + || die "configure failed" +} + +src_install() { + emake DESTDIR="${D}" install || die "make install failed" + + exeinto /etc/qemu + doexe \ + "${FILESDIR}/qemu-ifup" \ + "${FILESDIR}/qemu-ifdown" \ + || die "qemu interface scripts failed" + + dodoc Changelog MAINTAINERS TODO pci-ids.txt || die + newdoc pc-bios/README README.pc-bios || die + dohtml qemu-doc.html qemu-tech.html || die +} + +pkg_postinst() { + elog "You will need the Universal TUN/TAP driver compiled into your" + elog "kernel or loaded as a module to use the virtual network device" + elog "if using -net tap. You will also need support for 802.1d" + elog "Ethernet Bridging and a configured bridge if using the provided" + elog "qemu-ifup script from /etc/qemu." + echo +} diff --git a/app-emulation/qemu/qemu-0.14.0.ebuild b/app-emulation/qemu/qemu-0.14.0.ebuild new file mode 100644 index 0000000..d49c521 --- /dev/null +++ b/app-emulation/qemu/qemu-0.14.0.ebuild @@ -0,0 +1,198 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/qemu/qemu-0.14.0.ebuild,v 1.3 2011/02/20 22:07:37 zmedico Exp $ + +EAPI="2" + +if [[ ${PV} = *9999* ]]; then + EGIT_REPO_URI="git://git.qemu.org/qemu.git" + GIT_ECLASS="git" +fi + +inherit eutils flag-o-matic ${GIT_ECLASS} linux-info toolchain-funcs + +if [[ ${PV} = *9999* ]]; then + SRC_URI="" + KEYWORDS="" +else + SRC_URI="http://download.savannah.gnu.org/releases/qemu/${P}.tar.gz" + KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +fi + +DESCRIPTION="QEMU emulator and ABI wrapper" +HOMEPAGE="http://www.qemu.org" + +LICENSE="GPL-2" +SLOT="0" +# xen is disabled until the deps are fixed +IUSE="+aio alsa bluetooth brltty curl esd fdt hardened jpeg ncurses \ +png pulseaudio qemu-ifup sasl sdl ssl static vde" + +COMMON_TARGETS="i386 x86_64 arm cris m68k microblaze mips mipsel ppc ppc64 sh4 sh4eb sparc sparc64" +IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} mips64 mips64el ppcemb" +IUSE_USER_TARGETS="${COMMON_TARGETS} alpha armeb ppc64abi32 sparc32plus" + +for target in ${IUSE_SOFTMMU_TARGETS}; do + IUSE="${IUSE} +qemu_softmmu_targets_${target}" +done + +for target in ${IUSE_USER_TARGETS}; do + IUSE="${IUSE} +qemu_user_targets_${target}" +done + +RESTRICT="test" + +RDEPEND=" + !app-emulation/qemu-kvm + !app-emulation/qemu-softmmu + !app-emulation/qemu-user + !app-emulation/qemu-kvm-spice + sys-apps/pciutils + >=sys-apps/util-linux-2.16.0 + sys-libs/zlib + aio? ( dev-libs/libaio ) + alsa? ( >=media-libs/alsa-lib-1.0.13 ) + bluetooth? ( net-wireless/bluez ) + brltty? ( app-accessibility/brltty ) + curl? ( net-misc/curl ) + esd? ( media-sound/esound ) + fdt? ( >=sys-apps/dtc-1.2.0 ) + jpeg? ( virtual/jpeg ) + ncurses? ( sys-libs/ncurses ) + png? ( media-libs/libpng ) + pulseaudio? ( media-sound/pulseaudio ) + qemu-ifup? ( sys-apps/iproute2 net-misc/bridge-utils ) + sasl? ( dev-libs/cyrus-sasl ) + sdl? ( >=media-libs/libsdl-1.2.11[X] ) + ssl? ( net-libs/gnutls ) + vde? ( net-misc/vde ) +" + +DEPEND="${RDEPEND} + app-text/texi2html + >=sys-kernel/linux-headers-2.6.29 + ssl? ( dev-util/pkgconfig ) +" + +pkg_setup() { + use qemu_softmmu_targets_x86_64 || ewarn "You disabled default target QEMU_SOFTMMU_TARGETS=x86_64" +} + +src_prepare() { + # prevent docs to get automatically installed + sed -i '/$(DESTDIR)$(docdir)/d' Makefile || die + # Alter target makefiles to accept CFLAGS set via flag-o + sed -i 's/^\(C\|OP_C\|HELPER_C\)FLAGS=/\1FLAGS+=/' \ + Makefile Makefile.target || die + # append CFLAGS while linking + sed -i 's/$(LDFLAGS)/$(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS)/' rules.mak || die +} + +src_configure() { + local conf_opts audio_opts user_targets + + for target in ${IUSE_SOFTMMU_TARGETS} ; do + use "qemu_softmmu_targets_${target}" && \ + softmmu_targets="${softmmu_targets} ${target}-softmmu" + done + + for target in ${IUSE_USER_TARGETS} ; do + use "qemu_user_targets_${target}" && \ + user_targets="${user_targets} ${target}-linux-user" + done + + if [ -z "${softmmu_targets}" ]; then + conf_opts="${conf_opts} --disable-system" + else + einfo "Building the following softmmu targets: ${softmmu_targets}" + fi + + if [ ! -z "${user_targets}" ]; then + einfo "Building the following user targets: ${user_targets}" + conf_opts="${conf_opts} --enable-linux-user" + else + conf_opts="${conf_opts} --disable-linux-user" + fi + + # Fix QA issues. QEMU needs executable heaps and we need to mark it as such + conf_opts="${conf_opts} --extra-ldflags=-Wl,-z,execheap" + + # Add support for static builds + use static && conf_opts="${conf_opts} --static" + + # Fix the $(prefix)/etc issue + conf_opts="${conf_opts} --sysconfdir=/etc" + + #config options + conf_opts="${conf_opts} $(use_enable aio linux-aio)" + conf_opts="${conf_opts} $(use_enable bluetooth bluez)" + conf_opts="${conf_opts} $(use_enable brltty brlapi)" + conf_opts="${conf_opts} $(use_enable curl)" + conf_opts="${conf_opts} $(use_enable fdt)" + conf_opts="${conf_opts} $(use_enable hardened user-pie)" + conf_opts="${conf_opts} $(use_enable jpeg vnc-jpeg)" + conf_opts="${conf_opts} $(use_enable ncurses curses)" + conf_opts="${conf_opts} $(use_enable png vnc-png)" + conf_opts="${conf_opts} $(use_enable sasl vnc-sasl)" + conf_opts="${conf_opts} $(use_enable sdl)" + conf_opts="${conf_opts} $(use_enable ssl vnc-tls)" + conf_opts="${conf_opts} $(use_enable vde)" + conf_opts="${conf_opts} --disable-xen" + conf_opts="${conf_opts} --disable-darwin-user --disable-bsd-user" + + # audio options + audio_opts="oss" + use alsa && audio_opts="alsa ${audio_opts}" + use esd && audio_opts="esd ${audio_opts}" + use pulseaudio && audio_opts="pa ${audio_opts}" + use sdl && audio_opts="sdl ${audio_opts}" + ./configure --prefix=/usr \ + --disable-strip \ + --disable-werror \ + --disable-kvm \ + --enable-nptl \ + --enable-uuid \ + ${conf_opts} \ + --audio-drv-list="${audio_opts}" \ + --target-list="${softmmu_targets} ${user_targets}" \ + --cc="$(tc-getCC)" \ + --host-cc="$(tc-getBUILD_CC)" \ + || die "configure failed" + + # this is for qemu upstream's threaded support which is + # in development and broken + # the kvm project has its own support for threaded IO + # which is always on and works + # --enable-io-thread \ +} + +src_compile() { + # Restricting parallel build until we get a patch to fix this + emake || die +} + +src_install() { + emake DESTDIR="${D}" install || die "make install failed" + + if [ ! -z "${softmmu_targets}" ]; then + exeinto /etc/qemu + use qemu-ifup && { doexe \ + "${FILESDIR}/qemu-ifup" \ + "${FILESDIR}/qemu-ifdown" \ + || die "qemu interface scripts missing" ; } + fi + + dodoc Changelog MAINTAINERS TODO pci-ids.txt || die + newdoc pc-bios/README README.pc-bios || die + dohtml qemu-doc.html qemu-tech.html || die +} + +pkg_postinst() { + use qemu-ifup || return + elog "You will need the Universal TUN/TAP driver compiled into your" + elog "kernel or loaded as a module to use the virtual network device" + elog "if using -net tap. You will also need support for 802.1d" + elog "Ethernet Bridging and a configured bridge if using the provided" + elog "qemu-ifup script from /etc/qemu." + echo +} diff --git a/app-emulation/qemu/qemu-0.15.0.ebuild b/app-emulation/qemu/qemu-0.15.0.ebuild new file mode 100644 index 0000000..981b18a --- /dev/null +++ b/app-emulation/qemu/qemu-0.15.0.ebuild @@ -0,0 +1,198 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/qemu/qemu-0.14.0.ebuild,v 1.3 2011/02/20 22:07:37 zmedico Exp $ + +EAPI="2" + +if [[ ${PV} = *9999* ]]; then + EGIT_REPO_URI="git://git.qemu.org/qemu.git" + GIT_ECLASS="git" +fi + +inherit eutils flag-o-matic ${GIT_ECLASS} linux-info toolchain-funcs + +if [[ ${PV} = *9999* ]]; then + SRC_URI="" + KEYWORDS="" +else + SRC_URI="http://download.savannah.gnu.org/releases/qemu/${P}.tar.gz http://wiki.qemu.org/download/${P}.tar.gz" + KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +fi + +DESCRIPTION="QEMU emulator and ABI wrapper" +HOMEPAGE="http://www.qemu.org" + +LICENSE="GPL-2" +SLOT="0" +# xen is disabled until the deps are fixed +IUSE="+aio alsa bluetooth brltty curl esd fdt hardened jpeg ncurses \ +png pulseaudio qemu-ifup sasl sdl ssl static vde" + +COMMON_TARGETS="i386 x86_64 arm cris m68k microblaze mips mipsel ppc ppc64 sh4 sh4eb sparc sparc64" +IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} mips64 mips64el ppcemb" +IUSE_USER_TARGETS="${COMMON_TARGETS} alpha armeb ppc64abi32 sparc32plus" + +for target in ${IUSE_SOFTMMU_TARGETS}; do + IUSE="${IUSE} +qemu_softmmu_targets_${target}" +done + +for target in ${IUSE_USER_TARGETS}; do + IUSE="${IUSE} +qemu_user_targets_${target}" +done + +RESTRICT="test" + +RDEPEND=" + !app-emulation/qemu-kvm + !app-emulation/qemu-softmmu + !app-emulation/qemu-user + !app-emulation/qemu-kvm-spice + sys-apps/pciutils + >=sys-apps/util-linux-2.16.0 + sys-libs/zlib + aio? ( dev-libs/libaio ) + alsa? ( >=media-libs/alsa-lib-1.0.13 ) + bluetooth? ( net-wireless/bluez ) + brltty? ( app-accessibility/brltty ) + curl? ( net-misc/curl ) + esd? ( media-sound/esound ) + fdt? ( >=sys-apps/dtc-1.2.0 ) + jpeg? ( virtual/jpeg ) + ncurses? ( sys-libs/ncurses ) + png? ( media-libs/libpng ) + pulseaudio? ( media-sound/pulseaudio ) + qemu-ifup? ( sys-apps/iproute2 net-misc/bridge-utils ) + sasl? ( dev-libs/cyrus-sasl ) + sdl? ( >=media-libs/libsdl-1.2.11[X] ) + ssl? ( net-libs/gnutls ) + vde? ( net-misc/vde ) +" + +DEPEND="${RDEPEND} + app-text/texi2html + >=sys-kernel/linux-headers-2.6.29 + ssl? ( dev-util/pkgconfig ) +" + +pkg_setup() { + use qemu_softmmu_targets_x86_64 || ewarn "You disabled default target QEMU_SOFTMMU_TARGETS=x86_64" +} + +src_prepare() { + # prevent docs to get automatically installed + sed -i '/$(DESTDIR)$(docdir)/d' Makefile || die + # Alter target makefiles to accept CFLAGS set via flag-o + sed -i 's/^\(C\|OP_C\|HELPER_C\)FLAGS=/\1FLAGS+=/' \ + Makefile Makefile.target || die + # append CFLAGS while linking + sed -i 's/$(LDFLAGS)/$(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS)/' rules.mak || die +} + +src_configure() { + local conf_opts audio_opts user_targets + + for target in ${IUSE_SOFTMMU_TARGETS} ; do + use "qemu_softmmu_targets_${target}" && \ + softmmu_targets="${softmmu_targets} ${target}-softmmu" + done + + for target in ${IUSE_USER_TARGETS} ; do + use "qemu_user_targets_${target}" && \ + user_targets="${user_targets} ${target}-linux-user" + done + + if [ -z "${softmmu_targets}" ]; then + conf_opts="${conf_opts} --disable-system" + else + einfo "Building the following softmmu targets: ${softmmu_targets}" + fi + + if [ ! -z "${user_targets}" ]; then + einfo "Building the following user targets: ${user_targets}" + conf_opts="${conf_opts} --enable-linux-user" + else + conf_opts="${conf_opts} --disable-linux-user" + fi + + # Fix QA issues. QEMU needs executable heaps and we need to mark it as such + conf_opts="${conf_opts} --extra-ldflags=-Wl,-z,execheap" + + # Add support for static builds + use static && conf_opts="${conf_opts} --static" + + # Fix the $(prefix)/etc issue + conf_opts="${conf_opts} --sysconfdir=/etc" + + #config options + conf_opts="${conf_opts} $(use_enable aio linux-aio)" + conf_opts="${conf_opts} $(use_enable bluetooth bluez)" + conf_opts="${conf_opts} $(use_enable brltty brlapi)" + conf_opts="${conf_opts} $(use_enable curl)" + conf_opts="${conf_opts} $(use_enable fdt)" + conf_opts="${conf_opts} $(use_enable hardened user-pie)" + conf_opts="${conf_opts} $(use_enable jpeg vnc-jpeg)" + conf_opts="${conf_opts} $(use_enable ncurses curses)" + conf_opts="${conf_opts} $(use_enable png vnc-png)" + conf_opts="${conf_opts} $(use_enable sasl vnc-sasl)" + conf_opts="${conf_opts} $(use_enable sdl)" + conf_opts="${conf_opts} $(use_enable ssl vnc-tls)" + conf_opts="${conf_opts} $(use_enable vde)" + conf_opts="${conf_opts} --disable-xen" + conf_opts="${conf_opts} --disable-darwin-user --disable-bsd-user" + + # audio options + audio_opts="oss" + use alsa && audio_opts="alsa ${audio_opts}" + use esd && audio_opts="esd ${audio_opts}" + use pulseaudio && audio_opts="pa ${audio_opts}" + use sdl && audio_opts="sdl ${audio_opts}" + ./configure --prefix=/usr \ + --disable-strip \ + --disable-werror \ + --disable-kvm \ + --enable-nptl \ + --enable-uuid \ + ${conf_opts} \ + --audio-drv-list="${audio_opts}" \ + --target-list="${softmmu_targets} ${user_targets}" \ + --cc="$(tc-getCC)" \ + --host-cc="$(tc-getBUILD_CC)" \ + || die "configure failed" + + # this is for qemu upstream's threaded support which is + # in development and broken + # the kvm project has its own support for threaded IO + # which is always on and works + # --enable-io-thread \ +} + +src_compile() { + # Restricting parallel build until we get a patch to fix this + emake || die +} + +src_install() { + emake DESTDIR="${D}" install || die "make install failed" + + if [ ! -z "${softmmu_targets}" ]; then + exeinto /etc/qemu + use qemu-ifup && { doexe \ + "${FILESDIR}/qemu-ifup" \ + "${FILESDIR}/qemu-ifdown" \ + || die "qemu interface scripts missing" ; } + fi + + dodoc Changelog MAINTAINERS TODO pci-ids.txt || die + newdoc pc-bios/README README.pc-bios || die + dohtml qemu-doc.html qemu-tech.html || die +} + +pkg_postinst() { + use qemu-ifup || return + elog "You will need the Universal TUN/TAP driver compiled into your" + elog "kernel or loaded as a module to use the virtual network device" + elog "if using -net tap. You will also need support for 802.1d" + elog "Ethernet Bridging and a configured bridge if using the provided" + elog "qemu-ifup script from /etc/qemu." + echo +} diff --git a/app-emulation/qemu/qemu-9999.ebuild b/app-emulation/qemu/qemu-9999.ebuild new file mode 100644 index 0000000..9087c91 --- /dev/null +++ b/app-emulation/qemu/qemu-9999.ebuild @@ -0,0 +1,198 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-emulation/qemu/qemu-9999.ebuild,v 1.1 2011/06/27 19:27:45 lu_zero Exp $ + +EAPI="2" + +if [[ ${PV} = *9999* ]]; then + EGIT_REPO_URI="git://git.qemu.org/qemu.git" + GIT_ECLASS="git" +fi + +inherit eutils flag-o-matic ${GIT_ECLASS} linux-info toolchain-funcs + +if [[ ${PV} = *9999* ]]; then + SRC_URI="" + KEYWORDS="" +else + SRC_URI="http://download.savannah.gnu.org/releases/qemu/${P}.tar.gz" + KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +fi + +DESCRIPTION="QEMU emulator and ABI wrapper" +HOMEPAGE="http://www.qemu.org" + +LICENSE="GPL-2" +SLOT="0" +# xen is disabled until the deps are fixed +IUSE="+aio alsa bluetooth brltty curl esd fdt hardened jpeg ncurses \ +png pulseaudio qemu-ifup sasl sdl ssl static vde" + +COMMON_TARGETS="i386 x86_64 arm cris m68k microblaze mips mipsel ppc ppc64 sh4 sh4eb sparc sparc64" +IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} mips64 mips64el ppcemb" +IUSE_USER_TARGETS="${COMMON_TARGETS} alpha armeb ppc64abi32 sparc32plus" + +for target in ${IUSE_SOFTMMU_TARGETS}; do + IUSE="${IUSE} +qemu_softmmu_targets_${target}" +done + +for target in ${IUSE_USER_TARGETS}; do + IUSE="${IUSE} +qemu_user_targets_${target}" +done + +RESTRICT="test" + +RDEPEND=" + !app-emulation/qemu-kvm + !app-emulation/qemu-softmmu + !app-emulation/qemu-user + !app-emulation/qemu-kvm-spice + sys-apps/pciutils + >=sys-apps/util-linux-2.16.0 + sys-libs/zlib + aio? ( dev-libs/libaio ) + alsa? ( >=media-libs/alsa-lib-1.0.13 ) + bluetooth? ( net-wireless/bluez ) + brltty? ( app-accessibility/brltty ) + curl? ( net-misc/curl ) + esd? ( media-sound/esound ) + fdt? ( >=sys-apps/dtc-1.2.0 ) + jpeg? ( virtual/jpeg ) + ncurses? ( sys-libs/ncurses ) + png? ( media-libs/libpng ) + pulseaudio? ( media-sound/pulseaudio ) + qemu-ifup? ( sys-apps/iproute2 net-misc/bridge-utils ) + sasl? ( dev-libs/cyrus-sasl ) + sdl? ( >=media-libs/libsdl-1.2.11[X] ) + ssl? ( net-libs/gnutls ) + vde? ( net-misc/vde ) +" + +DEPEND="${RDEPEND} + app-text/texi2html + >=sys-kernel/linux-headers-2.6.29 + ssl? ( dev-util/pkgconfig ) +" + +pkg_setup() { + use qemu_softmmu_targets_x86_64 || ewarn "You disabled default target QEMU_SOFTMMU_TARGETS=x86_64" +} + +src_prepare() { + # prevent docs to get automatically installed + sed -i '/$(DESTDIR)$(docdir)/d' Makefile || die + # Alter target makefiles to accept CFLAGS set via flag-o + sed -i 's/^\(C\|OP_C\|HELPER_C\)FLAGS=/\1FLAGS+=/' \ + Makefile Makefile.target || die + # append CFLAGS while linking + sed -i 's/$(LDFLAGS)/$(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS)/' rules.mak || die +} + +src_configure() { + local conf_opts audio_opts user_targets + + for target in ${IUSE_SOFTMMU_TARGETS} ; do + use "qemu_softmmu_targets_${target}" && \ + softmmu_targets="${softmmu_targets} ${target}-softmmu" + done + + for target in ${IUSE_USER_TARGETS} ; do + use "qemu_user_targets_${target}" && \ + user_targets="${user_targets} ${target}-linux-user" + done + + if [ -z "${softmmu_targets}" ]; then + conf_opts="${conf_opts} --disable-system" + else + einfo "Building the following softmmu targets: ${softmmu_targets}" + fi + + if [ ! -z "${user_targets}" ]; then + einfo "Building the following user targets: ${user_targets}" + conf_opts="${conf_opts} --enable-linux-user" + else + conf_opts="${conf_opts} --disable-linux-user" + fi + + # Fix QA issues. QEMU needs executable heaps and we need to mark it as such + conf_opts="${conf_opts} --extra-ldflags=-Wl,-z,execheap" + + # Add support for static builds + use static && conf_opts="${conf_opts} --static" + + # Fix the $(prefix)/etc issue + conf_opts="${conf_opts} --sysconfdir=/etc" + + #config options + conf_opts="${conf_opts} $(use_enable aio linux-aio)" + conf_opts="${conf_opts} $(use_enable bluetooth bluez)" + conf_opts="${conf_opts} $(use_enable brltty brlapi)" + conf_opts="${conf_opts} $(use_enable curl)" + conf_opts="${conf_opts} $(use_enable fdt)" + conf_opts="${conf_opts} $(use_enable hardened user-pie)" + conf_opts="${conf_opts} $(use_enable jpeg vnc-jpeg)" + conf_opts="${conf_opts} $(use_enable ncurses curses)" + conf_opts="${conf_opts} $(use_enable png vnc-png)" + conf_opts="${conf_opts} $(use_enable sasl vnc-sasl)" + conf_opts="${conf_opts} $(use_enable sdl)" + conf_opts="${conf_opts} $(use_enable ssl vnc-tls)" + conf_opts="${conf_opts} $(use_enable vde)" + conf_opts="${conf_opts} --disable-xen" + conf_opts="${conf_opts} --disable-darwin-user --disable-bsd-user" + + # audio options + audio_opts="oss" + use alsa && audio_opts="alsa ${audio_opts}" + use esd && audio_opts="esd ${audio_opts}" + use pulseaudio && audio_opts="pa ${audio_opts}" + use sdl && audio_opts="sdl ${audio_opts}" + ./configure --prefix=/usr \ + --disable-strip \ + --disable-werror \ + --disable-kvm \ + --enable-nptl \ + --enable-uuid \ + ${conf_opts} \ + --audio-drv-list="${audio_opts}" \ + --target-list="${softmmu_targets} ${user_targets}" \ + --cc="$(tc-getCC)" \ + --host-cc="$(tc-getBUILD_CC)" \ + || die "configure failed" + + # this is for qemu upstream's threaded support which is + # in development and broken + # the kvm project has its own support for threaded IO + # which is always on and works + # --enable-io-thread \ +} + +src_compile() { + # Restricting parallel build until we get a patch to fix this + emake || die +} + +src_install() { + emake DESTDIR="${D}" install || die "make install failed" + + if [ ! -z "${softmmu_targets}" ]; then + exeinto /etc/qemu + use qemu-ifup && { doexe \ + "${FILESDIR}/qemu-ifup" \ + "${FILESDIR}/qemu-ifdown" \ + || die "qemu interface scripts missing" ; } + fi + + dodoc Changelog MAINTAINERS TODO pci-ids.txt || die + newdoc pc-bios/README README.pc-bios || die + dohtml qemu-doc.html qemu-tech.html || die +} + +pkg_postinst() { + use qemu-ifup || return + elog "You will need the Universal TUN/TAP driver compiled into your" + elog "kernel or loaded as a module to use the virtual network device" + elog "if using -net tap. You will also need support for 802.1d" + elog "Ethernet Bridging and a configured bridge if using the provided" + elog "qemu-ifup script from /etc/qemu." + echo +}