diff options
30 files changed, 1087 insertions, 1067 deletions
@@ -4,6 +4,7 @@ xmlns:artifact="urn:maven-artifact-ant" xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors"> <include file="test/build-partest.xml" as="partest"/> + <include file="src/build/maven/maven-deploy.xml" as="maven-deploy"/> <description> SuperSabbus for Scala core, builds the scala library and compiler. It can also package it as a simple distribution, tests it for stable bootstrapping and against the Scala test suite. @@ -28,7 +29,10 @@ scalacArgs examples: "-Dscalac.args=\"-Yrangepos\" -Dpartest.scalac_opts=\"-Yrangepos\"" targets exercised: - locker.done build-opt nightly test.suite test.continuations.suite test.scaladoc + distpack-maven-opt nightly locker.done build-opt test.suite test.continuations.suite test.scaladoc + +NOTE: after distpack-maven-opt, it is expected there's a build file in dists/maven/latest that defines targets deploy and deploy.local +TODO: get rid of this separate step --> <!-- To use Zinc with the ant build: @@ -65,20 +69,30 @@ TODO: <target name="fastdist-opt" description="Optimized version of fastdist."> <optimized name="fastdist"/></target> <!-- packaging --> - <target name="distpack" depends="dist.done, docs.done"> - <ant antfile="${src.dir}/build/pack.xml" target="pack-all.done" inheritall="yes" inheritrefs="yes"/></target> - - <target name="distpack-maven" depends="dist.done, docs.done"> - <ant antfile="${src.dir}/build/pack.xml" target="pack-maven.done" inheritall="yes" inheritrefs="yes"/></target> + <target name="distpack" depends="pack-archives.done, pack-maven.done"/> + <target name="distpack-maven" depends="pack-maven.done"/> <target name="distpack-opt" description="Builds an optimised distribution."> <optimized name="distpack"/></target> <target name="distpack-maven-opt" description="Builds an optimised maven distribution."><optimized name="distpack-maven"/></target> - <target name="all.done" depends="dist.done, test.done"/> + <target name="publish-core-signed-opt" description="Builds an untested optimised core (library/reflect/compiler) and publishes to maven, signed."> + <optimized name="publish-core-signed"/> + </target> + <target name="publish-core-signed-opt-nodocs" description="Builds an untested, undocumented optimised core (library/reflect/compiler) and publishes to maven, signed."> + <antcall target="publish-core-signed"> + <param name="docs.skip" value="1"/> + <param name="scalac.args.optimise" value="-optimise"/> + </antcall> + </target> + <target name="publish-core-local-nodocs" description="Builds an untested, undocumented core (library/reflect/compiler) and locally publishes to maven"> + <antcall target="publish-core-local"> + <param name="docs.skip" value="1"/> + </antcall> + </target> + + <target name="all.done" depends="test.done, distpack"/> - <!-- must use depends for all.done, not antcall: need the properties defined in there (dist.dir) --> - <target name="nightly-nopt" depends="all.done, docs.done"> - <ant antfile="${src.dir}/build/pack.xml" target="pack-all.done" inheritall="yes" inheritrefs="yes"/></target> + <target name="nightly-nopt" depends="all.done"/> <target name="nightly"><optimized name="nightly-nopt"/></target> <target name="nightly.checkall"> @@ -561,7 +575,8 @@ TODO: <if><isset property="locker.skip"/><then> <echo message="Using STARR to build the quick stage (skipping locker)."/> <path id="locker.compiler.path" refid="starr.compiler.path"/> - <!-- this is cheating, but should be close enough: --> + <!-- this is cheating (we don't know the classpath used to build starr) + but should be close enough: --> <path id="locker.compiler.build.path" refid="starr.compiler.path"/> <property name="locker.locked" value="locker skipped"/></then> <else> @@ -586,11 +601,6 @@ TODO: <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.reflect.build.path"> <path refid="locker.library.build.path"/> <pathelement location="${build-locker.dir}/classes/reflect"/> @@ -753,18 +763,34 @@ TODO: <path refid="asm.classpath"/> </path> - <!-- MISC --> - <path id="docs.compiler.path"> + <!-- DOCS --> + <path id="docs.library.build.path"> <path refid="quick.library.build.path"/> </path> + <path id="docs.reflect.build.path"> <path refid="quick.reflect.build.path"/> </path> + <path id="docs.compiler.build.path"> <path refid="quick.compiler.build.path"/> </path> + <path id="docs.scalap.build.path"> <path refid="quick.scalap.build.path"/> </path> + <path id="docs.continuations-plugin.build.path"> <path refid="quick.plugins.build.path"/> </path> + <path id="docs.continuations-library.build.path"> <path refid="quick.plugins.build.path"/> </path> + <path id="docs.actors.build.path"> <path refid="quick.actors.build.path"/> </path> + <path id="docs.swing.build.path"> <path refid="quick.swing.build.path"/> </path> + + <!-- run-time classpath for scaladoc: should be resolved through maven once it's an actual module --> + <path id="scaladoc.classpath"> <path refid="external-modules-nocore"/> <pathelement location="${build-pack.dir}/lib/scala-library.jar"/> <pathelement location="${build-pack.dir}/lib/scala-reflect.jar"/> <pathelement location="${build-pack.dir}/lib/scala-compiler.jar"/> - <pathelement location="${build-pack.dir}/lib/scalap.jar"/> - <pathelement location="${build-pack.dir}/lib/scala-actors.jar"/> <pathelement location="${ant.jar}"/> <path refid="aux.libs"/> </path> + <path id="manual.build.path"> + <path refid="external-modules-nocore"/> <!-- xml --> + <pathelement location="${build-pack.dir}/lib/scala-library.jar"/> + <pathelement location="${build.dir}/manmaker/classes"/> + <path refid="aux.libs"/> <!-- for ant --> + </path> + + <!-- MISC --> <path id="sbt.compile.build.path"> <path refid="quick.compiler.build.path"/> <pathelement location="${build-quick.dir}/classes/repl"/> @@ -773,10 +799,6 @@ TODO: <pathelement location="${sbt.interface.jar}"/> </path> - <path id="manual.classpath"> - <pathelement location="${build-pack.dir}/lib/scala-library.jar"/> - <pathelement location="${build.dir}/manmaker/classes"/> - </path> <!-- This is the classpath used to run partest, which is what it uses to run the compiler and find other required jars. @@ -1180,52 +1202,57 @@ TODO: <attribute name="dir" default="@{project}"/> <attribute name="title"/> <attribute name="docroot" default="NOT SET"/> + <attribute name="skipPackages" default=""/> + <element name="includes" implicit="true"/> <sequential> <staged-uptodate stage="docs" project="@{project}"> <check><srcfiles dir="${src.dir}/@{dir}"/></check> <do> - <if><not><isset property="docs.skip"/></not><then> - <stopwatch name="docs.@{project}.timer"/> - <mkdir dir="${build-docs.dir}/@{project}"/> - <if><equals arg1="@{docroot}" arg2="NOT SET"/><then> - <!-- TODO: introduce docs.@{project}.build.path for classpathref --> - <scaladoc - destdir="${build-docs.dir}/@{project}" - doctitle="@{title}" - docversion="${version.number}" - sourcepath="${src.dir}" - classpathref="docs.compiler.path" - srcdir="${src.dir}/@{dir}" - addparams="${scalac.args.all}" - implicits="on" - diagrams="on" - groups="on" - rawOutput="${scaladoc.raw.output}" - noPrefixes="${scaladoc.no.prefixes}"> - <includes/> - </scaladoc> - </then><else> - <scaladoc - destdir="${build-docs.dir}/@{project}" - doctitle="@{title}" - docversion="${version.number}" - sourcepath="${src.dir}" - classpathref="docs.compiler.path" - srcdir="${src.dir}/@{dir}" - docRootContent="${src.dir}/@{project}/@{docroot}" - addparams="${scalac.args.all}" - implicits="on" - diagrams="on" - groups="on" - rawOutput="${scaladoc.raw.output}" - noPrefixes="${scaladoc.no.prefixes}"> - <includes/> - </scaladoc> - </else></if> - <stopwatch name="docs.@{project}.timer" action="total"/> - </then></if> + <stopwatch name="docs.@{project}.timer"/> + <mkdir dir="${build-docs.dir}/@{project}"/> + <if><equals arg1="@{docroot}" arg2="NOT SET"/><then> + <scaladoc + destdir="${build-docs.dir}/@{project}" + doctitle="@{title}" + docfooter="epfl" + docversion="${version.number}" + sourcepath="${src.dir}" + classpathref="docs.@{project}.build.path" + srcdir="${src.dir}/@{dir}" + addparams="${scalac.args.all}" + implicits="on" + diagrams="on" + groups="on" + rawOutput="${scaladoc.raw.output}" + noPrefixes="${scaladoc.no.prefixes}" + docUncompilable="${src.dir}/library-aux" + skipPackages="@{skipPackages}"> + <includes/> + </scaladoc> + </then><else> + <scaladoc + destdir="${build-docs.dir}/@{project}" + doctitle="@{title}" + docfooter="epfl" + docversion="${version.number}" + sourcepath="${src.dir}" + classpathref="docs.@{project}.build.path" + srcdir="${src.dir}/@{dir}" + docRootContent="${src.dir}/@{project}/@{docroot}" + addparams="${scalac.args.all}" + implicits="on" + diagrams="on" + groups="on" + rawOutput="${scaladoc.raw.output}" + noPrefixes="${scaladoc.no.prefixes}" + docUncompilable="${src.dir}/library-aux" + skipPackages="@{skipPackages}"> + <includes/> + </scaladoc> + </else></if> + <stopwatch name="docs.@{project}.timer" action="total"/> </do> </staged-uptodate> </sequential> @@ -1240,9 +1267,6 @@ TODO: <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.reflect" depends="locker.lib" unless="locker.locked"> <staged-build with="starr" stage="locker" project="reflect"/></target> @@ -1264,9 +1288,6 @@ TODO: <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.actors" depends="quick.lib"> - <staged-build with="locker" stage="quick" project="actors"/> </target> - <target name="quick.reflect" depends="quick.lib"> <staged-build with="locker" stage="quick" project="reflect"/> </target> @@ -1276,15 +1297,18 @@ TODO: <target name="quick.repl" depends="quick.comp"> <staged-build with="locker" stage="quick" project="repl"/> </target> - <target name="quick.scalap" depends="quick.repl"> - <staged-build with="locker" stage="quick" project="scalap"/> </target> - <target name="quick.scaladoc" depends="quick.comp"> <staged-build with="locker" stage="quick" project="scaladoc" version="scaladoc"/> </target> <target name="quick.interactive" depends="quick.comp, quick.scaladoc"> <staged-build with="locker" stage="quick" project="interactive"/> </target> + <target name="quick.scalap" depends="quick.repl"> + <staged-build with="locker" stage="quick" project="scalap"/> </target> + + <target name="quick.actors" depends="quick.lib"> + <staged-build with="locker" stage="quick" project="actors"/> </target> + <target name="quick.swing" depends="quick.actors, quick.lib" if="has.java6"> <staged-build with="locker" stage="quick" project="swing"/> </target> @@ -1323,7 +1347,9 @@ TODO: </staged-uptodate> </target> - <target name="quick.bin" depends="quick.lib, quick.reflect, quick.comp, quick.repl, quick.scalap, quick.interactive, quick.swing, quick.plugins, quick.scaladoc, quick.partest-extras"> + <target name="quick.modules" depends="quick.repl, quick.scaladoc, quick.interactive, quick.scalap, quick.swing, quick.plugins"/> + + <target name="quick.bin" depends="quick.lib, quick.reflect, quick.comp, quick.modules"> <staged-bin stage="quick" classpathref="quick.bin.tool.path"/> </target> @@ -1334,17 +1360,9 @@ TODO: <!-- =========================================================================== PACKED QUICK BUILD (PACK) ============================================================================ --> - <target name="pack.lib" depends="quick.lib, quick.plugins, forkjoin.done"> - <staged-pack project="library"/></target> + <target name="pack.lib" depends="quick.lib, quick.plugins, forkjoin.done"> <staged-pack project="library"/></target> - <target name="pack.actors" depends="quick.lib"> <staged-pack project="actors"/> </target> - <target name="pack.swing" if="has.java6" depends="quick.swing"> <staged-pack project="swing"/> </target> - <target name="pack.reflect" depends="quick.reflect"> <staged-pack project="reflect"/> </target> - <target name="pack.partest-extras" depends="quick.partest-extras"> - <staged-pack project="partest-extras"/> - <staged-pack project="partest-javaagent" - manifest="${src.dir}/partest-javaagent/scala/tools/partest/javaagent/MANIFEST.MF"/> - </target> + <target name="pack.reflect" depends="quick.reflect"> <staged-pack project="reflect"/> </target> <target name="pack.comp" depends="quick.comp, quick.scaladoc, quick.interactive, quick.repl, asm.done"> <staged-pack project="compiler" manifest="${build-pack.dir}/META-INF/MANIFEST.MF"> @@ -1372,24 +1390,38 @@ TODO: </staged-pack> </target> + <target name="pack.actors" depends="quick.actors"> <staged-pack project="actors"/> </target> + <target name="pack.swing" if="has.java6" depends="quick.swing"> <staged-pack project="swing"/> </target> + <target name="pack.plugins" depends="quick.plugins"> <staged-pack project="plugins" targetdir="misc/scala-devel/plugins" targetjar="continuations.jar"/> </target> <target name="pack.scalap" depends="quick.scalap"> <staged-pack project="scalap" targetjar="scalap.jar"/> </target> - <target name="pack.bin" depends="pack.comp, pack.lib, pack.actors, pack.plugins, pack.reflect, pack.scalap, pack.swing, pack.partest-extras"> + <target name="pack.core" depends="pack.reflect, pack.comp, pack.lib"/> + + <target name="pack.modules" depends="pack.core, pack.actors, pack.swing, pack.plugins, pack.scalap"> <copy todir="${build-pack.dir}/lib"> <path refid="external-modules-nocore" /> <mapper type="flatten" /> </copy> + </target> + <target name="scaladoc.task" depends="pack.modules" unless="docs.skip"> + <taskdef resource="scala/tools/ant/antlib.xml" classpathref="scaladoc.classpath"/> + </target> + + <target name="pack.partest-extras" depends="quick.partest-extras"> + <staged-pack project="partest-extras"/> + <staged-pack project="partest-javaagent" + manifest="${src.dir}/partest-javaagent/scala/tools/partest/javaagent/MANIFEST.MF"/> + </target> + + <target name="pack.bin" depends="pack.core, pack.modules, pack.partest-extras"> <staged-bin stage="pack"/> </target> <!-- depend on quick.done so quick.bin is run when pack.done is --> - <target name="pack.done" depends="quick.done, pack.bin"> - <!-- copy dependencies to build/pack/lib, it only takes a second so don't bother with uptodate checks --> - <taskdef resource="scala/tools/ant/antlib.xml" classpathref="docs.compiler.path"/> - </target> + <target name="pack.done" depends="quick.done, pack.bin"/> <!-- =========================================================================== @@ -1431,73 +1463,121 @@ TODO: <!-- =========================================================================== OSGi Artifacts ============================================================================ --> - <target name="osgi.done" depends="pack.done"> - <mkdir dir="${build-osgi.dir}"/> + <macrodef name="make-bundle"> + <attribute name="name" /> + <attribute name="bundleName" description="A value for Bundle-Name, usually a textual description"/> + <attribute name="jar" default="${build-pack.dir}/lib/@{name}.jar" /> + <element name="srcs" description="Sources for this bundle" optional="true" implicit="true"/> + <attribute name="src" default="true"/> + <attribute name="version" default="${osgi.version.number}"/> + <attribute name="namesuffix" default=""/> + <attribute name="pkg" default=""/> + + <sequential> + <copy file="${src.dir}/build/bnd/@{name}.bnd" tofile="${build-osgi.dir}/@{name}.bnd" overwrite="true"> + <filterset> + <filter token="VERSION" value="${osgi.version.number}" /> + <filter token="SCALA_BINARY_VERSION" value="${scala.binary.version}" /> + </filterset> + </copy> + <bnd classpath="@{jar}" + eclipse="false" + failok="false" + exceptions="true" + files="${build-osgi.dir}/@{name}.bnd" + output="${build-osgi.dir}"/> + <if><equals arg1="@{src}" arg2="true"/><then> + <!-- + A jar-like task that creates an OSGi source bundle. It adds the required MANIFEST.MF headers that allow + Eclipse to match sources with the corresponding binaries. + --> + <jar whenmanifestonly="fail" destfile="${build-osgi.dir}/@{name}-src.jar"> + <srcs/> + <manifest> + <attribute name="Manifest-Version" value="1.0"/> + <attribute name="Bundle-Name" value="@{bundleName} Sources"/> + <attribute name="Bundle-SymbolicName" value="org.scala-lang.@{pkg}@{name}@{namesuffix}.source"/> + <attribute name="Bundle-Version" value="@{version}"/> + <attribute name="Eclipse-SourceBundle" value="org.scala-lang.@{pkg}@{name}@{namesuffix};version="@{version}";roots:="."" /> + </manifest> + </jar> + </then></if> + </sequential> + </macrodef> - <!-- simplify fixing pom versions --> - <macrodef name="make-bundle"> - <attribute name="name" /> - <attribute name="version" /> - <attribute name="jar" default="${build-pack.dir}/lib/@{name}.jar" /> - <sequential> - <copy file="${src.dir}/build/bnd/@{name}.bnd" tofile="${build-osgi.dir}/@{name}.bnd" overwrite="true"> - <filterset> - <filter token="VERSION" value="@{version}" /> - </filterset> - </copy> - <bnd classpath="@{jar}" - eclipse="false" - failok="false" - exceptions="true" - files="${build-osgi.dir}/@{name}.bnd" - output="${build-osgi.dir}"/> - </sequential> - </macrodef> - <macrodef name="make-plugin-bundle"> - <attribute name="name" /> - <attribute name="version" /> - <sequential> - <copy file="${src.dir}/build/bnd/@{name}.bnd" tofile="${build-osgi.dir}/@{name}.bnd" overwrite="true"> - <filterset> - <filter token="VERSION" value="@{version}" /> - </filterset> - </copy> - <bnd classpath="${build-pack.dir}/misc/scala-devel/plugins/@{name}.jar" - eclipse="false" - failok="false" - exceptions="true" - files="${build-osgi.dir}/@{name}.bnd" - output="${build-osgi.dir}"/> - </sequential> - </macrodef> - <uptodate property="osgi.bundles.available" targetfile="${build-osgi.dir}/bundles.complete"> + <target name="osgi.core" depends="pack.core"> + <mkdir dir="${build-osgi.dir}"/> + + <uptodate property="osgi.bundles.available" targetfile="${build-osgi.dir}/bundles.core.complete"> <srcfiles dir="${basedir}"> <include name="build.xml"/> <include name="src/build/bnd/*.bnd"/> - <include name="${build-pack.dir}/lib/*.jar"/> + <include name="${build-pack.dir}/lib/scala-library.jar"/> + <include name="${build-pack.dir}/lib/scala-reflect.jar"/> + <include name="${build-pack.dir}/lib/scala-compiler.jar"/> </srcfiles> - <srcfiles dir="${build-pack.dir}"> - <include name="**/*"/> + </uptodate> + + <if><not><isset property="osgi.bundles.available"/></not><then> + <stopwatch name="osgi.core.timer"/> + <make-bundle name="scala-library" bundleName="Scala Library"> + <fileset dir="${src.dir}/library"/> + <fileset dir="${src.dir}/continuations/library"/> + </make-bundle> + + <make-bundle name="scala-reflect" bundleName="Scala Reflect"> + <fileset dir="${src.dir}/reflect"/> + </make-bundle> + + <make-bundle name="scala-compiler" bundleName="Scala Compiler"> + <fileset dir="${src.dir}/compiler"/> + <fileset dir="${src.dir}/repl"/> + <fileset dir="${src.dir}/scaladoc"/> + <fileset dir="${src.dir}/interactive"/> + </make-bundle> + + <touch file="${build-osgi.dir}/bundles.core.complete" verbose="no"/> + <stopwatch name="osgi.core.timer" action="total"/> + </then></if> + </target> + + <target name="osgi.done" depends="pack.done, osgi.core"> + <uptodate property="osgi.bundles.available" targetfile="${build-osgi.dir}/bundles.all.complete"> + <srcfiles dir="${basedir}"> + <include name="build.xml"/> + <include name="src/build/bnd/*.bnd"/> + <include name="${build-pack.dir}/lib/scala-actors.jar"/> + <include name="${build-pack.dir}/misc/scala-devel/plugins/continuations.jar"/> + <include name="${build-pack.dir}/lib/scala-swing.jar"/> + <include name="${scala-parser-combinators}"/> + <include name="${scala-xml}"/> </srcfiles> - <srcfiles file="${build-pack.dir}/lib/*.jar"/> </uptodate> <if><not><isset property="osgi.bundles.available"/></not><then> - <stopwatch name="osgi.bundle.timer"/> - <make-bundle name="scala-library" version="${osgi.version.number}" /> - <make-bundle name="scala-actors" version="${osgi.version.number}" /> - <make-bundle name="scala-parser-combinators" version="${osgi.version.number}" jar="${scala-parser-combinators}"/> - <make-bundle name="scala-reflect" version="${osgi.version.number}" /> - <make-bundle name="scala-compiler" version="${osgi.version.number}" /> - <make-plugin-bundle name="continuations" version="${osgi.version.number}" /> - <make-bundle name="scala-xml" version="${osgi.version.number}" jar="${scala-xml}"/> - <touch file="${build-osgi.dir}/bundles.complete" verbose="no"/> + <stopwatch name="osgi.all.timer"/> + + + <make-bundle name="scala-actors" bundleName="Scala Actors"> + <fileset dir="${src.dir}/actors"/> + </make-bundle> + + <make-bundle name="continuations" pkg="plugins." jar="${build-pack.dir}/misc/scala-devel/plugins/continuations.jar" bundleName="Scala Continuations Plugin"> + <fileset dir="${src.dir}/continuations/plugin"/> + </make-bundle> <if><isset property="has.java6"/><then> - <make-bundle name="scala-swing" version="${osgi.version.number}"/></then> - </if> - <stopwatch name="osgi.bundle.timer" action="total"/> + <make-bundle name="scala-swing" version="${osgi.version.number}" bundleName="Scala Swing"> + <fileset dir="${src.dir}/swing"/> + </make-bundle> + </then></if> + + <make-bundle name="scala-parser-combinators" pkg="modules." jar="${scala-parser-combinators}" src="false" bundleName="Scala Parser Combinators"/> + <make-bundle name="scala-xml" pkg="modules." jar="${scala-xml}" src="false" bundleName="Scala XML"/> + + <touch file="${build-osgi.dir}/bundles.all.complete" verbose="no"/> + <stopwatch name="osgi.all.timer" action="total"/> </then></if> </target> @@ -1752,7 +1832,7 @@ TODO: <!-- =========================================================================== DOCUMENTATION ============================================================================ --> - <target name="docs.start" depends="pack.done"> + <target name="docs.start" depends="scaladoc.task" unless="docs.skip"> <!-- Set the github commit scaladoc sources point to --> <!-- For releases, look for the tag with the same name as the maven version --> <condition property="scaladoc.git.commit" value="v${maven.version.number}"> @@ -1773,78 +1853,64 @@ TODO: <property name="scaladoc.no.prefixes" value="no"/> </target> - <target name="docs.lib" depends="docs.start"> - <staged-uptodate stage="docs" project="library"> - <check><srcfiles dir="${src.dir}"> - <include name="library/**"/> - <include name="swing/**"/> - <include name="actors/**"/> - <include name="reflect/**"/> - <include name="continuations/library/**"/> - </srcfiles></check> - <do> - <stopwatch name="docs.lib.timer"/> - <mkdir dir="${build-docs.dir}/library"/> - <if><not><isset property="docs.skip"/></not><then> - <!-- last three attributes not supported by staged-docs: --> - <scaladoc - destdir="${build-docs.dir}/library" - doctitle="Scala Standard Library API (Scaladoc)" - docversion="${version.number}" - docsourceurl="${scaladoc.url}€{FILE_PATH}.scala#L1" - sourcepath="${src.dir}" - classpathref="docs.compiler.path" - addparams="${scalac.args.all}" - docRootContent="${src.dir}/library/rootdoc.txt" - implicits="on" - diagrams="on" - groups="on" - rawOutput="${scaladoc.raw.output}" - noPrefixes="${scaladoc.no.prefixes}" - docfooter="epfl" - docUncompilable="${src.dir}/library-aux" - skipPackages="scala.reflect.macros.internal:scala.reflect.internal:scala.reflect.io:scala.concurrent.impl"> - <src> - <files includes="${src.dir}/actors"/> - <files includes="${src.dir}/library"/> - <files includes="${src.dir}/reflect"/> - <files includes="${src.dir}/swing"/> - <files includes="${src.dir}/continuations/library"/> - </src> - <include name="**/*.scala"/> - <exclude name="reflect/Code.scala"/> - <exclude name="reflect/Print.scala"/> - <exclude name="reflect/Symbol.scala"/> - <exclude name="reflect/Tree.scala"/> - <exclude name="reflect/Type.scala"/> - <exclude name="runtime/*$.scala"/> - <exclude name="runtime/ScalaRunTime.scala"/> - <exclude name="runtime/StringAdd.scala"/> - </scaladoc> - </then></if> - <stopwatch name="docs.lib.timer" action="total"/> - </do> - </staged-uptodate> + <target name="docs.lib" depends="docs.start" unless="docs.skip"> + <staged-docs project="library" title="Scala Standard Library" docroot="rootdoc.txt" + skipPackages="scala.concurrent.impl"> + <include name="**/*.scala"/> + <exclude name="runtime/*$.scala"/> + <exclude name="runtime/ScalaRunTime.scala"/> + <exclude name="runtime/StringAdd.scala"/> + </staged-docs> </target> - <target name="docs.comp" depends="docs.start"> + <target name="docs.reflect" depends="docs.start" unless="docs.skip"> + <staged-docs project="reflect" title="Scala Reflection Library" + skipPackages="scala.reflect.macros.internal:scala.reflect.internal:scala.reflect.io"> + <include name="**/*.scala"/> + <exclude name="reflect/Code.scala"/> + <exclude name="reflect/Print.scala"/> + <exclude name="reflect/Symbol.scala"/> + <exclude name="reflect/Tree.scala"/> + <exclude name="reflect/Type.scala"/> + </staged-docs> + </target> + + <target name="docs.comp" depends="docs.start" unless="docs.skip"> <staged-docs project="compiler" title="Scala Compiler" docroot="rootdoc.txt"> <include name="**/*.scala"/> </staged-docs> </target> - <target name="docs.scalap" depends="docs.start"> + <target name="docs.actors" depends="docs.start" unless="docs.skip"> + <staged-docs project="actors" title="Scala Actors Library"> + <include name="**/*.scala"/> + </staged-docs> + </target> + + <target name="docs.swing" depends="docs.start" unless="docs.skip"> + <staged-docs project="swing" title="Scala Swing Library"> + <include name="**/*.scala"/> + </staged-docs> + </target> + + <target name="docs.scalap" depends="docs.start" unless="docs.skip"> <staged-docs project="scalap" title="Scalap"> <include name="**/*.scala"/> </staged-docs> </target> - <target name="docs.continuations-plugin" depends="docs.start"> + <target name="docs.continuations-plugin" depends="docs.start" unless="docs.skip"> <staged-docs project="continuations-plugin" dir="continuations/plugin" title="Delimited Continuations Compiler Plugin"> <include name="**/*.scala"/> </staged-docs> </target> + <target name="docs.continuations-library" depends="docs.start" unless="docs.skip"> + <staged-docs project="continuations-library" dir="continuations/library" title="Delimited Continuations Library"> + <include name="**/*.scala"/> + </staged-docs> + </target> + <target name="docs.man" depends="docs.start"> <staged-uptodate stage="docs" project="manual"> <check><srcfiles dir="${src.dir}/manual"/></check> @@ -1852,16 +1918,16 @@ TODO: <mkdir dir="${build.dir}/manmaker/classes"/> <scalac destdir="${build.dir}/manmaker/classes" - classpathref="docs.compiler.path" + classpathref="manual.build.path" srcdir="${src.dir}/manual" includes="**/*.scala" - addparams="${scalac.args.all}"/> + addparams="${scalac.args.all} -language:implicitConversions"/> <mkdir dir="${build-docs.dir}/manual/man/man1"/> <mkdir dir="${build-docs.dir}/manual/html"/> <mkdir dir="${build-docs.dir}/manual/genman/man1"/> <taskdef name="genman" classname="scala.tools.docutil.ManMaker" - classpathref="manual.classpath"/> + classpathref="manual.build.path"/> <genman command="fsc, scala, scalac, scaladoc, scalap" htmlout="${build-docs.dir}/manual/html" manout="${build-docs.dir}/manual/genman"/> @@ -1882,54 +1948,59 @@ TODO: </staged-uptodate> </target> - <target name="docs.done" depends="docs.comp, docs.man, docs.lib, docs.scalap, docs.continuations-plugin"/> + <target name="docs.core" depends="docs.lib, docs.reflect, docs.comp" unless="docs.skip"/> + <target name="docs.done" depends="docs.core, docs.actors, docs.swing, docs.scalap, docs.continuations-plugin, docs.continuations-library" unless="docs.skip"/> <!-- =========================================================================== DISTRIBUTION ============================================================================ --> - <target name="dist.base" depends="pack.done, osgi.done"> + <target name="dist.base" depends="osgi.done"> <property name="dist.name" value="scala-${version.number}"/> <property name="dist.dir" value="${dists.dir}/${dist.name}"/> <macrodef name="copy-bundle"> <attribute name="name" /> + <attribute name="pkg" default=""/> + <attribute name="lib" default="lib/"/> + <attribute name="srcjar" default="${build-osgi.dir}/@{name}-src.jar"/> + <sequential> - <copy file="${build-osgi.dir}/org.scala-lang.@{name}.jar" - tofile="${dist.dir}/lib/@{name}.jar" overwrite="true"/> - </sequential> - </macrodef> - <macrodef name="copy-plugin-bundle"> - <attribute name="name" /> - <sequential> - <copy file="${build-osgi.dir}/org.scala-lang.plugins.@{name}.jar" - tofile="${dist.dir}/misc/scala-devel/plugins/@{name}.jar" - overwrite="true"/> + <copy tofile="${dist.dir}/@{lib}@{name}.jar" file="${build-osgi.dir}/org.scala-lang.@{pkg}@{name}.jar" overwrite="true"/> + <copy tofile="${dist.dir}/src/@{name}-src.jar" file="@{srcjar}" overwrite="true"/> </sequential> </macrodef> <mkdir dir="${dist.dir}/lib"/> - <copy toDir="${dist.dir}/lib" overwrite="true"> - <fileset dir="${build-pack.dir}/lib"> - <include name="scalap.jar"/> - </fileset> - </copy> + <mkdir dir="${dist.dir}/misc/scala-devel/plugins"/> + <mkdir dir="${dist.dir}/src"/> - <!-- TODO --> <copy todir="${dist.dir}/lib" overwrite="true"> <resources refid="repl.fileset"/> <mapper classpathref="maven-ant-tasks.classpath" classname="org.apache.maven.artifact.ant.VersionMapper" from="${repl.deps.versions}" to="flatten"/> </copy> - <mkdir dir="${dist.dir}/bin"/> - <!-- TODO - Stop being inefficient and don't copy OSGi bundles overtop other jars. --> + <!-- copy classfile jars and source jars from osgi build to dist --> <copy-bundle name="scala-library"/> - <copy-bundle name="scala-xml"/> - <copy-bundle name="scala-parser-combinators"/> <copy-bundle name="scala-reflect"/> + <copy-bundle name="scala-compiler"/> + <copy-bundle name="scala-swing"/> <copy-bundle name="scala-actors"/> - <copy-bundle name="scala-compiler"/> + + <copy-bundle pkg="modules." name="scala-xml" srcjar="${scala-xml-sources}"/> + <copy-bundle pkg="modules." name="scala-parser-combinators" srcjar="${scala-parser-combinators-sources}"/> + <copy-bundle pkg="plugins." name="continuations" lib="misc/scala-devel/plugins/"/> + + <!-- scalap --> + <copy toDir="${dist.dir}/lib" overwrite="true"> + <fileset dir="${build-pack.dir}/lib"> + <include name="scalap.jar"/> + </fileset> + </copy> + <jar whenmanifestonly="fail" destfile="${dist.dir}/src/scalap-src.jar" basedir="${src.dir}/scalap"/> + + <mkdir dir="${dist.dir}/bin"/> <copy toDir="${dist.dir}/bin" overwrite="true"> <fileset dir="${build-pack.dir}/bin"/> </copy> @@ -1938,8 +2009,6 @@ TODO: <chmod perm="ugo+rx" file="${dist.dir}/bin/scaladoc"/> <chmod perm="ugo+rx" file="${dist.dir}/bin/fsc"/> <chmod perm="ugo+rx" file="${dist.dir}/bin/scalap"/> - <mkdir dir="${dist.dir}/misc/scala-devel/plugins"/> - <copy-plugin-bundle name="continuations"/> </target> <target name="dist.doc" depends="dist.base, docs.done"> @@ -1961,98 +2030,232 @@ TODO: <exclude name="**/*.desired.sha1"/> </fileset> </copy> - <mkdir dir="${dist.dir}/doc/scala-devel-docs/tools"/> - <copy toDir="${dist.dir}/doc/scala-devel-docs/tools" overwrite="true"> - <fileset dir="${build-docs.dir}/manual/html"/> - </copy> <copy file="${src.dir}/swing/doc/README" toFile="${dist.dir}/doc/scala-devel-docs/README.scala-swing" overwrite="true"/> </target> - <target name="dist.man" depends="dist.base"> + <target name="dist.man" depends="dist.base, docs.man"> <mkdir dir="${dist.dir}/man"/> <copy toDir="${dist.dir}/man" overwrite="true"> <fileset dir="${build-docs.dir}/manual/man"/> </copy> + <mkdir dir="${dist.dir}/doc/scala-devel-docs/tools"/> + <copy toDir="${dist.dir}/doc/scala-devel-docs/tools" overwrite="true"> + <fileset dir="${build-docs.dir}/manual/html"/> + </copy> </target> - <!-- - A jar-like task that creates an OSGi source bundle. It adds the required MANIFEST.MF headers that allow - Eclipse to match sources with the corresponding binaries. - --> - <macrodef name="osgi.source.bundle"> - <attribute name="destfile" description="The jar file name"/> - <attribute name="symbolicName" description="The original bundle symbolic name (without .source at the end)"/> - <attribute name="bundleName" description="A value for Bundle-Name, usually a textual description"/> - <element name="file-sets" description="A sequence of fileset elements to be included in the jar" optional="true" implicit="true"/> + + <target name="dist.partial" depends="dist.base"> + <if><not><os family="windows"/></not><then> + <symlink link="${dists.dir}/latest" resource="${dist.name}" overwrite="true"/> + </then><else> <!-- XXX THIS PROBABLY DOES NOT WORK: copying must happen last during dist.done! is this guaranteed? --> + <copydir dest="${dists.dir}/latest" src="${dist.dir}"/> + </else></if> + </target> + + <target name="dist.done" depends="dist.doc, dist.man, dist.partial"/> + +<!-- =========================================================================== +MAIN DISTRIBUTION PACKAGING +============================================================================ --> + + <target name="pack-archives.done" depends="dist.done, docs.done"> + <macrodef name="tarz"> + <attribute name="name" description="The tar file name (without extension)."/> + <element name="file-sets" description="A sequence of fileset elements to be included in the tar balls." optional="false" implicit="true"/> + + <sequential> + <tar destfile="@{name}.tar" compression="none" longfile="gnu"> + <file-sets/> + </tar> + <gzip src="@{name}.tar" destfile="@{name}.tgz"/> + <if> + <not><equals arg1="${archives.skipxz}" arg2="true" /></not> + <then> + <exec executable="xz" failifexecutionfails="false"> + <arg line="-k -9e -S .xz @{name}.tar"/> + </exec> + <move file="@{name}.tar.xz" tofile="@{name}.txz" failonerror="false"/> + </then> + </if> + <delete file="@{name}.tar" /> + </sequential> + </macrodef> + + <mkdir dir="${dists.dir}/archives"/> + <property name="archive-base" value="${dists.dir}/archives/${dist.name}"/> + + <tarz name="${archive-base}"> + <tarfileset dir="${dist.dir}" prefix="${dist.name}" includes="bin/**" mode="755"/> + <tarfileset dir="${dist.dir}" prefix="${dist.name}" excludes="bin/**"/> + </tarz> + + <zip destfile="${archive-base}.zip"> + <zipfileset prefix="${dist.name}" dir="${dist.dir}"/> + </zip> + + <if><not><isset property="docs.skip"/></not><then> + <tarz name="${archive-base}-devel-docs"> + <tarfileset dir="${dist.dir}/doc/scala-devel-docs" prefix="${dist.name}-devel-docs"/> + </tarz> + </then></if> + + <tarz name="${archive-base}-sources"> + <tarfileset dir="${basedir}" prefix="${dist.name}-sources"> + <exclude name="bin/**"/> + <exclude name="build/**"/> + <exclude name="debian/**"/> + <exclude name="dists/**"/> + <exclude name="logs/**"/> + <exclude name="sandbox/**"/> + <exclude name="test/partest"/> + <exclude name=".git"/> + </tarfileset> + <tarfileset dir="${basedir}" prefix="${dist.name}-sources" filemode="755"> + <include name="test/partest"/> + </tarfileset> + </tarz> + + <!-- checksum everything --> + <checksum fileext=".md5"> + <fileset dir="${dists.dir}/archives"> + <include name="${dist.name}*"/> + </fileset> + </checksum> + + <!-- UNUSED: create 'scala-latest-sources.tgz' alias (or copy, on windows) + we use github's source download feature + <if><isset property="os.win"/><then> + <copy tofile="${dists.dir}/archives/scala-latest-sources.tgz" overwrite="true"> + <fileset dir="${dists.dir}/archives"> + <include name="scala-${version.number}-sources.tgz"/> + </fileset> + </copy> + </then><else> + (be sure to use a relative symlink to make the distribution portable, + `resource` is relative to directory of `link`) + <symlink link="${dists.dir}/archives/scala-latest-sources.tgz" + resource="scala-${version.number}-sources.tgz" + overwrite="true"/> + </else></if> --> + </target> + + <macrodef name="mvn-package"> + <attribute name="dir" default=""/> + <attribute name="pkg" default=""/> + <attribute name="project"/> + <attribute name="name" default="scala-@{project}"/> + <attribute name="jarsuffix" default=""/> <sequential> - <jar whenmanifestonly="fail" destfile="@{destFile}"> - <file-sets/> - <manifest> - <attribute name="Manifest-Version" value="1.0"/> - <attribute name="Bundle-Name" value="@{bundleName}"/> - <attribute name="Bundle-SymbolicName" value="@{symbolicName}.source"/> - <attribute name="Bundle-Version" value="${osgi.version.number}"/> - <attribute name="Eclipse-SourceBundle" value="@{symbolicName};version="${osgi.version.number}";roots:="."" /> - </manifest> - </jar> + <local name="artifact-base"/> <property name="artifact-base" value="${maven-base}/@{dir}@{name}/@{name}"/> + + <mkdir dir="${maven-base}/@{dir}@{name}"/> + <copy tofile="${artifact-base}.jar" file="${build-osgi.dir}/org.scala-lang.@{pkg}@{name}@{jarsuffix}.jar" overwrite="true"/> + <copy tofile="${artifact-base}-src.jar" file="${build-osgi.dir}/@{name}-src.jar" overwrite="true"/> + <copy tofile="${artifact-base}-pom.xml" file="${src.dir}/build/maven/@{dir}/@{name}-pom.xml" overwrite="true"/> + + <if><not><isset property="docs.skip"/></not><then> + <jar destfile="${artifact-base}-docs.jar" basedir="${build-docs.dir}/@{project}" whenmanifestonly="fail"> + <include name="**/*"/> + </jar> + </then></if> </sequential> </macrodef> - <target name="dist.src" depends="dist.base"> - <mkdir dir="${dist.dir}/src"/> - <copy toDir="${dist.dir}/src" overwrite="true" flatten="true"> - <file file="${scala-xml-sources}"/> - <file file="${scala-parser-combinators-sources}"/> - </copy> + <target name="pack-maven.core" depends="osgi.core, docs.core"> + <property name="maven-base" value="${dists.dir}/maven/${version.number}"/> + <mkdir dir="${maven-base}"/> - <osgi.source.bundle destfile="${dist.dir}/src/scala-library-src.jar" - symbolicName="org.scala-lang.scala-library" - bundleName="Scala Library Sources"> - <fileset dir="${src.dir}/library"/> - <fileset dir="${src.dir}/continuations/library"/> - </osgi.source.bundle> - <osgi.source.bundle destfile="${dist.dir}/src/scala-actors-src.jar" - symbolicName="org.scala-lang.scala-actors" - bundleName="Scala Actors Sources"> - <fileset dir="${src.dir}/actors"/> - </osgi.source.bundle> - <osgi.source.bundle destfile="${dist.dir}/src/scala-compiler-src.jar" - symbolicName="org.scala-lang.scala-compiler" - bundleName="Scala Compiler Sources"> - <fileset dir="${src.dir}/compiler"/> - <fileset dir="${src.dir}/repl"/> - <fileset dir="${src.dir}/scaladoc"/> - <fileset dir="${src.dir}/interactive"/> - <fileset dir="${src.dir}/continuations/plugin"/> - </osgi.source.bundle> - <osgi.source.bundle destfile="${dist.dir}/src/scala-swing-src.jar" - symbolicName="org.scala-lang.scala-swing" - bundleName="Scala Swing Sources"> - <fileset dir="${src.dir}/swing"/> - </osgi.source.bundle> - <osgi.source.bundle destfile="${dist.dir}/src/scala-reflect-src.jar" - symbolicName="org.scala-lang.scala-reflect" - bundleName="Scala Reflect Sources"> - <fileset dir="${src.dir}/reflect"/> - </osgi.source.bundle> - <jar whenmanifestonly="fail" destfile="${dist.dir}/src/scalap-src.jar" basedir="${src.dir}/scalap"/> + <mvn-package project="library"/> + <mvn-package project="reflect"/> + <mvn-package project="compiler"/> </target> - <target name="dist.partial" depends="dist.base"> - <if><not><os family="windows"/></not><then> - <symlink link="${dists.dir}/latest" resource="${dist.name}" overwrite="true"/> - </then><else> <!-- XXX THIS PROBABLY DOES NOT WORK: copying must happen last during dist.done! is this guaranteed? --> - <copydir dest="${dists.dir}/latest" src="${dist.dir}"/> + <target name="pack-maven.base" depends="pack-maven.core, osgi.done, docs.done"> + <mvn-package project="swing"/> + <mvn-package project="actors"/> + <mvn-package project="continuations-plugin" name="continuations" dir="plugins/" pkg="plugins."/> + + <!-- don't bother fitting scalap into the mould: it will move out soon --> + <copy tofile="${maven-base}/scalap/scalap-pom.xml" file="${src.dir}/build/maven/scalap-pom.xml" overwrite="true"/> + <copy tofile="${maven-base}/scalap/scalap.jar" file="${build-pack.dir}/lib/scalap.jar" overwrite="true"/> + <jar destfile="${maven-base}/scalap/scalap-src.jar" basedir="${src.dir}/scalap" whenmanifestonly="fail"/> + <if><not><isset property="docs.skip"/></not><then> + <jar destfile="${maven-base}/scalap/scalap-docs.jar" basedir="${build-docs.dir}/scalap"/> + </then></if> + </target> + + <target name="pack-maven.done" depends="pack-maven.base"> + <!-- Create dists/maven/latest alias and copy maven-deploy ant build there. --> + <if><isset property="os.win"/><then> + <copy todir="${dists.dir}/maven/latest" overwrite="true"> + <fileset dir="${maven-base}"/> + </copy> + </then><else> + <symlink link="${dists.dir}/maven/latest" + resource="${version.number}" + overwrite="true"/> </else></if> + <!-- copy build file and its dependencies --> + <copy todir="${maven-base}" + file="${lib-ant.dir}/ant-contrib.jar" overwrite="true"/> + <copy todir="${maven-base}" + file="${lib-ant.dir}/maven-ant-tasks-2.1.1.jar" overwrite="true"/> + <copy tofile="${maven-base}/build.xml" + file="${src.dir}/build/maven/maven-deploy.xml"/> + <!-- export properties for use when deploying --> + <echoproperties destfile="${maven-base}/build.properties"/> </target> - <target name="dist.done" depends="dist.doc, dist.man, dist.src, dist.partial"/> + <!-- keep these properties out of ${maven-base}/build.properties, dumped in pack-maven.done --> + <target name="init.maven" depends="init"> + <property name="remote.snapshot.repository" value="https://oss.sonatype.org/content/repositories/snapshots" /> + <property name="remote.release.repository" value="https://oss.sonatype.org/service/local/staging/deploy/maven2" /> + + <property name="local.snapshot.repository" value="${user.home}/.m2/repository" /> + <property name="local.release.repository" value="${user.home}/.m2/repository" /> + + <property name="repository.credentials.id" value="sonatype-nexus" /> + <property name="settings.file" value="${user.home}/.m2/settings.xml" /> + + <if><contains string="${maven.version.number}" substring="-SNAPSHOT"/><then> + <property name="remote.repository" value="${remote.snapshot.repository}"/> + <property name="local.repository" value="${local.snapshot.repository}"/> + </then><else> + <property name="remote.repository" value="${remote.release.repository}"/> + <property name="local.repository" value="${local.release.repository}"/> + </else></if> + </target> <!-- =========================================================================== + MAVEN PUBLISHING +============================================================================ --> + <!-- TODO: inline maven-deploy.xml here and remove it, once jenkins jobs no longer rely on it --> + <target name="publish" depends="pack-maven.base, init.maven" description="Publishes unsigned artifacts to the maven repo."> <deploy dir="${maven-base}/"/> </target> + <target name="publish.local" depends="pack-maven.base, init.maven" description="Publishes unsigned artifacts to the local maven repo."> <deploy dir="${maven-base}/" local="true"/> </target> + <target name="publish.signed" depends="pack-maven.base, init.maven" description="Publishes signed artifacts to the remote maven repo."> <deploy dir="${maven-base}/" signed="true"/> </target> + + <target name="publish-core" depends="pack-maven.core, init.maven"> + <deploy-one dir="${maven-base}/" name="scala-compiler" /> + <deploy-one dir="${maven-base}/" name="scala-library" /> + <deploy-one dir="${maven-base}/" name="scala-reflect" /> + </target> + <target name="publish-core-local" depends="pack-maven.core, init.maven"> + <deploy-one dir="${maven-base}/" name="scala-compiler" local="true"/> + <deploy-one dir="${maven-base}/" name="scala-library" local="true"/> + <deploy-one dir="${maven-base}/" name="scala-reflect" local="true"/> + </target> + <target name="publish-core-signed" depends="pack-maven.core, init.maven"> + <deploy-one dir="${maven-base}/" name="scala-compiler" signed="true"/> + <deploy-one dir="${maven-base}/" name="scala-library" signed="true"/> + <deploy-one dir="${maven-base}/" name="scala-reflect" signed="true"/> + </target> + +<!-- =========================================================================== STABLE REFERENCE (STARR) ============================================================================ --> <!-- Does not use any properties other than ${basedir}, so that it can diff --git a/src/build/bnd/scala-parser-combinators.bnd b/src/build/bnd/scala-parser-combinators.bnd index d712a4ba2a..6ffc3b2760 100644 --- a/src/build/bnd/scala-parser-combinators.bnd +++ b/src/build/bnd/scala-parser-combinators.bnd @@ -1,5 +1,5 @@ Bundle-Name: Scala Parser Combinators Library -Bundle-SymbolicName: org.scala-lang.scala-parser-combinators +Bundle-SymbolicName: org.scala-lang.modules.scala-parser-combinators ver: @VERSION@ Bundle-Version: ${ver} Export-Package: *;version=${ver} diff --git a/src/build/bnd/scala-xml.bnd b/src/build/bnd/scala-xml.bnd index 6203c57dfe..5d64c05e65 100644 --- a/src/build/bnd/scala-xml.bnd +++ b/src/build/bnd/scala-xml.bnd @@ -1,5 +1,5 @@ Bundle-Name: Scala XML Library -Bundle-SymbolicName: org.scala-lang.scala-xml +Bundle-SymbolicName: org.scala-lang.modules.scala-xml ver: @VERSION@ Bundle-Version: ${ver} Export-Package: *;version=${ver} diff --git a/src/build/maven/maven-deploy.xml b/src/build/maven/maven-deploy.xml index fbd6d4cd51..9e4215d297 100644 --- a/src/build/maven/maven-deploy.xml +++ b/src/build/maven/maven-deploy.xml @@ -6,10 +6,106 @@ SuperSabbus extension for deploying a distribution to Maven. THIS FILE IS MEANT TO BE RUN STANDALONE IN THE MAVEN "distpack" DIRECTORY </description> - <target name="boot"> + <macrodef name="deploy-one"> + <attribute name="dir" default=""/> + <attribute name="name" /> + <attribute name="local" default="false"/> + <attribute name="signed" default="false"/> + + <sequential> + <local name="path"/> <property name="path" value="@{dir}@{name}/@{name}"/> + + <echo>Deploying ${path}-[pom.xml|src.jar|docs.jar].</echo> + + <copy file="${path}-pom.xml" tofile="${path}-pom-filtered.xml" overwrite="true"> + <filterset> + <filter token="VERSION" value="${maven.version.number}" /> + <filter token="SCALA_BINARY_VERSION" value="${scala.binary.version}" /> + <filter token="XML_VERSION" value="${scala-xml.version.number}" /> + <filter token="PARSER_COMBINATORS_VERSION" value="${scala-parser-combinators.version.number}" /> + <filter token="RELEASE_REPOSITORY" value="${remote.release.repository}" /> + <filter token="SNAPSHOT_REPOSITORY" value="${remote.snapshot.repository}" /> + <filter token="JLINE_VERSION" value="${jline.version}" /> + </filterset> + </copy> + <artifact:pom id="@{name}.pom" file="${path}-pom-filtered.xml" /> + + <if><equals arg1="@{signed}" arg2="false"/><then> + <if><equals arg1="@{local}" arg2="false"/><then> + <artifact:deploy file="${path}.jar" settingsFile="${settings.file}"> + <artifact:remoteRepository url="${remote.repository}" id="${repository.credentials.id}" /> + <artifact:pom refid="@{name}.pom" /> + <artifact:attach type="jar" file="${path}-src.jar" classifier="sources" /> + <artifact:attach type="jar" file="${path}-docs.jar" classifier="javadoc" /> + </artifact:deploy> + </then><else> + <if><isset property="docs.skip"/><then> + <artifact:install file="${path}.jar"> + <artifact:localRepository path="${local.repository}" id="${repository.credentials.id}" /> + <artifact:pom refid="@{name}.pom" /> + <artifact:attach type="jar" file="${path}-src.jar" classifier="sources" /> + </artifact:install> + </then> + <else> + <artifact:install file="${path}.jar"> + <artifact:localRepository path="${local.repository}" id="${repository.credentials.id}" /> + <artifact:pom refid="@{name}.pom" /> + <artifact:attach type="jar" file="${path}-src.jar" classifier="sources" /> + <artifact:attach type="jar" file="${path}-docs.jar" classifier="javadoc" /> + </artifact:install> + </else> + </if> + </else></if> + </then><else> + <local name="repo"/> + <if><equals arg1="@{local}" arg2="false"/><then> + <property name="repo" value="${remote.repository}"/> + </then><else> + <property name="repo" value="${local.repository}"/> + </else></if> + <artifact:mvn failonerror="true"> + <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" /> + <arg value="-Durl=${repo}" /> + <arg value="-DrepositoryId=${repository.credentials.id}" /> + <arg value="-DpomFile=${path}-pom-filtered.xml" /> + <arg value= "-Dfile=${path}.jar" /> + <arg value="-Dsources=${path}-src.jar" /> + <arg value="-Djavadoc=${path}-docs.jar" /> + <arg value="-Pgpg" /> + <arg value="-Dgpg.useagent=true" /> + </artifact:mvn> + </else></if> + </sequential> + </macrodef> + + <macrodef name="deploy"> + <attribute name="dir" default=""/> + <attribute name="local" default="false"/> + <attribute name="signed" default="false"/> + + <sequential> + <deploy-one dir="@{dir}" name="scala-library" local="@{local}" signed="@{signed}"/> + <deploy-one dir="@{dir}" name="scala-reflect" local="@{local}" signed="@{signed}"/> + <deploy-one dir="@{dir}" name="scala-compiler" local="@{local}" signed="@{signed}"/> + <deploy-one dir="@{dir}" name="scala-actors" local="@{local}" signed="@{signed}"/> + <deploy-one dir="@{dir}" name="scala-swing" local="@{local}" signed="@{signed}"/> + <deploy-one dir="@{dir}" name="scalap" local="@{local}" signed="@{signed}"/> + <deploy-one dir="@{dir}plugins/" name="continuations" local="@{local}" signed="@{signed}"/> + </sequential> + </macrodef> + + <target name="boot.maven"> <!-- Pull in properties from build --> <property file="build.properties" /> + <!-- Set up Ant contrib tasks so we can use <if><then><else> instead of the clunky `unless` attribute --> + <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="ant-contrib.jar"/> + + <!-- Add our maven ant tasks --> + <path id="maven-ant-tasks.classpath" path="maven-ant-tasks-2.1.1.jar" /> + <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath" /> + </target> + <target name="init.maven" depends="boot.maven"> <property name="remote.snapshot.repository" value="https://oss.sonatype.org/content/repositories/snapshots" /> <property name="remote.release.repository" value="https://oss.sonatype.org/service/local/staging/deploy/maven2" /> @@ -19,15 +115,6 @@ <property name="repository.credentials.id" value="sonatype-nexus" /> <property name="settings.file" value="${user.home}/.m2/settings.xml" /> - <!-- Set up Ant contrib tasks so we can use <if><then><else> instead of the clunky `unless` attribute --> - <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="ant-contrib.jar"/> - - <!-- Add our maven ant tasks --> - <path id="maven-ant-tasks.classpath" path="maven-ant-tasks-2.1.1.jar" /> - <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath" /> - </target> - - <target name="init" depends="boot"> <if><contains string="${maven.version.number}" substring="-SNAPSHOT"/><then> <property name="remote.repository" value="${remote.snapshot.repository}"/> <property name="local.repository" value="${local.snapshot.repository}"/> @@ -39,96 +126,9 @@ <echo>Using server[${repository.credentials.id}] for maven repository credentials. Please make sure that your ~/.m2/settings.xml has the needed username/password for this server id </echo> - - <macrodef name="deploy-one"> - <attribute name="dir" default=""/> - <attribute name="name" /> - <attribute name="version" /> - <attribute name="local" /> - <attribute name="signed" /> - - <sequential> - <local name="path"/> <property name="path" value="@{dir}@{name}/@{name}"/> - - <echo>Deploying ${path}-[pom.xml|src.jar|docs.jar].</echo> - - <copy file="${path}-pom.xml" tofile="${path}-pom-filtered.xml" overwrite="true"> - <filterset> - <filter token="VERSION" value="@{version}" /> - <filter token="SCALA_BINARY_VERSION" value="${scala.binary.version}" /> - <filter token="XML_VERSION" value="${scala-xml.version.number}" /> - <filter token="PARSER_COMBINATORS_VERSION" value="${scala-parser-combinators.version.number}" /> - <filter token="RELEASE_REPOSITORY" value="${remote.release.repository}" /> - <filter token="SNAPSHOT_REPOSITORY" value="${remote.snapshot.repository}" /> - <filter token="JLINE_VERSION" value="${jline.version}" /> - </filterset> - </copy> - <artifact:pom id="@{name}.pom" file="${path}-pom-filtered.xml" /> - - <if><equals arg1="@{signed}" arg2="false"/><then> - <if><equals arg1="@{local}" arg2="false"/><then> - <artifact:deploy file="${path}.jar" settingsFile="${settings.file}"> - <artifact:remoteRepository url="${remote.repository}" id="${repository.credentials.id}" /> - <artifact:pom refid="@{name}.pom" /> - <artifact:attach type="jar" file="${path}-src.jar" classifier="sources" /> - <artifact:attach type="jar" file="${path}-docs.jar" classifier="javadoc" /> - </artifact:deploy> - </then><else> - <if><isset property="docs.skip"/><then> - <artifact:install file="${path}.jar"> - <artifact:localRepository path="${local.repository}" id="${repository.credentials.id}" /> - <artifact:pom refid="@{name}.pom" /> - <artifact:attach type="jar" file="${path}-src.jar" classifier="sources" /> - </artifact:install> - </then> - <else> - <artifact:install file="${path}.jar"> - <artifact:localRepository path="${local.repository}" id="${repository.credentials.id}" /> - <artifact:pom refid="@{name}.pom" /> - <artifact:attach type="jar" file="${path}-src.jar" classifier="sources" /> - </artifact:install> - </else> - </if> - </else></if> - </then><else> - <local name="repo"/> - <if><equals arg1="@{local}" arg2="false"/><then> - <property name="repo" value="${remote.repository}"/> - </then><else> - <property name="repo" value="${local.repository}"/> - </else></if> - <artifact:mvn> - <arg value="org.apache.maven.plugins:maven-gpg-plugin:1.3:sign-and-deploy-file" /> - <arg value="-Durl=${repo}" /> - <arg value="-DrepositoryId=${repository.credentials.id}" /> - <arg value="-DpomFile=${path}-pom-filtered.xml" /> - <arg value= "-Dfile=${path}.jar" /> - <arg value="-Dsources=${path}-src.jar" /> - <arg value="-Djavadoc=${path}-docs.jar" /> - <arg value="-Pgpg" /> - <arg value="-Dgpg.useagent=true" /> - </artifact:mvn> - </else></if> - </sequential> - </macrodef> - - <macrodef name="deploy"> - <attribute name="local" default="false"/> - <attribute name="signed" default="false"/> - - <sequential> - <deploy-one name="scala-actors" version="${maven.version.number}" local="@{local}" signed="@{signed}"/> - <deploy-one name="scala-compiler" version="${maven.version.number}" local="@{local}" signed="@{signed}"/> - <deploy-one name="scala-library" version="${maven.version.number}" local="@{local}" signed="@{signed}"/> - <deploy-one name="scala-reflect" version="${maven.version.number}" local="@{local}" signed="@{signed}"/> - <deploy-one name="scala-swing" version="${maven.version.number}" local="@{local}" signed="@{signed}"/> - <deploy-one name="scalap" version="${maven.version.number}" local="@{local}" signed="@{signed}"/> - <deploy-one dir="plugins/" name="continuations" version="${maven.version.number}" local="@{local}" signed="@{signed}"/> - </sequential> - </macrodef> </target> - <target name="deploy" depends="init" description="Deploys unsigned artifacts to the maven repo."> <deploy/> </target> - <target name="deploy.local" depends="init" description="Deploys unsigned artifacts to the local maven repo."> <deploy local="true"/> </target> - <target name="deploy.signed" depends="init" description="Deploys signed artifacts to the remote maven repo."> <deploy signed="true"/> </target> + <target name="deploy" depends="init.maven" description="Deploys unsigned artifacts to the maven repo."> <deploy/> </target> + <target name="deploy.local" depends="init.maven" description="Deploys unsigned artifacts to the local maven repo."> <deploy local="true"/> </target> + <target name="deploy.signed" depends="init.maven" description="Deploys signed artifacts to the remote maven repo."> <deploy signed="true"/> </target> </project> diff --git a/src/build/maven/plugins/continuations-pom.xml b/src/build/maven/plugins/continuations-pom.xml index 9abb0a36f0..8dc79c8664 100644 --- a/src/build/maven/plugins/continuations-pom.xml +++ b/src/build/maven/plugins/continuations-pom.xml @@ -1,54 +1,51 @@ -<project - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.scala-lang.plugins</groupId> - <artifactId>continuations</artifactId> - <packaging>jar</packaging> - <version>@VERSION@</version> +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang.plugins</groupId> + <artifactId>continuations</artifactId> + <packaging>jar</packaging> + <version>@VERSION@</version> <name>Scala Continuations Plugin</name> <description>Delimited continuations compilation for Scala</description> - <url>http://www.scala-lang.org/</url> - <inceptionYear>2010</inceptionYear> - <organization> - <name>LAMP/EPFL</name> - <url>http://lamp.epfl.ch/</url> - </organization> - <licenses> - <license> - <name>BSD-like</name> - <url>http://www.scala-lang.org/downloads/license.html - </url> - <distribution>repo</distribution> - </license> - </licenses> - <scm> - <connection>scm:git:git://github.com/scala/scala.git</connection> - <url>https://github.com/scala/scala.git</url> - </scm> - <issueManagement> - <system>JIRA</system> - <url>https://issues.scala-lang.org/</url> - </issueManagement> - - <dependencies> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-compiler</artifactId> - <version>@VERSION@</version> - </dependency> - </dependencies> - <distributionManagement> - <repository> - <id>scala-tools.org</id> - <url>@RELEASE_REPOSITORY@</url> - </repository> - <snapshotRepository> - <id>scala-tools.org</id> - <url>@SNAPSHOT_REPOSITORY@</url> - <uniqueVersion>false</uniqueVersion> - </snapshotRepository> - </distributionManagement> + <url>http://www.scala-lang.org/</url> + <inceptionYear>2010</inceptionYear> + <organization> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> + <dependencies> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-compiler</artifactId> + <version>@VERSION@</version> + </dependency> + </dependencies> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> + </distributionManagement> <developers> <developer> <id>lamp</id> diff --git a/src/build/maven/scala-actors-pom.xml b/src/build/maven/scala-actors-pom.xml index 3d37ef8174..424ac2898c 100644 --- a/src/build/maven/scala-actors-pom.xml +++ b/src/build/maven/scala-actors-pom.xml @@ -1,56 +1,54 @@ -<project - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.scala-lang</groupId> - <artifactId>scala-actors</artifactId> - <packaging>jar</packaging> - <version>@VERSION@</version> +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang</groupId> + <artifactId>scala-actors</artifactId> + <packaging>jar</packaging> + <version>@VERSION@</version> <name>Scala Actors library</name> <description>Deprecated Actors Library for Scala</description> - <url>http://www.scala-lang.org/</url> + <url>http://www.scala-lang.org/</url> <inceptionYear>2006</inceptionYear> <organization> - <name>LAMP/EPFL</name> - <url>http://lamp.epfl.ch/</url> - </organization> - <licenses> - <license> - <name>BSD-like</name> - <url>http://www.scala-lang.org/downloads/license.html - </url> - <distribution>repo</distribution> - </license> - </licenses> - <scm> - <connection>scm:git:git://github.com/scala/scala.git</connection> - <url>https://github.com/scala/scala.git</url> - </scm> - <issueManagement> - <system>JIRA</system> - <url>https://issues.scala-lang.org/</url> - </issueManagement> - <properties> - <info.apiURL>http://www.scala-lang.org/api/@VERSION@/</info.apiURL> - </properties> - <dependencies> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-library</artifactId> - <version>@VERSION@</version> - </dependency> - </dependencies> - <distributionManagement> - <repository> - <id>scala-tools.org</id> - <url>@RELEASE_REPOSITORY@</url> - </repository> - <snapshotRepository> - <id>scala-tools.org</id> - <url>@SNAPSHOT_REPOSITORY@</url> - <uniqueVersion>false</uniqueVersion> - </snapshotRepository> - </distributionManagement> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> + <properties> + <info.apiURL>http://www.scala-lang.org/api/@VERSION@/</info.apiURL> + </properties> + <dependencies> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-library</artifactId> + <version>@VERSION@</version> + </dependency> + </dependencies> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> + </distributionManagement> <developers> <developer> <id>lamp</id> diff --git a/src/build/maven/scala-compiler-pom.xml b/src/build/maven/scala-compiler-pom.xml index 8cc42c22ae..442fe6a8d5 100644 --- a/src/build/maven/scala-compiler-pom.xml +++ b/src/build/maven/scala-compiler-pom.xml @@ -1,83 +1,82 @@ -<project - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.scala-lang</groupId> - <artifactId>scala-compiler</artifactId> - <packaging>jar</packaging> - <version>@VERSION@</version> - <name>Scala Compiler</name> - <description>Compiler for the Scala Programming Language</description> - <url>http://www.scala-lang.org/</url> - <inceptionYear>2002</inceptionYear> - <organization> - <name>LAMP/EPFL</name> - <url>http://lamp.epfl.ch/</url> - </organization> - <licenses> - <license> - <name>BSD-like</name> - <url>http://www.scala-lang.org/downloads/license.html - </url> - <distribution>repo</distribution> - </license> - </licenses> - <scm> - <connection>scm:git:git://github.com/scala/scala.git</connection> - <url>https://github.com/scala/scala.git</url> - </scm> - <issueManagement> - <system>JIRA</system> - <url>https://issues.scala-lang.org/</url> - </issueManagement> - - <dependencies> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-library</artifactId> - <version>@VERSION@</version> - </dependency> - <dependency> <!-- for scaladoc --> - <groupId>org.scala-lang.modules</groupId> - <artifactId>scala-xml_@SCALA_BINARY_VERSION@</artifactId> - <version>@XML_VERSION@</version> - </dependency> - <dependency> <!-- for scaladoc --> - <groupId>org.scala-lang.modules</groupId> - <artifactId>scala-parser-combinators_@SCALA_BINARY_VERSION@</artifactId> - <version>@PARSER_COMBINATORS_VERSION@</version> - </dependency> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-reflect</artifactId> - <version>@VERSION@</version> - </dependency> - <dependency> - <groupId>jline</groupId> - <artifactId>jline</artifactId> - <version>@JLINE_VERSION@</version> - <optional>true</optional> - </dependency> - </dependencies> - <distributionManagement> - <repository> - <id>scala-tools.org</id> - <url>@RELEASE_REPOSITORY@</url> - </repository> - <snapshotRepository> - <id>scala-tools.org</id> - <url>@SNAPSHOT_REPOSITORY@</url> - <uniqueVersion>false</uniqueVersion> - </snapshotRepository> - </distributionManagement> - <developers> - <developer> - <id>lamp</id> - <name>EPFL LAMP</name> - </developer> - <developer> - <id>Typesafe</id> - <name>Typesafe, Inc.</name> - </developer> - </developers> +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang</groupId> + <artifactId>scala-compiler</artifactId> + <packaging>jar</packaging> + <version>@VERSION@</version> + <name>Scala Compiler</name> + <description>Compiler for the Scala Programming Language</description> + <url>http://www.scala-lang.org/</url> + <inceptionYear>2002</inceptionYear> + <organization> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> + <dependencies> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-library</artifactId> + <version>@VERSION@</version> + </dependency> + <dependency> + <!-- for scaladoc --> + <groupId>org.scala-lang.modules</groupId> + <artifactId>scala-xml_@SCALA_BINARY_VERSION@</artifactId> + <version>@XML_VERSION@</version> + </dependency> + <dependency> + <!-- for scaladoc --> + <groupId>org.scala-lang.modules</groupId> + <artifactId>scala-parser-combinators_@SCALA_BINARY_VERSION@</artifactId> + <version>@PARSER_COMBINATORS_VERSION@</version> + </dependency> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-reflect</artifactId> + <version>@VERSION@</version> + </dependency> + <dependency> + <groupId>jline</groupId> + <artifactId>jline</artifactId> + <version>@JLINE_VERSION@</version> + <optional>true</optional> + </dependency> + </dependencies> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> + </distributionManagement> + <developers> + <developer> + <id>lamp</id> + <name>EPFL LAMP</name> + </developer> + <developer> + <id>Typesafe</id> + <name>Typesafe, Inc.</name> + </developer> + </developers> </project> diff --git a/src/build/maven/scala-library-pom.xml b/src/build/maven/scala-library-pom.xml index 684474e79a..d40cee2656 100644 --- a/src/build/maven/scala-library-pom.xml +++ b/src/build/maven/scala-library-pom.xml @@ -1,50 +1,48 @@ -<project - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.scala-lang</groupId> - <artifactId>scala-library</artifactId> - <packaging>jar</packaging> - <version>@VERSION@</version> +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang</groupId> + <artifactId>scala-library</artifactId> + <packaging>jar</packaging> + <version>@VERSION@</version> <name>Scala Library</name> <description>Standard library for the Scala Programming Language</description> - <url>http://www.scala-lang.org/</url> - <inceptionYear>2002</inceptionYear> - <organization> - <name>LAMP/EPFL</name> - <url>http://lamp.epfl.ch/</url> - </organization> - <licenses> - <license> - <name>BSD-like</name> - <url>http://www.scala-lang.org/downloads/license.html - </url> - <distribution>repo</distribution> - </license> - </licenses> - <scm> - <connection>scm:git:git://github.com/scala/scala.git</connection> - <url>https://github.com/scala/scala.git</url> - </scm> - <issueManagement> - <system>JIRA</system> - <url>https://issues.scala-lang.org/</url> - </issueManagement> - <properties> - <info.apiURL>http://www.scala-lang.org/api/@VERSION@/</info.apiURL> - </properties> - <dependencies> + <url>http://www.scala-lang.org/</url> + <inceptionYear>2002</inceptionYear> + <organization> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> + <properties> + <info.apiURL>http://www.scala-lang.org/api/@VERSION@/</info.apiURL> + </properties> + <dependencies> </dependencies> - <distributionManagement> - <repository> - <id>scala-tools.org</id> - <url>@RELEASE_REPOSITORY@</url> - </repository> - <snapshotRepository> - <id>scala-tools.org</id> - <url>@SNAPSHOT_REPOSITORY@</url> - <uniqueVersion>false</uniqueVersion> - </snapshotRepository> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> </distributionManagement> <developers> <developer> diff --git a/src/build/maven/scala-reflect-pom.xml b/src/build/maven/scala-reflect-pom.xml index 56d2ffc57c..d0a9c0e274 100644 --- a/src/build/maven/scala-reflect-pom.xml +++ b/src/build/maven/scala-reflect-pom.xml @@ -1,56 +1,54 @@ -<project - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.scala-lang</groupId> - <artifactId>scala-reflect</artifactId> - <packaging>jar</packaging> - <version>@VERSION@</version> +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang</groupId> + <artifactId>scala-reflect</artifactId> + <packaging>jar</packaging> + <version>@VERSION@</version> <name>Scala Compiler</name> <description>Compiler for the Scala Programming Language</description> - <url>http://www.scala-lang.org/</url> - <inceptionYear>2002</inceptionYear> - <organization> - <name>LAMP/EPFL</name> - <url>http://lamp.epfl.ch/</url> - </organization> - <licenses> - <license> - <name>BSD-like</name> - <url>http://www.scala-lang.org/downloads/license.html - </url> - <distribution>repo</distribution> - </license> - </licenses> - <scm> - <connection>scm:git:git://github.com/scala/scala.git</connection> - <url>https://github.com/scala/scala.git</url> - </scm> - <issueManagement> - <system>JIRA</system> - <url>https://issues.scala-lang.org/</url> - </issueManagement> + <url>http://www.scala-lang.org/</url> + <inceptionYear>2002</inceptionYear> + <organization> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> <properties> - <info.apiURL>http://www.scala-lang.org/api/@VERSION@/</info.apiURL> + <info.apiURL>http://www.scala-lang.org/api/@VERSION@/</info.apiURL> </properties> - <dependencies> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-library</artifactId> - <version>@VERSION@</version> - </dependency> - </dependencies> - <distributionManagement> - <repository> - <id>scala-tools.org</id> - <url>@RELEASE_REPOSITORY@</url> - </repository> - <snapshotRepository> - <id>scala-tools.org</id> - <url>@SNAPSHOT_REPOSITORY@</url> - <uniqueVersion>false</uniqueVersion> - </snapshotRepository> - </distributionManagement> + <dependencies> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-library</artifactId> + <version>@VERSION@</version> + </dependency> + </dependencies> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> + </distributionManagement> <developers> <developer> <id>lamp</id> diff --git a/src/build/maven/scala-swing-pom.xml b/src/build/maven/scala-swing-pom.xml index 5099fe11dc..01c89f9bea 100644 --- a/src/build/maven/scala-swing-pom.xml +++ b/src/build/maven/scala-swing-pom.xml @@ -1,56 +1,54 @@ -<project - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.scala-lang</groupId> - <artifactId>scala-swing</artifactId> - <packaging>jar</packaging> - <version>@VERSION@</version> +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang</groupId> + <artifactId>scala-swing</artifactId> + <packaging>jar</packaging> + <version>@VERSION@</version> <name>Scala Swing library</name> <description>Swing for Scala</description> - <url>http://www.scala-lang.org/</url> - <inceptionYear>2002</inceptionYear> - <organization> - <name>LAMP/EPFL</name> - <url>http://lamp.epfl.ch/</url> - </organization> - <licenses> - <license> - <name>BSD-like</name> - <url>http://www.scala-lang.org/downloads/license.html - </url> - <distribution>repo</distribution> - </license> - </licenses> - <scm> - <connection>scm:git:git://github.com/scala/scala.git</connection> - <url>https://github.com/scala/scala.git</url> - </scm> - <issueManagement> - <system>JIRA</system> - <url>https://issues.scala-lang.org/</url> - </issueManagement> - <properties> - <info.apiURL>http://www.scala-lang.org/api/@VERSION@/</info.apiURL> - </properties> - <dependencies> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-library</artifactId> - <version>@VERSION@</version> - </dependency> - </dependencies> - <distributionManagement> - <repository> - <id>scala-tools.org</id> - <url>@RELEASE_REPOSITORY@</url> - </repository> - <snapshotRepository> - <id>scala-tools.org</id> - <url>@SNAPSHOT_REPOSITORY@</url> - <uniqueVersion>false</uniqueVersion> - </snapshotRepository> - </distributionManagement> + <url>http://www.scala-lang.org/</url> + <inceptionYear>2002</inceptionYear> + <organization> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> + <properties> + <info.apiURL>http://www.scala-lang.org/api/@VERSION@/</info.apiURL> + </properties> + <dependencies> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-library</artifactId> + <version>@VERSION@</version> + </dependency> + </dependencies> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> + </distributionManagement> <developers> <developer> <id>lamp</id> diff --git a/src/build/maven/scalap-pom.xml b/src/build/maven/scalap-pom.xml index 50c08e899c..88cfce08d8 100644 --- a/src/build/maven/scalap-pom.xml +++ b/src/build/maven/scalap-pom.xml @@ -1,54 +1,51 @@ -<project - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.scala-lang</groupId> - <artifactId>scalap</artifactId> - <packaging>jar</packaging> - <version>@VERSION@</version> +<?xml version="1.0"?> +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.scala-lang</groupId> + <artifactId>scalap</artifactId> + <packaging>jar</packaging> + <version>@VERSION@</version> <name>Scalap</name> <description>bytecode analysis tool</description> - <url>http://www.scala-lang.org/</url> - <inceptionYear>2002</inceptionYear> - <organization> - <name>LAMP/EPFL</name> - <url>http://lamp.epfl.ch/</url> - </organization> - <licenses> - <license> - <name>BSD-like</name> - <url>http://www.scala-lang.org/downloads/license.html - </url> - <distribution>repo</distribution> - </license> - </licenses> - <scm> - <connection>scm:git:git://github.com/scala/scala.git</connection> - <url>https://github.com/scala/scala.git</url> - </scm> - <issueManagement> - <system>JIRA</system> - <url>https://issues.scala-lang.org/</url> - </issueManagement> - - <dependencies> - <dependency> - <groupId>org.scala-lang</groupId> - <artifactId>scala-compiler</artifactId> - <version>@VERSION@</version> - </dependency> - </dependencies> - <distributionManagement> - <repository> - <id>scala-tools.org</id> - <url>@RELEASE_REPOSITORY@</url> - </repository> - <snapshotRepository> - <id>scala-tools.org</id> - <url>@SNAPSHOT_REPOSITORY@</url> - <uniqueVersion>false</uniqueVersion> - </snapshotRepository> - </distributionManagement> + <url>http://www.scala-lang.org/</url> + <inceptionYear>2002</inceptionYear> + <organization> + <name>LAMP/EPFL</name> + <url>http://lamp.epfl.ch/</url> + </organization> + <licenses> + <license> + <name>BSD 3-Clause</name> + <url>http://www.scala-lang.org/license.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <scm> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> + </scm> + <issueManagement> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> + </issueManagement> + <dependencies> + <dependency> + <groupId>org.scala-lang</groupId> + <artifactId>scala-compiler</artifactId> + <version>@VERSION@</version> + </dependency> + </dependencies> + <distributionManagement> + <repository> + <id>scala-tools.org</id> + <url>@RELEASE_REPOSITORY@</url> + </repository> + <snapshotRepository> + <id>scala-tools.org</id> + <url>@SNAPSHOT_REPOSITORY@</url> + <uniqueVersion>false</uniqueVersion> + </snapshotRepository> + </distributionManagement> <developers> <developer> <id>lamp</id> diff --git a/src/build/pack.xml b/src/build/pack.xml deleted file mode 100644 index 4c5ba228fc..0000000000 --- a/src/build/pack.xml +++ /dev/null @@ -1,263 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<project name="sabbus-pack"> - - <description> - SuperSabbus extension for packaging a distribution. THIS FILE IS NOT STAND-ALONE AND SHOULD ONLY BE USED THROUGH ENTRY POINTS IN SUPERSABBUS. - </description> - -<!-- =========================================================================== -PROPERTIES -============================================================================ --> - - <!-- the maven stuff requires version.major, version.minor and version.patch properties. - the "get-scala-revision" script only returns "version.number" --> - <property file="${basedir}/build.number"/> - <!-- also need to know scala binary version and versions for xml and parsers --> - <property file="${basedir}/versions.properties"/> - - -<!-- =========================================================================== -MAIN DISTRIBUTION PACKAGING -============================================================================ --> - - <target name="pack-archives.start"> - <mkdir dir="${dists.dir}/archives"/> - </target> - - <target name="pack-archives.tar" depends="pack-archives.start"> - <tar destfile="${dists.dir}/archives/${dist.name}.tar" - compression="none" longfile="gnu"> - <tarfileset dir="${dist.dir}" prefix="${dist.name}" includes="bin/**" mode="755"/> - <tarfileset dir="${dist.dir}" prefix="${dist.name}" excludes="bin/**"/> - </tar> - <gzip src="${dists.dir}/archives/${dist.name}.tar" destfile="${dists.dir}/archives/${dist.name}.tgz"/> - <if> - <not><equals arg1="${archives.skipxz}" arg2="true" /></not> - <then> - <exec executable="xz" failifexecutionfails="false"> - <arg line="-k -9e -S .xz ${dists.dir}/archives/${dist.name}.tar"/> - </exec> - <move file="${dists.dir}/archives/${dist.name}.tar.xz" tofile="${dists.dir}/archives/${dist.name}.txz" failonerror="false"/> - </then> - </if> - <delete file="${dists.dir}/archives/${dist.name}.tar" /> - <checksum fileext=".md5"> - <fileset dir="${dists.dir}/archives"> - <include name="${dist.name}.t?z"/> - </fileset> - </checksum> - </target> - - <target name="pack-archives.zip" depends="pack-archives.tar"> - <zip destfile="${dists.dir}/archives/${dist.name}.zip"> - <zipfileset prefix="${dist.name}" dir="${dist.dir}"/> - </zip> - <checksum file="${dists.dir}/archives/${dist.name}.zip" fileext=".md5"/> - </target> - - <target name="pack-devel-docs.tar" depends="pack-archives.zip" unless="docs.skip"> - <tar destfile="${dists.dir}/archives/${dist.name}-devel-docs.tar" - compression="none" longfile="gnu"> - <tarfileset dir="${dist.dir}/doc/scala-devel-docs" prefix="${dist.name}-devel-docs"/> - </tar> - <gzip src="${dists.dir}/archives/${dist.name}-devel-docs.tar" destfile="${dists.dir}/archives/${dist.name}-devel-docs.tgz"/> - <if> - <not><equals arg1="${archives.skipxz}" arg2="true" /></not> - <then> - <exec executable="xz" failifexecutionfails="false"> - <arg line="-k -9e -S .xz ${dists.dir}/archives/${dist.name}-devel-docs.tar"/> - </exec> - <move file="${dists.dir}/archives/${dist.name}-devel-docs.tar.xz" tofile="${dists.dir}/archives/${dist.name}-devel-docs.txz" failonerror="false"/> - </then> - </if> - <delete file="${dists.dir}/archives/${dist.name}-devel-docs.tar" /> - <checksum fileext=".md5"> - <fileset dir="${dists.dir}/archives"> - <include name="${dist.name}-devel-docs.t?z"/> - </fileset> - </checksum> - </target> - - <target name="pack-archives.src" depends="pack-devel-docs.tar"> - <tar destfile="${dists.dir}/archives/${dist.name}-sources.tar" - compression="none" longfile="gnu"> - <tarfileset dir="${basedir}" prefix="${dist.name}-sources"> - <exclude name="bin/**"/> - <exclude name="build/**"/> - <exclude name="debian/**"/> - <exclude name="dists/**"/> - <exclude name="logs/**"/> - <exclude name="sandbox/**"/> - <exclude name="test/partest"/> - <exclude name=".git"/> - </tarfileset> - <tarfileset dir="${basedir}" prefix="${dist.name}-sources" filemode="755"> - <include name="test/partest"/> - </tarfileset> - </tar> - <gzip src="${dists.dir}/archives/${dist.name}-sources.tar" destfile="${dists.dir}/archives/${dist.name}-sources.tgz"/> - <if> - <not><equals arg1="${archives.skipxz}" arg2="true" /></not> - <then> - <exec executable="xz" failifexecutionfails="false"> - <arg line="-k -9e -S .xz ${dists.dir}/archives/${dist.name}-sources.tar"/> - </exec> - <move file="${dists.dir}/archives/${dist.name}-sources.tar.xz" tofile="${dists.dir}/archives/${dist.name}-sources.txz" failonerror="false"/> - </then> - </if> - <delete file="${dists.dir}/archives/${dist.name}-sources.tar" /> - <checksum fileext=".md5"> - <fileset dir="${dists.dir}/archives"> - <include name="${dist.name}-sources.t?z"/> - </fileset> - </checksum> - </target> - - <target name="pack-archives.latest.unix" depends="pack-archives.src" unless="os.win"> - <!-- be sure to use a relative symlink to make the distribution portable, - `resource` is relative to directory of `link` --> - <symlink link="${dists.dir}/archives/scala-latest-sources.tgz" - resource="scala-${version.number}-sources.tgz" - overwrite="true"/> - </target> - - <target name="pack-archives.latest.win" depends="pack-archives.src" if="os.win"> - <copy tofile="${dists.dir}/archives/scala-latest-sources.tgz" overwrite="true"> - <fileset dir="${dists.dir}/archives"> - <include name="scala-${version.number}-sources.tgz"/> - </fileset> - </copy> - </target> - - <target name="pack-archives.done" depends="pack-archives.src, pack-archives.latest.win, pack-archives.latest.unix"/> - - <target name="pack-maven.start"> - <mkdir dir="${dists.dir}/maven/${version.number}"/> - </target> - - <target name="pack-maven.libs" depends="pack-maven.start"> - <macrodef name="mvn-copy-lib"> - <attribute name="mvn.artifact.name"/> - <sequential> - <mkdir dir="${dists.dir}/maven/${version.number}/@{mvn.artifact.name}"/> - <copy verbose="true" overwrite="true" todir="${dists.dir}/maven/${version.number}/@{mvn.artifact.name}"> - <fileset dir="${dist.dir}/lib/"> - <filename name="@{mvn.artifact.name}.jar"/> - </fileset> - <fileset dir="${src.dir}/build/maven/"> - <filename name="@{mvn.artifact.name}-pom.xml"/> - </fileset> - <fileset dir="${dist.dir}/src/"> - <filename name="@{mvn.artifact.name}-src.jar"/> - </fileset> - </copy> - </sequential> - </macrodef> - <mvn-copy-lib mvn.artifact.name="scala-library"/> - <mvn-copy-lib mvn.artifact.name="scala-reflect"/> - <mvn-copy-lib mvn.artifact.name="scala-compiler"/> - <mvn-copy-lib mvn.artifact.name="scala-swing"/> - <mvn-copy-lib mvn.artifact.name="scala-actors"/> - <mvn-copy-lib mvn.artifact.name="scalap"/> - </target> - - <target name="pack-maven.plugins" depends="pack-maven.start"> - <macrodef name="mvn-copy-plugin"> - <attribute name="mvn.artifact.name"/> - <sequential> - <mkdir dir="${dists.dir}/maven/${version.number}/plugins/@{mvn.artifact.name}"/> - <copy todir="${dists.dir}/maven/${version.number}/plugins/@{mvn.artifact.name}" overwrite="true"> - <fileset dir="${dist.dir}/misc/scala-devel/plugins/"> - <filename name="@{mvn.artifact.name}.jar"/> - </fileset> - <fileset dir="${src.dir}/build/maven/plugins/"> - <filename name="@{mvn.artifact.name}-pom.xml"/> - </fileset> - </copy> - </sequential> - </macrodef> - <mvn-copy-plugin mvn.artifact.name="continuations"/> - </target> - - <target name="pack-maven.srcs" depends="pack-maven.libs"> - <!-- Add missing src jars. --> - <!-- Continuations plugin --> - <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/plugins/continuations/continuations-src.jar" - basedir="${src.dir}/continuations/plugin"> - <include name="**/*"/> - </jar> - </target> - - <target name="pack-maven.docs" depends="pack-maven.libs, pack-maven.plugins" unless="docs.skip"> - <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/scala-library/scala-library-docs.jar" - basedir="${build-docs.dir}/library"> - <include name="**/*"/> - </jar> - <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/scala-compiler/scala-compiler-docs.jar" - basedir="${build-docs.dir}/compiler"> - <include name="**/*"/> - </jar> - <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/scalap/scalap-docs.jar" - basedir="${build-docs.dir}/scalap"> - <include name="**/*"/> - </jar> - <jar whenmanifestonly="fail" destfile="${dists.dir}/maven/${version.number}/plugins/continuations/continuations-docs.jar" - basedir="${build-docs.dir}/continuations-plugin"> - <include name="**/*"/> - </jar> - - <!-- TODO - Scala swing and actors should maybe have thier own jar, but creating it is SLOW. --> - <copy tofile="${dists.dir}/maven/${version.number}/scala-swing/scala-swing-docs.jar" - file="${dists.dir}/maven/${version.number}/scala-library/scala-library-docs.jar" overwrite="true"/> - <copy tofile="${dists.dir}/maven/${version.number}/scala-actors/scala-actors-docs.jar" - file="${dists.dir}/maven/${version.number}/scala-library/scala-library-docs.jar" overwrite="true"/> - <copy tofile="${dists.dir}/maven/${version.number}/scala-reflect/scala-reflect-docs.jar" - file="${dists.dir}/maven/${version.number}/scala-library/scala-library-docs.jar" overwrite="true"/> - </target> - - <target name="pack-maven.latest.unix" depends="pack-maven.docs" unless="os.win"> - <symlink link="${dists.dir}/maven/latest" - resource="${version.number}" - overwrite="true"/> - </target> - - <target name="pack-maven.latest.win" depends="pack-maven.docs" if="os.win"> - <copy todir="${dists.dir}/maven/latest" overwrite="true"> - <fileset dir="${dists.dir}/maven/${version.number}"/> - </copy> - </target> - - <target name="pack-maven.scripts" depends="pack-maven.latest.unix,pack-maven.latest.win,pack-maven.srcs"> - <copy todir="${dists.dir}/maven/${version.number}" - file="${lib-ant.dir}/ant-contrib.jar" overwrite="true"/> - <copy todir="${dists.dir}/maven/${version.number}" - file="${lib-ant.dir}/maven-ant-tasks-2.1.1.jar" overwrite="true"/> - <copy tofile="${dists.dir}/maven/${version.number}/build.xml" - file="${src.dir}/build/maven/maven-deploy.xml"/> - <!-- export properties for use when deploying --> - <echoproperties destfile="${dists.dir}/maven/${version.number}/build.properties"/> - </target> - - <target name="pack-maven.done" depends="pack-maven.scripts"/> - -<!-- =========================================================================== -MISCELLANEOUS -============================================================================ --> - - <target name="pack-all.done" depends="pack-archives.done, pack-maven.done"/> - -<!-- =========================================================================== -MISCELLANEOUS -============================================================================ --> - - <target name="graph.init"> - <echo message="${basedir}/lib/ant/vizant.jar"/> - <taskdef name="vizant" classname="vizant.Vizant" classpath="${basedir}/../../lib/ant/vizant.jar"/> - </target> - - <target name="graph.pack" depends="graph.init"> - <vizant antfile="${ant.file}" outfile="${ant.project.name}.dot"/> - </target> - -</project> diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala index 1d5f35b7d6..07938ec3df 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala @@ -2512,7 +2512,11 @@ self => val vparamss = paramClauses(nme.CONSTRUCTOR, classContextBounds map (_.duplicate), ofCaseClass = false) newLineOptWhenFollowedBy(LBRACE) val rhs = in.token match { - case LBRACE => atPos(in.offset) { constrBlock(vparamss) } + case LBRACE => { + if (settings.future) + deprecationWarning(in.offset, "Procedure syntax is deprecated. Convert procedure to method by adding `: Unit =`.") + atPos(in.offset) { constrBlock(vparamss) } + } case _ => accept(EQUALS) ; atPos(in.offset) { constrExpr(vparamss) } } DefDef(mods, nme.CONSTRUCTOR, List(), vparamss, TypeTree(), rhs) @@ -2538,10 +2542,14 @@ self => var restype = fromWithinReturnType(typedOpt()) val rhs = if (isStatSep || in.token == RBRACE) { + if (settings.future) + deprecationWarning(in.lastOffset, "Procedure syntax is deprecated. Convert procedure to method by adding `: Unit`.") if (restype.isEmpty) restype = scalaUnitConstr newmods |= Flags.DEFERRED EmptyTree } else if (restype.isEmpty && in.token == LBRACE) { + if (settings.future) + deprecationWarning(in.offset, "Procedure syntax is deprecated. Convert procedure to method by adding `: Unit =`.") restype = scalaUnitConstr blockExpr() } else { diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index e2902a74b8..f0d3db1296 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -545,8 +545,7 @@ abstract class Erasure extends AddInterfaces ldef setType ldef.rhs.tpe case _ => val tree1 = tree.tpe match { - case ErasedValueType(tref) => - val clazz = tref.sym + case ErasedValueType(clazz, _) => New(clazz, cast(tree, underlyingOfValueClass(clazz))) case _ => tree.tpe.typeSymbol match { @@ -597,9 +596,7 @@ abstract class Erasure extends AddInterfaces ldef setType ldef.rhs.tpe case _ => val tree1 = pt match { - case ErasedValueType(tref) => - val clazz = tref.sym - lazy val underlying = underlyingOfValueClass(clazz) + case ErasedValueType(clazz, underlying) => val tree0 = if (tree.tpe.typeSymbol == NullClass && isPrimitiveValueClass(underlying.typeSymbol)) { @@ -697,13 +694,11 @@ abstract class Erasure extends AddInterfaces case Apply(ta @ TypeApply(sel @ Select(qual, name), List(targ)), List()) if tree.symbol == Any_asInstanceOf => val qual1 = typedQualifier(qual, NOmode, ObjectTpe) // need to have an expected type, see #3037 - + // !!! Make pending/run/t5866b.scala work. The fix might be here and/or in unbox1. if (isPrimitiveValueType(targ.tpe) || isErasedValueType(targ.tpe)) { val noNullCheckNeeded = targ.tpe match { - case ErasedValueType(tref) => - enteringPhase(currentRun.erasurePhase) { - isPrimitiveValueClass(erasedValueClassArg(tref).typeSymbol) - } + case ErasedValueType(_, underlying) => + isPrimitiveValueClass(underlying.typeSymbol) case _ => true } @@ -724,7 +719,7 @@ abstract class Erasure extends AddInterfaces case Apply(TypeApply(sel @ Select(qual, name), List(targ)), List()) if tree.symbol == Any_isInstanceOf => targ.tpe match { - case ErasedValueType(tref) => targ.setType(tref.sym.tpe) + case ErasedValueType(clazz, _) => targ.setType(clazz.tpe) case _ => } tree @@ -787,11 +782,11 @@ abstract class Erasure extends AddInterfaces (tree.attachments.get[TypeRefAttachment]: @unchecked) match { case Some(itype) => val tref = itype.tpe - val argPt = enteringPhase(currentRun.erasurePhase)(erasedValueClassArg(tref)) + val argPt = enteringErasure(erasedValueClassArg(tref)) log(s"transforming inject $arg -> $tref/$argPt") val result = typed(arg, mode, argPt) log(s"transformed inject $arg -> $tref/$argPt = $result:${result.tpe}") - return result setType ErasedValueType(tref) + return result setType ErasedValueType(tref.sym, result.tpe) } case _ => diff --git a/src/compiler/scala/tools/nsc/transform/PostErasure.scala b/src/compiler/scala/tools/nsc/transform/PostErasure.scala index 96263f3c0c..cc78e27282 100644 --- a/src/compiler/scala/tools/nsc/transform/PostErasure.scala +++ b/src/compiler/scala/tools/nsc/transform/PostErasure.scala @@ -22,7 +22,7 @@ trait PostErasure extends InfoTransform with TypingTransformers { object elimErasedValueType extends TypeMap { def apply(tp: Type) = tp match { case ConstantType(Constant(tp: Type)) => ConstantType(Constant(apply(tp))) - case ErasedValueType(tref) => enteringErasure(erasure.erasedValueClassArg(tref)) + case ErasedValueType(_, underlying) => underlying case _ => mapOver(tp) } } diff --git a/src/reflect/scala/reflect/internal/Constants.scala b/src/reflect/scala/reflect/internal/Constants.scala index 511b39b8c6..85d0efdcba 100644 --- a/src/reflect/scala/reflect/internal/Constants.scala +++ b/src/reflect/scala/reflect/internal/Constants.scala @@ -223,7 +223,15 @@ trait Constants extends api.Constants { case ClazzTag => def show(tpe: Type) = "classOf[" + signature(tpe) + "]" typeValue match { - case ErasedValueType(orig) => show(orig) + case ErasedValueType(clazz, underlying) => + // A note on tpe_* usage here: + // + // We've intentionally erased the type arguments to the value class so that different + // instantiations of a particular value class that erase to the same underlying type + // don't result in spurious bridges (e.g. run/t6385.scala). I don't think that matters; + // printing trees of `classOf[ValueClass[String]]` shows `classOf[ValueClass]` at phase + // erasure both before and after the use of `tpe_*` here. + show(clazz.tpe_*) case _ => show(typeValue) } case CharTag => "'" + escapedChar(charValue) + "'" diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala index 088d6bfe8e..e483fa6ba8 100644 --- a/src/reflect/scala/reflect/internal/Types.scala +++ b/src/reflect/scala/reflect/internal/Types.scala @@ -3341,18 +3341,25 @@ trait Types /** A temporary type representing the erasure of a user-defined value type. * Created during phase erasure, eliminated again in posterasure. * - * @param original The underlying type before erasure + * SI-6385 Erasure's creation of bridges considers method signatures `exitingErasure`, + * which contain `ErasedValueType`-s. In order to correctly consider the overriding + * and overriden signatures as equivalent in `run/t6385.scala`, it is critical that + * this type contains the erasure of the wrapped type, rather than the unerased type + * of the value class itself, as was originally done. + * + * @param valueClazz The value class symbol + * @param erasedUnderlying The erased type of the unboxed value */ - abstract case class ErasedValueType(original: TypeRef) extends UniqueType { - override def safeToString = "ErasedValueType("+original+")" + abstract case class ErasedValueType(valueClazz: Symbol, erasedUnderlying: Type) extends UniqueType { + override def safeToString = s"ErasedValueType($valueClazz, $erasedUnderlying)" } - final class UniqueErasedValueType(original: TypeRef) extends ErasedValueType(original) + final class UniqueErasedValueType(valueClazz: Symbol, erasedUnderlying: Type) extends ErasedValueType(valueClazz, erasedUnderlying) object ErasedValueType { - def apply(original: TypeRef): Type = { - assert(original.sym ne NoSymbol, "ErasedValueType over NoSymbol") - unique(new UniqueErasedValueType(original)) + def apply(valueClazz: Symbol, erasedUnderlying: Type): Type = { + assert(valueClazz ne NoSymbol, "ErasedValueType over NoSymbol") + unique(new UniqueErasedValueType(valueClazz, erasedUnderlying)) } } diff --git a/src/reflect/scala/reflect/internal/transform/Erasure.scala b/src/reflect/scala/reflect/internal/transform/Erasure.scala index 185e2c3d1e..4aefc105e3 100644 --- a/src/reflect/scala/reflect/internal/transform/Erasure.scala +++ b/src/reflect/scala/reflect/internal/transform/Erasure.scala @@ -257,11 +257,11 @@ trait Erasure { /** This is used as the Scala erasure during the erasure phase itself * It differs from normal erasure in that value classes are erased to ErasedValueTypes which - * are then later converted to the underlying parameter type in phase posterasure. + * are then later unwrapped to the underlying parameter type in phase posterasure. */ object specialScalaErasure extends ScalaErasureMap { override def eraseDerivedValueClassRef(tref: TypeRef): Type = - ErasedValueType(tref) + ErasedValueType(tref.sym, erasedValueClassArg(tref)) } object javaErasure extends JavaErasureMap diff --git a/test/files/neg/t6260b.check b/test/files/neg/t6260b.check new file mode 100644 index 0000000000..3a7e8947aa --- /dev/null +++ b/test/files/neg/t6260b.check @@ -0,0 +1,7 @@ +t6260b.scala:3: error: bridge generated for member method apply: ()X in <$anon: () => X> +which overrides method apply: ()R in trait Function0 +clashes with definition of the member itself; +both have erased type ()Object +class Y { def f = new X("") or new X("") } + ^ +one error found diff --git a/test/files/neg/t6260b.scala b/test/files/neg/t6260b.scala new file mode 100644 index 0000000000..73e2e58f73 --- /dev/null +++ b/test/files/neg/t6260b.scala @@ -0,0 +1,3 @@ + +class X(val value: Object) extends AnyVal { def or(alt: => X): X = this } +class Y { def f = new X("") or new X("") } diff --git a/test/files/neg/t6260c.check b/test/files/neg/t6260c.check new file mode 100644 index 0000000000..cbbcfd1504 --- /dev/null +++ b/test/files/neg/t6260c.check @@ -0,0 +1,7 @@ +t6260c.scala:4: error: bridge generated for member method f: ()Option[A] in class Bar1 +which overrides method f: ()A in class Foo1 +clashes with definition of the member itself; +both have erased type ()Object + class Bar1[A] extends Foo1[Option[A]] { def f(): Option[A] = ??? } + ^ +one error found diff --git a/test/files/neg/t6260c.scala b/test/files/neg/t6260c.scala new file mode 100644 index 0000000000..02bf152376 --- /dev/null +++ b/test/files/neg/t6260c.scala @@ -0,0 +1,4 @@ +final class Option[+A](val value: A) extends AnyVal + +abstract class Foo1[A] { def f(): A } + class Bar1[A] extends Foo1[Option[A]] { def f(): Option[A] = ??? } diff --git a/test/files/neg/t6385.check b/test/files/neg/t6385.check deleted file mode 100644 index 93e51e8927..0000000000 --- a/test/files/neg/t6385.check +++ /dev/null @@ -1,7 +0,0 @@ -t6385.scala:12: error: bridge generated for member method x: ()C[T] in class C -which overrides method x: ()C[T] in trait AA -clashes with definition of the member itself; -both have erased type ()Object - def x = this - ^ -one error found diff --git a/test/files/neg/t7605-deprecation.check b/test/files/neg/t7605-deprecation.check new file mode 100644 index 0000000000..9c466c058c --- /dev/null +++ b/test/files/neg/t7605-deprecation.check @@ -0,0 +1,12 @@ +t7605-deprecation.scala:2: warning: Procedure syntax is deprecated. Convert procedure to method by adding `: Unit =`. + def this(i: Int) { this() } + ^ +t7605-deprecation.scala:3: warning: Procedure syntax is deprecated. Convert procedure to method by adding `: Unit =`. + def bar {} + ^ +t7605-deprecation.scala:4: warning: Procedure syntax is deprecated. Convert procedure to method by adding `: Unit`. + def baz + ^ +error: No warnings can be incurred under -Xfatal-warnings. +three warnings found +one error found diff --git a/test/files/neg/t7605-deprecation.flags b/test/files/neg/t7605-deprecation.flags new file mode 100644 index 0000000000..0a7cb7d202 --- /dev/null +++ b/test/files/neg/t7605-deprecation.flags @@ -0,0 +1 @@ +-deprecation -Xfuture -Xfatal-warnings diff --git a/test/files/neg/t7605-deprecation.scala b/test/files/neg/t7605-deprecation.scala new file mode 100644 index 0000000000..4a7dcd26d6 --- /dev/null +++ b/test/files/neg/t7605-deprecation.scala @@ -0,0 +1,5 @@ +abstract class Foo { + def this(i: Int) { this() } + def bar {} + def baz +}
\ No newline at end of file diff --git a/test/files/pos/t6260a.scala b/test/files/pos/t6260a.scala new file mode 100644 index 0000000000..194294e981 --- /dev/null +++ b/test/files/pos/t6260a.scala @@ -0,0 +1,15 @@ +final class Option[+A](val value: A) extends AnyVal + +// Was: sandbox/test.scala:21: error: bridge generated for member method f: ()Option[A] in class Bar +// which overrides method f: ()Option[A] in class Foo" +abstract class Foo[A] { def f(): Option[A] } + class Bar[A] extends Foo[A] { def f(): Option[A] = ??? } + +// User reported this as erroneous but I couldn't reproduce with 2.10.{0,1,2,3} +// https://issues.scala-lang.org/browse/SI-6260?focusedCommentId=64764&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-64764 +// I suspect he whittled down the example too far. +class Wrapper(val value: Int) extends AnyVal +abstract class Test { def check(the: Wrapper): Boolean } +object T { + new Test { def check(the: Wrapper) = true } +} diff --git a/test/files/run/t6260b.scala b/test/files/run/t6260b.scala new file mode 100644 index 0000000000..dd2cf4bc4e --- /dev/null +++ b/test/files/run/t6260b.scala @@ -0,0 +1,13 @@ +class C[A](val a: A) extends AnyVal + +class DD { + def foo(c: C[String]) = () + def bar[A <: String](c: C[A]) = () + def baz[A](c: C[A]) = () +} + +object Test extends App { + classOf[DD].getMethod("foo", classOf[String]) + classOf[DD].getMethod("bar", classOf[String]) + classOf[DD].getMethod("baz", classOf[Object]) +} diff --git a/test/files/neg/t6385.scala b/test/files/run/t6385.scala index cec58eec9e..24fc3cd768 100644 --- a/test/files/neg/t6385.scala +++ b/test/files/run/t6385.scala @@ -1,8 +1,8 @@ -object N { +object Test { def main(args: Array[String]) { val y: AA[Int] = C(2) val c: Int = y.x.y - println(c) + assert(c == 2) } } trait AA[T] extends Any { diff --git a/test/pending/run/t5866b.scala b/test/pending/run/t5866b.scala new file mode 100644 index 0000000000..44d8b114b8 --- /dev/null +++ b/test/pending/run/t5866b.scala @@ -0,0 +1,17 @@ +class Foo(val d: Double) extends AnyVal { + override def toString = s"Foo($d)" +} + +class Bar(val d: String) extends AnyVal { + override def toString = s"Foo($d)" +} + +object Test { + def main(args: Array[String]): Unit = { + val f: Foo = {val n: Any = null; n.asInstanceOf[Foo]} + println(f) + + val b: Bar = {val n: Any = null; n.asInstanceOf[Bar]} + println(b) + } +} |