mirror of
https://github.com/pentoo/pentoo-overlay
synced 2026-04-27 01:03:18 +02:00
qemu-kvm: added "charm" use flag to have both qemu-user-arm and qemu installed in arm chroot
This commit is contained in:
parent
58d83a8125
commit
ab70bd8ac1
7 changed files with 685 additions and 0 deletions
8
app-emulation/qemu-kvm/Manifest
Normal file
8
app-emulation/qemu-kvm/Manifest
Normal 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
|
||||
|
|
@ -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[] = {
|
||||
2
app-emulation/qemu-kvm/files/qemu-kvm
Normal file
2
app-emulation/qemu-kvm/files/qemu-kvm
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
exec /usr/bin/qemu-system-x86_64 --enable-kvm "$@"
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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>
|
||||
255
app-emulation/qemu-kvm/qemu-kvm-0.12.5-r1.ebuild
Normal file
255
app-emulation/qemu-kvm/qemu-kvm-0.12.5-r1.ebuild
Normal 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
|
||||
}
|
||||
252
app-emulation/qemu-kvm/qemu-kvm-9999.ebuild
Normal file
252
app-emulation/qemu-kvm/qemu-kvm-9999.ebuild
Normal 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
|
||||
}
|
||||
Loading…
Reference in a new issue