git: 564c4cb3d9bb - main - emulators/qemu: Add FLAVOR for the qemu guest agent
Date: Fri, 20 Jan 2023 19:27:56 UTC
The branch main has been updated by zi:
URL: https://cgit.FreeBSD.org/ports/commit/?id=564c4cb3d9bb0aa87d676103fa164ea9833b7897
commit 564c4cb3d9bb0aa87d676103fa164ea9833b7897
Author: Ryan Steinmetz <zi@FreeBSD.org>
AuthorDate: 2023-01-20 19:26:34 +0000
Commit: Ryan Steinmetz <zi@FreeBSD.org>
CommitDate: 2023-01-20 19:26:34 +0000
emulators/qemu: Add FLAVOR for the qemu guest agent
- Bump PORTREVISION
Approved by: maintainer (via IRC)
---
emulators/qemu/Makefile | 45 ++++++++++++++++++++------------
emulators/qemu/files/qemu-guest-agent.in | 31 ++++++++++++++++++++++
emulators/qemu/pkg-descr-ga | 11 ++++++++
emulators/qemu/pkg-plist-ga | 43 ++++++++++++++++++++++++++++++
4 files changed, 114 insertions(+), 16 deletions(-)
diff --git a/emulators/qemu/Makefile b/emulators/qemu/Makefile
index ab3651a9c86e..574efdcd571f 100644
--- a/emulators/qemu/Makefile
+++ b/emulators/qemu/Makefile
@@ -1,5 +1,6 @@
PORTNAME= qemu
PORTVERSION= 7.2.0
+PORTREVISION= 1
CATEGORIES= emulators
MASTER_SITES= https://download.qemu.org/
DIST_SUBDIR= qemu/${PORTVERSION}
@@ -10,47 +11,52 @@ WWW= https://www.qemu.org/
LICENSE= GPLv2
-.if ${FLAVOR:U} != tools
+.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent
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
+.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent
LIB_DEPENDS+= libfdt.so:sysutils/dtc \
libzstd.so:archivers/zstd
.endif
-.if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools)
+.if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent)
LIB_DEPENDS+= libepoxy.so:graphics/libepoxy
.endif
-FLAVORS= default nox11 tools
+FLAVORS= default nox11 tools guestagent
FLAVOR?= ${FLAVORS:[1]}
default_CONFLICTS_INSTALL= qemu-devel qemu-nox11 qemu-tools qemu-utils \
qemu6* qemu70*
nox11_PKGNAMESUFFIX= -nox11
-nox11_CONFLICTS_INSTALL= qemu qemu-devel qemu6* qemu70*
+nox11_CONFLICTS_INSTALL= qemu qemu-devel qemu6* qemu70* qemu-guest-agent
nox11_COMMENT= (without X11)
tools_PKGNAMESUFFIX= -tools
tools_COMMENT= (tools only)
tools_CONFLICTS_INSTALL= qemu qemu-devel qemu-nox11 qemu-utils qemu6* \
- qemu70*
+ qemu70* qemu-guest-agent
tools_DESCR= ${.CURDIR}/pkg-descr-tools
tools_PLIST= ${.CURDIR}/pkg-plist-tools
+guestagent_PKGNAMESUFFIX= -guest-agent
+guestagent_COMMENT= (guest agent)
+guestagent_DESCR= ${.CURDIR}/pkg-descr-ga
+guestagent_PLIST= ${.CURDIR}/pkg-plist-ga
+guestagent_CONFLICTS_INSTALL= qemu qemu-devel qemu-nox11 qemu-tools qemu-utils qemu6* \
+ qemu70* qemu-guest-agent
USES= cpe gmake gnome ninja perl5 pkgconfig python:build tar:xz
USE_GNOME= glib20
USE_PERL5= build
-.if ${FLAVOR:U} != tools
+.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent
USES+= iconv:wchar_t
.endif
-.if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools)
+.if (${FLAVOR:U} != nox11 && ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent)
USE_GNOME+= cairo
.endif
HAS_CONFIGURE= yes
CONFIGURE_ARGS+= --cc=${CC} \
- --disable-guest-agent \
--disable-kvm \
--disable-linux-aio \
--disable-linux-user \
@@ -62,11 +68,17 @@ CONFIGURE_ARGS+= --cc=${CC} \
--mandir=${PREFIX}/man \
--prefix=${PREFIX} \
--python=${PYTHON_CMD}
-.if ${FLAVOR:U} != tools
+.if ${FLAVOR:U} == guestagent
+USE_RC_SUBR= qemu-guest-agent
+CONFIGURE_ARGS+= --enable-guest-agent --disable-tools --disable-xkbcommon
+.else
+CONFIGURE_ARGS+= --disable-guest-agent
+.endif
+.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent
CONFIGURE_ARGS+= --enable-fdt=system \
--enable-netmap
.endif
-.if ${FLAVOR:U} == tools
+.if ${FLAVOR:U} == tools || ${FLAVOR:U} == guestagent
CONFIGURE_ARGS+= --disable-attr \
--disable-blobs \
--disable-brlapi \
@@ -77,7 +89,6 @@ CONFIGURE_ARGS+= --disable-attr \
--disable-fdt \
--disable-gcrypt \
--disable-glusterfs \
- --disable-guest-agent \
--disable-libnfs \
--disable-libusb \
--disable-lzo \
@@ -95,8 +106,10 @@ CONFIGURE_ARGS+= --disable-attr \
--disable-user \
--disable-vhost-net \
--disable-virtfs \
- --disable-vnc \
- --enable-tools
+ --disable-vnc
+.endif
+.if ${FLAVOR:U} == tools
+CONFIGURE_ARGS+= --enable-tools
.endif
CFLAGS:= ${CFLAGS:C/-fno-tree-vrp//}
@@ -116,7 +129,7 @@ OPTIONS_SINGLE_NCURSES= NCURSES_BASE NCURSES_DEFAULT NCURSES_PORT
.if ${FLAVOR:U} == nox11
OPTIONS_EXCLUDE:= GTK3 X11
.endif
-.if ${FLAVOR:U} == tools
+.if ${FLAVOR:U} == tools || ${FLAVOR:U} == guestagent
OPTIONS_EXCLUDE:= CAPSTONE CDROM_DMA CURL DEBUG GNUTLS GTK3 ISCSI \
JPEG NCURSES NCURSES_BASE NCURSES_DEFAULT \
NCURSES_PORT OPENGL PNG SAMBA SASL STATIC_LINK \
@@ -233,7 +246,7 @@ do-install:
.if !target(post-install)
post-install:
-.if ${FLAVOR:U} != tools
+.if ${FLAVOR:U} != tools && ${FLAVOR:U} != guestagent
${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample ${STAGEDIR}${PREFIX}/etc
${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample ${STAGEDIR}${PREFIX}/etc
.endif
diff --git a/emulators/qemu/files/qemu-guest-agent.in b/emulators/qemu/files/qemu-guest-agent.in
new file mode 100644
index 000000000000..158666dbbc31
--- /dev/null
+++ b/emulators/qemu/files/qemu-guest-agent.in
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# PROVIDE: qemu_guest_agent
+# REQUIRE: DAEMON
+# KEYWORD: nojail
+#
+
+#
+# Add the following lines to /etc/rc.conf to enable qemu-guest-agent:
+#
+#qemu_guest_agent_enable="YES"
+#
+# For detailed logging add flags -v and -l to /etc/rc.conf
+#
+#qemu_guest_agent_flags="-d -v -l /var/log/qemu-ga.log"
+
+. /etc/rc.subr
+
+name=qemu_guest_agent
+rcvar=qemu_guest_agent_enable
+
+load_rc_config $name
+
+qemu_guest_agent_flags=${qemu_guest_agent_flags-"-d"}
+qemu_guest_agent_enable=${qemu_guest_agent_enable:-"NO"}
+
+qemu_guest_agent_bin=/usr/local/bin/qemu-ga
+command=${qemu_guest_agent_bin}
+pidfile="/var/run/qemu-ga.pid"
+
+run_rc_command "$1"
diff --git a/emulators/qemu/pkg-descr-ga b/emulators/qemu/pkg-descr-ga
new file mode 100644
index 000000000000..c796dce46669
--- /dev/null
+++ b/emulators/qemu/pkg-descr-ga
@@ -0,0 +1,11 @@
+The QEMU Guest Agent is a daemon intended to be run within virtual machines.
+It allows the hypervisor host to perform various operations in the guest,
+such as:
+
+* get information from the guest
+* set the guest’s system time
+* read/write a file
+* sync and freeze the filesystems
+* suspend the guest
+* reconfigure guest local processors
+* set user’s password
diff --git a/emulators/qemu/pkg-plist-ga b/emulators/qemu/pkg-plist-ga
new file mode 100644
index 000000000000..fb23343352ea
--- /dev/null
+++ b/emulators/qemu/pkg-plist-ga
@@ -0,0 +1,43 @@
+bin/qemu-ga
+include/qemu-plugin.h
+man/man1/qemu.1.gz
+man/man7/qemu-block-drivers.7.gz
+man/man7/qemu-cpu-models.7.gz
+man/man7/qemu-ga-ref.7.gz
+man/man7/qemu-qmp-ref.7.gz
+man/man8/qemu-ga.8.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