@@ -67,9 +67,6 @@ str buildFSPath(loc l) {
6767str buildCP (loc entries ...) = intercalate (getSystemProperty ("path.separator" ), [ buildFSPath (l ) | l <- entries ]);
6868
6969
70-
71- loc tplPath (loc repoFolder , str name ) = (repoFolder + name ) + "target/classes" ;
72-
7370loc projectRoot (loc repoFolder , str name , Project proj ) = (repoFolder + name ) + proj .subdir ;
7471
7572
@@ -79,7 +76,7 @@ tuple[list[loc], list[loc]] calcSourcePaths(str name, Project proj, loc repoFold
7976 return <srcs , ignores >;
8077}
8178
82- PathConfig generatePathConfig (str name , Project proj , loc repoFolder , false ) {
79+ PathConfig generatePathConfig (str name , Project proj , loc repoFolder , false , false , loc _packageTarget ) {
8380 <srcs , ignores > = calcSourcePaths (name , proj , repoFolder );
8481 for (str dep <- proj .dependencies , <dep , projDep > <- projects ) {
8582 <nestedSrcs , nestedIgnores > = calcSourcePaths (dep , projDep , repoFolder );
@@ -94,14 +91,14 @@ PathConfig generatePathConfig(str name, Project proj, loc repoFolder, false) {
9491 libs = [repoFolder + "shared-tpls" ] + (proj .rascalLib ? [|std:///| ] : [])
9592 );
9693}
97- PathConfig generatePathConfig (str name , Project proj , loc repoFolder , true ) {
94+ PathConfig generatePathConfig (str name , Project proj , loc repoFolder , true , bool package , loc packageTarget ) {
9895 <srcs , ignores > = calcSourcePaths (name , proj , repoFolder );
9996 result = pathConfig (
10097 projectRoot = projectRoot (repoFolder , name , proj ),
10198 srcs = srcs ,
10299 ignores = ignores ,
103- bin = tplPath ( repoFolder , name ) ,
104- libs = [ tplPath (repoFolder , dep ) | dep <- proj .dependencies ] + (proj .rascalLib ? [|std:///| ] : [])
100+ bin = repoFolder + name + "target" + "classes" ,
101+ libs = [ resolve (repoFolder + dep , package ? packageTarget : |relative:///target/classes| ) | dep <- proj .dependencies ] + (proj .rascalLib ? [|std:///| ] : [])
105102 );
106103 /*
107104 if (name == "rascal-lsp-all" || name == "rascal-all") {
@@ -145,7 +142,7 @@ int updateRepos(Projects projs, loc repoFolder, bool full) {
145142bool isIgnored (loc f , list [loc ] ignores )
146143 = size (ignores ) > 0 && any (i <- ignores , (relativize (i , f ) != f || i == f ));
147144
148- list [str ] addParallelFlags (Project proj , PathConfig pcfg , list [loc ] rascalFiles , int maxCores ) {
145+ list [str ] addParallelFlags (Project proj , list [loc ] rascalFiles , int maxCores ) {
149146 if (!proj .parallel ) {
150147 return [];
151148 }
@@ -161,6 +158,8 @@ int main(
161158 int maxCores = 4 ,
162159 bool libs =true , // put the tpls of dependencies on the lib path
163160 bool update =false , // update all projects from remote
161+ bool package =libs ,
162+ loc packageTarget = |relative:///target/rewrittenClasses| ,
164163 bool full =true , // do a full clone
165164 bool clean =true , // do a clean of the to build folders
166165 loc repoFolder = |tmp:///repo/| ,
@@ -194,7 +193,7 @@ int main(
194193
195194 // prepare path configs
196195 println ("*** Calculating class paths" );
197- pcfgs = [<n , generatePathConfig (n , proj , repoFolder , libs )> | n <- buildOrder , proj <- toBuild [n ]];
196+ pcfgs = [<n , generatePathConfig (n , proj , repoFolder , libs , package , packageTarget )> | n <- buildOrder , proj <- toBuild [n ]];
198197
199198
200199 if (clean ) {
@@ -211,7 +210,7 @@ int main(
211210
212211 for (n <- buildOrder , proj <- toBuild [n ]) {
213212 println ("*** Preparing: <n > " );
214- p = generatePathConfig (n , proj , repoFolder , libs );
213+ p = generatePathConfig (n , proj , repoFolder , libs , package , packageTarget );
215214 if (clean ) {
216215 for (f <- find (p .bin , "tpl" )) {
217216 remove (f );
@@ -222,46 +221,10 @@ int main(
222221 rProjectRoot = resolveLocation (projectRoot );
223222 rascalFiles = [*find (s , "rsc" ) | s <- p .srcs , (startsWith (s .path , projectRoot .path ) || startsWith (s .path , rProjectRoot .path ))];
224223 rascalFiles = sort ([f | f <- rascalFiles , !isIgnored (f , p .ignores )]);
225- println ("*** Starting: <n > (<size (rascalFiles )> to check)" );
226- startTime = realTime ();
227- runner = createProcess ("java" , args =[
228- "-Xmx<memory > " ,
229- "-Drascal.monitor.batch" , // disable fancy progress bar
230- "-cp" , buildFSPath (rascalVersion ),
231- "org.rascalmpl.shell.RascalCompile" ,
232- *addParallelFlags (proj , p , rascalFiles , maxCores ),
233- "-projectRoot" , "<rProjectRoot > " ,
234- "-srcs" , *[ "<s > " | s <- p .srcs ],
235- *["-libs" | p .libs != []], *[ "<l > " | l <- p .libs ],
236- "-bin" , "<p .bin > " ,
237- "-modules" , *[ "<f > " | f <- rascalFiles ]
238- ]);
239- try {
240- while (isAlive (runner )) {
241- stdOut = readWithWait (runner , 500 );
242- if (stdOut != "" ) {
243- print (stdOut );
244- }
245- stdErr = readFromErr (runner );
246- while (stdErr != "" ) {
247- println (stdErr );
248- stdErr = readFromErr (runner );
249- }
250- }
251- stopTime = realTime ();
252- println (readEntireStream (runner ));
253- println (readEntireErrStream (runner ));
254- code = exitCode (runner );
255- result += code ;
256- println ("*** Finished: <n > < code == 0 ? "✅" : "❌ Failed with error <code > " > (<(stopTime - startTime )/1000>s)");
257- stats += <n , code , (stopTime - startTime )/1000>;
258- }
259- catch ex :{
260- println("Running the runner for <n > crashed with <ex > ");
261- result += 1;
262- }
263- finally {
264- killProcess(runner);
224+
225+ result += run ("org.rascalmpl.shell.RascalCompile" , n , rProjectRoot , p , rascalFiles , memory , rascalVersion , stats , extraArgs = [*addParallelFlags (proj , rascalFiles , maxCores ), "-modules" , *[ "<f > " | f <- rascalFiles ]]);
226+ if (package ) {
227+ result += run ("org.rascalmpl.shell.RascalPackage" , n , rProjectRoot , p , rascalFiles , memory , rascalVersion , stats , extraArgs = ["-sourceLookup" , "<rascalVersion > " , "-relocatedClasses" , "<resolve (rProjectRoot , packageTarget )> " ]);
265228 }
266229 }
267230 println ("******\n Done running " );
@@ -270,3 +233,58 @@ int main(
270233 }
271234 return result ;
272235}
236+
237+ int run (
238+ str class ,
239+ str projectName ,
240+ loc resolvedRoot ,
241+ PathConfig pcfg ,
242+ list [loc ] rascalFiles ,
243+ str memory ,
244+ loc rascalVersion ,
245+ lrel [str , int , int ] stats ,
246+ list [str ] extraArgs = []
247+ ) {
248+ result = 0 ;
249+ println ("*** Starting: <class > on <projectName > (<size (rascalFiles )> )" );
250+ startTime = realTime ();
251+ runner = createProcess ("java" , args =[
252+ "-Xmx<memory > " ,
253+ "-Drascal.monitor.batch" , // disable fancy progress bar
254+ "-cp" , buildFSPath (rascalVersion ),
255+ class ,
256+ "-projectRoot" , "<resolvedRoot > " ,
257+ "-srcs" , *[ "<s > " | s <- pcfg .srcs ],
258+ *["-libs" | pcfg .libs != []], *[ "<l > " | l <- pcfg .libs ],
259+ "-bin" , "<pcfg .bin > " ,
260+ *extraArgs
261+ ]);
262+ try {
263+ while (isAlive (runner )) {
264+ stdOut = readWithWait (runner , 500 );
265+ if (stdOut != "" ) {
266+ print (stdOut );
267+ }
268+ stdErr = readFromErr (runner );
269+ while (stdErr != "" ) {
270+ println (stdErr );
271+ stdErr = readFromErr (runner );
272+ }
273+ }
274+ stopTime = realTime ();
275+ println (readEntireStream (runner ));
276+ println (readEntireErrStream (runner ));
277+ code = exitCode (runner );
278+ result += code ;
279+ println ("*** Finished: <class > on <projectName > < code == 0 ? "✅" : "❌ Failed with error <code > " > (<(stopTime - startTime )/1000>s)");
280+ stats += <projectName , code , (stopTime - startTime )/1000>;
281+ }
282+ catch ex :{
283+ println("Running the runner for <projectName > crashed with <ex > ");
284+ result += 1;
285+ }
286+ finally {
287+ killProcess(runner);
288+ }
289+ return result;
290+ }
0 commit comments