OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 3 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
4 # for details. All rights reserved. Use of this source code is governed by a | 4 # for details. All rights reserved. Use of this source code is governed by a |
5 # BSD-style license that can be found in the LICENSE file. | 5 # BSD-style license that can be found in the LICENSE file. |
6 # | 6 # |
7 # A script which will be invoked from gyp to create an SDK. | 7 # A script which will be invoked from gyp to create an SDK. |
8 # | 8 # |
9 # Usage: create_sdk.py sdk_directory | 9 # Usage: create_sdk.py sdk_directory |
10 # | 10 # |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 # ......unittest/ | 48 # ......unittest/ |
49 # ......(more will come here) | 49 # ......(more will come here) |
50 # ....util/ | 50 # ....util/ |
51 # ......analyzer/ | 51 # ......analyzer/ |
52 # ........dart_analyzer.jar | 52 # ........dart_analyzer.jar |
53 # ........(third-party libraries for dart_analyzer) | 53 # ........(third-party libraries for dart_analyzer) |
54 # ......pub/ | 54 # ......pub/ |
55 # ......(more will come here) | 55 # ......(more will come here) |
56 | 56 |
57 | 57 |
58 | 58 import optparse |
59 import os | 59 import os |
60 import re | 60 import re |
61 import sys | 61 import sys |
62 import subprocess | 62 import subprocess |
63 import tempfile | 63 import tempfile |
64 import utils | 64 import utils |
65 | 65 |
66 HOST_OS = utils.GuessOS() | 66 HOST_OS = utils.GuessOS() |
67 | 67 |
68 # TODO(dgrove): Only import modules following Google style guide. | 68 # TODO(dgrove): Only import modules following Google style guide. |
69 from os.path import basename, dirname, join, realpath, exists, isdir | 69 from os.path import basename, dirname, join, realpath, exists, isdir |
70 | 70 |
71 # TODO(dgrove): Only import modules following Google style guide. | 71 # TODO(dgrove): Only import modules following Google style guide. |
72 from shutil import copyfile, copymode, copytree, ignore_patterns, rmtree, move | 72 from shutil import copyfile, copymode, copytree, ignore_patterns, rmtree, move |
73 | 73 |
| 74 |
| 75 def GetOptions(): |
| 76 options = optparse.OptionParser(usage='usage: %prog [options]') |
| 77 options.add_option("--sdk_output_dir", |
| 78 help='Where to output the sdk') |
| 79 options.add_option("--utils_snapshot_location", |
| 80 help='Location of the utils snapshot.') |
| 81 return options.parse_args() |
| 82 |
| 83 |
74 def ReplaceInFiles(paths, subs): | 84 def ReplaceInFiles(paths, subs): |
75 '''Reads a series of files, applies a series of substitutions to each, and | 85 '''Reads a series of files, applies a series of substitutions to each, and |
76 saves them back out. subs should by a list of (pattern, replace) tuples.''' | 86 saves them back out. subs should by a list of (pattern, replace) tuples.''' |
77 for path in paths: | 87 for path in paths: |
78 contents = open(path).read() | 88 contents = open(path).read() |
79 for pattern, replace in subs: | 89 for pattern, replace in subs: |
80 contents = re.sub(pattern, replace, contents) | 90 contents = re.sub(pattern, replace, contents) |
81 | 91 |
82 dest = open(path, 'w') | 92 dest = open(path, 'w') |
83 dest.write(contents) | 93 dest.write(contents) |
(...skipping 25 matching lines...) Expand all Loading... |
109 | 119 |
110 | 120 |
111 def CopySnapshots(snapshot, sdk_root): | 121 def CopySnapshots(snapshot, sdk_root): |
112 copyfile(snapshot, join(sdk_root, 'bin', 'snapshots', basename(snapshot))) | 122 copyfile(snapshot, join(sdk_root, 'bin', 'snapshots', basename(snapshot))) |
113 | 123 |
114 | 124 |
115 def Main(argv): | 125 def Main(argv): |
116 # Pull in all of the gypi files which will be munged into the sdk. | 126 # Pull in all of the gypi files which will be munged into the sdk. |
117 HOME = dirname(dirname(realpath(__file__))) | 127 HOME = dirname(dirname(realpath(__file__))) |
118 | 128 |
119 # TODO(ricow): change to use option parser, issue 9820. | 129 (options, args) = GetOptions() |
120 SDK = argv[1] | 130 |
| 131 SDK = options.sdk_output_dir |
121 SDK_tmp = '%s.tmp' % SDK | 132 SDK_tmp = '%s.tmp' % SDK |
122 | 133 |
123 SNAPSHOT_LOCATION = argv[2] | 134 SNAPSHOT_LOCATION = options.utils_snapshot_location |
124 SNAPSHOT = join(SNAPSHOT_LOCATION, 'utils_wrapper.dart.snapshot') | 135 SNAPSHOT = join(SNAPSHOT_LOCATION, 'utils_wrapper.dart.snapshot') |
125 | 136 |
126 # TODO(dgrove) - deal with architectures that are not ia32. | 137 # TODO(dgrove) - deal with architectures that are not ia32. |
127 | 138 |
128 if exists(SDK): | 139 if exists(SDK): |
129 rmtree(SDK) | 140 rmtree(SDK) |
130 | 141 |
131 if exists(SDK_tmp): | 142 if exists(SDK_tmp): |
132 rmtree(SDK_tmp) | 143 rmtree(SDK_tmp) |
133 | 144 |
134 os.makedirs(SDK_tmp) | 145 os.makedirs(SDK_tmp) |
135 | 146 |
136 # Create and populate sdk/bin. | 147 # Create and populate sdk/bin. |
137 BIN = join(SDK_tmp, 'bin') | 148 BIN = join(SDK_tmp, 'bin') |
138 os.makedirs(BIN) | 149 os.makedirs(BIN) |
139 | 150 |
140 os.makedirs(join(BIN, 'snapshots')) | 151 os.makedirs(join(BIN, 'snapshots')) |
141 | 152 |
142 # Copy the Dart VM binary and the Windows Dart VM link library | 153 # Copy the Dart VM binary and the Windows Dart VM link library |
143 # into sdk/bin. | 154 # into sdk/bin. |
144 # | 155 # |
145 # TODO(dgrove) - deal with architectures that are not ia32. | 156 # TODO(dgrove) - deal with architectures that are not ia32. |
146 build_dir = os.path.dirname(argv[1]) | 157 build_dir = os.path.dirname(SDK) |
147 dart_file_extension = '' | 158 dart_file_extension = '' |
148 analyzer_file_extension = '' | 159 analyzer_file_extension = '' |
149 if HOST_OS == 'win32': | 160 if HOST_OS == 'win32': |
150 dart_file_extension = '.exe' | 161 dart_file_extension = '.exe' |
151 analyzer_file_extension = '.bat' | 162 analyzer_file_extension = '.bat' |
152 dart_import_lib_src = join(HOME, build_dir, 'dart.lib') | 163 dart_import_lib_src = join(HOME, build_dir, 'dart.lib') |
153 dart_import_lib_dest = join(BIN, 'dart.lib') | 164 dart_import_lib_dest = join(BIN, 'dart.lib') |
154 copyfile(dart_import_lib_src, dart_import_lib_dest) | 165 copyfile(dart_import_lib_src, dart_import_lib_dest) |
155 dart_src_binary = join(HOME, build_dir, 'dart' + dart_file_extension) | 166 dart_src_binary = join(HOME, build_dir, 'dart' + dart_file_extension) |
156 dart_dest_binary = join(BIN, 'dart' + dart_file_extension) | 167 dart_dest_binary = join(BIN, 'dart' + dart_file_extension) |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 with open(os.path.join(SDK_tmp, 'revision'), 'w') as f: | 297 with open(os.path.join(SDK_tmp, 'revision'), 'w') as f: |
287 f.write(revision + '\n') | 298 f.write(revision + '\n') |
288 f.close() | 299 f.close() |
289 | 300 |
290 Copy(join(HOME, 'README.dart-sdk'), join(SDK_tmp, 'README')) | 301 Copy(join(HOME, 'README.dart-sdk'), join(SDK_tmp, 'README')) |
291 | 302 |
292 move(SDK_tmp, SDK) | 303 move(SDK_tmp, SDK) |
293 | 304 |
294 if __name__ == '__main__': | 305 if __name__ == '__main__': |
295 sys.exit(Main(sys.argv)) | 306 sys.exit(Main(sys.argv)) |
OLD | NEW |