qemu-kvm: added "charm" use flag to have both qemu-user-arm and qemu installed in arm chroot

This commit is contained in:
grimmlin 2010-11-03 20:44:57 +00:00
parent 58d83a8125
commit ab70bd8ac1
7 changed files with 685 additions and 0 deletions

View file

@ -0,0 +1,8 @@
AUX qemu-0.11.0-mips64-user-fix.patch 313 RMD160 db016e0a48990a435dd6cf6e807145b33ada4908 SHA1 2ea913b1bcd29734a6d4011794bdb4aa3599a184 SHA256 b4173fc177bd0d0ba67f5551a3512047a19a9b2c0a122f968e32fbd834848d2f
AUX qemu-kvm 61 RMD160 83882e881a067065258f562ad1e60440666c85d3 SHA1 a965f19031e303d583bd541c9d8fff2214262e6b SHA256 211d51f0a7d3d2ba8c53016c75e2b483feadbb65e383b1eec81d9cebf6a22c29
AUX qemu-kvm-0.12.3-fix-crash-with-sdl.patch 4003 RMD160 1e8965e94537e24d0903a7a096c91e35f7013118 SHA1 a6a36da9613d90d45148aa133392bd342b83d1cd SHA256 aeca9f133c021726c0e3ce2a58843ee12d592669143d0b75e46b8e301b5cf102
AUX qemu-kvm-0.12.3-include-madvise-defines.patch 274 RMD160 2b2b454fabc3b5362c0479d581e5fb038e02aa97 SHA1 c34b51b9c0b5a69ab2ab7a8a64c804f7cbbbebf5 SHA256 0d33d22a853e9b1d19786c9ac53a515587a9753ff69a2f53e61c4764590e7821
DIST qemu-kvm-0.12.5-backports-1.tar.bz2 3668 RMD160 59e1d7e3d64377e2b77faf26c45206fbde4ee847 SHA1 5a4eb644243d11a96c2430546f7335c780ec9243 SHA256 c822969f0a86106d5cba97fae33c76eeea0bcc3ea13d617647474557ed0e4dbf
DIST qemu-kvm-0.12.5.tar.gz 4722351 RMD160 dc2686e70384a40601589cac2f2665254240710a SHA1 c316ac8a1b040e28275bf34911fbce14209c1563 SHA256 24c085aecbc784ea8b4837ca02bfe5086c7f91c8a88a0f607826692234af583f
EBUILD qemu-kvm-0.12.5-r1.ebuild 7911 RMD160 f78f0cf82f7d0f308d51150a83a6bba5daea851d SHA1 02b4a3ddda4d11a4e2893d403a7b6e2ec5b0713d SHA256 f3c8a721f106a28f679cd0bd920fd2920458dffe1d431dfb408537ced0182ec4
EBUILD qemu-kvm-9999.ebuild 7954 RMD160 4637e692e9df562f5db88b3c2561ca8a2ce9361f SHA1 76eaa4e457dc83602582c710cf86e8022edd1835 SHA256 80090bf54711b22278380ebe5a043583caa4a2db1676210020fe7e1b3098baa1

View file

@ -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[] = {

View file

@ -0,0 +1,2 @@
#!/bin/sh
exec /usr/bin/qemu-system-x86_64 --enable-kvm "$@"

View file

@ -0,0 +1,145 @@
From ff5414990645653bf43bf64adfc1ca77ffb9edcb Mon Sep 17 00:00:00 2001
From: malc <av1474@comtv.ru>
Date: Sun, 17 Jan 2010 00:25:29 +0300
Subject: [PATCH] Revert "sdlaudio: make it suck less"
This reverts commit 4839abe78fd466a3cf06faa7c362154afd5404f1.
The commit was badly broken, Gentoo has sdl as the default driver,
consequently 5 gentoo users have hit the breakage and were kind enough
to report, so thank you:
Claes Gyllenswrd
vekin
Chris
But above all thanks to Toralf Foerster who actually provied enough
information to pinpoint the breakage to sdlaudio.
http://bugs.gentoo.org/show_bug.cgi?id=294269
---
audio/sdlaudio.c | 80 +++++++++++++++++++++++++++++++++--------------------
1 files changed, 50 insertions(+), 30 deletions(-)
diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c
index aa39c33..8e7e5cb 100644
--- a/audio/sdlaudio.c
+++ b/audio/sdlaudio.c
@@ -41,8 +41,8 @@
typedef struct SDLVoiceOut {
HWVoiceOut hw;
int live;
+ int rpos;
int decr;
- int pending;
} SDLVoiceOut;
static struct {
@@ -225,10 +225,6 @@ static void sdl_callback (void *opaque, Uint8 *buf, int len)
HWVoiceOut *hw = &sdl->hw;
int samples = len >> hw->info.shift;
- if (sdl_lock (s, "sdl_callback")) {
- return;
- }
-
if (s->exit) {
return;
}
@@ -236,34 +232,49 @@ static void sdl_callback (void *opaque, Uint8 *buf, int len)
while (samples) {
int to_mix, decr;
- while (!sdl->pending) {
- if (sdl_unlock (s, "sdl_callback")) {
- return;
- }
-
- sdl_wait (s, "sdl_callback");
- if (s->exit) {
- return;
- }
-
- if (sdl_lock (s, "sdl_callback")) {
- return;
- }
- sdl->pending += sdl->live;
- sdl->live = 0;
+ /* dolog ("in callback samples=%d\n", samples); */
+ sdl_wait (s, "sdl_callback");
+ if (s->exit) {
+ return;
+ }
+
+ if (sdl_lock (s, "sdl_callback")) {
+ return;
+ }
+
+ if (audio_bug (AUDIO_FUNC, sdl->live < 0 || sdl->live > hw->samples)) {
+ dolog ("sdl->live=%d hw->samples=%d\n",
+ sdl->live, hw->samples);
+ return;
+ }
+
+ if (!sdl->live) {
+ goto again;
}
- to_mix = audio_MIN (samples, sdl->pending);
- decr = audio_pcm_hw_clip_out (hw, buf, to_mix, 0);
- buf += decr << hw->info.shift;
+ /* dolog ("in callback live=%d\n", live); */
+ to_mix = audio_MIN (samples, sdl->live);
+ decr = to_mix;
+ while (to_mix) {
+ int chunk = audio_MIN (to_mix, hw->samples - hw->rpos);
+ struct st_sample *src = hw->mix_buf + hw->rpos;
+
+ /* dolog ("in callback to_mix %d, chunk %d\n", to_mix, chunk); */
+ hw->clip (buf, src, chunk);
+ sdl->rpos = (sdl->rpos + chunk) % hw->samples;
+ to_mix -= chunk;
+ buf += chunk << hw->info.shift;
+ }
samples -= decr;
+ sdl->live -= decr;
sdl->decr += decr;
- sdl->pending -= decr;
- }
- if (sdl_unlock (s, "sdl_callback")) {
- return;
+ again:
+ if (sdl_unlock (s, "sdl_callback")) {
+ return;
+ }
}
+ /* dolog ("done len=%d\n", len); */
}
static int sdl_write_out (SWVoiceOut *sw, void *buf, int len)
@@ -281,9 +292,18 @@ static int sdl_run_out (HWVoiceOut *hw, int live)
return 0;
}
- sdl->live = live;
- decr = sdl->decr;
- sdl->decr = 0;
+ if (sdl->decr > live) {
+ ldebug ("sdl->decr %d live %d sdl->live %d\n",
+ sdl->decr,
+ live,
+ sdl->live);
+ }
+
+ decr = audio_MIN (sdl->decr, live);
+ sdl->decr -= decr;
+
+ sdl->live = live - decr;
+ hw->rpos = sdl->rpos;
if (sdl->live > 0) {
sdl_unlock_and_post (s, "sdl_run_out");
--
1.7.0.4

View file

@ -0,0 +1,12 @@
--- exec.c 2010-02-26 03:34:00.000000000 +0100
+++ exec.c.new 2010-04-03 15:31:53.000000000 +0200
@@ -22,6 +22,9 @@
#else
#include <sys/types.h>
#include <sys/mman.h>
+#ifndef MADV_MERGEABLE
+#include <asm/mman.h>
+#endif
#endif
#include <stdlib.h>
#include <stdio.h>

View file

@ -0,0 +1,255 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/qemu-kvm/qemu-kvm-0.12.5-r1.ebuild,v 1.5 2010/09/06 10:56:40 jmbsvicetto Exp $
BACKPORTS=1
EAPI="2"
if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.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="mirror://sourceforge/kvm/${PN}/${P}.tar.gz
${BACKPORTS:+mirror://gentoo/${P}-backports-${BACKPORTS}.tar.bz2}"
KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86"
fi
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
HOMEPAGE="http://www.linux-kvm.org"
LICENSE="GPL-2"
SLOT="0"
# xen is disabled until the deps are fixed
# charm keeps only static-bins
IUSE="+aio alsa bluetooth brltty charm curl esd fdt hardened kvm-trace \
ncurses 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/kqemu
!arm? ( !app-emulation/qemu )
!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 )
ncurses? ( sys-libs/ncurses )
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 )
"
kvm_kern_warn() {
eerror "Please enable KVM support in your kernel, found at:"
eerror
eerror " Virtualization"
eerror " Kernel-based Virtual Machine (KVM) support"
eerror
}
pkg_setup() {
local counter="0" check
use qemu_softmmu_targets_x86_64 || ewarn "You disabled default target QEMU_SOFTMMU_TARGETS=x86_64"
for check in ${IUSE_SOFTMMU_TARGETS} ; do
use "qemu_softmmu_targets_${check}" && counter="1"
done
# [[ ${counter} == 0 ]] && die "You need to set at least 1 target in QEMU_SOFTMMU_TARGETS"
if kernel_is lt 2 6 25; then
eerror "This version of KVM requres a host kernel of 2.6.25 or higher."
eerror "Either upgrade your kernel"
else
if ! linux_config_exists; then
eerror "Unable to check your kernel for KVM support"
kvm_kern_warn
elif ! linux_chkconfig_present KVM; then
kvm_kern_warn
fi
fi
enewgroup kvm
}
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
# remove part to make udev happy
sed -e 's~NAME="%k", ~~' -i kvm/scripts/65-kvm.rules || die
epatch "${FILESDIR}"/qemu-0.11.0-mips64-user-fix.patch \
"${FILESDIR}"/${PN}-0.12.3-fix-crash-with-sdl.patch \
"${FILESDIR}"/${PN}-0.12.3-include-madvise-defines.patch
[[ -n ${BACKPORTS} ]] && \
EPATCH_FORCE=yes EPATCH_SUFFIX="patch" EPATCH_SOURCE="${S}/patches" \
epatch
}
src_configure() {
local conf_opts audio_opts softmmu_targets 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
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"
#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)"
use kvm-trace && conf_opts="${conf_opts} --with-kvm-trace"
conf_opts="${conf_opts} $(use_enable ncurses curses)"
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} $(use_enable xen)"
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 \
--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"
# --enable-kvm \
# 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_install() {
if use charm; then
dobin arm-linux-user/qemu-arm
return
else
emake DESTDIR="${D}" install || die "make install failed"
fi
insinto /etc/udev/rules.d/
doins kvm/scripts/65-kvm.rules || die
if use qemu-ifup; then
insinto /etc/qemu/
insopts -m0755
doins kvm/scripts/qemu-ifup || die
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
if use qemu_softmmu_targets_x86_64 ; then
dobin "${FILESDIR}"/qemu-kvm
dosym /usr/bin/qemu-kvm /usr/bin/kvm
else
elog "You disabled QEMU_SOFTMMU_TARGETS=x86_64, this disables install"
elog "of /usr/bin/qemu-kvm and /usr/bin/kvm"
fi
}
pkg_postinst() {
elog "If you don't have kvm compiled into the kernel, make sure you have"
elog "the kernel module loaded before running kvm. The easiest way to"
elog "ensure that the kernel module is loaded is to load it on boot."
elog "For AMD CPUs the module is called 'kvm-amd'"
elog "For Intel CPUs the module is called 'kvm-intel'"
elog "Please review /etc/conf.d/modules for how to load these"
elog
elog "Make sure your user is in the 'kvm' group"
elog "Just run 'gpasswd -a <USER> kvm', then have <USER> re-login."
elog
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 "kvm-ifup script from /etc/kvm."
elog
elog "The gnutls use flag was renamed to ssl, so adjust your use flags."
echo
}

View file

@ -0,0 +1,252 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/qemu-kvm/qemu-kvm-9999.ebuild,v 1.12 2010/09/06 11:07:09 jmbsvicetto Exp $
EAPI="2"
if [[ ${PV} = *9999* ]]; then
EGIT_REPO_URI="git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.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="mirror://sourceforge/kvm/${PN}/${P}.tar.gz
${BACKPORTS:+mirror://gentoo/${P}-backports-${BACKPORTS}.tar.bz2}"
KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
fi
DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools"
HOMEPAGE="http://www.linux-kvm.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 xen"
# Updated targets to use the only supported upstream target - x86_64-softmmu
COMMON_TARGETS=""
IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} x86_64"
IUSE_USER_TARGETS=""
#COMMON_TARGETS="i386 arm cris m68k microblaze mips mipsel ppc ppc64 sh4 sh4eb sparc sparc64"
#IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} x86_64 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/kqemu
!app-emulation/qemu
!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 )
jpeg? ( media-libs/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 )
xen? ( app-emulation/xen )
"
DEPEND="${RDEPEND}
app-text/texi2html
>=sys-kernel/linux-headers-2.6.29
ssl? ( dev-util/pkgconfig )
"
kvm_kern_warn() {
eerror "Please enable KVM support in your kernel, found at:"
eerror
eerror " Virtualization"
eerror " Kernel-based Virtual Machine (KVM) support"
eerror
}
pkg_setup() {
local counter="0" check
use qemu_softmmu_targets_x86_64 || ewarn "You disabled default target QEMU_SOFTMMU_TARGETS=x86_64"
for check in ${IUSE_SOFTMMU_TARGETS} ; do
use "qemu_softmmu_targets_${check}" && counter="1"
done
[[ ${counter} == 0 ]] && die "You need to set at least 1 target in QEMU_SOFTMMU_TARGETS"
if kernel_is lt 2 6 25; then
eerror "This version of KVM requres a host kernel of 2.6.25 or higher."
eerror "Either upgrade your kernel"
die "qemu-kvm version not compatible"
else
if ! linux_config_exists; then
eerror "Unable to check your kernel for KVM support"
kvm_kern_warn
elif ! linux_chkconfig_present KVM; then
kvm_kern_warn
fi
fi
enewgroup kvm
}
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
# remove part to make udev happy
sed -e 's~NAME="%k", ~~' -i kvm/scripts/65-kvm.rules || die
epatch "${FILESDIR}/qemu-0.11.0-mips64-user-fix.patch"
}
src_configure() {
local conf_opts audio_opts softmmu_targets 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
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} $(use_enable xen)"
# 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 \
--enable-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_install() {
emake DESTDIR="${D}" install || die "make install failed"
insinto /etc/udev/rules.d/
doins kvm/scripts/65-kvm.rules || die
if use qemu-ifup; then
insinto /etc/qemu/
insopts -m0755
doins kvm/scripts/qemu-ifup || die
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
if use qemu_softmmu_targets_x86_64 ; then
dobin "${FILESDIR}"/qemu-kvm
dosym /usr/bin/qemu-kvm /usr/bin/kvm
else
elog "You disabled QEMU_SOFTMMU_TARGETS=x86_64, this disables install"
elog "of /usr/bin/qemu-kvm and /usr/bin/kvm"
fi
}
pkg_postinst() {
elog "If you don't have kvm compiled into the kernel, make sure you have"
elog "the kernel module loaded before running kvm. The easiest way to"
elog "ensure that the kernel module is loaded is to load it on boot."
elog "For AMD CPUs the module is called 'kvm-amd'"
elog "For Intel CPUs the module is called 'kvm-intel'"
elog "Please review /etc/conf.d/modules for how to load these"
elog
elog "Make sure your user is in the 'kvm' group"
elog "Just run 'gpasswd -a <USER> kvm', then have <USER> re-login."
elog
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 "kvm-ifup script from /etc/kvm."
elog
elog "The gnutls use flag was renamed to ssl, so adjust your use flags."
echo
}