Gentoo Archives: gentoo-commits

From: Brian Harring <ferringb@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/kvm-tools:master commit in: app-emulation/qemu-init-scripts/files/
Date: Fri, 24 Aug 2012 04:19:02
Message-Id: 1334447278.1798441957485d5243aa4968ef183d28461b5093.ferringb@gentoo
1 commit: 1798441957485d5243aa4968ef183d28461b5093
2 Author: Brian Harring <ferringb <AT> chromium <DOT> org>
3 AuthorDate: Sat Apr 14 22:54:32 2012 +0000
4 Commit: Brian Harring <ferringb <AT> gentoo <DOT> org>
5 CommitDate: Sat Apr 14 23:47:58 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/kvm-tools.git;a=commit;h=17984419
7
8 Make foreground controllable.
9
10 This deprecates the VNC option in favour of `FOREGROUND=vnc=:1`; in the
11 process it makes turning off the display (none mode), and sdl mode
12 possible.
13
14 For sdl mode, it tries to rely on DISPLAY and XAUTHORITY to work. In
15 my local usage, this *does* work, but wouldn't surprise me if there are
16 other configurations where this doesn't (patches welcome).
17
18 ---
19 .../qemu-init-scripts/files/qemu-init-script | 68 ++++++++++++++++++--
20 1 files changed, 62 insertions(+), 6 deletions(-)
21
22 diff --git a/app-emulation/qemu-init-scripts/files/qemu-init-script b/app-emulation/qemu-init-scripts/files/qemu-init-script
23 index a42e866..9880a7b 100644
24 --- a/app-emulation/qemu-init-scripts/files/qemu-init-script
25 +++ b/app-emulation/qemu-init-scripts/files/qemu-init-script
26 @@ -16,6 +16,8 @@ PIDFILE=/var/run/vm/${SVCNAME}.pid
27 MONITOR=/var/run/vm/${SVCNAME}.monitor
28 QTAP_FILE=/var/run/vm/${SVCNAME}.qtap
29
30 +ENABLE_SDL=
31 +
32 discern_vm_binary() {
33 case "$VMTYPE" in
34 kvm)
35 @@ -32,6 +34,35 @@ discern_vm_binary() {
36 return 0
37 }
38
39 +discern_foreground() {
40 + if [ -n "$VNC" ]; then
41 + ewarn "VNC option is going away; set FOREGROUND=vnc${VNC} instead"
42 + FOREGROUND="vnc=${VNC}"
43 + fi
44 + case "${FOREGROUND:-none}" in
45 + vnc*)
46 + VNC=${VNC#*=}
47 + if [ -z "$VNC" ]; then
48 + eerror "FOREGROUND vnc is incorrectly set; must specify an address (:1 for example)"
49 + return 1
50 + fi
51 + ;;
52 + sdl*)
53 + ENABLE_SDL=${FOREGROUND#*=}
54 + if [ -z "${ENABLE_SDL}" ]; then
55 + eerror "FOREGROUND sdl is incorrectly set; must specify a DISPLAY address"
56 + return 1
57 + fi
58 + ;;
59 + none)
60 + ;;
61 + *)
62 + eerror "Unknown FOREGROUND setting: $FOREGROUND"
63 + return 1
64 + ;;
65 + esac
66 + return 0
67 +}
68
69 DROP_USER=${DROP_USER:-nobody}
70 MEMORY=${MEMORY:-512M}
71 @@ -73,8 +104,10 @@ sanity_check() {
72 eerror "couldn't find \$DISKIMAGE '$DISKIMAGE'"
73 return 1;
74 fi
75 - discern_vm_binary
76 + discern_vm_binary || return 1
77 NIC_TYPE=${NIC_TYPE:-nat}
78 +
79 + discern_foreground || return 1
80 }
81
82 start_pre() {
83 @@ -107,17 +140,40 @@ start() {
84 NIC_COMMAND[${#NIC_COMMAND[@]}]=user
85 fi
86
87 - ebegin "Starting ${VM_BINARY##*/} for ${VMNAME} at VNC port${VNC}"
88 - start-stop-daemon --start "${VM_BINARY}" \
89 + local ss_args=( )
90 + local vm_args=( -daemonize )
91 +
92 + if [ -n "${ENABLE_SDL}" ]; then
93 + ss_args[${#ss_args[@]}]=--env
94 + ss_args[${#ss_args[@]}]="DISPLAY=${ENABLE_SDL}"
95 + ss_args[${#ss_args[@]}]=--env
96 + local user_home=`getent passwd ${DROP_USER:-root} | cut -d: -f6`
97 + ss_args[${#ss_args[@]}]="XAUTHORITY=$user_home/.Xauthority"
98 + vm_args[${#vm_args[@]}]=-display
99 + vm_args[${#vm_args[@]}]=sdl
100 + elif [ -n "$VNC" ]; then
101 + vm_args[${#vm_args[@]}]=-display
102 + vm_args[${#vm_args[@]}]=vnc
103 + vm_args[${#vm_args[@]}]="${VNC}"
104 + else
105 + vm_args[${#vm_args[@]}]=-display
106 + vm_args[${#vm_args[@]}]=none
107 + fi
108 +
109 + ebegin "Starting ${VM_BINARY##*/} for ${VMNAME} ${FOREGROUND:+at ${FOREGROUND}}"
110 + start-stop-daemon \
111 + --start "${VM_BINARY}" \
112 --pidfile ${PIDFILE} \
113 - -- -daemonize -pidfile ${PIDFILE} -monitor unix:${MONITOR},server,nowait \
114 + "${ss_args[@]}" \
115 + -- \
116 + "${vm_args[@]}" \
117 + -pidfile ${PIDFILE} -monitor unix:${MONITOR},server,nowait \
118 -runas ${DROP_USER} -name ${VMNAME} \
119 -drive file="${DISKIMAGE//,/,,}",if=${DRIVE_MODEL:-virtio},cache=${DRIVE_CACHE:-none} \
120 "${NIC_COMMAND[@]}" \
121 ${DISABLE_KVM:---enable-kvm} \
122 - ${MEMORY:+-m ${MEMORY}} ${SMP:+-smp ${SMP}} ${VNC:+-vnc ${VNC}} ${OTHER_ARGS}
123 + ${MEMORY:+-m ${MEMORY}} ${SMP:+-smp ${SMP}} ${OTHER_ARGS}
124 ret=$?
125 -
126 if [ "0" != "${ret}" -a -n "${QTAP}" ]; then
127 qtap-manipulate destroy ${QTAP}
128 fi