Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(200)

Side by Side Diff: ppapi/tests/create_nonsfi_test_nmf.py

Issue 294593005: Introduce create_nonsfi_test_nmf.py to simplify nacl_test_data.gyp (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/ppapi_nacl_test_common.gypi ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Simple tool to generate NMF file by just reformatting given arguments.
7
8 This tool is similar to native_client_sdk/src/tools/create_nmf.py.
9 create_nmf.py handles most cases, with the exception of Non-SFI nexes.
10 create_nmf.py tries to auto-detect nexe and pexe types based on their contents,
11 but it does not work for Non-SFI nexes (which don't have a marker to
12 distinguish them from SFI nexes).
13
14 This script simply reformats the command line arguments into NMF JSON format.
15 """
16
17 import argparse
18 import collections
19 import json
20 import logging
21 import os
22
23 _FILES_KEY = 'files'
24 _PORTABLE_KEY = 'portable'
25 _PROGRAM_KEY = 'program'
26 _URL_KEY = 'url'
27 _X86_32_NONSFI_KEY = 'x86-32-nonsfi'
28
29
30 def ParseArgs():
31 parser = argparse.ArgumentParser()
32 parser.add_argument(
33 '--program', metavar='FILE', help='Main program nexe')
34 # To keep compatibility with create_nmf.py, we use -x and --extra-files
35 # as flags.
36 parser.add_argument(
37 '-x', '--extra-files', action='append', metavar='KEY:FILE', default=[],
38 help=('Add extra key:file tuple to the "files" '
39 'section of the .nmf'))
40 parser.add_argument(
41 '--output', metavar='FILE', help='Path to the output nmf file.')
42
43 return parser.parse_args()
44
45
46 def BuildNmfMap(root_path, program, extra_files):
47 """Build simple map representing nmf json."""
48 result = {
49 _PROGRAM_KEY: {
50 _X86_32_NONSFI_KEY: {
51 # The program path is relative to the root_path.
52 _URL_KEY: os.path.relpath(program, root_path)
53 }
54 }
55 }
56
57 if extra_files:
58 files = {}
59 for named_file in extra_files:
60 name, path = named_file.split(':', 1)
61 files[name] = {
62 _PORTABLE_KEY: {
63 # Note: use path as is, unlike program path.
64 _URL_KEY: path
65 }
66 }
67 if files:
68 result[_FILES_KEY] = files
69
70 return result
71
72
73 def OutputNmf(nmf_map, output_path):
74 """Writes the nmf to an output file at given path in JSON format."""
75 with open(output_path, 'w') as output:
76 json.dump(nmf_map, output, indent=2)
77
78
79 def main():
80 args = ParseArgs()
81 if not args.program:
82 logging.error('--program is not specified.')
83 sys.exit(1)
84 if not args.output:
85 logging.error('--output is not specified.')
86 sys.exit(1)
87
88 nmf_map = BuildNmfMap(os.path.dirname(args.output),
89 args.program, args.extra_files)
90 OutputNmf(nmf_map, args.output)
91
92
93 if __name__ == '__main__':
94 main()
OLDNEW
« no previous file with comments | « ppapi/ppapi_nacl_test_common.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698