# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit linux-mod eutils SRC_URI="http://easynews.dl.sourceforge.net/sourceforge/${PN}/${P}.tar.gz" DESCRIPTION="KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V)" HOMEPAGE="http://kvm.qumranet.com/kvmwiki" LICENSE="GPL-2" SLOT="0" KEYWORDS="~x86 ~amd64" IUSE="" DEPEND=">=media-libs/libsdl-1.2.11 >=media-libs/alsa-lib-1.0.13 app-text/texi2html !app-emulation/qemu dev-lang/python >=sys-fs/e2fsprogs-1.39" RDEPEND="${DEPEND} sys-apps/usermode-utilities" RESTRICT="nostrip nomirror" BUILD_TARGETS="all" MODULE_NAMES="kvm(extra:"${S}"/kernel:"${S}"/kernel) kvm-intel(extra:"${S}"/kernel:"${S}"/kernel) kvm-amd(extra:"${S}"/kernel:"${S}"/kernel)" QA_TEXTRELS="usr/bin/qemu usr/bin/qemu-system-sparc usr/bin/qemu-system-arm usr/bin/qemu-system-ppc usr/bin/qemu-system-mips usr/bin/qemu-system-x86_64" QA_EXECSTACK="usr/share/kvm/openbios-sparc32" QA_WX_LOAD="usr/share/kvm/openbios-sparc32" pkg_setup() { #Don't continue if the KVM modules that come with the kernel are compiled if linux_chkconfig_present KVM ; then eerror "kvm-${PV} doesn't work with the kernel modules" die "kvm module is included in the kernel" fi } src_unpack() { unpack ${A} cd "${S}" epatch ${FILESDIR}/kvm-configure-${PV}.patch epatch ${FILESDIR}/kvm-kvm-${PV}.patch epatch ${FILESDIR}/qemu-configure-${PV}.patch epatch ${FILESDIR}/qemu-makefile.target-${PV}.patch epatch ${FILESDIR}/qemu-vl.c-${PV}.patch epatch ${FILESDIR}/qemu-helper.c-${PV}.patch epatch ${FILESDIR}/qemu-qemu-kvm.c-${PV}.patch epatch ${FILESDIR}/scripts-qemu-ifup-${PV}.patch } src_compile() { #fix make install to not install modules sed -i '/$(kcmd)/d' ${WORKDIR}/${P}/Makefile linux-mod_pkg_setup conf_opts="--prefix=/usr" #Check if kvm is NOT part of the kernel and compile the module linux_chkconfig_present KVM ./configure \ ${conf_opts} \ || die "Configure failed" linux-mod_src_compile emake user qemu || die "make failed" } src_install() { #fix make install to not install modules sed -i '/$(kcmd)/d' ${WORKDIR}/${P}/Makefile make install DESTDIR="${D}" || die if ! linux_chkconfig_present KVM; then linux-mod_src_install fi exeinto /usr/bin/ doexe ${S}/kvm ${S}/kvm_stat mv ${D}/usr/share/doc/qemu ${D}/usr/share/doc/kvm mv ${D}/usr/share/man/man1/qemu.1 ${D}/usr/share/man/man1/kvm.1 insinto /etc/udev/rules.d/ doins ${WORKDIR}/${P}/scripts/65-kvm.rules insinto /etc/kvm/ insopts -m0755 doins ${WORKDIR}/${P}/scripts/qemu-ifup } pkg_postinst() { linux-mod_pkg_postinst enewgroup kvm elog "Make sure you have the kernel module loaded before running kvm." elog "The easiest way to ensure that the kernel module is loaded is to" elog "load it on boot:" elog "For AMD CPUs:" elog "echo kvm-amd >> /etc/modules.autoload.d/kernel-2.6" elog "For Intel CPUs:" elog "echo kvm-intel >> /etc/modules.autoload.d/kernel-2.6" echo elog "Make sure your user is in the 'kvm' group" elog "Just run 'gpasswd -a kvm', then have re-login." echo elog "If qemu complains about not having a 1024hz timer, then run this:" elog "echo dev.rtc.max-user-freq=1024 >> /etc/sysctl.conf" echo elog "If you want network support in the guest OS, you'll need to make" elog "sure you compile in support for 802.1d Ethernet Bridging in the " elog "kernel, set up a bridge network interface and make sure you" elog "compile Universal TUN/TAP device driver support as a kernel module" elog "and make it load on boot:" elog "echo tun >> /etc/modules.autoload.d/kernel-2.6" }