summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/config/fuchsia/build_cmx_from_fragment.py
blob: ac7e34988d0231431833bf9f72f9ec6cc28d0079 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Copyright 2020 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.
"""Creates a complete CMX (v1) component manifest, from a program name and
   manifest fragment file."""

import argparse
import json
import sys


def BuildCmxFromFragment(output_file, fragment_file, program_binary):
  """Reads a CMX fragment specifying e.g. features & sandbox, and a program
     binary's filename, and writes out the full CMX.

     output_file: Build-relative filename at which to write the full CMX.
     fragment_file: Build-relative filename of the CMX fragment to read from.
     program_binary: Package-relative filename of the program binary.
  """

  with open(output_file, 'w') as component_manifest_file:
    component_manifest = json.load(open(fragment_file, 'r'))
    component_manifest.update({
        'program': {
            'binary': program_binary
        },
    })
    json.dump(component_manifest, component_manifest_file)


def main():
  parser = argparse.ArgumentParser()
  parser.add_argument(
      '--cmx-fragment',
      required=True,
      help='Path to the CMX fragment to read from')
  parser.add_argument(
      '--cmx', required=True, help='Path to write the complete CMX file to')
  parser.add_argument(
      '--program',
      required=True,
      help='Package-relative path to the program binary')
  args = parser.parse_args()

  return BuildCmxFromFragment(args.cmx, args.cmx_fragment, args.program)


if __name__ == '__main__':
  sys.exit(main())