diff --git a/emulators/qemu7/Makefile b/emulators/qemu7/Makefile index ff9a47430823..ca1bab5fcd30 100644 --- a/emulators/qemu7/Makefile +++ b/emulators/qemu7/Makefile @@ -1,248 +1,247 @@ PORTNAME= qemu -PORTVERSION= 7.2.7 -PORTREVISION= 1 +PORTVERSION= 7.2.8 CATEGORIES= emulators MASTER_SITES= https://download.qemu.org/ DIST_SUBDIR= qemu/${PORTVERSION} MAINTAINER= bofh@FreeBSD.org COMMENT= QEMU CPU Emulator ${${FLAVOR}_COMMENT} - 7.X.X WWW= https://www.qemu.org/ LICENSE= GPLv2 .if ${FLAVOR:U} != tools ONLY_FOR_ARCHS= aarch64 amd64 i386 powerpc64 powerpc64le # We need to check if it build with other ARCHS .endif BUILD_DEPENDS= bash:shells/bash .if ${FLAVOR:U} != tools LIB_DEPENDS+= libfdt.so:sysutils/dtc \ libzstd.so:archivers/zstd \ libslirp.so:net/libslirp .endif .if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools) LIB_DEPENDS+= libepoxy.so:graphics/libepoxy .endif FLAVORS= default nox11 tools FLAVOR?= ${FLAVORS:[1]} default_PKGNAMESUFFIX= 7 default_CONFLICTS_INSTALL= qemu-devel qemu-nox11 qemu-tools qemu-utils \ qemu6* nox11_PKGNAMESUFFIX= 7-nox11 nox11_CONFLICTS_INSTALL= qemu qemu-devel qemu6* nox11_COMMENT= (without X11) tools_PKGNAMESUFFIX= 7-tools tools_COMMENT= (tools only) tools_CONFLICTS_INSTALL= qemu qemu-devel qemu-nox11 qemu-utils qemu6* \ qemu-guest-agent tools_DESCR= ${.CURDIR}/pkg-descr-tools tools_PLIST= ${.CURDIR}/pkg-plist-tools USES= cpe gmake gnome ninja perl5 pkgconfig python:build tar:xz USE_GNOME= glib20 USE_PERL5= build .if ${FLAVOR:U} != tools USES+= iconv:wchar_t .endif .if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools) USE_GNOME+= cairo .endif HAS_CONFIGURE= yes CONFIGURE_ARGS+= --cc=${CC} \ --disable-guest-agent \ --disable-kvm \ --disable-linux-aio \ --disable-linux-user \ --disable-xen \ --extra-cflags=-I${WRKSRC}\ -I${LOCALBASE}/include\ -DPREFIX=\\\"\"${PREFIX}\\\"\" \ --extra-ldflags=-L${LOCALBASE}/lib \ --extra-ldflags=-L/usr/lib \ --localstatedir=/var \ --mandir=${PREFIX}/man \ --prefix=${PREFIX} \ --python=${PYTHON_CMD} .if ${FLAVOR:U} != tools CONFIGURE_ARGS+= --enable-fdt=system \ --enable-netmap .endif .if ${FLAVOR:U} == tools CONFIGURE_ARGS+= --disable-attr \ --disable-blobs \ --disable-brlapi \ --disable-bzip2 \ --disable-cap-ng \ --disable-coroutine-pool \ --disable-curses \ --disable-fdt \ --disable-gcrypt \ --disable-glusterfs \ --disable-libnfs \ --disable-libusb \ --disable-lzo \ --disable-netmap \ --disable-nettle \ --disable-numa \ --disable-rbd \ --disable-rdma \ --disable-seccomp \ --disable-smartcard \ --disable-snappy \ --disable-spice \ --disable-system \ --disable-tpm \ --disable-user \ --disable-vhost-net \ --disable-virtfs \ --disable-vnc \ --enable-tools .endif CFLAGS:= ${CFLAGS:C/-fno-tree-vrp//} WITHOUT_CPU_CFLAGS= yes #to avoid problems with register allocation PORTDOCS= .buildinfo _static/* about/* dbus-dbusindex.html devel/* docs \ genindex.html index.html interop/* objects.inv search.html \ searchindex.js specs/* system/* tools/* user/* OPTIONS_DEFINE= CAPSTONE CDROM_DMA CURL DEBUG DOCS GNUTLS GTK3 \ ISCSI JPEG OPENGL PNG SAMBA SASL STATIC_LINK \ STRIP USBREDIR VDE X11 X86_TARGETS OPTIONS_DEFAULT= CDROM_DMA CURL GNUTLS GTK3 JPEG NCURSES_DEFAULT \ OPENGL PNG SASL VDE X11 OPTIONS_SINGLE= NCURSES OPTIONS_SINGLE_NCURSES= NCURSES_BASE NCURSES_DEFAULT NCURSES_PORT .if ${FLAVOR:U} == nox11 OPTIONS_EXCLUDE:= GTK3 OPENGL X11 .endif .if ${FLAVOR:U} == tools OPTIONS_EXCLUDE:= CAPSTONE CDROM_DMA CURL DEBUG GNUTLS GTK3 ISCSI \ JPEG NCURSES NCURSES_BASE NCURSES_DEFAULT \ NCURSES_PORT OPENGL PNG SAMBA SASL STATIC_LINK \ USBREDIR VDE X11 X86_TARGETS .endif OPTIONS_SUB= yes CAPSTONE_DESC= Disassembly framework support CDROM_DMA_DESC= IDE CDROM DMA GNUTLS_DESC= gnutls dependency (vnc encryption) ISCSI_DESC= libiscsi dependency (iSCSI client for emulated drives) JPEG_DESC= jpeg dependency (vnc lossy compression) NCURSES_BASE_DESC= Depend on ncurses in base NCURSES_DEFAULT_DESC= Depend on ncurses (ports if installed, otherwise base) NCURSES_PORT_DESC= Depend on devel/ncurses in ports PNG_DESC= png dependency (vnc compression) SAMBA_DESC= samba dependency (for -smb) SASL_DESC= cyrus-sasl dependency (vnc encryption) STATIC_LINK_DESC= Statically link the executables USBREDIR_DESC= usb device network redirection (experimental!) VDE_DESC= vde dependency (for vde networking) X86_TARGETS_DESC= Build only x86 system targets CAPSTONE_LIB_DEPENDS= libcapstone.so:devel/capstone4 CAPSTONE_CONFIGURE_ON= --enable-capstone \ --extra-cflags=-I${LOCALBASE}/include/capstone CAPSTONE_CONFIGURE_OFF= --disable-capstone CURL_LIB_DEPENDS= libcurl.so:ftp/curl CURL_CONFIGURE_OFF= --disable-curl DEBUG_CONFIGURE_ON= --enable-debug DOCS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sphinx_rtd_theme>0:textproc/py-sphinx_rtd_theme@${PY_FLAVOR} \ sphinx-build:textproc/py-sphinx@${PY_FLAVOR} DOCS_CONFIGURE_ENABLE= docs GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls GNUTLS_CONFIGURE_OFF= --disable-gnutls GTK3_LIB_DEPENDS= libxkbcommon.so:x11/libxkbcommon GTK3_USES= gettext gl GTK3_USE= GNOME=gdkpixbuf2,gtk30,vte3 \ XORG=x11,xext GTK3_CONFIGURE_OFF= --disable-gtk \ --disable-vte ISCSI_LIB_DEPENDS= libiscsi.so:net/libiscsi ISCSI_CONFIGURE_OFF= --disable-libiscsi JPEG_USES= jpeg JPEG_CONFIGURE_OFF= --disable-vnc-jpeg NCURSES_BASE_USES= ncurses:base NCURSES_DEFAULT_USES= ncurses NCURSES_PORT_USES= ncurses:port OPENGL_USES= gl OPENGL_USE= GL=gbm,gl OPENGL_CONFIGURE_OFF= --disable-opengl PNG_LIB_DEPENDS= libpng.so:graphics/png PNG_CONFIGURE_OFF= --disable-png SAMBA_USES= samba:run # smbd SAMBA_CONFIGURE_ON= --smbd=${LOCALBASE}/sbin/smbd SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2 SASL_CONFIGURE_OFF= --disable-vnc-sasl STATIC_LINK_PREVENTS= GTK3 X11 STATIC_LINK_PREVENTS_MSG= X11 ui cannot be built static STATIC_LINK_CONFIGURE_ON= --static STRIP_CONFIGURE_OFF= --disable-strip USBREDIR_BUILD_DEPENDS= usbredir>=0.6:net/usbredir USBREDIR_RUN_DEPENDS= usbredir>=0.6:net/usbredir USBREDIR_CONFIGURE_OFF= --disable-usb-redir VDE_LIB_DEPENDS= libvdeplug.so:net/vde2 VDE_CONFIGURE_OFF= --disable-vde X11_USES= sdl X11_USE= GNOME=gdkpixbuf2 \ SDL=sdl2 \ XORG=x11,xext X11_CONFIGURE_ENABLE= sdl .if (empty(FLAVOR) || ${FLAVOR:U} == default || ${FLAVOR:U} == nox11) && \ (${FLAVOR:U} != tools || ${PKGNAMESUFFIX} != "-guest-agent") X86_TARGETS_USES_OFF= xorg X86_TARGETS_USE_OFF= XORG=pixman,x11 X86_TARGETS_CONFIGURE_ON= --target-list='i386-softmmu i386-bsd-user x86_64-softmmu x86_64-bsd-user' .endif .include .if (empty(FLAVOR) || ${FLAVOR:U} == default || ${FLAVOR:U} == nox11) && \ (${FLAVOR:U} != tools || ${PKGNAMESUFFIX} != "-guest-agent") .if ${ARCH} == "amd64" MAKE_ARGS+= ARCH=x86_64 .endif .if ${ARCH} == "powerpc" CFLAGS+= -D_CALL_SYSV MAKE_ARGS+= ARCH=ppc USE_GCC= yes .endif .if ${ARCH:Mpowerpc64*} || ${ARCH:Maarch64} CONFIGURE_ARGS+= --disable-bsd-user MAKE_ARGS+= ARCH=${ARCH:C/powerpc64.*/ppc64/} PLIST_SUB+= BSDUSER="@comment " .else PLIST_SUB+= BSDUSER="" .endif .if ${ARCH} == "sparc64" CONFIGURE_ARGS+= --sparc_cpu=v9 .endif PLIST_SUB+= LINUXBOOT_DMA="" .endif post-patch-CDROM_DMA-off: @${REINPLACE_CMD} -e '/USE_DMA_CDROM/d' ${WRKSRC}/include/hw/ide/internal.h do-build: cd ${WRKSRC} && ${GMAKE} -j${MAKE_JOBS_NUMBER} do-install: cd ${WRKSRC} && ${SETENV} DESTDIR=${STAGEDIR} ${GMAKE} install .if !target(post-install) post-install: .if ${FLAVOR:U} != tools ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample ${STAGEDIR}${PREFIX}/etc ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample ${STAGEDIR}${PREFIX}/etc .endif @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-* post-install-DOCS-on: @(cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${DOCSDIR}/) .endif .include diff --git a/emulators/qemu7/distinfo b/emulators/qemu7/distinfo index c41d570613ec..23bd1eee64f9 100644 --- a/emulators/qemu7/distinfo +++ b/emulators/qemu7/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1700685548 -SHA256 (qemu/7.2.7/qemu-7.2.7.tar.xz) = 0482cff0d3cc8225798f2d2c77dc6f14d06fb745cf2fe2a11ee20f48112e9251 -SIZE (qemu/7.2.7/qemu-7.2.7.tar.xz) = 121869000 +TIMESTAMP = 1703690792 +SHA256 (qemu/7.2.8/qemu-7.2.8.tar.xz) = 5a4d61a07557e4c956385d1e471f6ec76073273dd56a35e22b07417588f65fbd +SIZE (qemu/7.2.8/qemu-7.2.8.tar.xz) = 121858732 diff --git a/emulators/qemu7/files/patch-meson.build b/emulators/qemu7/files/patch-meson.build index 1ada4462a416..1b756628a3b6 100644 --- a/emulators/qemu7/files/patch-meson.build +++ b/emulators/qemu7/files/patch-meson.build @@ -1,20 +1,20 @@ ---- meson.build.orig 2022-12-14 16:28:45 UTC +--- meson.build.orig 2023-12-26 21:41:27 UTC +++ meson.build -@@ -2719,14 +2719,10 @@ if have_system +@@ -2717,14 +2717,10 @@ if have_system fdt_opt = get_option('fdt') if fdt_opt in ['enabled', 'auto', 'system'] have_internal = fs.exists(meson.current_source_dir() / 'dtc/libfdt/Makefile.libfdt') - fdt = cc.find_library('fdt', kwargs: static_kwargs, + fdt = cc.find_library('fdt', kwargs: static_kwargs, dirs: '/usr/local/lib/', required: fdt_opt == 'system' or - fdt_opt == 'enabled' and not have_internal) - if fdt.found() and cc.links(''' - #include - #include - int main(void) { fdt_find_max_phandle(NULL, NULL); return 0; }''', - dependencies: fdt) + fdt_opt == 'enabled') + if fdt.found() fdt_opt = 'system' elif fdt_opt == 'system' error('system libfdt requested, but it is too old (1.5.1 or newer required)') diff --git a/emulators/qemu7/pkg-message b/emulators/qemu7/pkg-message index 54a7ebc05d6d..9f8aa75cbc2a 100644 --- a/emulators/qemu7/pkg-message +++ b/emulators/qemu7/pkg-message @@ -1,103 +1,94 @@ [ { type: install message: < hosts. The linux 2.6 - kernel uses 1000 by default btw. (changed to 250 later, and recent linux - kernels now no longer have a fixed HZ, aka `tickless kernel'...) - Enabling /dev/rtc doesn't seem to help either (not included since it needs - a patch to emulators/rtc.) - - The -smb option (smb-export local dir to guest using the default slirp networking) needs the samba port/package installed in addition to qemu. (SAMBA knob.) - If you want to use usb devices connected to the host in the guest yot can use usbredir over the network (see below); also unless you are running qemu as root you then need to fix permissions for /dev/ugen* device nodes: if you are on 5.x or later (devfs) put a rule in /etc/devfs.rules, activate it in /etc/rc.conf and run /etc/rc.d/devfs restart. Example devfs.rules: [ugen_ruleset=20] add path 'ugen*' mode 660 group operator corresponding rc.conf line: devfs_system_ruleset="ugen_ruleset" - Still usb: since the hub is no longer attached to the uchi controller and the wakeup mechanism, resume interrupt is not implemented yet linux guests will suspend the bus, i.e. they wont see devices usb_add'ed after its (linux') uhci module got loaded. Workaround: either add devices before linux loads the module or rmmod and modprobe it afterwards. [Not sure if this still applies to the new libusb host code used on recent 10-current.] - If you get repeated `atapi_poll called!' console messages with FreeBSD guests or other weird cdrom problems then thats probably because the guest has atapicam loaded, which for reasons still to be determined has problems with qemu's now by default enabled cdrom dma. You can build the port with CDROM_DMA disabled to disable it. [Looks like this is fixed in recent FreeBSD guest versions.] -- If you build qemu wihout SDL and then get crashes running it try passing it - -nographic. This should probably be default in that case... - - qemu's network boot roms (-boot n) have a bug when bootfiles sizes are a multiple of blksize, if this affects you (like with FreeBSD's /boot/pxeboot) you can do like cp /boot/pxeboot pxeboot-qemu && chmod +w pxeboot-qemu && echo >>pxeboot-qemu and then use pxeboot-qemu. Actually you need recent btx code (from after 7.0 was released) because of the real mode boot problem, so use at least pxeboot from there. And I just did that for the pxeboot extracted out of ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/200805/7.0-STABLE-200805-i386-bootonly.iso and placed it here: http://people.freebsd.org/~nox/qemu/pxeboot-qemu - If you use slirp (usernet, the default) and want to mount nfs into the guest and you are not running qemu as root, then mountd(8) on the exporting box needs to be run with -n in order to accept requests from ports >= 1024. - (not FreeBSD-specific:) There have been reports of qcow2 corruption with (at least) win2k guests on recent kvm (which uses similar qcow2 code than qemu now, see this thread: http://lists.gnu.org/archive/html/qemu-devel/2009-02/msg00713.html - the consensus on that thread seems to be that qcow(2) code has always been experimental and you should use raw images if you want reliability; raw is also usually faster.) You should be able to migrate existing images to raw using qemu-img(1)'s convert function; raw doesn't support advanced features like snapshots tho. [a few important qcow2 bugfixed have been committed in the meantime so this _might_ be less of an issue now; and meanwhile there also is the new qed format - I don't know how stable that one is.] - (also not FreeBSD-specific:) It is recommended to pass raw images using the new -drive syntax, specifying format=raw explicitly in order to avoid malicious guests being able to exploit the format autodetection thats otherwise getting used. (Not that you should run malicious guests anyway, but this eleminates at least a known attack vector.) - qemu now has improved physical cdrom support, but still there is at least one known problem: you need to have the guest eject the disc if you want to change it/take it out, or otherwise the guest may continue using state (like size) of the old disc. (You can also do like `change ide1-cd0 /dev/acd0' in the monitor after taking out the disc if a guest cannot eject it itself.) EOM } ]