Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Make build even more regular #2346

Merged
merged 5 commits into from

4 participants

@adriaanm
Owner

One target per project (set of source files).
Always build java sources.

Easter egg: zinc support.

adriaanm added some commits
@adriaanm adriaanm get rid of args element in staged-scalac 5dca660
@adriaanm adriaanm Regularity for build.xml: 1 output dir / project
Untangle actors, msil builds from library/compiler builds.
For further regularity, always build java files.

TODO: update IDE projects
ceeb40c
@adriaanm adriaanm Preliminary support for zinc.
To use Zinc with the ant build:
  - install zinc and symlink the installed zinc script to ${basedir}/tools/zinc
    (${basedir} is where build.xml and the rest of your checkout resides)
  - make sure to set ZINC_OPTS to match ANT_OPTS!
  - invoke ant as `ant -Dstarr.version="2.10.1" -Dlocker.skip=1`
    (zinc does not work if locker is only classfiles, needs jars
     TODO rework the build to pack locker and build using that when using zinc?)

Mostly to enable dog fooding of incremental compilation work for now.
7c0e8f0
@adriaanm adriaanm formatting 92a1785
@adriaanm
Owner

review by @gkossakowski, @paulp

@paulp

If this is important, why do we leave it for the user to do?

Owner

True, I felt like pleasure-delaying one last addition to my ant skill set.

@paulp

If someone has zinc on their path, they shouldn't have to do this manual step.

@paulp

Is "NOT SET" something you made up or something ant understands? Either way, does it have semantics which are documented somewhere?

Agreed with @paulp.

Actually, if you scroll down you see:

+      <if><not><equals arg1="@{srcpath}" arg2="NOT SET"/></not><then>
+        <property name="args" value="@{params} -sourcepath @{srcpath}"/>
+      </then></if>

So NOT SET seems to be just a dummy value that you'll need to compare against later on. I don't know if there's an ant standard for that but a comment explaining "NOT SET" would help.

@gkossakowski

The fact that attributes got reordered made it a little bit more difficult to review this commit but I verified this change is ok.

@gkossakowski

This comment is not very illuminating. Is this a hack because we might not have anything to compile? Is that the reason why we are getting rid of <pre/> and <post/>?

What would be non-hacky way to do it?

Owner

Correct. Alternatives would be to have an attribute to say whether javac should be invoked or not, but I figured it's more robust to just always compile it because it's so fast.

Yep, so it's not really a hack in my opinion. That's the best way to do it.

Owner

ok, I'll fix the comment :-)

Don't forget about commit message mentioning this ;-)

@gkossakowski

Could it because the last time starr got replaced was in d3095cb which was long before 2.10.0 final and is binary incompatible with final? I believe zinc ships with precompiled compiler interface and does not compile it on demand. Right?

Owner

I haven't double checked, but I think I saw the compiler interface being compiled in zinc as well. However, it could still explain the problem if it cached the compiled interface too eagerly. /cc @pvlugter

Zinc will compile and cache the compiler interface as needed. The compiler interface is cached under ~/.zinc/$zincVersion/compiler-interface-$scalaActualVersion-$javaClassVersion.

@gkossakowski
Owner

Small nitpicks but overall it goes in the right direction. :+1:

@adriaanm adriaanm merged commit 2914695 into scala:2.10.x
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Apr 2, 2013
  1. @adriaanm
  2. @adriaanm

    Regularity for build.xml: 1 output dir / project

    adriaanm authored
    Untangle actors, msil builds from library/compiler builds.
    For further regularity, always build java files.
    
    TODO: update IDE projects
  3. @adriaanm

    Preliminary support for zinc.

    adriaanm authored
    To use Zinc with the ant build:
      - install zinc and symlink the installed zinc script to ${basedir}/tools/zinc
        (${basedir} is where build.xml and the rest of your checkout resides)
      - make sure to set ZINC_OPTS to match ANT_OPTS!
      - invoke ant as `ant -Dstarr.version="2.10.1" -Dlocker.skip=1`
        (zinc does not work if locker is only classfiles, needs jars
         TODO rework the build to pack locker and build using that when using zinc?)
    
    Mostly to enable dog fooding of incremental compilation work for now.
  4. @adriaanm

    formatting

    adriaanm authored
Commits on Apr 3, 2013
  1. @adriaanm
This page is out of date. Refresh to see the latest.
Showing with 178 additions and 112 deletions.
  1. +178 −112 build.xml
View
290 build.xml
@@ -19,6 +19,21 @@ targets exercised:
build-opt nightly test.suite test.continuations.suite test.scaladoc locker.done
-->
+<!-- To use Zinc with the ant build:
+ - install zinc and symlink the installed zinc script to ${basedir}/tools/zinc (${basedir} is where build.xml and the rest of your checkout resides)
+ - make sure to set ZINC_OPTS to match ANT_OPTS!
+ - invoke ant as `ant -Dstarr.version="2.10.1" -Dlocker.skip=1`
+ (zinc needs compiler jars)
+-->
+
+<!--
+TODO:
+ - detect zinc anywhere on PATH
+ - automatically set ZINC_OPTS
+ - skip locker (and test.stability) by default to speed up PR validation, still do full build & testing during nightly
+ - (rework the build to pack locker and build using that when using zinc)
+-->
+
<!-- ===========================================================================
END-USER TARGETS
@@ -410,9 +425,8 @@ targets exercised:
<!-- Download STARR (see above) via maven if `starr.version` is specified.
Want to slow down STARR changes, using only released versions. -->
<if><isset property="starr.version"/><then>
- <property name="strr" refid="starr.compiler.path"/>
<echo message="Using Scala ${starr.version} for STARR."/>
- <!-- <echo message="STARR classpath: ${strr}"/> -->
+ <!-- <echo message="STARR classpath: ${ant.refid:starr.compiler.path}"/> -->
</then><else>
<path id="starr.core.path">
<pathelement location="${library.starr.jar}"/>
@@ -449,6 +463,16 @@ targets exercised:
<path refid="aux.libs"/>
</path>
+ <path id="locker.actors.build.path">
+ <path refid="locker.library.build.path"/>
+ <pathelement location="${build-locker.dir}/classes/actors"/>
+ </path>
+
+ <path id="locker.msil.build.path">
+ <path refid="locker.compiler.build.path"/>
+ <pathelement location="${build-locker.dir}/classes/msil"/>
+ </path>
+
<path id="locker.reflect.build.path">
<path refid="locker.library.build.path"/>
<pathelement location="${build-locker.dir}/classes/reflect"/>
@@ -457,6 +481,7 @@ targets exercised:
<path id="locker.compiler.build.path">
<path refid="locker.reflect.build.path"/>
<pathelement location="${build-locker.dir}/classes/compiler"/>
+ <pathelement location="${build-locker.dir}/classes/msil"/>
<path refid="asm.classpath"/>
<path refid="fjbg.classpath"/>
<pathelement location="${jline.jar}"/>
@@ -471,23 +496,35 @@ targets exercised:
<path refid="aux.libs"/>
</path>
- <path id="quick.actors.build.path"><path refid="quick.library.build.path"/></path>
+ <path id="quick.actors.build.path">
+ <path refid="quick.library.build.path"/>
+ <pathelement location="${build-quick.dir}/classes/actors"/>
+ </path>
<path id="quick.reflect.build.path">
<path refid="quick.library.build.path"/>
<pathelement location="${build-quick.dir}/classes/reflect"/>
</path>
+ <path id="quick.msil.build.path">
+ <path refid="quick.compiler.build.path"/>
+ <pathelement location="${build-quick.dir}/classes/msil"/>
+ </path>
+
<path id="quick.compiler.build.path">
<path refid="quick.reflect.build.path"/>
<pathelement location="${build-quick.dir}/classes/compiler"/>
+ <pathelement location="${build-quick.dir}/classes/msil"/>
<path refid="asm.classpath"/>
<path refid="fjbg.classpath"/>
<pathelement location="${jline.jar}"/>
</path>
- <path id="quick.swing.build.path" refid="quick.library.build.path"/>
- <path id="quick.msil.build.path" refid="quick.compiler.build.path"/>
+ <path id="quick.swing.build.path">
+ <path refid="quick.library.build.path"/>
+ <path refid="quick.actors.build.path"/>
+ <pathelement location="${build-quick.dir}/classes/swing"/>
+ </path>
<path id="quick.plugins.build.path">
<path refid="quick.compiler.build.path"/>
@@ -496,6 +533,7 @@ targets exercised:
<path id="quick.scalacheck.build.path">
<pathelement location="${build-quick.dir}/classes/library"/>
+ <pathelement location="${build-quick.dir}/classes/actors"/>
<pathelement location="${build-quick.dir}/classes/scalacheck"/>
</path>
@@ -513,8 +551,10 @@ targets exercised:
<path id="quick.bin.tool.path">
<pathelement location="${build-quick.dir}/classes/library"/>
+ <pathelement location="${build-quick.dir}/classes/actors"/>
<pathelement location="${build-quick.dir}/classes/reflect"/>
<pathelement location="${build-quick.dir}/classes/compiler"/>
+ <pathelement location="${build-quick.dir}/classes/msil"/>
<pathelement location="${build-quick.dir}/classes/scalap"/>
<pathelement location="${build-quick.dir}/classes/continuations-library"/>
<pathelement location="${jline.jar}"/>
@@ -548,22 +588,18 @@ targets exercised:
</path>
<path id="pack.library.files">
- <fileset dir="${build-quick.dir}/classes/library">
- <!-- <exclude name="scala/swing/**"/> -->
- <exclude name="scala/actors/**"/>
- </fileset>
+ <fileset dir="${build-quick.dir}/classes/library"/>
<fileset dir="${build-quick.dir}/classes/continuations-library"/>
<fileset dir="${forkjoin-classes}"/>
</path>
<path id="pack.actors.files">
- <fileset dir="${build-quick.dir}/classes/library">
- <include name="scala/actors/**"/>
- </fileset>
+ <fileset dir="${build-quick.dir}/classes/actors"/>
</path>
<path id="pack.compiler.files">
<fileset dir="${build-quick.dir}/classes/compiler"/>
+ <fileset dir="${build-quick.dir}/classes/msil"/>
<fileset dir="${asm-classes}"/>
<fileset dir="${fjbg-classes}"/>
</path>
@@ -593,8 +629,11 @@ targets exercised:
<path refid="forkjoin.classpath"/>
<path refid="aux.libs"/>
</path>
- <path id="strap.actors.build.path" refid="strap.library.build.path"/>
- <path id="strap.msil.build.path" refid="strap.compiler.build.path"/>
+
+ <path id="strap.msil.build.path">
+ <path refid="strap.compiler.build.path"/>
+ <pathelement location="${build-strap.dir}/classes/msil"/>
+ </path>
<path id="strap.reflect.build.path">
<path refid="strap.library.build.path"/>
@@ -604,6 +643,7 @@ targets exercised:
<path id="strap.compiler.build.path">
<path refid="strap.reflect.build.path"/>
<pathelement location="${build-strap.dir}/classes/compiler"/>
+ <pathelement location="${build-strap.dir}/classes/msil"/>
<path refid="asm.classpath"/>
<path refid="fjbg.classpath"/>
<pathelement location="${jline.jar}"/>
@@ -767,6 +807,49 @@ targets exercised:
</sequential>
</macrodef>
+ <!-- Zinc assumes a one-to-one correspondence of output folder to set of source files.
+ When compiling different sets of source files in multiple compilations to the same output directory,
+ Zinc thinks source files that appeared in an earlier compilation but are absent in the current one,
+ were deleted and thus deletes the corresponding output files.
+
+ Note that zinc also requires each arg to scalac to be prefixed by -S.
+ -->
+ <macrodef name="zinc">
+ <attribute name="compilerpathref" />
+ <attribute name="destdir" />
+ <attribute name="srcdir" />
+ <attribute name="srcpath" default="NOT SET"/> <!-- needed to compile the library, "NOT SET" is just a convention to denote an optional attribute -->
+ <attribute name="buildpathref" />
+ <attribute name="params" default="" />
+ <attribute name="java-excludes" default=""/>
+
+ <sequential>
+ <local name="sources"/>
+ <pathconvert pathsep=" " property="sources">
+ <fileset dir="@{srcdir}">
+ <include name="**/*.java"/>
+ <include name="**/*.scala"/>
+ <exclude name="@{java-excludes}"/>
+ </fileset>
+ </pathconvert>
+ <local name="args"/>
+ <local name="sargs"/>
+ <if><not><equals arg1="@{srcpath}" arg2="NOT SET"/></not><then>
+ <property name="args" value="@{params} -sourcepath @{srcpath}"/>
+ </then></if>
+ <property name="args" value="@{params}"/> <!-- default -->
+
+ <!-- HACK: prefix scalac args by -S -->
+ <script language="javascript">
+ project.setProperty("sargs", project.getProperty("args").trim().replaceAll(" ", " -S"));
+ </script>
+
+ <exec osfamily="unix" executable="tools/zinc" failifexecutionfails="true" failonerror="true">
+ <arg line="-nailed -compile-order JavaThenScala -scala-path ${ant.refid:@{compilerpathref}} -d @{destdir} -classpath ${toString:@{buildpathref}} ${sargs} ${sources}"/>
+ </exec>
+ </sequential>
+ </macrodef>
+
<macrodef name="staged-scalac" >
<attribute name="with"/> <!-- will use path `@{with}.compiler.path` to locate scalac -->
<attribute name="stage"/> <!-- current stage (locker, quick, strap) -->
@@ -775,33 +858,46 @@ targets exercised:
<attribute name="args" default=""/> <!-- additional args -->
<attribute name="destproject" default="@{project}"/> <!-- overrides the output directory; used when building multiple projects into the same directory-->
<attribute name="srcdir" default="@{project}"/>
- <element name="args" implicit="true" optional="true"/>
+ <attribute name="java-excludes" default=""/>
<sequential>
+ <!-- TODO: detect zinc anywhere on PATH
+ use zinc for the quick stage if it's available;
+ would use it for locker but something is iffy in sbt: get a class cast error on global phase -->
+ <if><and> <available file="tools/zinc"/>
+ <equals arg1="@{stage}" arg2="quick"/>
+ <not><equals arg1="@{project}" arg2="plugins"/></not> <!-- doesn't work in zinc because it requires the quick compiler, which isn't jarred up-->
+ </and><then>
+ <zinc taskname="Z.@{stage}.@{project}"
+ compilerpathref="@{with}.compiler.path"
+ destdir="${build-@{stage}.dir}/classes/@{destproject}"
+ srcdir="${src.dir}/@{srcdir}"
+ srcpath="@{srcpath}"
+ buildpathref="@{stage}.@{project}.build.path"
+ params="${scalac.args.@{stage}} @{args}"
+ java-excludes="@{java-excludes}"/></then>
+ <else>
<if><equals arg1="@{srcpath}" arg2="NOT SET"/><then>
<scalacfork taskname="@{stage}.@{project}"
- destdir="${build-@{stage}.dir}/classes/@{destproject}"
+ jvmargs="${scalacfork.jvmargs}"
compilerpathref="@{with}.compiler.path"
- params="${scalac.args.@{stage}} @{args}"
+ destdir="${build-@{stage}.dir}/classes/@{destproject}"
srcdir="${src.dir}/@{srcdir}"
- jvmargs="${scalacfork.jvmargs}">
+ params="${scalac.args.@{stage}} @{args}">
<include name="**/*.scala"/>
- <compilationpath refid="@{stage}.@{project}.build.path"/>
- <args/>
- </scalacfork></then>
+ <compilationpath refid="@{stage}.@{project}.build.path"/></scalacfork></then>
<else>
<scalacfork taskname="@{stage}.@{project}"
- destdir="${build-@{stage}.dir}/classes/@{destproject}"
+ jvmargs="${scalacfork.jvmargs}"
compilerpathref="@{with}.compiler.path"
- srcpath="@{srcpath}"
- params="${scalac.args.@{stage}} @{args}"
+ destdir="${build-@{stage}.dir}/classes/@{destproject}"
srcdir="${src.dir}/@{srcdir}"
- jvmargs="${scalacfork.jvmargs}">
+ srcpath="@{srcpath}"
+ params="${scalac.args.@{stage}} @{args}">
<include name="**/*.scala"/>
- <compilationpath refid="@{stage}.@{project}.build.path"/>
- <args/>
- </scalacfork></else>
+ <compilationpath refid="@{stage}.@{project}.build.path"/></scalacfork></else>
</if>
+ </else></if>
</sequential>
</macrodef>
@@ -829,20 +925,17 @@ targets exercised:
<attribute name="srcpath" default="NOT SET"/> <!-- needed to compile the library -->
<attribute name="args" default=""/> <!-- additional args -->
<attribute name="includes" default="comp.includes"/>
+ <attribute name="java-excludes" default=""/>
<attribute name="version" default=""/> <!-- non-empty for partest and scaladoc: use @{version}.version.number in property file-->
- <element name="pre" optional="true"/>
- <element name="post" optional="true"/>
-
<sequential>
<staged-uptodate stage="@{stage}" project="@{project}">
<check><srcfiles dir="${src.dir}/@{project}"/></check>
<do>
<stopwatch name="@{stage}.@{project}.timer"/>
<mkdir dir="${build-@{stage}.dir}/classes/@{project}"/>
- <pre/>
- <staged-scalac with="@{with}" stage="@{stage}" project="@{project}" srcpath="@{srcpath}" args="@{args}"/>
- <post/>
+ <staged-javac stage="@{stage}" project="@{project}" excludes="@{java-excludes}"/> <!-- always compile with javac for simplicity and regularity; it's cheap -->
+ <staged-scalac with="@{with}" stage="@{stage}" project="@{project}" srcpath="@{srcpath}" args="@{args}" java-excludes="@{java-excludes}"/>
<if><equals arg1="@{version}" arg2=""/><then>
<propertyfile file = "${build-@{stage}.dir}/classes/@{project}/@{project}.properties">
<entry key = "version.number" value="${version.number}"/>
@@ -995,23 +1088,23 @@ targets exercised:
<!-- ===========================================================================
LOCAL REFERENCE BUILD (LOCKER)
============================================================================ -->
- <target name="locker.start" depends="asm.done, forkjoin.done, fjbg.done">
+ <target name="locker.start" depends="asm.done, forkjoin.done, fjbg.done">
<condition property="locker.locked"><available file="${build-locker.dir}/locker.locked"/></condition></target>
- <target name="locker.lib" depends="locker.start" unless="locker.locked">
- <staged-build with="starr" stage="locker" project="library" srcpath="${src.dir}/library" includes="lib.includes">
- <pre><staged-javac stage="locker" project="library" args="-XDignore.symbol.file"/></pre></staged-build></target>
- <!-- TODO: args="-XDignore.symbol.file" necessary?? -->
-
- <target name="locker.reflect" depends="locker.lib" unless="locker.locked"> <staged-build with="starr" stage="locker" project="reflect"/></target>
- <target name="locker.comp" depends="locker.reflect" unless="locker.locked">
- <staged-build with="starr" stage="locker" project="compiler">
- <pre>
- <staged-javac stage="locker" project="msil" destproject="compiler" excludes="**/tests/**"/>
- <staged-scalac with="starr" stage="locker" project="msil" destproject="compiler"/>
- </pre>
- </staged-build>
- </target>
+ <target name="locker.lib" depends="locker.start" unless="locker.locked">
+ <staged-build with="starr" stage="locker" project="library" srcpath="${src.dir}/library" includes="lib.includes"/></target>
+
+ <target name="locker.actors" depends="locker.lib" unless="locker.locked">
+ <staged-build with="starr" stage="locker" project="actors"/> </target>
+
+ <target name="locker.msil" depends="locker.lib" unless="locker.locked">
+ <staged-build with="starr" stage="locker" project="msil" java-excludes="**/tests/**"/> </target>
+
+ <target name="locker.reflect" depends="locker.lib" unless="locker.locked">
+ <staged-build with="starr" stage="locker" project="reflect"/></target>
+
+ <target name="locker.comp" depends="locker.reflect, locker.msil" unless="locker.locked">
+ <staged-build with="starr" stage="locker" project="compiler"/></target>
<target name="locker.done" depends="locker.comp">
<mkdir dir="${build-locker.dir}"/>
@@ -1023,51 +1116,37 @@ targets exercised:
<!-- ===========================================================================
QUICK BUILD (QUICK)
============================================================================ -->
- <target name="quick.start" depends="locker.done"/>
+ <target name="quick.start" depends="locker.done"/>
- <target name="quick.lib" depends="quick.start">
- <staged-build with="locker" stage="quick" project="library" srcpath="${src.dir}/library" includes="lib.rootdoc.includes">
- <pre>
- <staged-javac stage="quick" project="library" args="-XDignore.symbol.file"/> <!-- TODO: args="-XDignore.symbol.file" necessary?? -->
- <staged-javac stage="quick" project="actors" destproject="library"/>
- </pre>
- <post>
- <staged-scalac with="locker" stage="quick" project="actors" destproject="library"/>
- </post>
- </staged-build>
- </target>
+ <target name="quick.lib" depends="quick.start">
+ <staged-build with="locker" stage="quick" project="library" srcpath="${src.dir}/library" includes="lib.rootdoc.includes"/></target>
- <target name="quick.reflect" depends="quick.lib"> <staged-build with="locker" stage="quick" project="reflect"/> </target>
+ <target name="quick.actors" depends="quick.lib">
+ <staged-build with="locker" stage="quick" project="actors"/> </target>
- <target name="quick.comp" depends="quick.reflect">
- <staged-build with="locker" stage="quick" project="compiler">
- <pre>
- <staged-javac stage="quick" project="msil" destproject="compiler" excludes="**/tests/**"/>
- <staged-scalac with="locker" stage="quick" project="msil" destproject="compiler"/>
- </pre>
- </staged-build>
- </target>
+ <target name="quick.msil" depends="quick.lib">
+ <staged-build with="locker" stage="quick" project="msil" java-excludes="**/tests/**"/> </target>
- <target name="quick.scalacheck" depends="quick.lib">
- <staged-build with="locker" stage="quick" project="scalacheck" args="-nowarn"/>
- </target>
+ <target name="quick.reflect" depends="quick.lib">
+ <staged-build with="locker" stage="quick" project="reflect"/> </target>
- <target name="quick.scalap" depends="quick.comp">
- <staged-build with="locker" stage="quick" project="scalap"/>
- </target>
+ <target name="quick.comp" depends="quick.reflect, quick.msil">
+ <staged-build with="locker" stage="quick" project="compiler"/> </target>
- <target name="quick.partest" depends="quick.scalap, quick.comp, asm.done">
- <staged-build with="locker" stage="quick" project="partest" version="partest">
- <pre><staged-javac stage="quick" project="partest"/></pre>
- </staged-build>
- </target>
+ <target name="quick.scalacheck" depends="quick.actors, quick.lib">
+ <staged-build with="locker" stage="quick" project="scalacheck" args="-nowarn"/> </target>
- <target name="quick.swing" depends="quick.lib" if="has.java6">
- <staged-build with="locker" stage="quick" project="swing"/>
- </target>
+ <target name="quick.scalap" depends="quick.comp">
+ <staged-build with="locker" stage="quick" project="scalap"/> </target>
+
+ <target name="quick.partest" depends="quick.scalap, quick.comp, asm.done">
+ <staged-build with="locker" stage="quick" project="partest" version="partest"/> </target>
+
+ <target name="quick.swing" depends="quick.actors, quick.lib" if="has.java6">
+ <staged-build with="locker" stage="quick" project="swing"/> </target>
- <target name="quick.plugins" depends="quick.comp">
- <staged-uptodate stage="quick" project="plugins">
+ <target name="quick.plugins" depends="quick.comp">
+ <staged-uptodate stage="quick" project="plugins">
<check><srcfiles dir="${src.dir}/continuations"/></check>
<do>
<stopwatch name="quick.plugins.timer"/>
@@ -1084,13 +1163,15 @@ targets exercised:
<!-- might split off library part into its own ant target -->
<mkdir dir="${build-quick.dir}/classes/continuations-library"/>
- <!-- have to compile with quick compiler here! -->
+ <!-- TODO: must build with quick to avoid
+ [quick.plugins] error: java.lang.NoClassDefFoundError: scala/tools/nsc/transform/patmat/PatternMatching
+ [quick.plugins] at scala.tools.selectivecps.SelectiveCPSTransform.newTransformer(SelectiveCPSTransform.scala:29)
+
+ WHY OH WHY!? scala/tools/nsc/transform/patmat/PatternMatching should be on locker.compiler.path
+ -->
<staged-scalac with="quick" stage="quick" project="plugins"
srcdir="continuations/library" destproject="continuations-library"
- args="-Xplugin-require:continuations -P:continuations:enable">
- <compilerarg value="-Xpluginsdir"/>
- <compilerarg file="${build-quick.dir}/misc/scala-devel/plugins"/>
- </staged-scalac>
+ args="-Xplugin-require:continuations -P:continuations:enable -Xpluginsdir ${build-quick.dir}/misc/scala-devel/plugins"/>
<stopwatch name="quick.plugins.timer" action="total"/>
</do>
@@ -1169,28 +1250,13 @@ targets exercised:
<!-- ===========================================================================
BOOTSTRAPPING BUILD (STRAP)
============================================================================ -->
- <target name="strap.lib" depends="quick.done">
- <staged-build with="quick" stage="strap" project="library" srcpath="${src.dir}/library" includes="lib.rootdoc.includes">
- <pre>
- <staged-javac stage="strap" project="library" args="-XDignore.symbol.file"/> <!-- TODO: args="-XDignore.symbol.file" necessary?? -->
- <staged-javac stage="strap" project="actors" destproject="library"/>
- </pre>
- <post>
- <staged-scalac with="quick" stage="strap" project="actors" destproject="library"/>
- </post>
- </staged-build>
+ <target name="strap.done" depends="pack.done">
+ <staged-build with="pack" stage="strap" project="library" srcpath="${src.dir}/library" includes="lib.rootdoc.includes"/>
+ <staged-build with="pack" stage="strap" project="msil" java-excludes="**/tests/**"/>
+ <staged-build with="pack" stage="strap" project="reflect"/>
+ <staged-build with="pack" stage="strap" project="compiler"/>
</target>
- <target name="strap.reflect" depends="strap.lib"> <staged-build with="pack" stage="strap" project="reflect"/> </target>
- <target name="strap.comp" depends="strap.reflect">
- <staged-build with="pack" stage="strap" project="compiler">
- <pre>
- <staged-javac stage="strap" project="msil" destproject="compiler" excludes="**/tests/**"/>
- <staged-scalac with="quick" stage="strap" project="msil" destproject="compiler"/>
- </pre>
- </staged-build>
- </target>
- <target name="strap.done" depends="strap.comp"/>
<target name="strap-opt" description="Optimized version of strap.done."> <optimized name="strap.done"/></target>
@@ -1286,7 +1352,7 @@ targets exercised:
TEST SUITE
============================================================================ -->
<!-- bootstrapping stability: compare {quick,strap}/(lib|reflect|comp) -->
- <target name="test.stability" depends="quick.lib, quick.reflect, quick.comp, strap.lib, strap.reflect, strap.comp">
+ <target name="test.stability" depends="strap.done">
<exec osfamily="unix" vmlauncher="false" executable="${basedir}/tools/stability-test.sh" failonerror="true" />
<!-- I think doing it this way means it will auto-pass on windows... that's the idea. If not, something like this. -->
<!-- <exec osfamily="windows" executable="foo" failonerror="false" failifexecutionfails="false" /> -->
Something went wrong with that request. Please try again.