@@ -12,59 +12,76 @@ import 'dart:io';
12
12
import 'package:analyzer/analyzer.dart' ;
13
13
import 'package:path/path.dart' as path;
14
14
15
- import 'input_sdk_src /lib/_internal/libraries.dart' as sdk;
15
+ import 'input_sdk /lib/_internal/libraries.dart' as sdk;
16
16
17
17
void main (List <String > argv) {
18
18
var toolDir = path.relative (path.dirname (Platform .script.path));
19
- var sdkIn = path.join (toolDir, 'input_sdk_src' , 'lib' );
20
- var patchIn = path.join (toolDir, 'input_sdk_patch' );
19
+ var sdkLibIn = path.join (toolDir, 'input_sdk' , 'lib' );
20
+ var patchIn = path.join (toolDir, 'input_sdk' , 'patch' );
21
+ var privateIn = path.join (toolDir, 'input_sdk' , 'private' );
21
22
var sdkOut =
22
23
path.normalize (path.join (toolDir, '..' , 'test' , 'generated_sdk' , 'lib' ));
24
+ var privateLibOut =
25
+ path.normalize (path.join (sdkOut, '_internal' , 'compiler' , 'js_lib' ));
26
+
27
+ var INTERNAL_PATH = '_internal/compiler/js_lib/' ;
23
28
24
29
if (argv.isNotEmpty) {
25
30
print ('Usage: ${path .relative (Platform .script .path )}\n ' );
26
- print ('input SDK directory: $sdkIn ' );
31
+ print ('input SDK directory: $sdkLibIn ' );
32
+ // We can freely make changes to these two.
33
+ print ('input private libs directory: $privateIn ' );
27
34
print ('input patch directory: $patchIn ' );
28
35
print ('output SDK directory: $sdkOut ' );
29
36
exit (1 );
30
37
}
31
38
32
39
// Copy libraries.dart and version
33
40
_writeSync (path.join (sdkOut, '_internal' , 'libraries.dart' ),
34
- new File (path.join (sdkIn , '_internal' , 'libraries.dart' ))
41
+ new File (path.join (sdkLibIn , '_internal' , 'libraries.dart' ))
35
42
.readAsStringSync ());
36
43
_writeSync (path.join (sdkOut, '..' , 'version' ),
37
- new File (path.join (sdkIn , '..' , 'version' )).readAsStringSync ());
44
+ new File (path.join (sdkLibIn , '..' , 'version' )).readAsStringSync ());
38
45
39
46
// Enumerate core libraries and apply patches
40
47
for (var library in sdk.LIBRARIES .values) {
41
48
if (library.platforms & sdk.DART2JS_PLATFORM == 0 ) continue ;
42
49
43
- var libraryPath = path.join (sdkIn, library.path);
50
+ var libraryOut = path.join (sdkLibIn, library.path);
51
+ var libraryIn;
52
+ if (library.path.contains (INTERNAL_PATH )) {
53
+ libraryIn =
54
+ path.join (privateIn, library.path.replaceAll (INTERNAL_PATH , '' ));
55
+ } else {
56
+ libraryIn = libraryOut;
57
+ }
44
58
45
- var libraryFile = new File (libraryPath );
59
+ var libraryFile = new File (libraryIn );
46
60
if (libraryFile.existsSync ()) {
47
61
var contents = < String > [];
48
62
var paths = < String > [];
49
63
var libraryContents = libraryFile.readAsStringSync ();
50
- paths.add (libraryPath );
64
+ paths.add (libraryOut );
51
65
contents.add (libraryContents);
52
66
for (var part in parseDirectives (libraryContents).directives) {
53
67
if (part is PartDirective ) {
54
- paths.add (path.join (path.dirname (libraryPath), part.uri.stringValue));
55
- contents.add (new File (paths.last).readAsStringSync ());
68
+ var partPath = part.uri.stringValue;
69
+ paths.add (path.join (path.dirname (libraryOut), partPath));
70
+ contents.add (new File (path.join (path.dirname (libraryIn), partPath))
71
+ .readAsStringSync ());
56
72
}
57
73
}
58
74
59
75
if (library.dart2jsPatchPath != null ) {
60
- var patchPath = path.join (patchIn, library.dart2jsPatchPath. replaceAll (
61
- '_internal/compiler/js_lib/' , '' ));
76
+ var patchPath = path.join (
77
+ patchIn, library.dart2jsPatchPath. replaceAll ( INTERNAL_PATH , '' ));
62
78
var patchContents = new File (patchPath).readAsStringSync ();
63
79
64
80
contents = _patchLibrary (contents, patchContents);
65
81
}
66
82
for (var i = 0 ; i < paths.length; i++ ) {
67
- var outPath = path.join (sdkOut, path.relative (paths[i], from: sdkIn));
83
+ var outPath =
84
+ path.join (sdkOut, path.relative (paths[i], from: sdkLibIn));
68
85
_writeSync (outPath, contents[i]);
69
86
}
70
87
}
0 commit comments