@@ -18,6 +18,53 @@ function rebuild() {
18
18
stdio : [ 0 , 1 , 2 ]
19
19
} ) ;
20
20
}
21
+ var assert = require ( 'assert' )
22
+ /**
23
+ *
24
+ * @param {string } src
25
+ * @param {(file:string)=>boolean } filter
26
+ * @param {string } dest
27
+ */
28
+ function installDirBy ( src , dest , filter ) {
29
+ fs . readdir ( src , function ( err , files ) {
30
+ if ( err === null ) {
31
+ files . forEach ( function ( file ) {
32
+ if ( filter ( file ) ) {
33
+ var x = path . join ( src , file ) ;
34
+ var y = path . join ( dest , file ) ;
35
+ // console.log(x, '----->', y )
36
+ fs . copyFile ( x , y , ( err ) => assert . equal ( err , null ) ) ;
37
+ }
38
+ } ) ;
39
+ } else {
40
+ throw err ;
41
+ }
42
+ } ) ;
43
+ }
44
+
45
+ function install ( ) {
46
+ var root_dir = path . join ( __dirname , ".." ) ;
47
+ var lib_dir = path . join ( root_dir , "lib" ) ;
48
+ var jscomp_dir = path . join ( root_dir , "jscomp" ) ;
49
+ var runtime_dir = path . join ( jscomp_dir , "runtime" ) ;
50
+ var others_dir = path . join ( jscomp_dir , "others" ) ;
51
+ var ocaml_dir = path . join ( lib_dir , "ocaml" ) ;
52
+ var stdlib_dir = path . join ( jscomp_dir , "stdlib-406" ) ;
53
+
54
+ installDirBy ( runtime_dir , ocaml_dir , function ( file ) {
55
+ var y = path . parse ( file ) ;
56
+ return y . name === "js" || y . ext . includes ( "cm" ) ;
57
+ // install js.cmi, js.mli
58
+ } ) ;
59
+ installDirBy ( others_dir , ocaml_dir , function ( file ) {
60
+ var y = path . parse ( file ) ;
61
+ return y . ext === ".ml" || y . ext === ".mli" || y . ext . includes ( "cm" ) ;
62
+ } ) ;
63
+ installDirBy ( stdlib_dir , ocaml_dir , function ( file ) {
64
+ var y = path . parse ( file ) ;
65
+ return y . ext === ".ml" || y . ext === ".mli" || y . ext . includes ( "cm" ) ;
66
+ } ) ;
67
+ }
21
68
22
69
function buildCompiler ( ) {
23
70
// for 4.02.3 it relies on OCAMLLIB to find stdlib path
@@ -46,23 +93,20 @@ if (!is_windows) {
46
93
if ( ! process . argv . includes ( "-noclean" ) ) {
47
94
rebuild ( ) ;
48
95
}
96
+
49
97
require ( "./ninja.js" ) . updateRelease ( ) ;
50
98
}
51
- var os = require ( "os" ) ;
99
+
52
100
function createOCamlTar ( ) {
53
- if ( os . platform ( ) === hostPlatform ) {
101
+ if ( process . platform === hostPlatform ) {
102
+ install ( ) ;
54
103
cp . execSync ( `git -C ocaml status -uno` , { cwd : root , stdio : [ 0 , 1 , 2 ] } ) ;
55
104
cp . execSync (
56
105
`git -C ocaml archive --format=tar.gz HEAD -o ../vendor/ocaml.tar.gz` ,
57
106
{ cwd : root , stdio : [ 0 , 1 , 2 ] }
58
107
) ;
59
- // fs.copyFileSync(
60
- // path.join(root, "ocaml", "VERSION"),
61
- // path.join(root, "OCAML_VERSION")
62
- // );
63
108
}
64
109
}
110
+
65
111
createOCamlTar ( ) ;
66
112
buildCompiler ( ) ;
67
-
68
- //
0 commit comments