aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emulators/qemu/Makefile85
-rw-r--r--emulators/qemu/distinfo6
-rw-r--r--emulators/qemu/files/patch-Makefile11
-rw-r--r--emulators/qemu/files/patch-configure87
-rw-r--r--emulators/qemu/files/patch-disas_libvixl_a64_disasm-a64.cc11
-rw-r--r--emulators/qemu/files/patch-disas_libvixl_vixl_a64_disasm-a64.cc11
-rw-r--r--emulators/qemu/files/patch-include_qemu-common.h12
-rw-r--r--emulators/qemu/files/pcap-patch284
-rw-r--r--emulators/qemu/files/pcap-patch-net_net.c248
-rw-r--r--emulators/qemu/pkg-plist201
10 files changed, 460 insertions, 496 deletions
diff --git a/emulators/qemu/Makefile b/emulators/qemu/Makefile
index 1808d99c128e..4e6438a98cbf 100644
--- a/emulators/qemu/Makefile
+++ b/emulators/qemu/Makefile
@@ -2,7 +2,7 @@
# $FreeBSD$
PORTNAME= qemu
-PORTVERSION= 2.5.1.1
+PORTVERSION= 2.6.1
CATEGORIES= emulators
MASTER_SITES= http://wiki.qemu.org/download/
DIST_SUBDIR= qemu/${PORTVERSION}
@@ -16,13 +16,13 @@ HAS_CONFIGURE= yes
USES= cpe gmake pkgconfig bison perl5 python:2,build tar:bzip2
USE_PERL5= build
USE_XORG= pixman
-USE_GNOME+= glib20
+USE_GNOME+= cairo glib20
MAKE_ENV+= BSD_MAKE="${MAKE}"
ONLY_FOR_ARCHS= amd64 i386 powerpc powerpc64 # XXX someone wants to debug sparc64 hosts?
OPTIONS_DEFINE= SAMBA X11 GTK2 OPENGL GNUTLS SASL JPEG PNG CURL \
CDROM_DMA PCAP USBREDIR GNS3 X86_TARGETS \
- STATIC_LINK DOCS BSD_USER
+ STATIC_LINK DOCS NCURSES
SAMBA_DESC= samba dependency (for -smb)
GNUTLS_DESC= gnutls dependency (vnc encryption)
SASL_DESC= cyrus-sasl dependency (vnc encryption)
@@ -33,18 +33,16 @@ PCAP_DESC= pcap dependency (networking with bpf)
USBREDIR_DESC= usb device network redirection (experimental!)
GNS3_DESC= gns3 patches (promiscuous multicast)
X86_TARGETS_DESC= Build only x86 system targets
-BSD_USER_DESC= Also build bsd-user targets (for testing)
STATIC_LINK_DESC= Statically link the executables
-OPTIONS_DEFAULT=X11 GTK2 OPENGL GNUTLS SASL JPEG PNG CDROM_DMA CURL PCAP GNS3
+OPTIONS_DEFAULT=X11 GTK2 OPENGL GNUTLS SASL JPEG PNG CDROM_DMA CURL PCAP GNS3 NCURSES
OPTIONS_SUB= yes
-X11_USE= SDL=sdl
-X11_CONFIGURE_ON= --enable-sdl
-X11_CONFIGURE_OFF= --disable-sdl
+X11_USE= SDL=sdl XORG=x11,xext GNOME=gdkpixbuf2
+X11_CONFIGURE_ENABLE= sdl
GTK2_USE= GNOME=gtk20,vte
GTK2_USES= gettext
GTK2_CONFIGURE_OFF= --disable-gtk --disable-vte
GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls
-GNUTLS_CONFIGURE_OFF= --disable-vnc-tls
+GNUTLS_CONFIGURE_OFF= --disable-gnutls
SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2
SASL_CONFIGURE_OFF= --disable-vnc-sasl
JPEG_USES= jpeg
@@ -59,76 +57,32 @@ USBREDIR_BUILD_DEPENDS= usbredir>=0.6:net/usbredir
USBREDIR_RUN_DEPENDS= usbredir>=0.6:net/usbredir
USBREDIR_CONFIGURE_OFF= --disable-usb-redir
PCAP_CONFIGURE_ON= --enable-pcap
+PCAP_EXTRA_PATCHES= ${FILESDIR}/pcap-patch ${FILESDIR}/pcap-patch-net_net.c
STATIC_LINK_CONFIGURE_ON= --static
+STATIC_LINK_PREVENTS= GTK2 X11
+STATIC_LINK_PREVENTS_MSG= X11 ui cannot be built static
+NCURSES_USES= ncurses
SAMBA_RUN_DEPENDS= ${LOCALBASE}/sbin/smbd:net/samba36
DOCS_BUILD_DEPENDS= texi2html:textproc/texi2html
DOCS_USES= makeinfo
DOCS_MAKE_ARGS_OFF= NOPORTDOCS=1
-.if !defined(QEMU_USER_STATIC)
-CONFLICTS_INSTALL= qemu-devel-[0-9]* qemu-sbruno-[0-9]*
-.endif
-
PORTDOCS= docs qemu-doc.html qemu-tech.html qmp-commands.txt
WITHOUT_CPU_CFLAGS=yes #to avoid problems with register allocation
CFLAGS:= ${CFLAGS:C/-fno-tree-vrp//}
CONFIGURE_ARGS+=--localstatedir=/var --extra-ldflags=-L\"${LOCALBASE}/lib\" \
- --disable-libssh2 --enable-debug \
+ --disable-libssh2 --enable-debug --enable-curses \
--prefix=${PREFIX} --cc=${CC} --enable-docs --disable-kvm \
--disable-linux-user --disable-linux-aio --disable-xen \
--smbd=${LOCALBASE}/sbin/smbd --enable-debug-info --python=${PYTHON_CMD} \
--extra-cflags=-I${WRKSRC}\ -I${LOCALBASE}/include\ -DPREFIX=\\\"\"${PREFIX}\\\"\"
-.include <bsd.port.options.mk>
-
-.if defined(QEMU_USER_STATIC)
-.if ${ARCH} != "amd64"
-CONFIGURE_ARGS+= --target-list=i386-bsd-user,sparc-bsd-user,arm-bsd-user,mips-bsd-user,mipsel-bsd-user
-.else
-CONFIGURE_ARGS+= --target-list=i386-bsd-user,x86_64-bsd-user,sparc-bsd-user,sparc64-bsd-user,arm-bsd-user,mips-bsd-user,mipsel-bsd-user,mips64-bsd-user,mips64el-bsd-user
-.endif
-.else
-.if ${PORT_OPTIONS:MX86_TARGETS}
-.if ${PORT_OPTIONS:MBSD_USER}
-.if ${ARCH} != "amd64"
-CONFIGURE_ARGS+= --target-list=i386-softmmu,x86_64-softmmu,i386-bsd-user,sparc-bsd-user,arm-bsd-user,mips-bsd-user,mipsel-bsd-user
-.else
-CONFIGURE_ARGS+= --target-list=i386-softmmu,x86_64-softmmu,i386-bsd-user,x86_64-bsd-user,sparc-bsd-user,sparc64-bsd-user,arm-bsd-user,mips-bsd-user,mipsel-bsd-user,mips64-bsd-user,mips64el-bsd-user
-.endif
-.else
-CONFIGURE_ARGS+= --target-list=i386-softmmu,x86_64-softmmu
-.endif
-.else
-.if empty(PORT_OPTIONS:MBSD_USER)
-CONFIGURE_ARGS+= --disable-bsd-user
-.else
-.if ${ARCH} != "amd64"
-CONFIGURE_ARGS+= --target-list=i386-softmmu,x86_64-softmmu,aarch64-softmmu,alpha-softmmu,arm-softmmu,cris-softmmu,lm32-softmmu,m68k-softmmu,microblaze-softmmu,microblazeel-softmmu,mips-softmmu,mipsel-softmmu,mips64-softmmu,mips64el-softmmu,or32-softmmu,ppc-softmmu,ppcemb-softmmu,ppc64-softmmu,sh4-softmmu,sh4eb-softmmu,sparc-softmmu,sparc64-softmmu,s390x-softmmu,xtensa-softmmu,xtensaeb-softmmu,unicore32-softmmu,moxie-softmmu,i386-bsd-user,sparc-bsd-user,arm-bsd-user,mips-bsd-user,mipsel-bsd-user
-.endif
-.endif
-.endif
-.endif
-
-.if ${PORT_OPTIONS:MBSD_USER} && ${ARCH} == "sparc64"
-IGNORE= bsd-user targets not tested on sparc64
-.endif
-
-.if empty(PORT_OPTIONS:MBSD_USER) || ${ARCH} != "amd64"
-PLIST_SUB+= BSD_USER64="@comment "
-.else
-PLIST_SUB+= BSD_USER64=""
-.endif
-
-.if defined(QEMU_USER_STATIC)
-PLIST_SUB+= SOFTMMU="@comment " STATIC="-static"
-.else
-PLIST_SUB+= SOFTMMU="" STATIC=""
-.endif
+LIB_DEPENDS+= libnettle.so:security/nettle \
+ libfontconfig.so:x11-fonts/fontconfig \
+ libfreetype.so:print/freetype2
-.if ${PORT_OPTIONS:MSTATIC_LINK} && (${PORT_OPTIONS:MGTK2} || ${PORT_OPTIONS:MX11})
-IGNORE= X11 ui cannot be built static
-.endif
+.include <bsd.port.options.mk>
.if !defined(STRIP) || ${STRIP} == ""
CONFIGURE_ARGS+=--disable-strip
@@ -153,6 +107,9 @@ CONFIGURE_ARGS+= --sparc_cpu=v9
# -lprocstat actually only _needs_ -lelf after r249666 or r250870 (MFC)
# but it shouldn't matter much
post-patch:
+ @${REINPLACE_CMD} -e '/LIBS/s|-lprocstat|-lprocstat -lelf|' \
+ ${WRKSRC}/configure
+ @${REINPLACE_CMD} -e '/libs_qga=/s|glib_libs|glib_libs -lintl|' ${WRKSRC}/configure
@${REINPLACE_CMD} -E \
-e "/^by Tibor .TS. S/s|Sch.*z.$$|Schuetz.|" \
${WRKSRC}/qemu-doc.texi
@@ -175,9 +132,6 @@ post-patch-GNS3-on:
@${REINPLACE_CMD} -e 's|(buf\[0\] & 1) && (rctl & E1000_RCTL_MPE)|buf[0] \& 1|' \
${WRKSRC}/hw/net/e1000.c
-post-patch-PCAP-on:
- @cd ${WRKSRC} && ${PATCH} --quiet < ${FILESDIR}/pcap-patch
-
# XXX need to disable usb host code on head while it's not ported to the
# new usb stack yet
post-configure:
@@ -190,6 +144,7 @@ post-install:
${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample ${STAGEDIR}${PREFIX}/etc
${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample ${STAGEDIR}${PREFIX}/etc
@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-*
+ @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ivshmem-*
post-install-DOCS-on:
@(cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${DOCSDIR}/)
diff --git a/emulators/qemu/distinfo b/emulators/qemu/distinfo
index 100f1af8781c..92ebc09ee058 100644
--- a/emulators/qemu/distinfo
+++ b/emulators/qemu/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1464476316
-SHA256 (qemu/2.5.1.1/qemu-2.5.1.1.tar.bz2) = 28d9946e43765a44ccccca3cba5f4f9034f2759ec1f2ce16594ddb6776c8efe6
-SIZE (qemu/2.5.1.1/qemu-2.5.1.1.tar.bz2) = 25474902
+TIMESTAMP = 1471559363
+SHA256 (qemu/2.6.1/qemu-2.6.1.tar.bz2) = 4942fd1b6ee31f2f55ffc2201dd7397e6b9c55a2ef332e6d660c730d268e08d1
+SIZE (qemu/2.6.1/qemu-2.6.1.tar.bz2) = 25762855
diff --git a/emulators/qemu/files/patch-Makefile b/emulators/qemu/files/patch-Makefile
index 1600e4c6e6c6..6666e3e63d91 100644
--- a/emulators/qemu/files/patch-Makefile
+++ b/emulators/qemu/files/patch-Makefile
@@ -1,19 +1,18 @@
---- Makefile.orig 2016-03-29 21:01:14 UTC
+--- Makefile.orig 2016-04-14 20:19:53 UTC
+++ Makefile
-@@ -90,8 +90,12 @@ LIBS+=-lz $(LIBS_TOOLS)
+@@ -90,7 +90,11 @@ LIBS+=-lz $(LIBS_TOOLS)
HELPERS-$(CONFIG_LINUX) = qemu-bridge-helper$(EXESUF)
ifdef BUILD_DOCS
+ifdef NOPORTDOCS
-+DOCS=qemu.1 qemu-img.1 qemu-nbd.8
++DOCS=qemu.1 qemu-img.1 qemu-nbd.8 qemu-ga.8
+else
DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8 qemu-ga.8
- DOCS+=qmp-commands.txt
+endif
+ DOCS+=qmp-commands.txt
ifdef CONFIG_LINUX
DOCS+=kvm_stat.1
- endif
-@@ -407,8 +411,10 @@ endif
+@@ -410,8 +414,10 @@ endif
install-doc: $(DOCS)
$(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
diff --git a/emulators/qemu/files/patch-configure b/emulators/qemu/files/patch-configure
index 1352414aed42..40a964f3df4e 100644
--- a/emulators/qemu/files/patch-configure
+++ b/emulators/qemu/files/patch-configure
@@ -1,6 +1,6 @@
---- configure.orig 2016-03-30 17:53:28 UTC
+--- configure.orig 2016-04-14 20:19:53 UTC
+++ configure
-@@ -276,7 +276,7 @@ DSOSUF=".so"
+@@ -245,7 +245,7 @@ DSOSUF=".so"
LDFLAGS_SHARED="-shared"
modules="no"
prefix="/usr/local"
@@ -9,17 +9,27 @@
datadir="\${prefix}/share"
qemu_docdir="\${prefix}/share/doc/qemu"
bindir="\${prefix}/bin"
-@@ -344,6 +344,9 @@ libssh2=""
+@@ -316,6 +316,10 @@ virglrenderer=""
+ tpm="yes"
+ libssh2=""
vhdx=""
- numa=""
- tcmalloc="no"
++quorum="no"
+pcap="no"
+pcap_create="no"
+bpf="no"
+ numa=""
+ tcmalloc="no"
jemalloc="no"
-
- # parse CC options first
-@@ -905,6 +908,10 @@ for opt do
+@@ -575,7 +579,7 @@ FreeBSD)
+ audio_drv_list="oss"
+ audio_possible_drivers="oss sdl pa"
+ # needed for kinfo_getvmmap(3) in libutil.h
+- LIBS="-lutil $LIBS"
++ LIBS="-lprocstat -lkvm -lelf -lutil $LIBS"
+ netmap="" # enable netmap autodetect
+ HOST_VARIANT_DIR="freebsd"
+ ;;
+@@ -878,6 +882,10 @@ for opt do
;;
--enable-vnc-png) vnc_png="yes"
;;
@@ -30,7 +40,7 @@
--disable-slirp) slirp="no"
;;
--disable-uuid) uuid="no"
-@@ -2241,7 +2248,7 @@ if test "$gtk" != "no"; then
+@@ -2157,7 +2165,7 @@ if test "$gtk" != "no"; then
gtk_cflags="$gtk_cflags $x11_cflags"
gtk_libs="$gtk_libs $x11_libs"
fi
@@ -39,11 +49,28 @@
gtk="yes"
elif test "$gtk" = "yes"; then
feature_not_found "gtk" "Install gtk2 or gtk3 devel"
-@@ -2413,6 +2420,50 @@ then
+@@ -2384,6 +2392,14 @@ if ! check_include "ifaddrs.h" ; then
fi
##########################################
++# getifaddrs (for tests/test-io-channel-socket )
++
++have_ifaddrs_h=yes
++if ! check_include "ifaddrs.h" ; then
++ have_ifaddrs_h=no
++fi
++
++##########################################
+ # VTE probe
+
+ if test "$vte" != "no"; then
+@@ -2526,6 +2542,50 @@ EOF
+ fi
+ fi
+
++##########################################
+# pcap probe
++
+if test "$pcap" = "yes" -a "$pcap" != "no"; then
+ cat > $TMPC << EOF
+#include <pcap.h>
@@ -57,7 +84,7 @@
+ if compile_prog "" "$libpcap" ; then
+ :
+ else
-+ echo
++ echo
+ echo "Error: Could not find pcap"
+ echo "Make sure to have the pcap libs and headers installed."
+ echo
@@ -85,37 +112,25 @@
+ fi
+ libs_softmmu="$libpcap $libs_softmmu"
+fi # test "$pcap"
-+
-+##########################################
- # libtasn1 - only for the TLS creds/session test suite
- tasn1=yes
-@@ -2983,7 +3034,7 @@ for i in $glib_modules; do
- glib_libs=`$pkg_config --libs $i`
- CFLAGS="$glib_cflags $CFLAGS"
- LIBS="$glib_libs $LIBS"
-- libs_qga="$glib_libs $libs_qga"
-+ libs_qga="$glib_libs -lintl $libs_qga"
- else
- error_exit "glib-$glib_req_ver $i is required to compile QEMU"
- fi
-@@ -3864,14 +3915,7 @@ fi
+ ##########################################
+ # VNC SASL detection
+@@ -3857,14 +3917,7 @@ fi
# Check if tools are available to build documentation.
if test "$docs" != "no" ; then
- if has makeinfo && has pod2man; then
-- docs=yes
+ docs=yes
- else
- if test "$docs" = "yes" ; then
- feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
- fi
- docs=no
- fi
-+docs=yes
fi
# Search for bswap_32 function
-@@ -3999,6 +4043,17 @@ fi
+@@ -3992,6 +4045,17 @@ fi
# check for libusb
if test "$libusb" != "no" ; then
@@ -133,7 +148,7 @@
if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
libusb="yes"
libusb_cflags=$($pkg_config --cflags libusb-1.0)
-@@ -4011,6 +4066,7 @@ if test "$libusb" != "no" ; then
+@@ -4004,6 +4068,7 @@ if test "$libusb" != "no" ; then
fi
libusb="no"
fi
@@ -141,7 +156,7 @@
fi
# check for usbredirparser for usb network redirection support
-@@ -4773,6 +4829,7 @@ echo "Audio drivers $audio_drv_list"
+@@ -4769,6 +4834,7 @@ echo "Audio drivers $audio_drv_list"
echo "Block whitelist (rw) $block_drv_rw_whitelist"
echo "Block whitelist (ro) $block_drv_ro_whitelist"
echo "VirtFS support $virtfs"
@@ -149,7 +164,7 @@
echo "VNC support $vnc"
if test "$vnc" = "yes" ; then
echo "VNC SASL support $vnc_sasl"
-@@ -4951,6 +5008,15 @@ fi
+@@ -4950,6 +5016,15 @@ fi
if test "$profiler" = "yes" ; then
echo "CONFIG_PROFILER=y" >> $config_host_mak
fi
@@ -165,3 +180,13 @@
if test "$slirp" = "yes" ; then
echo "CONFIG_SLIRP=y" >> $config_host_mak
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
+@@ -5153,6 +5228,9 @@ fi
+ if test "$have_ifaddrs_h" = "yes" ; then
+ echo "HAVE_IFADDRS_H=y" >> $config_host_mak
+ fi
++if test "$have_ifaddrs_h" = "yes" ; then
++ echo "HAVE_IFADDRS_H=y" >> $config_host_mak
++fi
+ if test "$vte" = "yes" ; then
+ echo "CONFIG_VTE=y" >> $config_host_mak
+ echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
diff --git a/emulators/qemu/files/patch-disas_libvixl_a64_disasm-a64.cc b/emulators/qemu/files/patch-disas_libvixl_a64_disasm-a64.cc
deleted file mode 100644
index 3544f6d34501..000000000000
--- a/emulators/qemu/files/patch-disas_libvixl_a64_disasm-a64.cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- disas/libvixl/a64/disasm-a64.cc.orig 2015-11-03 20:01:31 UTC
-+++ disas/libvixl/a64/disasm-a64.cc
-@@ -1362,7 +1362,7 @@ void Disassembler::AppendPCRelativeOffse
- int64_t offset) {
- USE(instr);
- char sign = (offset < 0) ? '-' : '+';
-- AppendToOutput("#%c0x%" PRIx64, sign, std::abs(offset));
-+ AppendToOutput("#%c0x%" PRIx64, sign, offset < 0 ? -offset : offset);
- }
-
-
diff --git a/emulators/qemu/files/patch-disas_libvixl_vixl_a64_disasm-a64.cc b/emulators/qemu/files/patch-disas_libvixl_vixl_a64_disasm-a64.cc
new file mode 100644
index 000000000000..4e88b6b4a362
--- /dev/null
+++ b/emulators/qemu/files/patch-disas_libvixl_vixl_a64_disasm-a64.cc
@@ -0,0 +1,11 @@
+--- disas/libvixl/vixl/a64/disasm-a64.cc.orig 2016-04-14 20:19:53 UTC
++++ disas/libvixl/vixl/a64/disasm-a64.cc
+@@ -2693,7 +2693,7 @@ void Disassembler::AppendPCRelativeOffse
+ if (offset < 0) {
+ abs_offset = -abs_offset;
+ }
+- AppendToOutput("#%c0x%" PRIx64, sign, abs_offset);
++ AppendToOutput("#%c0x%" PRIx64, sign, offset < 0 ? -offset : offset);
+ }
+
+
diff --git a/emulators/qemu/files/patch-include_qemu-common.h b/emulators/qemu/files/patch-include_qemu-common.h
deleted file mode 100644
index 9a02c4025261..000000000000
--- a/emulators/qemu/files/patch-include_qemu-common.h
+++ /dev/null
@@ -1,12 +0,0 @@
---- include/qemu-common.h.orig 2016-03-30 18:14:31 UTC
-+++ include/qemu-common.h
-@@ -469,7 +469,9 @@ void qemu_hexdump(const char *buf, FILE
- #define VEC_OR(v1, v2) ((v1) | (v2))
- /* altivec.h may redefine the bool macro as vector type.
- * Reset it to POSIX semantics. */
-+#ifndef __cplusplus
- #define bool _Bool
-+#endif
- #elif defined __SSE2__
- #include <emmintrin.h>
- #define VECTYPE __m128i
diff --git a/emulators/qemu/files/pcap-patch b/emulators/qemu/files/pcap-patch
index f5b00941b360..c8b3c9d00689 100644
--- a/emulators/qemu/files/pcap-patch
+++ b/emulators/qemu/files/pcap-patch
@@ -1,21 +1,22 @@
---- net/clients.h.orig 2015-08-11 19:11:09 UTC
-+++ net/clients.h
-@@ -49,6 +49,12 @@ int net_init_bridge(const NetClientOptio
-
- int net_init_l2tpv3(const NetClientOptions *opts, const char *name,
+diff -ruN net/clients.h net/clients.h
+--- net/clients.h 2015-12-17 04:04:50.000000000 +0600
++++ net/clients.h 2015-12-25 01:32:09.000000000 +0600
+@@ -47,6 +47,11 @@
+ int net_init_bridge(const NetClientOptions *opts, const char *name,
NetClientState *peer, Error **errp);
-+
+
+#ifdef CONFIG_PCAP
+int net_init_pcap(const NetClientOptions *opts, const char *name,
-+ NetClientState *peer);
++ NetClientState *peer, Error **errp);
+#endif
+
+ int net_init_l2tpv3(const NetClientOptions *opts, const char *name,
+ NetClientState *peer, Error **errp);
#ifdef CONFIG_VDE
- int net_init_vde(const NetClientOptions *opts, const char *name,
- NetClientState *peer, Error **errp);
---- net/hub.c.orig 2015-08-11 19:11:09 UTC
-+++ net/hub.c
-@@ -322,6 +322,7 @@ void net_hub_check_clients(void)
+diff -ruN net/hub.c net/hub.c
+--- net/hub.c 2015-12-17 04:04:50.000000000 +0600
++++ net/hub.c 2015-12-25 01:32:09.000000000 +0600
+@@ -322,6 +322,7 @@
case NET_CLIENT_OPTIONS_KIND_SOCKET:
case NET_CLIENT_OPTIONS_KIND_VDE:
case NET_CLIENT_OPTIONS_KIND_VHOST_USER:
@@ -23,255 +24,10 @@
has_host_dev = 1;
break;
default:
---- net/net.c.orig 2015-08-11 19:11:09 UTC
-+++ net/net.c
-@@ -45,6 +45,11 @@
- #include "qapi/dealloc-visitor.h"
- #include "sysemu/sysemu.h"
-
-+#include <sys/ioctl.h>
-+#ifdef __FreeBSD__
-+#include <net/if.h>
-+#endif
-+
- /* Net bridge is currently not supported for W32. */
- #if !defined(_WIN32)
- # define CONFIG_NET_BRIDGE
-@@ -880,6 +885,221 @@ static int net_init_nic(const NetClientO
- return idx;
- }
-
-+#if defined(CONFIG_PCAP)
-+#if defined(CONFIG_BPF)
-+#define PCAP_DONT_INCLUDE_PCAP_BPF_H
-+#include <net/bpf.h>
-+#endif
-+#include <pcap.h>
-+
-+struct PCAPState {
-+ NetClientState nc;
-+ pcap_t *handle;
-+ int max_eth_frame_size;
-+};
-+
-+static ssize_t pcap_receive(NetClientState *nc, const uint8_t *buf, size_t size)
-+{
-+ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
-+
-+ return pcap_inject(s->handle, (u_char*)buf, size);
-+}
-+
-+static void pcap_callback(u_char *user, struct pcap_pkthdr *phdr, u_char *pdata
-+ )
-+{
-+ NetClientState *nc = (NetClientState *)user;
-+
-+ int len = phdr->len;
-+#ifdef __FreeBSD__
-+ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
-+ int max_eth_frame_size = s->max_eth_frame_size;
-+
-+ if (len > max_eth_frame_size) {
-+ fprintf(stderr,
-+ "pcap_send: packet size > %d (%d), truncating\n",
-+ max_eth_frame_size, len);
-+ len = max_eth_frame_size;
-+ }
-+#endif
-+ qemu_send_packet(nc, pdata, len);
-+}
-+
-+static void pcap_send(void *opaque)
-+{
-+ struct PCAPState *s = (struct PCAPState *)opaque;
-+
-+ for (;;) {
-+ if (pcap_dispatch(s->handle, 0, (pcap_handler)&pcap_callback, (u_char *)&s->nc) >= 0)
-+ break;
-+ }
-+}
-+
-+static void pcap_cleanup(NetClientState *nc)
-+{
-+ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
-+
-+ qemu_purge_queued_packets(nc);
-+ pcap_close(s->handle);
-+}
-+
-+static NetClientInfo net_pcap_info = {
-+ .type = NET_CLIENT_OPTIONS_KIND_PCAP,
-+ .size = sizeof(struct PCAPState),
-+ .receive = pcap_receive,
-+// .receive_raw = pcap_receive_raw,
-+// .receive_iov = pcap_receive_iov,
-+// .poll = pcap_poll,
-+ .cleanup = pcap_cleanup,
-+};
-+/*
-+ * ... -net pcap,ifname="..."
-+ */
-+
-+int net_init_pcap(const NetClientOptions *opts, const char *name, NetClientState *peer)
-+{
-+ const NetdevPcapOptions *pcap_opts = opts->u.pcap;
-+ NetClientState *nc;
-+ struct PCAPState *s;
-+ const char *ifname;
-+ char errbuf[PCAP_ERRBUF_SIZE];
-+#if defined(_WIN32)
-+ HANDLE h;
-+#endif
-+ int i;
-+
-+ if (!pcap_opts->has_ifname)
-+ return -1;
-+
-+ ifname = pcap_opts->ifname;
-+
-+ /* create the object */
-+ nc = qemu_new_net_client(&net_pcap_info, peer, "pcap", ifname);
-+ s = DO_UPCAST(struct PCAPState, nc, nc);
-+
-+ if (ifname == NULL && (ifname = pcap_lookupdev(errbuf)) == NULL) {
-+ fprintf(stderr, "qemu: pcap_create: %s\n", errbuf);
-+ goto fail;
-+ }
-+
-+#ifdef __FreeBSD__
-+ /*
-+ * We want to avoid passing oversize packets to the guest, which
-+ * at least on FreeBSD can happen if the host interface uses tso
-+ * (seen with an em(4) in this case) - so find out the host
-+ * interface's mtu and assume the guest is configured the same.
-+ */
-+ s->max_eth_frame_size = 1514;
-+ i = socket(AF_INET, SOCK_DGRAM, 0);
-+ if (i >= 0) {
-+ struct ifreq ifr;
-+
-+ (void) memset(&ifr, 0, sizeof(ifr));
-+ strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-+ if (ioctl(i, SIOCGIFMTU, &ifr) != -1)
-+ s->max_eth_frame_size = ifr.ifr_mtu + 14;
-+ close(i);
-+ }
-+#endif
-+
-+#if defined(CONFIG_PCAP_CREATE) || defined(_WIN32)
-+ /*
-+ * Create pcap handle for the device, set promiscuous mode and activate.
-+ */
-+ s->handle = (void *)pcap_create(ifname, errbuf);
-+ if (!s->handle) {
-+ fprintf(stderr, "qemu: pcap_create: %s\n", errbuf);
-+ goto fail;
-+ }
-+ if (pcap_set_promisc(s->handle, 1) != 0) {
-+ pcap_perror(s->handle, (char *)"qemu: pcap_set_promisc:");
-+ goto fail;
-+ }
-+ if (pcap_activate(s->handle) != 0) {
-+ pcap_perror(s->handle, (char *)"qemu: pcap_activate:");
-+ goto fail;
-+ }
-+#else
-+ /* Attempt to connect device. */
-+ s->handle = (void *)pcap_open_live(ifname, 65535, 1, 0, errbuf);
-+ if (!s->handle) {
-+ fprintf(stderr, "qemu: pcap_open_live: %s\n", errbuf);
-+ goto fail;
-+ }
-+#endif
-+
-+ /* Set non-blocking mode. */
-+ if (pcap_setnonblock(s->handle, 1, errbuf) < 0) {
-+ fprintf(stderr, "qemu: pcap_setnonblock: %s\n", errbuf);
-+ goto fail;
-+ }
-+
-+#if defined(_WIN32)
-+ /*
-+ * Tell the kernel that the packet has to be seen immediately.
-+ */
-+ if (pcap_setmintocopy(s->handle, 0) < 0) {
-+ fprintf(stderr, "qemu: pcap failed to set immediate mode\n");
-+ goto fail;
-+ }
-+#else /* !_WIN32 */
-+#if defined(CONFIG_BPF)
-+#if defined(BIOCIMMEDIATE)
-+ /*
-+ * Tell the kernel that the packet has to be seen immediately.
-+ */
-+ {
-+ unsigned int one = 1;
-+ if (ioctl(pcap_fileno(s->handle), BIOCIMMEDIATE, &one) < 0) {
-+ fprintf(stderr, "qemu: pcap failed to set immediate mode\n");
-+ goto fail;
-+ }
-+ }
-+#endif /* BIOCIMMEDIATE */
-+#if defined(BIOCFEEDBACK)
-+ /*
-+ * Tell the kernel that the sent packet has to be fed back.
-+ * This is necessary to connect host and guest.
-+ */
-+ {
-+ unsigned int one = 1;
-+ if (ioctl(pcap_fileno(s->handle), BIOCFEEDBACK, &one) < 0) {
-+ fprintf(stderr, "qemu: pcap failed to set feedback mode\n");
-+ goto fail;
-+ }
-+ }
-+#endif /* BIOCFEEDBACK */
-+#endif /* CONFIG_BPF */
-+#endif /* _WIN32 */
-+
-+ snprintf(s->nc.info_str, sizeof(s->nc.info_str), "pcap redirector");
-+
-+#if defined(_WIN32)
-+ if ((h = pcap_getevent(s->handle)) == NULL) {
-+ fprintf(stderr, "qemu: pcap_getevent failed\n");
-+ goto fail;
-+ }
-+ qemu_add_wait_object(h, pcap_send, s);
-+#else /* !_WIN32 */
-+ if ((i = pcap_get_selectable_fd(s->handle)) < 0) {
-+ fprintf(stderr, "qemu: pcap_get_selectable_fd failed\n");
-+ goto fail;
-+ }
-+ qemu_set_fd_handler(i, pcap_send, NULL, s);
-+#endif /* _WIN32 */
-+
-+ return 0;
-+
-+fail:
-+ if (s) {
-+ if (s->handle)
-+ pcap_close(s->handle);
-+ }
-+
-+ return -1;
-+}
-+
-+#endif
-
- static int (* const net_client_init_fun[NET_CLIENT_OPTIONS_KIND_MAX])(
- const NetClientOptions *opts,
-@@ -901,6 +1121,9 @@ static int (* const net_client_init_fun[
- #ifdef CONFIG_NET_BRIDGE
- [NET_CLIENT_OPTIONS_KIND_BRIDGE] = net_init_bridge,
- #endif
-+#ifdef CONFIG_PCAP
-+ [NET_CLIENT_OPTIONS_KIND_PCAP] = net_init_pcap,
-+#endif
- [NET_CLIENT_OPTIONS_KIND_HUBPORT] = net_init_hubport,
- #ifdef CONFIG_VHOST_NET_USED
- [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user,
---- qapi-schema.json.orig 2015-08-11 19:11:09 UTC
-+++ qapi-schema.json
-@@ -2423,6 +2423,10 @@
+diff -ruN qapi-schema.json qapi-schema.json
+--- qapi-schema.json 2015-12-17 04:04:50.000000000 +0600
++++ qapi-schema.json 2015-12-25 01:32:09.000000000 +0600
+@@ -2538,6 +2538,10 @@
'*br': 'str',
'*helper': 'str' } }
@@ -282,11 +38,11 @@
##
# @NetdevHubPortOptions
#
-@@ -2490,6 +2494,7 @@
+@@ -2608,6 +2612,7 @@
+ 'nic': 'NetLegacyNicOptions',
'user': 'NetdevUserOptions',
'tap': 'NetdevTapOptions',
- 'l2tpv3': 'NetdevL2TPv3Options',
+ 'pcap': 'NetdevPcapOptions',
+ 'l2tpv3': 'NetdevL2TPv3Options',
'socket': 'NetdevSocketOptions',
'vde': 'NetdevVdeOptions',
- 'dump': 'NetdevDumpOptions',
diff --git a/emulators/qemu/files/pcap-patch-net_net.c b/emulators/qemu/files/pcap-patch-net_net.c
new file mode 100644
index 000000000000..735ae04776d7
--- /dev/null
+++ b/emulators/qemu/files/pcap-patch-net_net.c
@@ -0,0 +1,248 @@
+--- net/net.c.orig 2016-04-14 20:19:54 UTC
++++ net/net.c
+@@ -48,6 +48,11 @@
+ #include "net/filter.h"
+ #include "qapi/string-output-visitor.h"
+
++#include <sys/ioctl.h>
++#ifdef __FreeBSD__
++#include <net/if.h>
++#endif
++
+ /* Net bridge is currently not supported for W32. */
+ #if !defined(_WIN32)
+ # define CONFIG_NET_BRIDGE
+@@ -931,7 +936,223 @@ static int net_init_nic(const NetClientO
+ return idx;
+ }
+
++#if defined(CONFIG_PCAP)
++#if defined(CONFIG_BPF)
++#define PCAP_DONT_INCLUDE_PCAP_BPF_H
++#include <net/bpf.h>
++#endif
++#include <pcap.h>
++
++struct PCAPState {
++ NetClientState nc;
++ pcap_t *handle;
++ int max_eth_frame_size;
++};
++
++static ssize_t pcap_receive(NetClientState *nc, const uint8_t *buf, size_t size)
++{
++ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
++
++ return pcap_inject(s->handle, (u_char*)buf, size);
++}
++
++static void pcap_callback(u_char *user, struct pcap_pkthdr *phdr, u_char *pdata
++ )
++{
++ NetClientState *nc = (NetClientState *)user;
++
++ int len = phdr->len;
++#ifdef __FreeBSD__
++ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
++ int max_eth_frame_size = s->max_eth_frame_size;
++
++ if (len > max_eth_frame_size) {
++ fprintf(stderr,
++ "pcap_send: packet size > %d (%d), truncating\n",
++ max_eth_frame_size, len);
++ len = max_eth_frame_size;
++ }
++#endif
++ qemu_send_packet(nc, pdata, len);
++}
++
++static void pcap_send(void *opaque)
++{
++ struct PCAPState *s = (struct PCAPState *)opaque;
++
++ for (;;) {
++ if (pcap_dispatch(s->handle, 0, (pcap_handler)&pcap_callback, (u_char *)&s->nc) >= 0)
++ break;
++ }
++}
++
++static void pcap_cleanup(NetClientState *nc)
++{
++ struct PCAPState *s = DO_UPCAST(struct PCAPState, nc, nc);
++
++ qemu_purge_queued_packets(nc);
++ pcap_close(s->handle);
++}
++
++static NetClientInfo net_pcap_info = {
++ .type = NET_CLIENT_OPTIONS_KIND_PCAP,
++ .size = sizeof(struct PCAPState),
++ .receive = pcap_receive,
++// .receive_raw = pcap_receive_raw,
++// .receive_iov = pcap_receive_iov,
++// .poll = pcap_poll,
++ .cleanup = pcap_cleanup,
++};
++/*
++ * ... -net pcap,ifname="..."
++ */
++
++int net_init_pcap(const NetClientOptions *opts,
++ const char *name, NetClientState *peer, Error **errp)
++{
++ const NetdevPcapOptions *pcap_opts = opts->u.pcap.data;
++ NetClientState *nc;
++ struct PCAPState *s;
++ const char *ifname;
++ char errbuf[PCAP_ERRBUF_SIZE];
++#if defined(_WIN32)
++ HANDLE h;
++#endif
++ int i;
++
++ if (!pcap_opts->has_ifname)
++ return -1;
++
++ ifname = pcap_opts->ifname;
++
++ /* create the object */
++ nc = qemu_new_net_client(&net_pcap_info, peer, "pcap", ifname);
++ s = DO_UPCAST(struct PCAPState, nc, nc);
++
++ if (ifname == NULL && (ifname = pcap_lookupdev(errbuf)) == NULL) {
++ fprintf(stderr, "qemu: pcap_create: %s\n", errbuf);
++ goto fail;
++ }
+
++#ifdef __FreeBSD__
++ /*
++ * We want to avoid passing oversize packets to the guest, which
++ * at least on FreeBSD can happen if the host interface uses tso
++ * (seen with an em(4) in this case) - so find out the host
++ * interface's mtu and assume the guest is configured the same.
++ */
++ s->max_eth_frame_size = 1514;
++ i = socket(AF_INET, SOCK_DGRAM, 0);
++ if (i >= 0) {
++ struct ifreq ifr;
++
++ (void) memset(&ifr, 0, sizeof(ifr));
++ strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
++ if (ioctl(i, SIOCGIFMTU, &ifr) != -1)
++ s->max_eth_frame_size = ifr.ifr_mtu + 14;
++ close(i);
++ }
++#endif
++
++#if defined(CONFIG_PCAP_CREATE) || defined(_WIN32)
++ /*
++ * Create pcap handle for the device, set promiscuous mode and activate.
++ */
++ s->handle = (void *)pcap_create(ifname, errbuf);
++ if (!s->handle) {
++ fprintf(stderr, "qemu: pcap_create: %s\n", errbuf);
++ goto fail;
++ }
++ if (pcap_set_promisc(s->handle, 1) != 0) {
++ pcap_perror(s->handle, (char *)"qemu: pcap_set_promisc:");
++ goto fail;
++ }
++ if (pcap_activate(s->handle) != 0) {
++ pcap_perror(s->handle, (char *)"qemu: pcap_activate:");
++ goto fail;
++ }
++#else
++ /* Attempt to connect device. */
++ s->handle = (void *)pcap_open_live(ifname, 65535, 1, 0, errbuf);
++ if (!s->handle) {
++ fprintf(stderr, "qemu: pcap_open_live: %s\n", errbuf);
++ goto fail;
++ }
++#endif
++
++ /* Set non-blocking mode. */
++ if (pcap_setnonblock(s->handle, 1, errbuf) < 0) {
++ fprintf(stderr, "qemu: pcap_setnonblock: %s\n", errbuf);
++ goto fail;
++ }
++
++#if defined(_WIN32)
++ /*
++ * Tell the kernel that the packet has to be seen immediately.
++ */
++ if (pcap_setmintocopy(s->handle, 0) < 0) {
++ fprintf(stderr, "qemu: pcap failed to set immediate mode\n");
++ goto fail;
++ }
++#else /* !_WIN32 */
++#if defined(CONFIG_BPF)
++#if defined(BIOCIMMEDIATE)
++ /*
++ * Tell the kernel that the packet has to be seen immediately.
++ */
++ {
++ unsigned int one = 1;
++ if (ioctl(pcap_fileno(s->handle), BIOCIMMEDIATE, &one) < 0) {
++ fprintf(stderr, "qemu: pcap failed to set immediate mode\n");
++ goto fail;
++ }
++ }
++#endif /* BIOCIMMEDIATE */
++#if defined(BIOCFEEDBACK)
++ /*
++ * Tell the kernel that the sent packet has to be fed back.
++ * This is necessary to connect host and guest.
++ */
++ {
++ unsigned int one = 1;
++ if (ioctl(pcap_fileno(s->handle), BIOCFEEDBACK, &one) < 0) {
++ fprintf(stderr, "qemu: pcap failed to set feedback mode\n");
++ goto fail;
++ }
++ }
++#endif /* BIOCFEEDBACK */
++#endif /* CONFIG_BPF */
++#endif /* _WIN32 */
++
++ snprintf(s->nc.info_str, sizeof(s->nc.info_str), "pcap redirector");
++
++#if defined(_WIN32)
++ if ((h = pcap_getevent(s->handle)) == NULL) {
++ fprintf(stderr, "qemu: pcap_getevent failed\n");
++ goto fail;
++ }
++ qemu_add_wait_object(h, pcap_send, s);
++#else /* !_WIN32 */
++ if ((i = pcap_get_selectable_fd(s->handle)) < 0) {
++ fprintf(stderr, "qemu: pcap_get_selectable_fd failed\n");
++ goto fail;
++ }
++ qemu_set_fd_handler(i, pcap_send, NULL, s);
++#endif /* _WIN32 */
++
++ return 0;
++
++fail:
++ if (s) {
++ if (s->handle)
++ pcap_close(s->handle);
++ }
++
++ return -1;
++}
++
++#endif
++
+ static int (* const net_client_init_fun[NET_CLIENT_OPTIONS_KIND__MAX])(
+ const NetClientOptions *opts,
+ const char *name,
+@@ -952,6 +1172,9 @@ static int (* const net_client_init_fun[
+ #ifdef CONFIG_NET_BRIDGE
+ [NET_CLIENT_OPTIONS_KIND_BRIDGE] = net_init_bridge,
+ #endif
++#ifdef CONFIG_PCAP
++ [NET_CLIENT_OPTIONS_KIND_PCAP] = net_init_pcap,
++#endif
+ [NET_CLIENT_OPTIONS_KIND_HUBPORT] = net_init_hubport,
+ #ifdef CONFIG_VHOST_NET_USED
+ [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user,
diff --git a/emulators/qemu/pkg-plist b/emulators/qemu/pkg-plist
index 1e3e1d47425e..3c2a40c70542 100644
--- a/emulators/qemu/pkg-plist
+++ b/emulators/qemu/pkg-plist
@@ -1,14 +1,17 @@
-%%SOFTMMU%%bin/ivshmem-client
-%%SOFTMMU%%bin/ivshmem-server
-%%SOFTMMU%%bin/qemu-ga
-%%SOFTMMU%%bin/qemu-img
-%%SOFTMMU%%bin/qemu-io
-%%SOFTMMU%%bin/qemu-nbd
+bin/ivshmem-server
+bin/ivshmem-client
+bin/qemu-ga
+bin/qemu-i386
+bin/qemu-img
+bin/qemu-io
+bin/qemu-nbd
+%%NO_X86_TARGETS%%bin/qemu-sparc
+%%NO_X86_TARGETS%%bin/qemu-sparc64
%%NO_X86_TARGETS%%bin/qemu-system-aarch64
%%NO_X86_TARGETS%%bin/qemu-system-alpha
%%NO_X86_TARGETS%%bin/qemu-system-arm
%%NO_X86_TARGETS%%bin/qemu-system-cris
-%%SOFTMMU%%bin/qemu-system-i386
+bin/qemu-system-i386
%%NO_X86_TARGETS%%bin/qemu-system-lm32
%%NO_X86_TARGETS%%bin/qemu-system-m68k
%%NO_X86_TARGETS%%bin/qemu-system-microblaze
@@ -29,105 +32,95 @@
%%NO_X86_TARGETS%%bin/qemu-system-sparc64
%%NO_X86_TARGETS%%bin/qemu-system-tricore
%%NO_X86_TARGETS%%bin/qemu-system-unicore32
-%%BSD_USER%%bin/qemu-arm%%STATIC%%
-%%BSD_USER%%bin/qemu-i386%%STATIC%%
-%%BSD_USER%%bin/qemu-mips%%STATIC%%
-%%BSD_USER64%%bin/qemu-mips64%%STATIC%%
-%%BSD_USER64%%bin/qemu-mips64el%%STATIC%%
-%%BSD_USER%%bin/qemu-mipsel%%STATIC%%
-%%BSD_USER%%bin/qemu-sparc%%STATIC%%
-%%BSD_USER64%%bin/qemu-sparc64%%STATIC%%
-%%BSD_USER64%%bin/qemu-x86_64%%STATIC%%
-%%SOFTMMU%%bin/qemu-system-x86_64
+bin/qemu-system-x86_64
%%NO_X86_TARGETS%%bin/qemu-system-xtensa
%%NO_X86_TARGETS%%bin/qemu-system-xtensaeb
-%%SOFTMMU%%man/man1/qemu.1.gz
-%%SOFTMMU%%man/man8/qemu-ga.8.gz
-%%SOFTMMU%%man/man1/qemu-img.1.gz
-%%SOFTMMU%%man/man8/qemu-nbd.8.gz
-%%SOFTMMU%%@sample etc/qemu-ifup.sample
-%%SOFTMMU%%@sample etc/qemu-ifdown.sample
-%%SOFTMMU%%%%DATADIR%%/QEMU,tcx.bin
-%%SOFTMMU%%%%DATADIR%%/QEMU,cgthree.bin
-%%SOFTMMU%%%%DATADIR%%/acpi-dsdt.aml
-%%SOFTMMU%%%%DATADIR%%/q35-acpi-dsdt.aml
-%%SOFTMMU%%%%DATADIR%%/bios-256k.bin
-%%SOFTMMU%%%%DATADIR%%/bios.bin
-%%SOFTMMU%%%%DATADIR%%/efi-e1000.rom
-%%SOFTMMU%%%%DATADIR%%/efi-eepro100.rom
-%%SOFTMMU%%%%DATADIR%%/efi-ne2k_pci.rom
-%%SOFTMMU%%%%DATADIR%%/efi-pcnet.rom
-%%SOFTMMU%%%%DATADIR%%/efi-rtl8139.rom
-%%SOFTMMU%%%%DATADIR%%/efi-virtio.rom
-%%SOFTMMU%%%%DATADIR%%/s390-ccw.img
-%%SOFTMMU%%%%DATADIR%%/vgabios.bin
-%%SOFTMMU%%%%DATADIR%%/vgabios-cirrus.bin
-%%SOFTMMU%%%%DATADIR%%/vgabios-qxl.bin
-%%SOFTMMU%%%%DATADIR%%/vgabios-stdvga.bin
-%%SOFTMMU%%%%DATADIR%%/vgabios-virtio.bin
-%%SOFTMMU%%%%DATADIR%%/vgabios-vmware.bin
-%%SOFTMMU%%%%DATADIR%%/palcode-clipper
-%%SOFTMMU%%%%DATADIR%%/ppc_rom.bin
-%%SOFTMMU%%%%DATADIR%%/openbios-ppc
-%%SOFTMMU%%%%DATADIR%%/openbios-sparc32
-%%SOFTMMU%%%%DATADIR%%/openbios-sparc64
-%%SOFTMMU%%%%DATADIR%%/pxe-e1000.rom
-%%SOFTMMU%%%%DATADIR%%/pxe-eepro100.rom
-%%SOFTMMU%%%%DATADIR%%/pxe-ne2k_pci.rom
-%%SOFTMMU%%%%DATADIR%%/pxe-rtl8139.rom
-%%SOFTMMU%%%%DATADIR%%/pxe-pcnet.rom
-%%SOFTMMU%%%%DATADIR%%/pxe-virtio.rom
-%%SOFTMMU%%%%DATADIR%%/petalogix-ml605.dtb
-%%SOFTMMU%%%%DATADIR%%/spapr-rtas.bin
-%%SOFTMMU%%%%DATADIR%%/slof.bin
-%%SOFTMMU%%%%DATADIR%%/s390-zipl.rom
-%%SOFTMMU%%%%DATADIR%%/linuxboot.bin
-%%SOFTMMU%%%%DATADIR%%/multiboot.bin
-%%SOFTMMU%%%%DATADIR%%/sgabios.bin
-%%SOFTMMU%%%%DATADIR%%/petalogix-s3adsp1800.dtb
-%%SOFTMMU%%%%DATADIR%%/bamboo.dtb
-%%SOFTMMU%%%%DATADIR%%/kvmvapic.bin
-%%SOFTMMU%%%%DATADIR%%/qemu-icon.bmp
-%%SOFTMMU%%%%DATADIR%%/qemu_logo_no_text.svg
-%%SOFTMMU%%%%DATADIR%%/trace-events
-%%SOFTMMU%%%%DATADIR%%/u-boot.e500
-%%SOFTMMU%%%%DATADIR%%/keymaps/ar
-%%SOFTMMU%%%%DATADIR%%/keymaps/bepo
-%%SOFTMMU%%%%DATADIR%%/keymaps/common
-%%SOFTMMU%%%%DATADIR%%/keymaps/cz
-%%SOFTMMU%%%%DATADIR%%/keymaps/da
-%%SOFTMMU%%%%DATADIR%%/keymaps/de
-%%SOFTMMU%%%%DATADIR%%/keymaps/de-ch
-%%SOFTMMU%%%%DATADIR%%/keymaps/en-gb
-%%SOFTMMU%%%%DATADIR%%/keymaps/en-us
-%%SOFTMMU%%%%DATADIR%%/keymaps/es
-%%SOFTMMU%%%%DATADIR%%/keymaps/et
-%%SOFTMMU%%%%DATADIR%%/keymaps/fi
-%%SOFTMMU%%%%DATADIR%%/keymaps/fo
-%%SOFTMMU%%%%DATADIR%%/keymaps/fr
-%%SOFTMMU%%%%DATADIR%%/keymaps/fr-be
-%%SOFTMMU%%%%DATADIR%%/keymaps/fr-ca
-%%SOFTMMU%%%%DATADIR%%/keymaps/fr-ch
-%%SOFTMMU%%%%DATADIR%%/keymaps/hr
-%%SOFTMMU%%%%DATADIR%%/keymaps/hu
-%%SOFTMMU%%%%DATADIR%%/keymaps/is
-%%SOFTMMU%%%%DATADIR%%/keymaps/it
-%%SOFTMMU%%%%DATADIR%%/keymaps/ja
-%%SOFTMMU%%%%DATADIR%%/keymaps/lt
-%%SOFTMMU%%%%DATADIR%%/keymaps/lv
-%%SOFTMMU%%%%DATADIR%%/keymaps/mk
-%%SOFTMMU%%%%DATADIR%%/keymaps/modifiers
-%%SOFTMMU%%%%DATADIR%%/keymaps/nl
-%%SOFTMMU%%%%DATADIR%%/keymaps/nl-be
-%%SOFTMMU%%%%DATADIR%%/keymaps/no
-%%SOFTMMU%%%%DATADIR%%/keymaps/pl
-%%SOFTMMU%%%%DATADIR%%/keymaps/pt
-%%SOFTMMU%%%%DATADIR%%/keymaps/pt-br
-%%SOFTMMU%%%%DATADIR%%/keymaps/ru
-%%SOFTMMU%%%%DATADIR%%/keymaps/sl
-%%SOFTMMU%%%%DATADIR%%/keymaps/sv
-%%SOFTMMU%%%%DATADIR%%/keymaps/th
-%%SOFTMMU%%%%DATADIR%%/keymaps/tr
+bin/qemu-x86_64
+man/man1/qemu.1.gz
+man/man1/qemu-img.1.gz
+man/man8/qemu-ga.8.gz
+man/man8/qemu-nbd.8.gz
+@sample etc/qemu-ifup.sample
+@sample etc/qemu-ifdown.sample
+%%DATADIR%%/QEMU,tcx.bin
+%%DATADIR%%/QEMU,cgthree.bin
+%%DATADIR%%/acpi-dsdt.aml
+%%DATADIR%%/bios-256k.bin
+%%DATADIR%%/bios.bin
+%%DATADIR%%/efi-e1000.rom
+%%DATADIR%%/efi-eepro100.rom
+%%DATADIR%%/efi-ne2k_pci.rom
+%%DATADIR%%/efi-pcnet.rom
+%%DATADIR%%/efi-rtl8139.rom
+%%DATADIR%%/efi-virtio.rom
+%%DATADIR%%/vgabios.bin
+%%DATADIR%%/vgabios-cirrus.bin
+%%DATADIR%%/vgabios-qxl.bin
+%%DATADIR%%/vgabios-stdvga.bin
+%%DATADIR%%/vgabios-virtio.bin
+%%DATADIR%%/vgabios-vmware.bin
+%%DATADIR%%/palcode-clipper
+%%DATADIR%%/ppc_rom.bin
+%%DATADIR%%/openbios-ppc
+%%DATADIR%%/openbios-sparc32
+%%DATADIR%%/openbios-sparc64
+%%DATADIR%%/pxe-e1000.rom
+%%DATADIR%%/pxe-eepro100.rom
+%%DATADIR%%/pxe-ne2k_pci.rom
+%%DATADIR%%/pxe-rtl8139.rom
+%%DATADIR%%/pxe-pcnet.rom
+%%DATADIR%%/pxe-virtio.rom
+%%DATADIR%%/petalogix-ml605.dtb
+%%DATADIR%%/spapr-rtas.bin
+%%DATADIR%%/slof.bin
+%%DATADIR%%/s390-ccw.img
+%%DATADIR%%/linuxboot.bin
+%%DATADIR%%/multiboot.bin
+%%DATADIR%%/sgabios.bin
+%%DATADIR%%/petalogix-s3adsp1800.dtb
+%%DATADIR%%/bamboo.dtb
+%%DATADIR%%/kvmvapic.bin
+%%DATADIR%%/qemu-icon.bmp
+%%DATADIR%%/qemu_logo_no_text.svg
+%%DATADIR%%/trace-events
+%%DATADIR%%/u-boot.e500
+%%DATADIR%%/keymaps/ar
+%%DATADIR%%/keymaps/bepo
+%%DATADIR%%/keymaps/common
+%%DATADIR%%/keymaps/cz
+%%DATADIR%%/keymaps/da
+%%DATADIR%%/keymaps/de
+%%DATADIR%%/keymaps/de-ch
+%%DATADIR%%/keymaps/en-gb
+%%DATADIR%%/keymaps/en-us
+%%DATADIR%%/keymaps/es
+%%DATADIR%%/keymaps/et
+%%DATADIR%%/keymaps/fi
+%%DATADIR%%/keymaps/fo
+%%DATADIR%%/keymaps/fr
+%%DATADIR%%/keymaps/fr-be
+%%DATADIR%%/keymaps/fr-ca
+%%DATADIR%%/keymaps/fr-ch
+%%DATADIR%%/keymaps/hr
+%%DATADIR%%/keymaps/hu
+%%DATADIR%%/keymaps/is
+%%DATADIR%%/keymaps/it
+%%DATADIR%%/keymaps/ja
+%%DATADIR%%/keymaps/lt
+%%DATADIR%%/keymaps/lv
+%%DATADIR%%/keymaps/mk
+%%DATADIR%%/keymaps/modifiers
+%%DATADIR%%/keymaps/nl
+%%DATADIR%%/keymaps/nl-be
+%%DATADIR%%/keymaps/no
+%%DATADIR%%/keymaps/pl
+%%DATADIR%%/keymaps/pt
+%%DATADIR%%/keymaps/pt-br
+%%DATADIR%%/keymaps/ru
+%%DATADIR%%/keymaps/sl
+%%DATADIR%%/keymaps/sv
+%%DATADIR%%/keymaps/th
+%%DATADIR%%/keymaps/tr
%%GTK2%%share/locale/de_DE/LC_MESSAGES/qemu.mo
%%GTK2%%share/locale/fr_FR/LC_MESSAGES/qemu.mo
%%GTK2%%share/locale/it/LC_MESSAGES/qemu.mo