| #!/usr/bin/env python |
| # Copyright 2016 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Script to run Fuchsia in a variety of ways.""" |
| |
| |
| import argparse |
| import os.path |
| import paths |
| import subprocess |
| import sys |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser(description="Run Fuchsia.") |
| parser.add_argument("--arch", "-a", choices=["x86-64", "arm64"], |
| default="x86-64", help="architecture (default: x86-64)") |
| parser.add_argument("--debug", "-d", dest="debug", action="store_true", |
| default=True, help="use debug build") |
| parser.add_argument("--release", "-r", dest="debug", action="store_false", |
| help="use release build") |
| parser.add_argument("--graphical-console", "-g", dest="graphical", |
| action="store_true", default=False, |
| help="use graphical console") |
| parser.add_argument("--fuchsia-userspace", dest="fuchsia", |
| action="store_true", default=True, |
| help="use Fuchsia userspace") |
| parser.add_argument("--magenta-userspace", dest="fuchsia", |
| action="store_false", help="use only Magenta userspace") |
| parser.add_argument("--boot-server", dest="bootserver", action="store_true", |
| default=False, |
| help="run the bootserver instead of running via qemu") |
| parser.add_argument("--verbose", dest="verbose", action="store_true", |
| default=False, help="you like spew") |
| parser.add_argument("--dry-run", dest="dry_run", action="store_true", |
| default=False, help="just pretend to run stuff") |
| |
| args = parser.parse_args() |
| |
| fuchsia_build_dir = os.path.join(paths.FUCHSIA_ROOT, "out", |
| ("debug" if args.debug else "release") + |
| "-" + args.arch) |
| # TODO(vtl): Not sure what to use instead of "qemu" for booting on real |
| # ARM64 hardware (probably varies depending on hardware). |
| magenta_build_dir = os.path.join(paths.FUCHSIA_ROOT, "out", "build-magenta", |
| "build-magenta-%s-%s" % ("pc" if args.arch == "x86-64" else "qemu", args.arch)) |
| |
| boot_fs = (os.path.join(fuchsia_build_dir, "user.bootfs") if args.fuchsia |
| else None) |
| |
| if args.bootserver: |
| command = [os.path.join(paths.FUCHSIA_ROOT, "out", "build-magenta", |
| "tools", "bootserver")] |
| command += [os.path.join(magenta_build_dir, "magenta.bin")] |
| if boot_fs: |
| command += [boot_fs] |
| else: |
| command = [os.path.join(paths.MAGENTA_ROOT, "scripts", "run-magenta")] |
| command += ["-a", args.arch] |
| command += ["-o", magenta_build_dir] |
| if boot_fs: |
| command += ["-x", boot_fs] |
| if args.graphical: |
| command += ["-g"] |
| |
| if args.verbose or args.dry_run: |
| print "Running: " + " ".join(command) |
| |
| if args.dry_run: |
| return 0 |
| |
| return subprocess.call(command) |
| |
| |
| if __name__ == "__main__": |
| sys.exit(main()) |