From nobody Thu Sep 08 18:50:33 2022 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MNp961WQpz4bTcd; Thu, 8 Sep 2022 18:50:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4MNp961CWMz3gty; Thu, 8 Sep 2022 18:50:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1662663034; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kXd8wd8j/zkgpNWGZCd2wyNGXf5B1vLeN7xKo3lo60A=; b=p2cA5wBfPgTI37v6TcSxgwNfI3YcqCyMKpBLBwZQ79Xtr530jT8rrwRFpmnMNpDA8bnQb7 /S8SrGnks30jKf6C15WSJABbeptuusLMNbqW1G0Evtq8YXr2ntcm9wIUIOzkNZSC/cr9yE lTwUm2IxSAHO9S/f71BXFgYH2HIWtApYxJ8vGDWVgMMO4ncrDt38keAs1HRD/xZwpyJLXy m8rV60Szp4lSekpsiVvA7w506Eyaq+qtWrW0M+vpmKdrY+kylBlj6y5ZmAVvYNYqTfLbmf sSwCUOTp9uKDjOE0iW/VSZRGXGsZ/61z9kbkTrXISXMqeTQCaQ15yx4DM3Aefg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4MNp960FS6zxpT; Thu, 8 Sep 2022 18:50:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 288IoXkK070047; Thu, 8 Sep 2022 18:50:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 288IoXrQ070046; Thu, 8 Sep 2022 18:50:33 GMT (envelope-from git) Date: Thu, 8 Sep 2022 18:50:33 GMT Message-Id: <202209081850.288IoXrQ070046@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Muhammad Moinur Rahman Subject: git: 5618fbd15461 - main - emulators/qemu70: New port List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bofh X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5618fbd154618f2e297c6639741e303a8649c887 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1662663034; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kXd8wd8j/zkgpNWGZCd2wyNGXf5B1vLeN7xKo3lo60A=; b=A3Is5Iv44cMr6nO5AVQ/4Ie86gKPttCUSqW5A4LIMr7CPlAhciE3/Mr14wbeJozIYcw2sy uNCUYmcv2zD4r+4xcTAQ9ibFEAPxiwXhEh9V/55dXvRX6PB6ef7WeT0b1MhI/aDCJiyTge gcBJ14Yh6fGQt2dMdb4rEnsK/fpzkAMyPA6geK5dVSGV+HU1iZUOa9XJsloK6Qb4WhxCFy 3SSHV2I22ZWclE+xnYI9WpjkJTnq5iqq8TqWljUy6cjmzhajXjTL4XpuKehp/FVcUEy1Hr sgFxm244xK/l7kjwJSEAL4czMcobPZqfx+DjYgeJp+VkY3+lvBGvKumqkh3aLw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1662663034; a=rsa-sha256; cv=none; b=EQ6xWgwpW00a94KOh3lNpslOfF7osLjsQ1Z88EGVo1DXrcWVlbwnDn5jwVIBO0wX1loMtx ujz7V8zBFdecwVmLdETDaIv72QbhRkCl/Ntx+VlooQminy/CBIxsWkSJ+ejtzFDexJKCxE +4RdKYSe05PJ9OwGi40GeY01waUL73srO/lxqanRvEXVRIl3L0QA7rS2Apk0j+cuug3Q7v rejTiqfHZ0k9TxsDF8dO1f0xcnyFDZCZ0ZpQnjhBvU/hvg/bIOWLViFQ/pgv3Zx+MutqEe TjAQzCU+yVwIf8QwIQDOUz1j7AHGccMiXxOJESSh9UrampEUs/zheGHy/mnf4A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bofh: URL: https://cgit.FreeBSD.org/ports/commit/?id=5618fbd154618f2e297c6639741e303a8649c887 commit 5618fbd154618f2e297c6639741e303a8649c887 Author: Muhammad Moinur Rahman AuthorDate: 2022-09-08 18:49:08 +0000 Commit: Muhammad Moinur Rahman CommitDate: 2022-09-08 18:49:08 +0000 emulators/qemu70: New port qemu 7.1.X has been released and in preperation of updating emulators/qemu to latest version emulators/qemu has been moved to a new port. --- emulators/Makefile | 1 + emulators/qemu70/Makefile | 246 +++++++++++++++++++++ emulators/qemu70/distinfo | 3 + emulators/qemu70/files/patch-block_export_fuse.c | 60 +++++ .../files/patch-bsd-user_host_i386_host-signal.h | 12 + .../patch-bsd-user_host_x86__64_host-signal.h | 12 + emulators/qemu70/files/patch-meson.build | 20 ++ emulators/qemu70/files/patch-util_meson.build | 14 ++ emulators/qemu70/files/qemu-ifdown.sample | 2 + emulators/qemu70/files/qemu-ifup.sample | 2 + emulators/qemu70/pkg-descr | 14 ++ emulators/qemu70/pkg-descr-tools | 7 + emulators/qemu70/pkg-message | 103 +++++++++ emulators/qemu70/pkg-plist | 179 +++++++++++++++ emulators/qemu70/pkg-plist-tools | 50 +++++ 15 files changed, 725 insertions(+) diff --git a/emulators/Makefile b/emulators/Makefile index ae843a24a94e..0bec792dd8d9 100644 --- a/emulators/Makefile +++ b/emulators/Makefile @@ -116,6 +116,7 @@ SUBDIR += qemu-user-static SUBDIR += qemu-user-static-devel SUBDIR += qemu6 + SUBDIR += qemu70 SUBDIR += qmc2 SUBDIR += quasi88 SUBDIR += reicast diff --git a/emulators/qemu70/Makefile b/emulators/qemu70/Makefile new file mode 100644 index 000000000000..7dd97baa3cae --- /dev/null +++ b/emulators/qemu70/Makefile @@ -0,0 +1,246 @@ +PORTNAME= qemu +PORTVERSION= 7.0.0 +CATEGORIES= emulators +MASTER_SITES= https://download.qemu.org/ +DIST_SUBDIR= qemu/${PORTVERSION} + +MAINTAINER= bofh@FreeBSD.org +COMMENT= QEMU CPU Emulator ${${FLAVOR}_COMMENT} - 7.0.x +WWW= https://wiki.qemu.org/Main_Page + +LICENSE= GPLv2 + +.if ${FLAVOR:U} != tools +ONLY_FOR_ARCHS= amd64 powerpc64 powerpc64le +# We need to check if it build with other ARCHS +# For i386 we have unknown type name 'vm_page_t' +.endif + +BUILD_DEPENDS= bash:shells/bash +.if ${FLAVOR:U} != tools +LIB_DEPENDS+= libfdt.so:sysutils/dtc \ + libzstd.so:archivers/zstd +.endif +.if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools) +LIB_DEPENDS+= libepoxy.so:graphics/libepoxy +.endif + +FLAVORS= default nox11 tools +FLAVOR?= ${FLAVORS:[1]} +default_PKGNAMESUFFIX= 70 +default_CONFLICTS_INSTALL= qemu-devel qemu-nox11 qemu-tools qemu-utils \ + qemu6* +nox11_PKGNAMESUFFIX= 70-nox11 +nox11_CONFLICTS_INSTALL= qemu qemu-devel qemu6* +nox11_COMMENT= (without X11) +tools_PKGNAMESUFFIX= 70-tools +tools_COMMENT= (tools only) +tools_CONFLICTS_INSTALL= qemu qemu-devel qemu-nox11 qemu-utils qemu6* +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-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-guest-agent \ + --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 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=system \ + --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-vnc-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*} +CONFIGURE_ARGS+= --disable-bsd-user +MAKE_ARGS+= ARCH=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} + +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 + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-* +.endif + +post-install-DOCS-on: + @(cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${DOCSDIR}/) +.endif + +.include diff --git a/emulators/qemu70/distinfo b/emulators/qemu70/distinfo new file mode 100644 index 000000000000..e40467f0d5ce --- /dev/null +++ b/emulators/qemu70/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1650583782 +SHA256 (qemu/7.0.0/qemu-7.0.0.tar.xz) = f6b375c7951f728402798b0baabb2d86478ca53d44cedbefabbe1c46bf46f839 +SIZE (qemu/7.0.0/qemu-7.0.0.tar.xz) = 125117636 diff --git a/emulators/qemu70/files/patch-block_export_fuse.c b/emulators/qemu70/files/patch-block_export_fuse.c new file mode 100644 index 000000000000..5fbb0dd9a040 --- /dev/null +++ b/emulators/qemu70/files/patch-block_export_fuse.c @@ -0,0 +1,60 @@ +--- block/export/fuse.c.orig 2022-04-22 18:57:58 UTC ++++ block/export/fuse.c +@@ -637,12 +637,6 @@ static void fuse_fallocate(fuse_req_t req, fuse_ino_t + return; + } + +-#ifdef CONFIG_FALLOCATE_PUNCH_HOLE +- if (mode & FALLOC_FL_KEEP_SIZE) { +- length = MIN(length, blk_len - offset); +- } +-#endif /* CONFIG_FALLOCATE_PUNCH_HOLE */ +- + if (!mode) { + /* We can only fallocate at the EOF with a truncate */ + if (offset < blk_len) { +@@ -662,44 +656,6 @@ static void fuse_fallocate(fuse_req_t req, fuse_ino_t + ret = fuse_do_truncate(exp, offset + length, true, + PREALLOC_MODE_FALLOC); + } +-#ifdef CONFIG_FALLOCATE_PUNCH_HOLE +- else if (mode & FALLOC_FL_PUNCH_HOLE) { +- if (!(mode & FALLOC_FL_KEEP_SIZE)) { +- fuse_reply_err(req, EINVAL); +- return; +- } +- +- do { +- int size = MIN(length, BDRV_REQUEST_MAX_BYTES); +- +- ret = blk_pdiscard(exp->common.blk, offset, size); +- offset += size; +- length -= size; +- } while (ret == 0 && length > 0); +- } +-#endif /* CONFIG_FALLOCATE_PUNCH_HOLE */ +-#ifdef CONFIG_FALLOCATE_ZERO_RANGE +- else if (mode & FALLOC_FL_ZERO_RANGE) { +- if (!(mode & FALLOC_FL_KEEP_SIZE) && offset + length > blk_len) { +- /* No need for zeroes, we are going to write them ourselves */ +- ret = fuse_do_truncate(exp, offset + length, false, +- PREALLOC_MODE_OFF); +- if (ret < 0) { +- fuse_reply_err(req, -ret); +- return; +- } +- } +- +- do { +- int size = MIN(length, BDRV_REQUEST_MAX_BYTES); +- +- ret = blk_pwrite_zeroes(exp->common.blk, +- offset, size, 0); +- offset += size; +- length -= size; +- } while (ret == 0 && length > 0); +- } +-#endif /* CONFIG_FALLOCATE_ZERO_RANGE */ + else { + ret = -EOPNOTSUPP; + } diff --git a/emulators/qemu70/files/patch-bsd-user_host_i386_host-signal.h b/emulators/qemu70/files/patch-bsd-user_host_i386_host-signal.h new file mode 100644 index 000000000000..06a07c0f9425 --- /dev/null +++ b/emulators/qemu70/files/patch-bsd-user_host_i386_host-signal.h @@ -0,0 +1,12 @@ +--- bsd-user/host/i386/host-signal.h.orig 2022-09-08 16:00:45 UTC ++++ bsd-user/host/i386/host-signal.h +@@ -9,6 +9,9 @@ + #ifndef I386_HOST_SIGNAL_H + #define I386_HOST_SIGNAL_H + ++#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) ++#include ++#endif + #include + #include + #include diff --git a/emulators/qemu70/files/patch-bsd-user_host_x86__64_host-signal.h b/emulators/qemu70/files/patch-bsd-user_host_x86__64_host-signal.h new file mode 100644 index 000000000000..1864eb788f03 --- /dev/null +++ b/emulators/qemu70/files/patch-bsd-user_host_x86__64_host-signal.h @@ -0,0 +1,12 @@ +--- bsd-user/host/x86_64/host-signal.h.orig 2022-04-19 19:10:27 UTC ++++ bsd-user/host/x86_64/host-signal.h +@@ -9,6 +9,9 @@ + #ifndef X86_64_HOST_SIGNAL_H + #define X86_64_HOST_SIGNAL_H + ++#if defined(__FreeBSD__) ++#include ++#endif + #include + #include + #include diff --git a/emulators/qemu70/files/patch-meson.build b/emulators/qemu70/files/patch-meson.build new file mode 100644 index 000000000000..e701a096e957 --- /dev/null +++ b/emulators/qemu70/files/patch-meson.build @@ -0,0 +1,20 @@ +--- meson.build.orig 2022-04-19 19:10:27 UTC ++++ meson.build +@@ -2505,14 +2505,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/qemu70/files/patch-util_meson.build b/emulators/qemu70/files/patch-util_meson.build new file mode 100644 index 000000000000..590b1f5a0592 --- /dev/null +++ b/emulators/qemu70/files/patch-util_meson.build @@ -0,0 +1,14 @@ +--- util/meson.build.orig 2022-04-23 11:59:28 UTC ++++ util/meson.build +@@ -87,10 +87,6 @@ if have_block + util_ss.add(files('readline.c')) + util_ss.add(files('throttle.c')) + util_ss.add(files('timed-average.c')) +- if config_host_data.get('CONFIG_INOTIFY1') +- util_ss.add(files('filemonitor-inotify.c')) +- else +- util_ss.add(files('filemonitor-stub.c')) +- endif ++ util_ss.add(files('filemonitor-stub.c')) + util_ss.add(when: 'CONFIG_LINUX', if_true: files('vfio-helpers.c')) + endif diff --git a/emulators/qemu70/files/qemu-ifdown.sample b/emulators/qemu70/files/qemu-ifdown.sample new file mode 100644 index 000000000000..89d9a9bff436 --- /dev/null +++ b/emulators/qemu70/files/qemu-ifdown.sample @@ -0,0 +1,2 @@ +#!/bin/sh +exec true diff --git a/emulators/qemu70/files/qemu-ifup.sample b/emulators/qemu70/files/qemu-ifup.sample new file mode 100644 index 000000000000..89d9a9bff436 --- /dev/null +++ b/emulators/qemu70/files/qemu-ifup.sample @@ -0,0 +1,2 @@ +#!/bin/sh +exec true diff --git a/emulators/qemu70/pkg-descr b/emulators/qemu70/pkg-descr new file mode 100644 index 000000000000..592b7660dd49 --- /dev/null +++ b/emulators/qemu70/pkg-descr @@ -0,0 +1,14 @@ +QEMU is a FAST! processor emulator using dynamic translation to achieve +good emulation speed. +QEMU has two operating modes: + + * Full system emulation. In this mode, QEMU emulates a full system +(for example a PC), including a processor and various peripherials. +It can be used to launch different Operating Systems without rebooting +the PC or to debug system code. + * User mode emulation (Linux host only). In this mode, QEMU can launch +Linux processes compiled for one CPU on another CPU. It can be used to +launch the Wine Windows API emulator or to ease cross-compilation and +cross-debugging. + +As QEMU requires no host kernel patches to run, it is very safe and easy to use. diff --git a/emulators/qemu70/pkg-descr-tools b/emulators/qemu70/pkg-descr-tools new file mode 100644 index 000000000000..f1914609c286 --- /dev/null +++ b/emulators/qemu70/pkg-descr-tools @@ -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 diff --git a/emulators/qemu70/pkg-message b/emulators/qemu70/pkg-message new file mode 100644 index 000000000000..54a7ebc05d6d --- /dev/null +++ b/emulators/qemu70/pkg-message @@ -0,0 +1,103 @@ +[ +{ 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 +} +] diff --git a/emulators/qemu70/pkg-plist b/emulators/qemu70/pkg-plist new file mode 100644 index 000000000000..00d0673675ba --- /dev/null +++ b/emulators/qemu70/pkg-plist @@ -0,0 +1,179 @@ +%%CURL%%bin/elf2dmp +%%BSDUSER%%%%NO_X86_TARGETS%%bin/qemu-arm +bin/qemu-edid +%%BSDUSER%%bin/qemu-i386 +bin/qemu-img +bin/qemu-io +%%GTK3%%bin/qemu-keymap +bin/qemu-nbd +bin/qemu-storage-daemon +%%NO_X86_TARGETS%%bin/qemu-system-aarch64 +%%NO_X86_TARGETS%%bin/qemu-system-alpha +%%NO_X86_TARGETS%%bin/qemu-system-avr +%%NO_X86_TARGETS%%bin/qemu-system-arm +%%NO_X86_TARGETS%%bin/qemu-system-cris +%%NO_X86_TARGETS%%bin/qemu-system-hppa +bin/qemu-system-i386 +%%NO_X86_TARGETS%%bin/qemu-system-m68k +%%NO_X86_TARGETS%%bin/qemu-system-microblaze +%%NO_X86_TARGETS%%bin/qemu-system-microblazeel +%%NO_X86_TARGETS%%bin/qemu-system-mips +%%NO_X86_TARGETS%%bin/qemu-system-mips64 +%%NO_X86_TARGETS%%bin/qemu-system-mips64el +%%NO_X86_TARGETS%%bin/qemu-system-mipsel +%%NO_X86_TARGETS%%bin/qemu-system-nios2 +%%NO_X86_TARGETS%%bin/qemu-system-or1k +%%NO_X86_TARGETS%%bin/qemu-system-ppc +%%NO_X86_TARGETS%%bin/qemu-system-ppc64 +%%NO_X86_TARGETS%%bin/qemu-system-riscv32 +%%NO_X86_TARGETS%%bin/qemu-system-riscv64 +%%NO_X86_TARGETS%%bin/qemu-system-rx +%%NO_X86_TARGETS%%bin/qemu-system-s390x +%%NO_X86_TARGETS%%bin/qemu-system-sh4 +%%NO_X86_TARGETS%%bin/qemu-system-sh4eb +%%NO_X86_TARGETS%%bin/qemu-system-sparc +%%NO_X86_TARGETS%%bin/qemu-system-sparc64 +%%NO_X86_TARGETS%%bin/qemu-system-tricore +bin/qemu-system-x86_64 +%%NO_X86_TARGETS%%bin/qemu-system-xtensa +%%NO_X86_TARGETS%%bin/qemu-system-xtensaeb +%%BSDUSER%%bin/qemu-x86_64 +include/qemu-plugin.h +%%PORTDOCS%%man/man1/qemu.1.gz +%%PORTDOCS%%man/man1/qemu-img.1.gz +%%PORTDOCS%%man/man7/qemu-block-drivers.7.gz +%%PORTDOCS%%man/man7/qemu-cpu-models.7.gz +%%PORTDOCS%%man/man8/qemu-nbd.8.gz +%%PORTDOCS%%man/man8/qemu-pr-helper.8.gz +%%PORTDOCS%%man/man7/qemu-qmp-ref.7.gz +%%PORTDOCS%%man/man1/qemu-storage-daemon.1.gz +%%PORTDOCS%%man/man7/qemu-storage-daemon-qmp-ref.7.gz +@sample etc/qemu-ifup.sample +@sample etc/qemu-ifdown.sample +%%DATADIR%%/QEMU,tcx.bin +%%DATADIR%%/QEMU,cgthree.bin +%%DATADIR%%/bios-256k.bin +%%DATADIR%%/bios-microvm.bin +%%DATADIR%%/bios.bin +%%DATADIR%%/canyonlands.dtb +%%DATADIR%%/edk2-aarch64-code.fd +%%DATADIR%%/edk2-arm-code.fd +%%DATADIR%%/edk2-arm-vars.fd +%%DATADIR%%/edk2-i386-code.fd +%%DATADIR%%/edk2-i386-secure-code.fd +%%DATADIR%%/edk2-i386-vars.fd +%%DATADIR%%/edk2-licenses.txt +%%DATADIR%%/edk2-x86_64-code.fd +%%DATADIR%%/edk2-x86_64-secure-code.fd +%%DATADIR%%/efi-e1000.rom +%%DATADIR%%/efi-e1000e.rom +%%DATADIR%%/efi-eepro100.rom +%%DATADIR%%/efi-ne2k_pci.rom +%%DATADIR%%/efi-pcnet.rom +%%DATADIR%%/efi-rtl8139.rom +%%DATADIR%%/efi-virtio.rom +%%DATADIR%%/efi-vmxnet3.rom +%%DATADIR%%/firmware/50-edk2-i386-secure.json +%%DATADIR%%/firmware/50-edk2-x86_64-secure.json +%%DATADIR%%/firmware/60-edk2-aarch64.json +%%DATADIR%%/firmware/60-edk2-arm.json +%%DATADIR%%/firmware/60-edk2-i386.json +%%DATADIR%%/firmware/60-edk2-x86_64.json +%%DATADIR%%/hppa-firmware.img +%%DATADIR%%/keymaps/ar +%%DATADIR%%/keymaps/bepo +%%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/nl +%%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 +%%DATADIR%%/linuxboot.bin +%%LINUXBOOT_DMA%%%%DATADIR%%/linuxboot_dma.bin +%%DATADIR%%/multiboot.bin +%%DATADIR%%/multiboot_dma.bin +%%DATADIR%%/npcm7xx_bootrom.bin +%%DATADIR%%/openbios-ppc +%%DATADIR%%/openbios-sparc32 +%%DATADIR%%/openbios-sparc64 +%%DATADIR%%/opensbi-riscv32-generic-fw_dynamic.bin +%%DATADIR%%/opensbi-riscv64-generic-fw_dynamic.bin +%%DATADIR%%/palcode-clipper +%%DATADIR%%/petalogix-ml605.dtb +%%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%%/qboot.rom +%%DATADIR%%/qemu-nsis.bmp +%%DATADIR%%/qemu_vga.ndrv +%%DATADIR%%/s390-ccw.img +%%DATADIR%%/s390-netboot.img +%%DATADIR%%/slof.bin +%%DATADIR%%/u-boot-sam460-20100605.bin +%%DATADIR%%/vgabios.bin +%%DATADIR%%/vgabios-ati.bin +%%DATADIR%%/vgabios-cirrus.bin +%%DATADIR%%/vgabios-qxl.bin +%%DATADIR%%/vgabios-stdvga.bin +%%DATADIR%%/vgabios-virtio.bin +%%DATADIR%%/vgabios-vmware.bin +%%DATADIR%%/sgabios.bin +%%DATADIR%%/skiboot.lid +%%DATADIR%%/trace-events-all +%%DATADIR%%/petalogix-s3adsp1800.dtb +%%DATADIR%%/bamboo.dtb +%%DATADIR%%/kvmvapic.bin +%%DATADIR%%/u-boot.e500 +%%DATADIR%%/pvh.bin +%%DATADIR%%/vgabios-bochs-display.bin +%%DATADIR%%/vgabios-ramfb.bin +%%DATADIR%%/vof-nvram.bin +%%DATADIR%%/vof.bin +share/icons/hicolor/128x128/apps/qemu.png +share/icons/hicolor/16x16/apps/qemu.png +share/icons/hicolor/24x24/apps/qemu.png +share/icons/hicolor/256x256/apps/qemu.png +share/icons/hicolor/32x32/apps/qemu.bmp +share/icons/hicolor/32x32/apps/qemu.png +share/icons/hicolor/48x48/apps/qemu.png +share/icons/hicolor/512x512/apps/qemu.png +share/icons/hicolor/64x64/apps/qemu.png +share/icons/hicolor/scalable/apps/qemu.svg +share/applications/qemu.desktop +%%GTK3%%share/locale/bg/LC_MESSAGES/qemu.mo +%%GTK3%%share/locale/de_DE/LC_MESSAGES/qemu.mo +%%GTK3%%share/locale/fr_FR/LC_MESSAGES/qemu.mo +%%GTK3%%share/locale/hu/LC_MESSAGES/qemu.mo +%%GTK3%%share/locale/it/LC_MESSAGES/qemu.mo +%%GTK3%%share/locale/sv/LC_MESSAGES/qemu.mo +%%GTK3%%share/locale/tr/LC_MESSAGES/qemu.mo +%%GTK3%%share/locale/zh_CN/LC_MESSAGES/qemu.mo diff --git a/emulators/qemu70/pkg-plist-tools b/emulators/qemu70/pkg-plist-tools new file mode 100644 index 000000000000..42b2a0ee3aeb --- /dev/null +++ b/emulators/qemu70/pkg-plist-tools @@ -0,0 +1,50 @@ +bin/qemu-edid +bin/qemu-img +bin/qemu-io +bin/qemu-nbd +bin/qemu-storage-daemon +include/qemu-plugin.h +%%PORTDOCS%%man/man1/qemu.1.gz +%%PORTDOCS%%man/man1/qemu-img.1.gz +%%PORTDOCS%%man/man7/qemu-block-drivers.7.gz +%%PORTDOCS%%man/man7/qemu-cpu-models.7.gz +%%PORTDOCS%%man/man8/qemu-nbd.8.gz +%%PORTDOCS%%man/man8/qemu-pr-helper.8.gz +%%PORTDOCS%%man/man7/qemu-qmp-ref.7.gz +%%PORTDOCS%%man/man1/qemu-storage-daemon.1.gz +%%PORTDOCS%%man/man7/qemu-storage-daemon-qmp-ref.7.gz +%%DATADIR%%/keymaps/ar +%%DATADIR%%/keymaps/bepo +%%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/nl +%%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 +%%DATADIR%%/trace-events-all