diff options
Diffstat (limited to 'meta/recipes-devtools/qemu')
-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" | ||