# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 inherit eutils flag-o-matic linux-mod toolchain-funcs MY_PV=${PV/_/} MY_P=${PN}-${MY_PV} DESCRIPTION="Multi-platform & multi-targets cpu emulator and dynamic translator kernel fast execution module" HOMEPAGE="http://fabrice.bellard.free.fr/qemu/" SRC_URI="http://fabrice.bellard.free.fr/qemu/${MY_P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="-* amd64 x86 ~x86-fbsd" RESTRICT="strip" IUSE="" S="${WORKDIR}/$MY_P" DEPEND="" pkg_setup() { MODULE_NAMES="kqemu(misc:${S})" [ "${KERNEL}" = "linux" ] && linux-mod_pkg_setup } src_unpack() { unpack ${A} cd ${S} if [ "${KERNEL}" = "linux" ]; then epatch ${FILESDIR}/${P}-sched_h.patch sed -i 's:MODULE_PARM(\([^,]*\),"i");:module_param(\1, int, 0);:' kqemu-linux.c elif [ "${KERNEL}" = "FreeBSD" ]; then epatch ${FILESDIR}/${P}-Makefile.patch epatch ${FILESDIR}/${P}-freebsd.patch fi } src_compile() { #Let the application set its cflags unset CFLAGS # Switch off hardened tech filter-flags -fpie -fstack-protector ./configure --kernel-path="${KV_DIR}" \ || die "could not configure" if [ "${KERNEL}" = "FreeBSD" ]; then gmake -C common all MAKE=make emake -f Makefile.freebsd else make fi } src_install() { if [ "${KERNEL}" = "linux" ]; then linux-mod_src_install else insinto /boot/modules doins "${S}"/kqemu.kld exeinto /boot/modules doexe "${S}"/kqemu.ko fi if [ "${KERNEL}" = "linux" ]; then # udev rule dodir /etc/udev/rules.d/ echo 'KERNEL=="kqemu*", NAME="%k", GROUP="qemu", MODE="0660"' > ${D}/etc/udev/rules.d/48-qemu.rules # module params dodir /etc/modules.d echo "options kqemu major=0" > ${D}/etc/modules.d/kqemu fi # Module doc dodoc ${S}/README dohtml ${S}/kqemu-doc.html } pkg_postinst() { [ "${KERNEL}" = "linux" ] && linux-mod_pkg_postinst enewgroup qemu elog "Make sure you have the kernel module loaded before running qemu" elog "and your user is in the 'qemu' group" case ${CHOST} in *-darwin*) elog "Just run 'niutil -appendprop / /groups/qemu users '";; *-freebsd*|*-dragonfly*) elog "Just run 'pw groupmod qemu -m '";; *) elog "Just run 'gpasswd -a qemu', then have re-login.";; esac }