| Index: mojo/public/tools/bindings/pylib/mojom/parse/parser_runner.py
|
| diff --git a/mojo/public/tools/bindings/pylib/mojom/parse/parser_runner.py b/mojo/public/tools/bindings/pylib/mojom/parse/parser_runner.py
|
| deleted file mode 100755
|
| index 0259da57403dd3f7ca48fb9f3c85b0ca999ce196..0000000000000000000000000000000000000000
|
| --- a/mojo/public/tools/bindings/pylib/mojom/parse/parser_runner.py
|
| +++ /dev/null
|
| @@ -1,127 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright 2015 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""This script drives the execution of the Mojom parser."""
|
| -
|
| -import os
|
| -import platform
|
| -import subprocess
|
| -import sys
|
| -
|
| -
|
| -# We assume this script is located in the Mojo SDK in
|
| -# tools/bindings/pylib/mojom/parse.
|
| -THIS_DIR = os.path.abspath(os.path.dirname(__file__))
|
| -SDK_ROOT = os.path.abspath(os.path.join(THIS_DIR, os.pardir, os.pardir,
|
| - os.pardir, os.pardir, os.pardir))
|
| -PYTHON_SDK_DIR = os.path.abspath(os.path.join(SDK_ROOT, "python"))
|
| -sys.path.insert(0, PYTHON_SDK_DIR)
|
| -# In order to use mojom_files_mojom we need to make sure the dummy mojo_system
|
| -# can be found on the python path.
|
| -sys.path.insert(0, os.path.join(PYTHON_SDK_DIR, "dummy_mojo_system"))
|
| -
|
| -from mojom.generate.generated import mojom_files_mojom
|
| -from mojom.generate.generated import mojom_types_mojom
|
| -from mojo_bindings import serialization
|
| -
|
| -def RunParser(sdk_root, file_names, import_directories=None,
|
| - meta_data_only=False):
|
| - """Runs the mojom parser. Only 64-bit Linux and Mac is supported.
|
| -
|
| - Args:
|
| - sdk_root: {str} Absolute path to the root of the Mojo SDK. The parser
|
| - binary is expected to be found in
|
| - <sdk_root>/tools/bindings/mojom_tool/bin/<platform>
|
| -
|
| - file_names {list of str} Paths to mojom files to be parsed. May be either
|
| - absolute or relative to the current working directory.
|
| -
|
| - import_directories: {list of str} Optional specification of import
|
| - directories where mojom imports should be searched. The elements of the
|
| - list should be absolute paths or paths relative to the current working
|
| - directory.
|
| -
|
| - meta_data_only: {bool} If True then the flag -meta-data-only
|
| - will be passed to the parser.
|
| -
|
| - Returns:
|
| - {str} The serialized mojom_files.MojomFileGraph returned by mojom parser,
|
| - or None if the mojom parser returned a non-zero error code.
|
| - """
|
| - system_dirs = {
|
| - ("Linux", "64bit"): "linux64",
|
| - ("Darwin", "64bit"): "mac64",
|
| - }
|
| - system = (platform.system(), platform.architecture()[0])
|
| - if system not in system_dirs:
|
| - raise Exception("The mojom parser only supports Linux or Mac 64 bits.")
|
| -
|
| - mojom_tool = os.path.join(sdk_root, "tools", "bindings", "mojom_tool",
|
| - "bin", system_dirs[system], "mojom")
|
| -
|
| - if not os.path.exists(mojom_tool):
|
| - raise Exception(
|
| - "The mojom parser could not be found at %s. "
|
| - "You may need to run gclient sync."
|
| - % mojom_tool)
|
| -
|
| - cmd = [mojom_tool, "parse"]
|
| - if import_directories:
|
| - cmd.extend(["-I", ",".join(import_directories)])
|
| - if meta_data_only:
|
| - cmd.extend(["-meta-data-only"])
|
| -
|
| - cmd.extend(file_names)
|
| -
|
| - try:
|
| - return subprocess.check_output(cmd)
|
| - except subprocess.CalledProcessError:
|
| - return None
|
| -
|
| -
|
| -def DeserializeMojomFileGraph(serialized_bytes):
|
| - """Deserializes a mojom_files.MojomFileGraph.
|
| -
|
| - Args:
|
| - serialized_bytes: {str} The serialized mojom_files.MojomFileGraph returned
|
| - by mojom parser
|
| - Returns:
|
| - {mojom_files.MojomFileGraph} The deserialized MojomFileGraph.
|
| - """
|
| - data = bytearray(serialized_bytes)
|
| - context = serialization.RootDeserializationContext(data, [])
|
| - return mojom_files_mojom.MojomFileGraph.Deserialize(context)
|
| -
|
| -def ParseToMojomFileGraph(sdk_root, file_names, import_directories=None,
|
| - meta_data_only=False):
|
| - """Runs the mojom parser and deserializes the result. Only 64-bit Linux and
|
| - Mac is supported.
|
| -
|
| - Args:
|
| - sdk_root: {str} Absolute path to the root of the Mojo SDK. The parser
|
| - binary is expected to be found in
|
| - <sdk_root>/tools/bindings/mojom_tool/bin/<platform>
|
| -
|
| - file_names {list of str} Paths to mojom files to be parsed. May be either
|
| - absolute or relative to the current working directory.
|
| -
|
| - import_directories: {list of str} Optional specification of import
|
| - directories where mojom imports should be searched. The elements of the
|
| - list should be absolute paths or paths relative to the current working
|
| - directory.
|
| -
|
| - meta_data_only: {bool} If True then the flag -meta-data-only
|
| - will be passed to the parser.
|
| -
|
| - Returns:
|
| - {mojom_files.MojomFileGraph} The deserialized MojomFileGraph obtained by
|
| - deserializing the bytes returned by mojom parser, or None if the mojom
|
| - parser returned a non-zero error code.
|
| - """
|
| - serialized_bytes = RunParser(sdk_root, file_names, import_directories,
|
| - meta_data_only)
|
| - if serialized_bytes is None:
|
| - return None
|
| - return DeserializeMojomFileGraph(serialized_bytes)
|
|
|