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

Side by Side Diff: tools/create_sdk.py

Issue 9555013: Get dartdoc in the SDK and working correctly. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update copyright date. Created 8 years, 9 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 3 # Copyright (c) 2011, 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 #
11 # The SDK will be used either from the command-line or from the editor. 11 # The SDK will be used either from the command-line or from the editor.
12 # Top structure is 12 # Top structure is
13 # 13 #
14 # ..dart-sdk/ 14 # ..dart-sdk/
15 # ....bin/ 15 # ....bin/
16 # ......dart or dart.exe (executable) 16 # ......dart or dart.exe (executable)
17 # ......frogc.dart 17 # ......frogc.dart
18 # ......frogsh (coming later) 18 # ......frogsh (coming later)
19 # ....lib/ 19 # ....lib/
20 # ......builtin/ 20 # ......builtin/
21 # ........builtin_runtime.dart 21 # ........builtin_runtime.dart
22 # ......io/ 22 # ......io/
23 # ........io_runtime.dart 23 # ........io_runtime.dart
24 # ........runtime/ 24 # ........runtime/
25 # ......core/ 25 # ......core/
26 # ........core_{frog, runtime}.dart 26 # ........core_{frog, runtime}.dart
27 # ........{frog, runtime}/ 27 # ........{frog, runtime}/
28 # ......coreimpl/ 28 # ......coreimpl/
29 # ........coreimpl_{frog, runtime}.dart 29 # ........coreimpl_{frog, runtime}.dart
30 # ........{frog, runtime}/ 30 # ........{frog, runtime}/
31 # ......dartdoc/
31 # ......isolate/ 32 # ......isolate/
32 # ........isolate_{frog, runtime}.dart 33 # ........isolate_{frog, runtime}.dart
33 # ........{frog, runtime}/ 34 # ........{frog, runtime}/
34 # ......dom/ 35 # ......dom/
35 # ........dom.dart 36 # ........dom.dart
36 # ......frog/ 37 # ......frog/
37 # ......html/ 38 # ......html/
38 # ........html.dart 39 # ........html.dart
39 # ......htmlimpl/ 40 # ......htmlimpl/
40 # ........htmlimpl.dart 41 # ........htmlimpl.dart
41 # ......json/ 42 # ......json/
42 # ........json_frog.dart 43 # ........json_frog.dart
43 #.........json.dart 44 #.........json.dart
44 # ........{frog}/ 45 # ........{frog}/
45 # ......uri/ 46 # ......uri/
46 # ........uri.dart 47 # ........uri.dart
47 # ......utf8/ 48 # ......utf8/
48 # ........utf8.dart 49 # ........utf8.dart
49 # ......(more will come here) 50 # ......(more will come here)
50 # ....util/ 51 # ....util/
51 # ......(more will come here) 52 # ......(more will come here)
52 53
53 54
54 55
55 import os 56 import os
56 import re 57 import re
57 import sys 58 import sys
58 import tempfile 59 import tempfile
59 import utils 60 import utils
60 61
61 from os.path import dirname, join, realpath, exists, isdir 62 from os.path import dirname, join, realpath, exists, isdir
62 from shutil import copyfile, copymode, copytree, ignore_patterns, rmtree, move 63 from shutil import copyfile, copymode, copytree, ignore_patterns, rmtree, move
63 64
65 def ReplaceInFiles(paths, subs):
66 '''Reads a series of files, applies a series of substitutions to each, and
67 saves them back out. subs should by a list of (pattern, replace) tuples.'''
68 for path in paths:
69 contents = open(path).read()
70 for pattern, replace in subs:
71 contents = re.sub(pattern, replace, contents)
72
73 dest = open(path, 'w')
74 dest.write(contents)
75 dest.close()
76
64 def Main(argv): 77 def Main(argv):
65 # Pull in all of the gpyi files which will be munged into the sdk. 78 # Pull in all of the gpyi files which will be munged into the sdk.
66 builtin_runtime_sources = \ 79 builtin_runtime_sources = \
67 (eval(open("runtime/bin/builtin_sources.gypi").read()))['sources'] 80 (eval(open("runtime/bin/builtin_sources.gypi").read()))['sources']
68 io_runtime_sources = \ 81 io_runtime_sources = \
69 (eval(open("runtime/bin/io_sources.gypi").read()))['sources'] 82 (eval(open("runtime/bin/io_sources.gypi").read()))['sources']
70 corelib_sources = \ 83 corelib_sources = \
71 (eval(open("corelib/src/corelib_sources.gypi").read()))['sources'] 84 (eval(open("corelib/src/corelib_sources.gypi").read()))['sources']
72 corelib_frog_sources = \ 85 corelib_frog_sources = \
73 (eval(open("frog/lib/frog_corelib_sources.gypi").read()))['sources'] 86 (eval(open("frog/lib/frog_corelib_sources.gypi").read()))['sources']
(...skipping 24 matching lines...) Expand all
98 # Copy the Dart VM binary into sdk/bin. 111 # Copy the Dart VM binary into sdk/bin.
99 # TODO(dgrove) - deal with architectures that are not ia32. 112 # TODO(dgrove) - deal with architectures that are not ia32.
100 build_dir = os.path.dirname(argv[1]) 113 build_dir = os.path.dirname(argv[1])
101 frogc_file_extension = '' 114 frogc_file_extension = ''
102 dart_file_extension = '' 115 dart_file_extension = ''
103 if utils.GuessOS() == 'win32': 116 if utils.GuessOS() == 'win32':
104 dart_file_extension = '.exe' 117 dart_file_extension = '.exe'
105 frogc_file_extension = '.bat' 118 frogc_file_extension = '.bat'
106 dart_src_binary = join(HOME, build_dir, 'dart' + dart_file_extension) 119 dart_src_binary = join(HOME, build_dir, 'dart' + dart_file_extension)
107 dart_dest_binary = join(BIN, 'dart' + dart_file_extension) 120 dart_dest_binary = join(BIN, 'dart' + dart_file_extension)
108 frogc_src_binary = join(HOME, 'frog', 'scripts', 'bootstrap', 121 frogc_src_binary = join(HOME, 'frog', 'scripts', 'bootstrap',
109 'frogc' + frogc_file_extension) 122 'frogc' + frogc_file_extension)
110 frogc_dest_binary = join(BIN, 'frogc' + frogc_file_extension) 123 frogc_dest_binary = join(BIN, 'frogc' + frogc_file_extension)
111 copyfile(dart_src_binary, dart_dest_binary) 124 copyfile(dart_src_binary, dart_dest_binary)
112 copymode(dart_src_binary, dart_dest_binary) 125 copymode(dart_src_binary, dart_dest_binary)
113 copyfile(frogc_src_binary, frogc_dest_binary) 126 copyfile(frogc_src_binary, frogc_dest_binary)
114 copymode(frogc_src_binary, frogc_dest_binary) 127 copymode(frogc_src_binary, frogc_dest_binary)
115 128
116 # Create sdk/bin/frogc.dart, and hack as needed. 129 # Create sdk/bin/frogc.dart, and hack as needed.
117 frog_src_dir = join(HOME, 'frog') 130 frog_src_dir = join(HOME, 'frog')
118 131
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 # Create and populate lib/frog. 196 # Create and populate lib/frog.
184 # 197 #
185 frog_dest_dir = join(LIB, 'frog') 198 frog_dest_dir = join(LIB, 'frog')
186 os.makedirs(frog_dest_dir) 199 os.makedirs(frog_dest_dir)
187 200
188 for filename in os.listdir(frog_src_dir): 201 for filename in os.listdir(frog_src_dir):
189 if filename == 'frog_options.dart': 202 if filename == 'frog_options.dart':
190 # change config from 'dev' to 'sdk' in frog_options.dart 203 # change config from 'dev' to 'sdk' in frog_options.dart
191 frog_options_contents = open(join(frog_src_dir, filename)).read() 204 frog_options_contents = open(join(frog_src_dir, filename)).read()
192 frog_options_dest = open(join(frog_dest_dir, filename), 'w') 205 frog_options_dest = open(join(frog_dest_dir, filename), 'w')
193 frog_options_dest.write(re.sub("final config = \'dev\';", 206 frog_options_dest.write(re.sub("final config = \'dev\';",
194 "final config = \'sdk\';", 207 "final config = \'sdk\';",
195 frog_options_contents)) 208 frog_options_contents))
196 frog_options_dest.close() 209 frog_options_dest.close()
197 elif filename.endswith('.dart'): 210 elif filename.endswith('.dart'):
198 copyfile(join(frog_src_dir, filename), join(frog_dest_dir, filename)) 211 copyfile(join(frog_src_dir, filename), join(frog_dest_dir, filename))
199 212
200 leg_dest_dir = join(frog_dest_dir, 'leg') 213 leg_dest_dir = join(frog_dest_dir, 'leg')
201 copytree(join(frog_src_dir, 'leg'), leg_dest_dir, 214 copytree(join(frog_src_dir, 'leg'), leg_dest_dir,
202 ignore=ignore_patterns('.svn')) 215 ignore=ignore_patterns('.svn'))
203 216
204 # Remap imports in frog/leg/* . 217 # Remap imports in frog/leg/* .
205 for filename in os.listdir(leg_dest_dir): 218 for filename in os.listdir(leg_dest_dir):
206 if filename.endswith('.dart'): 219 if filename.endswith('.dart'):
207 file_contents = open(join(leg_dest_dir, filename)).read() 220 file_contents = open(join(leg_dest_dir, filename)).read()
208 file = open(join(leg_dest_dir, filename), 'w') 221 file = open(join(leg_dest_dir, filename), 'w')
209 file.write(re.sub("../../lib", "../..", file_contents)) 222 file.write(re.sub("../../lib", "../..", file_contents))
210 file.close() 223 file.close()
211 224
212 copytree(join(frog_src_dir, 'server'), join(frog_dest_dir, 'server'), 225 copytree(join(frog_src_dir, 'server'), join(frog_dest_dir, 'server'),
213 ignore=ignore_patterns('.svn')) 226 ignore=ignore_patterns('.svn'))
214 227
215 # Remap imports in frog/... . 228 # Remap imports in frog/... .
216 for (dirpath, subdirs, _) in os.walk(frog_dest_dir): 229 for (dirpath, subdirs, _) in os.walk(frog_dest_dir):
217 for subdir in subdirs: 230 for subdir in subdirs:
218 for filename in os.listdir(join(dirpath, subdir)): 231 for filename in os.listdir(join(dirpath, subdir)):
219 if filename.endswith('.dart'): 232 if filename.endswith('.dart'):
220 file_contents = open(join(dirpath, subdir, filename)).read() 233 file_contents = open(join(dirpath, subdir, filename)).read()
221 file = open(join(dirpath, subdir, filename), 'w') 234 file = open(join(dirpath, subdir, filename), 'w')
222 file.write(re.sub("../lib/", "../", file_contents)) 235 file.write(re.sub("../lib/", "../", file_contents))
(...skipping 16 matching lines...) Expand all
239 # 252 #
240 # Create and populate lib/dom. 253 # Create and populate lib/dom.
241 # 254 #
242 dom_src_dir = join(HOME, 'client', 'dom') 255 dom_src_dir = join(HOME, 'client', 'dom')
243 dom_dest_dir = join(LIB, 'dom') 256 dom_dest_dir = join(LIB, 'dom')
244 os.makedirs(dom_dest_dir) 257 os.makedirs(dom_dest_dir)
245 258
246 copyfile(join(dom_src_dir, 'frog', 'dom_frog.dart'), 259 copyfile(join(dom_src_dir, 'frog', 'dom_frog.dart'),
247 join(dom_dest_dir, 'dom_frog.dart')) 260 join(dom_dest_dir, 'dom_frog.dart'))
248 261
249 # 262 #
250 # Create and populate lib/{json, uri, utf8} . 263 # Create and populate lib/{json, uri, utf8} .
251 # 264 #
252 265
253 for library in ['json', 'uri', 'utf8']: 266 for library in ['json', 'uri', 'utf8']:
254 src_dir = join(HOME, 'lib', library) 267 src_dir = join(HOME, 'lib', library)
255 dest_dir = join(LIB, library) 268 dest_dir = join(LIB, library)
256 os.makedirs(dest_dir) 269 os.makedirs(dest_dir)
257 270
258 for filename in os.listdir(src_dir): 271 for filename in os.listdir(src_dir):
259 if filename.endswith('.dart'): 272 if filename.endswith('.dart'):
260 copyfile(join(src_dir, filename), join(dest_dir, filename)) 273 copyfile(join(src_dir, filename), join(dest_dir, filename))
261 274
275 # Create and populate lib/dartdoc
276 dartdoc_src_dir = join(HOME, 'lib', 'dartdoc')
277 dartdoc_dest_dir = join(LIB, 'dartdoc')
278 copytree(dartdoc_src_dir, dartdoc_dest_dir,
279 ignore=ignore_patterns('.svn', 'docs'))
280 ReplaceInFiles([
281 join(LIB, 'dartdoc', 'dartdoc')
282 ], [
283 ("../../frog/minfrog", "../../bin/frogc"),
284 ("--libdir=../../frog/lib", "--libdir=../")
285 ])
286 ReplaceInFiles([
287 join(LIB, 'dartdoc', 'dartdoc.dart')
288 ], [
289 ("#import\('../../frog", "#import('../frog"),
290 ("'../../frog'", "'../frog'"),
291 ("'--libdir=../../frog/lib'", "'--libdir=../'")
292 ])
293 ReplaceInFiles([
294 join(LIB, 'dartdoc', 'classify.dart'),
295 join(LIB, 'dartdoc', 'client-live-nav.dart'),
296 join(LIB, 'dartdoc', 'client-static.dart')
297 ], [
298 ("#import\('../../frog", "#import('../frog")
299 ])
300
262 # Create and populate lib/isolate 301 # Create and populate lib/isolate
263 copytree(join(HOME, 'lib', 'isolate'), join(LIB, 'isolate'), 302 copytree(join(HOME, 'lib', 'isolate'), join(LIB, 'isolate'),
264 ignore=ignore_patterns('.svn')) 303 ignore=ignore_patterns('.svn'))
265 304
266 # 305 #
267 # Create and populate lib/core. 306 # Create and populate lib/core.
268 # 307 #
269 308
270 # First, copy corelib/* to lib/{frog, runtime} 309 # First, copy corelib/* to lib/{frog, runtime}
271 for filename in corelib_sources: 310 for filename in corelib_sources:
272 for target_dir in ['frog', 'runtime']: 311 for target_dir in ['frog', 'runtime']:
273 copyfile(join('corelib', 'src', filename), 312 copyfile(join('corelib', 'src', filename),
274 join(corelib_dest_dir, target_dir, filename)) 313 join(corelib_dest_dir, target_dir, filename))
275 314
276 # Next, copy the frog library source on top of core/frog 315 # Next, copy the frog library source on top of core/frog
277 # TOOD(dgrove): move json to top-level 316 # TOOD(dgrove): move json to top-level
278 for filename in corelib_frog_sources: 317 for filename in corelib_frog_sources:
279 copyfile(join('frog', 'lib', filename), 318 copyfile(join('frog', 'lib', filename),
280 join(corelib_dest_dir, 'frog', filename)) 319 join(corelib_dest_dir, 'frog', filename))
281 320
282 # Next, copy the runtime library source on top of core/runtime 321 # Next, copy the runtime library source on top of core/runtime
283 for filename in corelib_runtime_sources: 322 for filename in corelib_runtime_sources:
284 if filename.endswith('.dart'): 323 if filename.endswith('.dart'):
285 copyfile(join('runtime', 'lib', filename), 324 copyfile(join('runtime', 'lib', filename),
286 join(corelib_dest_dir, 'runtime', filename)) 325 join(corelib_dest_dir, 'runtime', filename))
287 326
288 # 327 #
289 # At this point, it's time to create lib/core/core*dart . 328 # At this point, it's time to create lib/core/core*dart .
290 # 329 #
291 # munge frog/lib/corelib.dart into lib/core_frog.dart . 330 # munge frog/lib/corelib.dart into lib/core_frog.dart .
292 src_file = join('frog', 'lib', 'corelib.dart') 331 src_file = join('frog', 'lib', 'corelib.dart')
293 dest_file = open(join(corelib_dest_dir, 'core_frog.dart'), 'w') 332 dest_file = open(join(corelib_dest_dir, 'core_frog.dart'), 'w')
294 contents = open(src_file).read() 333 contents = open(src_file).read()
295 contents = re.sub('source\(\"../../corelib/src/', 'source(\"', contents) 334 contents = re.sub('source\(\"../../corelib/src/', 'source(\"', contents)
296 contents = re.sub("source\(\"", "source(\"frog/", contents) 335 contents = re.sub("source\(\"", "source(\"frog/", contents)
297 dest_file.write(contents) 336 dest_file.write(contents)
(...skipping 10 matching lines...) Expand all
308 dest_file.write('#source("runtime/' + filename + '");\n') 347 dest_file.write('#source("runtime/' + filename + '");\n')
309 dest_file.close() 348 dest_file.close()
310 349
311 # 350 #
312 # Create and populate lib/coreimpl. 351 # Create and populate lib/coreimpl.
313 # 352 #
314 353
315 # First, copy corelib/src/implementation to corelib/{frog, runtime}. 354 # First, copy corelib/src/implementation to corelib/{frog, runtime}.
316 for filename in coreimpl_sources: 355 for filename in coreimpl_sources:
317 for target_dir in ['frog', 'runtime']: 356 for target_dir in ['frog', 'runtime']:
318 copyfile(join('corelib', 'src', 'implementation', filename), 357 copyfile(join('corelib', 'src', 'implementation', filename),
319 join(coreimpl_dest_dir, target_dir, filename)) 358 join(coreimpl_dest_dir, target_dir, filename))
320 359
321 for filename in coreimpl_frog_sources: 360 for filename in coreimpl_frog_sources:
322 copyfile(join('frog', 'lib', filename), 361 copyfile(join('frog', 'lib', filename),
323 join(coreimpl_dest_dir, 'frog', filename)) 362 join(coreimpl_dest_dir, 'frog', filename))
324 363
325 for filename in coreimpl_runtime_sources: 364 for filename in coreimpl_runtime_sources:
326 if filename.endswith('.dart'): 365 if filename.endswith('.dart'):
327 copyfile(join('runtime', 'lib', filename), 366 copyfile(join('runtime', 'lib', filename),
328 join(coreimpl_dest_dir, 'runtime', filename)) 367 join(coreimpl_dest_dir, 'runtime', filename))
329 368
330 369
331 # Create and fix up lib/coreimpl/coreimpl_frog.dart . 370 # Create and fix up lib/coreimpl/coreimpl_frog.dart .
332 src_file = join('frog', 'lib', 'corelib_impl.dart') 371 src_file = join('frog', 'lib', 'corelib_impl.dart')
333 dest_file = open(join(coreimpl_dest_dir, 'coreimpl_frog.dart'), 'w') 372 dest_file = open(join(coreimpl_dest_dir, 'coreimpl_frog.dart'), 'w')
334 contents = open(src_file).read() 373 contents = open(src_file).read()
335 contents = re.sub('source\(\"../../corelib/src/implementation/', 374 contents = re.sub('source\(\"../../corelib/src/implementation/',
336 'source(\"', contents) 375 'source(\"', contents)
337 contents = re.sub('source\(\"', 'source(\"frog/', contents) 376 contents = re.sub('source\(\"', 'source(\"frog/', contents)
338 dest_file.write(contents) 377 dest_file.write(contents)
339 dest_file.close() 378 dest_file.close()
340 379
341 # Construct lib/coreimpl/coreimpl_runtime.dart from whole cloth. 380 # Construct lib/coreimpl/coreimpl_runtime.dart from whole cloth.
342 dest_file = open(join(coreimpl_dest_dir, 'coreimpl_runtime.dart'), 'w') 381 dest_file = open(join(coreimpl_dest_dir, 'coreimpl_runtime.dart'), 'w')
343 dest_file.write('#library("dart:coreimpl");\n') 382 dest_file.write('#library("dart:coreimpl");\n')
344 for filename in coreimpl_sources: 383 for filename in coreimpl_sources:
345 dest_file.write('#source("runtime/' + filename + '");\n') 384 dest_file.write('#source("runtime/' + filename + '");\n')
346 for filename in coreimpl_runtime_sources: 385 for filename in coreimpl_runtime_sources:
347 if filename.endswith('.dart'): 386 if filename.endswith('.dart'):
348 dest_file.write('#source("runtime/' + filename + '");\n') 387 dest_file.write('#source("runtime/' + filename + '");\n')
349 dest_file.close() 388 dest_file.close()
350 389
351 # Create and copy tools. 390 # Create and copy tools.
352 391
353 UTIL = join(SDK_tmp, 'util') 392 UTIL = join(SDK_tmp, 'util')
354 os.makedirs(UTIL) 393 os.makedirs(UTIL)
355 394
356 move(SDK_tmp, SDK) 395 move(SDK_tmp, SDK)
357 396
358 if __name__ == '__main__': 397 if __name__ == '__main__':
359 sys.exit(Main(sys.argv)) 398 sys.exit(Main(sys.argv))
OLDNEW
« frog/presubmit.py ('K') | « tests/utils/utils.status ('k') | tools/test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698