diff options
| -rwxr-xr-x | scripts/runqemu | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/scripts/runqemu b/scripts/runqemu index 1525081ad5..1d63281382 100755 --- a/scripts/runqemu +++ b/scripts/runqemu | |||
| @@ -210,6 +210,7 @@ class BaseConfig(object): | |||
| 210 | self.mac_tap = "52:54:00:12:34:" | 210 | self.mac_tap = "52:54:00:12:34:" |
| 211 | self.mac_slirp = "52:54:00:12:35:" | 211 | self.mac_slirp = "52:54:00:12:35:" |
| 212 | # pid of the actual qemu process | 212 | # pid of the actual qemu process |
| 213 | self.qemu_environ = os.environ.copy() | ||
| 213 | self.qemupid = None | 214 | self.qemupid = None |
| 214 | # avoid cleanup twice | 215 | # avoid cleanup twice |
| 215 | self.cleaned = False | 216 | self.cleaned = False |
| @@ -449,18 +450,19 @@ class BaseConfig(object): | |||
| 449 | # As runqemu can be run within bitbake (when using testimage, for example), | 450 | # As runqemu can be run within bitbake (when using testimage, for example), |
| 450 | # we need to ensure that we run host pkg-config, and that it does not | 451 | # we need to ensure that we run host pkg-config, and that it does not |
| 451 | # get mis-directed to native build paths set by bitbake. | 452 | # get mis-directed to native build paths set by bitbake. |
| 453 | env = os.environ.copy() | ||
| 452 | try: | 454 | try: |
| 453 | del os.environ['PKG_CONFIG_PATH'] | 455 | del env['PKG_CONFIG_PATH'] |
| 454 | del os.environ['PKG_CONFIG_DIR'] | 456 | del env['PKG_CONFIG_DIR'] |
| 455 | del os.environ['PKG_CONFIG_LIBDIR'] | 457 | del env['PKG_CONFIG_LIBDIR'] |
| 456 | del os.environ['PKG_CONFIG_SYSROOT_DIR'] | 458 | del env['PKG_CONFIG_SYSROOT_DIR'] |
| 457 | except KeyError: | 459 | except KeyError: |
| 458 | pass | 460 | pass |
| 459 | try: | 461 | try: |
| 460 | dripath = subprocess.check_output("PATH=/bin:/usr/bin:$PATH pkg-config --variable=dridriverdir dri", shell=True) | 462 | dripath = subprocess.check_output("PATH=/bin:/usr/bin:$PATH pkg-config --variable=dridriverdir dri", shell=True, env=env) |
| 461 | except subprocess.CalledProcessError as e: | 463 | except subprocess.CalledProcessError as e: |
| 462 | raise RunQemuError("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.") | 464 | raise RunQemuError("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.") |
| 463 | os.environ['LIBGL_DRIVERS_PATH'] = dripath.decode('utf-8').strip() | 465 | self.qemu_environ['LIBGL_DRIVERS_PATH'] = dripath.decode('utf-8').strip() |
| 464 | 466 | ||
| 465 | # This preloads uninative libc pieces and therefore ensures that RPATH/RUNPATH | 467 | # This preloads uninative libc pieces and therefore ensures that RPATH/RUNPATH |
| 466 | # in host mesa drivers doesn't trick uninative into loading host libc. | 468 | # in host mesa drivers doesn't trick uninative into loading host libc. |
| @@ -468,7 +470,7 @@ class BaseConfig(object): | |||
| 468 | uninative_path = os.path.dirname(self.get("UNINATIVE_LOADER")) | 470 | uninative_path = os.path.dirname(self.get("UNINATIVE_LOADER")) |
| 469 | if os.path.exists(uninative_path): | 471 | if os.path.exists(uninative_path): |
| 470 | preload_paths = [os.path.join(uninative_path, i) for i in preload_items] | 472 | preload_paths = [os.path.join(uninative_path, i) for i in preload_items] |
| 471 | os.environ['LD_PRELOAD'] = " ".join(preload_paths) | 473 | self.qemu_environ['LD_PRELOAD'] = " ".join(preload_paths) |
| 472 | 474 | ||
| 473 | def check_args(self): | 475 | def check_args(self): |
| 474 | for debug in ("-d", "--debug"): | 476 | for debug in ("-d", "--debug"): |
| @@ -482,8 +484,8 @@ class BaseConfig(object): | |||
| 482 | sys.argv.remove(quiet) | 484 | sys.argv.remove(quiet) |
| 483 | 485 | ||
| 484 | if 'gl' not in sys.argv[1:] and 'gl-es' not in sys.argv[1:]: | 486 | if 'gl' not in sys.argv[1:] and 'gl-es' not in sys.argv[1:]: |
| 485 | os.environ['SDL_RENDER_DRIVER'] = 'software' | 487 | self.qemu_environ['SDL_RENDER_DRIVER'] = 'software' |
| 486 | os.environ['SDL_FRAMEBUFFER_ACCELERATION'] = 'false' | 488 | self.qemu_environ['SDL_FRAMEBUFFER_ACCELERATION'] = 'false' |
| 487 | 489 | ||
| 488 | unknown_arg = "" | 490 | unknown_arg = "" |
| 489 | for arg in sys.argv[1:]: | 491 | for arg in sys.argv[1:]: |
| @@ -1369,7 +1371,7 @@ class BaseConfig(object): | |||
| 1369 | # need our font setup and show-cusor below so we need to see what qemu --help says | 1371 | # need our font setup and show-cusor below so we need to see what qemu --help says |
| 1370 | # is supported so we can pass our correct config in. | 1372 | # is supported so we can pass our correct config in. |
| 1371 | if not self.nographic and not self.sdl and not self.gtk and not self.publicvnc and not self.egl_headless == True: | 1373 | if not self.nographic and not self.sdl and not self.gtk and not self.publicvnc and not self.egl_headless == True: |
| 1372 | output = subprocess.check_output([self.qemu_bin, "--help"], universal_newlines=True) | 1374 | output = subprocess.check_output([self.qemu_bin, "--help"], universal_newlines=True, env=self.qemu_environ) |
| 1373 | if "-display gtk" in output: | 1375 | if "-display gtk" in output: |
| 1374 | self.gtk = True | 1376 | self.gtk = True |
| 1375 | elif "-display sdl" in output: | 1377 | elif "-display sdl" in output: |
| @@ -1393,7 +1395,7 @@ class BaseConfig(object): | |||
| 1393 | if self.sdl == True: | 1395 | if self.sdl == True: |
| 1394 | self.qemu_opt += 'sdl,' | 1396 | self.qemu_opt += 'sdl,' |
| 1395 | elif self.gtk == True: | 1397 | elif self.gtk == True: |
| 1396 | os.environ['FONTCONFIG_PATH'] = '/etc/fonts' | 1398 | self.qemu_environ['FONTCONFIG_PATH'] = '/etc/fonts' |
| 1397 | self.qemu_opt += 'gtk,' | 1399 | self.qemu_opt += 'gtk,' |
| 1398 | 1400 | ||
| 1399 | if self.gl == True: | 1401 | if self.gl == True: |
| @@ -1509,7 +1511,7 @@ class BaseConfig(object): | |||
| 1509 | if len(self.portlocks): | 1511 | if len(self.portlocks): |
| 1510 | for descriptor in self.portlocks.values(): | 1512 | for descriptor in self.portlocks.values(): |
| 1511 | pass_fds.append(descriptor.fileno()) | 1513 | pass_fds.append(descriptor.fileno()) |
| 1512 | process = subprocess.Popen(cmds, stderr=subprocess.PIPE, pass_fds=pass_fds) | 1514 | process = subprocess.Popen(cmds, stderr=subprocess.PIPE, pass_fds=pass_fds, env=self.qemu_environ) |
| 1513 | self.qemupid = process.pid | 1515 | self.qemupid = process.pid |
| 1514 | retcode = process.wait() | 1516 | retcode = process.wait() |
| 1515 | if retcode: | 1517 | if retcode: |
