Index: emulators/Makefile =================================================================== --- emulators/Makefile +++ emulators/Makefile @@ -121,6 +121,7 @@ SUBDIR += qemu-launcher SUBDIR += qemu-sbruno SUBDIR += qemu-user-static + SUBDIR += qemu-utils SUBDIR += qmc2 SUBDIR += qtemu SUBDIR += quasi88 Index: emulators/qemu-utils/Makefile =================================================================== --- /dev/null +++ emulators/qemu-utils/Makefile @@ -0,0 +1,129 @@ +# $FreeBSD$ + +PORTNAME= qemu +PORTVERSION= 2.6.1 +CATEGORIES= emulators +MASTER_SITES= http://wiki.qemu.org/download/ +PKGNAMESUFFIX= -utils +DIST_SUBDIR= qemu/${PORTVERSION} + +MAINTAINER= asomers@FreeBSD.org +COMMENT= QEMU userland utilities + +LICENSE= GPLv2 + +HAS_CONFIGURE= yes +USES= cpe gmake pkgconfig perl5 python:2,build tar:bzip2 +USES+= gettext-runtime +USE_PERL5= build +USE_GNOME+= glib20 +MAKE_ENV+= BSD_MAKE="${MAKE}" PREFIX=${PREFIX} +CONFLICTS_INSTALL= qemu-[0-9]* qemu-devel-* qemu-sbruno-* + +OPTIONS_DEFINE= DOCS + +DOCS_BUILD_DEPENDS= texi2html:textproc/texi2html +DOCS_USES= makeinfo +DOCS_MAKE_ARGS_OFF= NOPORTDOCS=1 +PORTDOCS= qemu-doc.html qemu-tech.html qmp-commands.txt + +CONFIGURE_ARGS+=--localstatedir=/var --extra-ldflags=-L\"${LOCALBASE}/lib\" \ + --disable-libssh2 \ + --prefix=${PREFIX} --cc=${CC} --disable-kvm \ + --disable-linux-user --disable-linux-aio --disable-xen \ + --python=${PYTHON_CMD} \ + --extra-cflags=-I${WRKSRC}\ -I${LOCALBASE}/include\ -DPREFIX=\\\"\"${PREFIX}\\\"\" \ + --disable-curl \ + --disable-gnutls \ + --disable-gtk \ + --disable-vte \ + --disable-vnc-jpeg \ + --disable-opengl \ + --disable-usb-redir \ + --disable-sdl \ + --disable-system \ + --disable-user \ + --disable-guest-agent \ + --disable-nettle \ + --disable-gcrypt \ + --disable-curses \ + --disable-vnc \ + --disable-virtfs \ + --disable-brlapi \ + --disable-fdt \ + --disable-bluez \ + --disable-kvm \ + --disable-rdma \ + --disable-uuid \ + --disable-vde \ + --disable-netmap \ + --disable-cap-ng \ + --disable-attr \ + --disable-vhost-net \ + --disable-spice \ + --disable-rbd \ + --disable-libiscsi \ + --disable-libnfs \ + --disable-smartcard \ + --disable-libusb \ + --disable-usb-redir \ + --disable-lzo \ + --disable-snappy \ + --disable-bzip2 \ + --disable-seccomp \ + --disable-coroutine-pool \ + --disable-glusterfs \ + --disable-archipelago \ + --disable-tpm \ + --disable-numa \ + --disable-blobs \ + --without-pixman + +.include + +.if !defined(STRIP) || ${STRIP} == "" +CONFIGURE_ARGS+=--disable-strip +.endif + +# -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 + @${REINPLACE_CMD} -E \ + -e "s|^(CFLAGS=).*|\1${CFLAGS} -fno-strict-aliasing|" \ + -e "s|^(LDFLAGS=).*|\1${LDFLAGS}|" \ + ${WRKSRC}/Makefile.target + @${REINPLACE_CMD} -E \ + -e "s|^(CFLAGS=).*|\1${CFLAGS} -fno-strict-aliasing -I.|" \ + -e "s|^(LDFLAGS=).*|\1${LDFLAGS}|" \ + ${WRKSRC}/Makefile + @${REINPLACE_CMD} -E \ + -e "1s|^(#! )/usr/bin/perl|\1${PERL}|" \ + ${WRKSRC}/scripts/texi2pod.pl + +post-patch-CDROM_DMA-off: + @${REINPLACE_CMD} -e '/USE_DMA_CDROM/d' ${WRKSRC}/hw/ide/internal.h + +post-patch-GNS3-on: + @${REINPLACE_CMD} -e 's|(buf\[0\] & 1) && (rctl & E1000_RCTL_MPE)|buf[0] \& 1|' \ + ${WRKSRC}/hw/net/e1000.c + +# XXX need to disable usb host code on head while it's not ported to the +# new usb stack yet +post-configure: + @${REINPLACE_CMD} -E \ + -e "s|^(HOST_USB=)bsd|\1stub|" \ + ${WRKSRC}/config-host.mak + +.if !target(post-install) +post-install: + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-* + @${RMDIR} ${STAGEDIR}${DATADIR} +.endif + +.include Index: emulators/qemu-utils/distinfo =================================================================== --- /dev/null +++ emulators/qemu-utils/distinfo @@ -0,0 +1,3 @@ +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 Index: emulators/qemu-utils/files/patch-Makefile =================================================================== --- /dev/null +++ emulators/qemu-utils/files/patch-Makefile @@ -0,0 +1,37 @@ +--- Makefile.orig 2016-08-17 15:26:51 UTC ++++ Makefile +@@ -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 qemu-ga.8 ++else + DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8 qemu-ga.8 ++endif + DOCS+=qmp-commands.txt + ifdef CONFIG_LINUX + DOCS+=kvm_stat.1 +@@ -410,8 +414,10 @@ else + + install-doc: $(DOCS) + $(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)" ++ifndef NOPORTDOCS + $(INSTALL_DATA) qemu-doc.html qemu-tech.html "$(DESTDIR)$(qemu_docdir)" + $(INSTALL_DATA) qmp-commands.txt "$(DESTDIR)$(qemu_docdir)" ++endif + ifdef CONFIG_POSIX + $(INSTALL_DIR) "$(DESTDIR)$(mandir)/man1" + $(INSTALL_DATA) qemu.1 "$(DESTDIR)$(mandir)/man1" +@@ -464,11 +471,6 @@ endif + ifeq ($(CONFIG_GTK),y) + $(MAKE) -C po $@ + endif +- $(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/keymaps" +- set -e; for x in $(KEYMAPS); do \ +- $(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \ +- done +- $(INSTALL_DATA) $(SRC_PATH)/trace-events "$(DESTDIR)$(qemu_datadir)/trace-events" + for d in $(TARGET_DIRS); do \ + $(MAKE) $(SUBDIR_MAKEFLAGS) TARGET_DIR=$$d/ -C $$d $@ || exit 1 ; \ + done Index: emulators/qemu-utils/files/patch-configure =================================================================== --- /dev/null +++ emulators/qemu-utils/files/patch-configure @@ -0,0 +1,218 @@ +--- configure.orig 2016-08-17 15:26:51 UTC ++++ configure +@@ -245,7 +245,7 @@ DSOSUF=".so" + LDFLAGS_SHARED="-shared" + modules="no" + prefix="/usr/local" +-mandir="\${prefix}/share/man" ++mandir="\${prefix}/man" + datadir="\${prefix}/share" + qemu_docdir="\${prefix}/share/doc/qemu" + bindir="\${prefix}/bin" +@@ -317,6 +317,10 @@ virglrenderer="" + tpm="yes" + libssh2="" + vhdx="" ++quorum="no" ++pcap="no" ++pcap_create="no" ++bpf="no" + numa="" + tcmalloc="no" + jemalloc="no" +@@ -576,7 +580,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 -lelf -lelf -lelf -lelf -lelf -lelf -lkvm -lelf -lutil $LIBS" + netmap="" # enable netmap autodetect + HOST_VARIANT_DIR="freebsd" + ;; +@@ -879,6 +883,10 @@ for opt do + ;; + --enable-vnc-png) vnc_png="yes" + ;; ++ --enable-pcap) pcap="yes" ++ ;; ++ --disable-pcap) pcap="no" ++ ;; + --disable-slirp) slirp="no" + ;; + --disable-uuid) uuid="no" +@@ -2161,7 +2169,7 @@ if test "$gtk" != "no"; then + gtk_cflags="$gtk_cflags $x11_cflags" + gtk_libs="$gtk_libs $x11_libs" + fi +- libs_softmmu="$gtk_libs $libs_softmmu" ++ libs_softmmu="$gtk_libs -lintl $libs_softmmu" + gtk="yes" + elif test "$gtk" = "yes"; then + feature_not_found "gtk" "Install gtk2 or gtk3 devel" +@@ -2389,6 +2397,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 +@@ -2531,6 +2547,50 @@ EOF + fi + fi + ++########################################## ++# pcap probe ++ ++if test "$pcap" = "yes" -a "$pcap" != "no"; then ++ cat > $TMPC << EOF ++#include ++int main(void) { return (pcap_lib_version() == (char *)0 ? 1 : 0); } ++EOF ++ if test "$mingw32" = "no" ; then ++ libpcap=-lpcap ++ else ++ libpcap=-lwpcap ++ fi ++ if compile_prog "" "$libpcap" ; then ++ : ++ else ++ echo ++ echo "Error: Could not find pcap" ++ echo "Make sure to have the pcap libs and headers installed." ++ echo ++ exit 1 ++ fi ++ cat > $TMPC << EOF ++#include ++int main(void) ++{ ++ char errbuf[PCAP_ERRBUF_SIZE]; ++ return (pcap_create("foo", errbuf) == (pcap_t *)0 ? 1 : 0); ++} ++EOF ++ if compile_prog "" "$libpcap" ; then ++ pcap_create="yes" ++ fi ++ cat > $TMPC << EOF ++#define PCAP_DONT_INCLUDE_PCAP_BPF_H ++#include ++#include ++int main(void) { return (BPF_MAJOR_VERSION); } ++EOF ++ if compile_prog ; then ++ bpf="yes" ++ fi ++ libs_softmmu="$libpcap $libs_softmmu" ++fi # test "$pcap" + + ########################################## + # VNC SASL detection +@@ -2945,7 +3005,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 -lintl -lintl -lintl -lintl -lintl $libs_qga" + else + error_exit "glib-$glib_req_ver $i is required to compile QEMU" + fi +@@ -3021,7 +3081,7 @@ if test "$pixman" = ""; then + fi + fi + if test "$pixman" = "none"; then +- if test "$want_tools" != "no" -o "$softmmu" != "no"; then ++ if test "$softmmu" != "no"; then + error_exit "pixman disabled but system emulation or tools build" \ + "enabled. You can turn off pixman only if you also" \ + "disable all system emulation targets and the tools" \ +@@ -3865,14 +3925,7 @@ fi + + # Check if tools are available to build documentation. + if test "$docs" != "no" ; then +- if has makeinfo && has pod2man; then + docs=yes +- else +- if test "$docs" = "yes" ; then +- feature_not_found "docs" "Install texinfo and Perl/perl-podlators" +- fi +- docs=no +- fi + fi + + # Search for bswap_32 function +@@ -4000,6 +4053,17 @@ fi + + # check for libusb + if test "$libusb" != "no" ; then ++ cat > $TMPC << EOF ++#include ++ ++int main(void) { return libusb_get_port_path(NULL, NULL, NULL, 0); } ++EOF ++ if compile_prog "-Werror" "-lusb -pthread" ; then ++ libusb="yes" ++ libusb_cflags="" ++ libusb_libs=-lusb ++ libs_softmmu="$libs_softmmu $libusb_libs" ++ else + if $pkg_config --atleast-version=1.0.13 libusb-1.0; then + libusb="yes" + libusb_cflags=$($pkg_config --cflags libusb-1.0) +@@ -4012,6 +4076,7 @@ if test "$libusb" != "no" ; then + fi + libusb="no" + fi ++ fi + fi + + # check for usbredirparser for usb network redirection support +@@ -4584,7 +4649,6 @@ if test "$want_tools" = "yes" ; then + tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" + if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then + tools="qemu-nbd\$(EXESUF) $tools" +- tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" + fi + fi + if test "$softmmu" = yes ; then +@@ -4792,6 +4856,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" ++echo "pcap support $pcap" + echo "VNC support $vnc" + if test "$vnc" = "yes" ; then + echo "VNC SASL support $vnc_sasl" +@@ -4973,6 +5038,15 @@ fi + if test "$profiler" = "yes" ; then + echo "CONFIG_PROFILER=y" >> $config_host_mak + fi ++if test "$pcap" = "yes" ; then ++ echo "CONFIG_PCAP=y" >> $config_host_mak ++ if test "$pcap_create" = "yes" ; then ++ echo "CONFIG_PCAP_CREATE=y" >> $config_host_mak ++ fi ++ if test "$bpf" = "yes" ; then ++ echo "CONFIG_BPF=y" >> $config_host_mak ++ fi ++fi + if test "$slirp" = "yes" ; then + echo "CONFIG_SLIRP=y" >> $config_host_mak + echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak +@@ -5184,6 +5258,9 @@ fi + if test "$have_fsxattr" = "yes" ; then + echo "HAVE_FSXATTR=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 Index: emulators/qemu-utils/files/patch-qemu-doc.texi =================================================================== --- /dev/null +++ emulators/qemu-utils/files/patch-qemu-doc.texi @@ -0,0 +1,21 @@ +--- qemu-doc.texi.orig 2016-08-17 15:26:57 UTC ++++ qemu-doc.texi +@@ -223,7 +223,7 @@ VGA BIOS. + QEMU uses YM3812 emulation by Tatsuyuki Satoh. + + QEMU uses GUS emulation (GUSEMU32 @url{http://www.deinmeister.de/gusemu/}) +-by Tibor "TS" Schütz. ++by Tibor "TS" Schuetz. + + Note that, by default, GUS shares IRQ(7) with parallel ports and so + QEMU must be told to not have parallel ports to have working GUS. +@@ -367,7 +367,8 @@ Send the escape character to the fronten + + @c man begin SEEALSO + The HTML documentation of QEMU for more precise information and Linux +-user mode emulator invocation. ++user mode emulator invocation, as well as the FreeBSD host notes in ++@file{pkg-message} in the relevant qemu port directory. + @c man end + + @c man begin AUTHOR Index: emulators/qemu-utils/pkg-descr =================================================================== --- /dev/null +++ emulators/qemu-utils/pkg-descr @@ -0,0 +1,7 @@ +Miscellaneous tools that can be used without the rest of QEMU + +* qemu-img: QEMU disk image utility +* qemu-io: QEMU disk exerciser +* qemu-nbd: QEMU disk network block device server + +WWW: http://wiki.qemu.org/Main_Page Index: emulators/qemu-utils/pkg-plist =================================================================== --- /dev/null +++ emulators/qemu-utils/pkg-plist @@ -0,0 +1,6 @@ +bin/qemu-img +bin/qemu-io +bin/qemu-nbd +man/man1/qemu-img.1.gz +man/man1/qemu.1.gz +man/man8/qemu-nbd.8.gz