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())
|