diff options
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu.inc | 35 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu/qemu-guest-agent.init | 75 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu/qemu-guest-agent.udev | 2 |
3 files changed, 111 insertions, 1 deletions
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc index 1e768b560d..b41055fe5d 100644 --- a/meta/recipes-devtools/qemu/qemu.inc +++ b/meta/recipes-devtools/qemu/qemu.inc | |||
| @@ -9,7 +9,7 @@ LICENSE = "GPL-2.0-only & LGPL-2.1-only" | |||
| 9 | RDEPENDS:${PN}-ptest = "bash" | 9 | RDEPENDS:${PN}-ptest = "bash" |
| 10 | 10 | ||
| 11 | require qemu-targets.inc | 11 | require qemu-targets.inc |
| 12 | inherit pkgconfig ptest | 12 | inherit pkgconfig ptest update-rc.d systemd |
| 13 | 13 | ||
| 14 | LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \ | 14 | LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \ |
| 15 | file://COPYING.LIB;endline=24;md5=8c5efda6cf1e1b03dcfd0e6c0d271c7f" | 15 | file://COPYING.LIB;endline=24;md5=8c5efda6cf1e1b03dcfd0e6c0d271c7f" |
| @@ -32,6 +32,8 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ | |||
| 32 | file://0001-configure-Fix-check-tcg-not-executing-any-tests.patch \ | 32 | file://0001-configure-Fix-check-tcg-not-executing-any-tests.patch \ |
| 33 | file://0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch \ | 33 | file://0001-Revert-linux-user-add-more-compat-ioctl-definitions.patch \ |
| 34 | file://0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch \ | 34 | file://0002-Revert-linux-user-fix-compat-with-glibc-2.36-sys-mou.patch \ |
| 35 | file://qemu-guest-agent.init \ | ||
| 36 | file://qemu-guest-agent.udev \ | ||
| 35 | " | 37 | " |
| 36 | UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" | 38 | UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar" |
| 37 | 39 | ||
| @@ -132,6 +134,20 @@ do_configure[cleandirs] += "${B}" | |||
| 132 | do_install () { | 134 | do_install () { |
| 133 | export STRIP="" | 135 | export STRIP="" |
| 134 | oe_runmake 'DESTDIR=${D}' install | 136 | oe_runmake 'DESTDIR=${D}' install |
| 137 | |||
| 138 | # If we built the guest agent, also install startup/udev rules | ||
| 139 | if [ -e "${D}${bindir}/qemu-ga" ]; then | ||
| 140 | install -d ${D}${sysconfdir}/init.d/ | ||
| 141 | install -m 0755 ${WORKDIR}/qemu-guest-agent.init ${D}${sysconfdir}/init.d/qemu-guest-agent | ||
| 142 | sed -i 's:@bindir@:${bindir}:' ${D}${sysconfdir}/init.d/qemu-guest-agent | ||
| 143 | |||
| 144 | install -d ${D}${sysconfdir}/udev/rules.d/ | ||
| 145 | install -m 0644 ${WORKDIR}/qemu-guest-agent.udev ${D}${sysconfdir}/udev/rules.d/60-qemu-guest-agent.rules | ||
| 146 | |||
| 147 | install -d ${D}${systemd_unitdir}/system/ | ||
| 148 | install -m 0644 ${S}/contrib/systemd/qemu-guest-agent.service ${D}${systemd_unitdir}/system | ||
| 149 | sed -i -e 's,-/usr/bin/,-${bindir}/,g' ${D}${systemd_unitdir}/system/qemu-guest-agent.service | ||
| 150 | fi | ||
| 135 | } | 151 | } |
| 136 | 152 | ||
| 137 | # The following fragment will create a wrapper for qemu-mips user emulation | 153 | # The following fragment will create a wrapper for qemu-mips user emulation |
| @@ -210,3 +226,20 @@ PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack," | |||
| 210 | INSANE_SKIP:${PN} = "arch" | 226 | INSANE_SKIP:${PN} = "arch" |
| 211 | 227 | ||
| 212 | FILES:${PN} += "${datadir}/icons" | 228 | FILES:${PN} += "${datadir}/icons" |
| 229 | |||
| 230 | # Put the guest agent in a separate package | ||
| 231 | PACKAGES =+ "${PN}-guest-agent" | ||
| 232 | SUMMARY:${PN}-guest-agent = "QEMU guest agent" | ||
| 233 | FILES:${PN}-guest-agent += " \ | ||
| 234 | ${bindir}/qemu-ga \ | ||
| 235 | ${sysconfdir}/udev/rules.d/60-qemu-guest-agent.rules \ | ||
| 236 | ${sysconfdir}/init.d/qemu-guest-agent \ | ||
| 237 | ${systemd_unitdir}/system/qemu-guest-agent.service \ | ||
| 238 | " | ||
| 239 | |||
| 240 | INITSCRIPT_PACKAGES = "${PN}-guest-agent" | ||
| 241 | INITSCRIPT_NAME:${PN}-guest-agent = "qemu-guest-agent" | ||
| 242 | INITSCRIPT_PARAMS:${PN}-guest-agent = "defaults" | ||
| 243 | |||
| 244 | SYSTEMD_PACKAGES = "${PN}-guest-agent" | ||
| 245 | SYSTEMD_SERVICE:${PN}-guest-agent = "qemu-guest-agent.service" | ||
diff --git a/meta/recipes-devtools/qemu/qemu/qemu-guest-agent.init b/meta/recipes-devtools/qemu/qemu/qemu-guest-agent.init new file mode 100644 index 0000000000..5ebaaddeae --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu/qemu-guest-agent.init | |||
| @@ -0,0 +1,75 @@ | |||
| 1 | # SPDX-License-Identifier: GPL-2.0-only | ||
| 2 | # Initially written by: Michael Tokarev <mjt@tls.msk.ru> | ||
| 3 | # For QEMU Debian downstream package | ||
| 4 | |||
| 5 | set -e | ||
| 6 | |||
| 7 | . /etc/init.d/functions | ||
| 8 | |||
| 9 | PATH=/sbin:/usr/sbin:/bin:/usr/bin | ||
| 10 | DESC="QEMU Guest Agent" | ||
| 11 | NAME=qemu-ga | ||
| 12 | DAEMON=@bindir@/$NAME | ||
| 13 | PIDFILE=/var/run/$NAME.pid | ||
| 14 | |||
| 15 | # config | ||
| 16 | DAEMON_ARGS="" | ||
| 17 | # default transport | ||
| 18 | TRANSPORT=virtio-serial:/dev/virtio-ports/org.qemu.guest_agent.0 | ||
| 19 | NO_START=0 | ||
| 20 | |||
| 21 | test ! -r /etc/default/qemu-guest-agent || . /etc/default/qemu-guest-agent | ||
| 22 | test "$NO_START" = "0" || exit 0 | ||
| 23 | test -x "$DAEMON" || exit 0 | ||
| 24 | |||
| 25 | # | ||
| 26 | # Function that checks whenever system has necessary environment | ||
| 27 | # It also splits $TRANSPORT into $method and $path | ||
| 28 | # | ||
| 29 | do_check_transport() { | ||
| 30 | method=${TRANSPORT%%:*}; | ||
| 31 | path=${TRANSPORT#*:} | ||
| 32 | case "$method" in | ||
| 33 | virtio-serial | isa-serial) | ||
| 34 | if [ ! -e "$path" ]; then | ||
| 35 | echo "$NAME: transport endpoint not found, not starting" | ||
| 36 | return 1 | ||
| 37 | fi | ||
| 38 | ;; | ||
| 39 | esac | ||
| 40 | } | ||
| 41 | |||
| 42 | case "$1" in | ||
| 43 | start) | ||
| 44 | do_check_transport || exit 0 | ||
| 45 | echo -n "Starting $DESC: " | ||
| 46 | start-stop-daemon -S -p $PIDFILE -x "$DAEMON" -- \ | ||
| 47 | $DAEMON_ARGS -d -m "$method" -p "$path" | ||
| 48 | echo "$NAME." | ||
| 49 | ;; | ||
| 50 | stop) | ||
| 51 | echo -n "Stopping $DESC: " | ||
| 52 | start-stop-daemon -K -x "$DAEMON" -p $PIDFILE | ||
| 53 | echo "$NAME." | ||
| 54 | ;; | ||
| 55 | status) | ||
| 56 | status "$DAEMON" | ||
| 57 | exit $? | ||
| 58 | ;; | ||
| 59 | restart|force-reload) | ||
| 60 | do_check_transport || exit 0 | ||
| 61 | echo -n "Restarting $DESC: " | ||
| 62 | start-stop-daemon -K -x "$DAEMON" -p $PIDFILE | ||
| 63 | sleep 1 | ||
| 64 | start-stop-daemon -S -p $PIDFILE -x "$DAEMON" -- \ | ||
| 65 | $DAEMON_ARGS -d -m "$method" -p "$path" | ||
| 66 | echo "$NAME." | ||
| 67 | ;; | ||
| 68 | *) | ||
| 69 | N=/etc/init.d/$NAME | ||
| 70 | echo "Usage: $N {start|stop|status|restart|force-reload}" >&2 | ||
| 71 | exit 1 | ||
| 72 | ;; | ||
| 73 | esac | ||
| 74 | |||
| 75 | exit 0 | ||
diff --git a/meta/recipes-devtools/qemu/qemu/qemu-guest-agent.udev b/meta/recipes-devtools/qemu/qemu/qemu-guest-agent.udev new file mode 100644 index 0000000000..47097057e3 --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu/qemu-guest-agent.udev | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", \ | ||
| 2 | TAG+="systemd", ENV{SYSTEMD_WANTS}="qemu-guest-agent.service" | ||
