[scala/f19] New upstream release

Jochen Schmitt s4504kr at fedoraproject.org
Fri Oct 11 18:31:52 UTC 2013


commit 6b0be6a98f4d8e0ff0427d9da819ab19a8f0cbd4
Author: Jochen Schmitt <Jochen at herr-schmitt.de>
Date:   Fri Oct 11 20:31:46 2013 +0200

    New upstream release

 get-source.sh                       |   20 +-
 scala-2.10-jline.patch              |  107 ++++++
 scala-2.10.0-bnd.patch              |   22 ++
 scala-2.10.0-compiler-pom.patch     |   13 +
 scala-2.10.0-java7.patch            |  237 +++++++++++++
 scala-2.10.0-tooltemplate.patch     |   21 ++
 scala-2.10.0-use_system_jline.patch |  135 ++++++++
 scala-2.10.1-bc.patch               |   28 ++
 scala-2.10.2-java7.patch            |  198 +++++++++++
 scala-2.10.2-use_system_jline.patch |   98 ++++++
 scala-2.10.3-build_xml.patch        |  626 +++++++++++++++++++++++++++++++++++
 scala-library-2.10.0-bnd.properties |    2 +-
 scala.spec                          |  158 +++++++--
 sources                             |    3 +-
 14 files changed, 1623 insertions(+), 45 deletions(-)
---
diff --git a/get-source.sh b/get-source.sh
index 60bd860..11c05ac 100755
--- a/get-source.sh
+++ b/get-source.sh
@@ -1,17 +1,21 @@
 #!/bin/sh
 set -x
 
-VER=$1
+VER=$(fedpkg verrel | sed -e 's/^scala\-\(.*\)\-.*$/\1/')
+
 FNS=scala-$VER
 
-rm -rf scala/
-git clone git://github.com/scala/scala.git
-cd scala
+rm -rf $FNS/
+git clone git://github.com/scala/scala.git $FNS
+cd $FNS
 git checkout v$VER
-./pull-binary-libs.sh
+git show v$VER >../gitdate.txt
 cd ..
-rm -rf $FNS $FMS.tgz
-mv scala $FNS
 tar -zcf $FNS.tgz --exclude $FNS/.git $FNS/
+cd $FNS
+./pull-binary-libs.sh
+rm -rf lib/jline.jar
+tar -zcf ../$FNS-bootstrap.tgz --exclude .git lib/*.jar
+cd ..
 rm -rf $FNS/
-fedpkg new-sources $FNS
+fedpkg new-sources $FNS.tgz $FNS-bootstrap.tgz
diff --git a/scala-2.10-jline.patch b/scala-2.10-jline.patch
new file mode 100644
index 0000000..59ec518
--- /dev/null
+++ b/scala-2.10-jline.patch
@@ -0,0 +1,107 @@
+diff --git a/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala b/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala
+index 10f9724..2970276 100644
+--- a/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala
++++ b/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala
+@@ -42,7 +42,7 @@ class JLineReader(_completion: => Completion) extends InteractiveReader {
+     def readOneKey(prompt: String) = {
+       this.print(prompt)
+       this.flush()
+-      this.readVirtualKey()
++      this.readCharacter()
+     }
+     def eraseLine() = consoleReader.resetPromptLine("", "", 0)
+     def redrawLineAndFlush(): Unit = { flush() ; drawLine() ; flush() }
+diff --git a/src/compiler/scala/tools/nsc/interpreter/session/FileBackedHistory.scala b/src/compiler/scala/tools/nsc/interpreter/session/FileBackedHistory.scala
+index dddfb1b..e598ac5 100644
+--- a/src/compiler/scala/tools/nsc/interpreter/session/FileBackedHistory.scala
++++ b/src/compiler/scala/tools/nsc/interpreter/session/FileBackedHistory.scala
+@@ -13,7 +13,7 @@ import FileBackedHistory._
+ /** TODO: file locking.
+  */
+ trait FileBackedHistory extends JLineHistory with JPersistentHistory {
+-  def maxSize: Int
++  def maxSize: Int = 2500
+   protected lazy val historyFile: File = defaultFile
+   private var isPersistent = true
+ 
+diff --git a/src/compiler/scala/tools/nsc/interpreter/session/JLineHistory.scala b/src/compiler/scala/tools/nsc/interpreter/session/JLineHistory.scala
+index 18e0ee7..fc33192 100644
+--- a/src/compiler/scala/tools/nsc/interpreter/session/JLineHistory.scala
++++ b/src/compiler/scala/tools/nsc/interpreter/session/JLineHistory.scala
+@@ -13,7 +13,6 @@ package session
+ trait JLineHistory extends JHistory with History {
+   def size: Int
+   def isEmpty: Boolean
+-  def index: Int
+   def clear(): Unit
+   def get(index: Int): CharSequence
+   def add(line: CharSequence): Unit
+@@ -42,7 +41,8 @@ object JLineHistory {
+         addLineToFile(item)
+       }
+     }
+-    override def toString = "History(size = " + size + ", index = " + index + ")"
++    override def toString = "History(size = " + size + ", _index = " + index + ")"
++    override def maxSize: Int = 2500
+   }
+ 
+   def apply(): JLineHistory = try new JLineFileHistory catch { case x: Exception => new SimpleHistory() }
+diff --git a/src/compiler/scala/tools/nsc/interpreter/session/SimpleHistory.scala b/src/compiler/scala/tools/nsc/interpreter/session/SimpleHistory.scala
+index 9f4e2b9..8933849 100644
+--- a/src/compiler/scala/tools/nsc/interpreter/session/SimpleHistory.scala
++++ b/src/compiler/scala/tools/nsc/interpreter/session/SimpleHistory.scala
+@@ -10,7 +10,7 @@ package session
+ import scala.collection.mutable.{ Buffer, ListBuffer }
+ import scala.collection.JavaConverters._
+ 
+-class SimpleHistory extends JLineHistory {
++class SimpleHistory extends JMemoryHistory with JLineHistory {
+   private var _index: Int = 0
+   private val buf: Buffer[String] = new ListBuffer[String]
+   private def toEntries(): Seq[JEntry] = buf.zipWithIndex map { case (x, i) => Entry(i, x) }
+@@ -32,27 +32,27 @@ class SimpleHistory extends JLineHistory {
+   def maxSize: Int = 2500
+   def last = if (isEmpty) fail("last") else buf.last
+ 
+-  def size = buf.size
+-  def index = _index
+-  def isEmpty = buf.isEmpty
+-  def clear() = buf.clear()
+-  def get(idx: Int): CharSequence = buf(idx)
+-  def add(item: CharSequence): Unit = buf += item
+-  def replace(item: CharSequence): Unit = {
++  override def size = buf.size
++  override def index = _index
++  override def isEmpty = buf.isEmpty
++  override def clear() = buf.clear()
++  override def get(idx: Int): CharSequence = buf(idx)
++  override def add(item: CharSequence): Unit = buf += item
++  override def replace(item: CharSequence): Unit = {
+     buf trimEnd 1
+     add(item)
+   }
+-  def entries(idx: Int): JListIterator[JEntry] = toEntries().asJava.listIterator(idx)
+-  def entries(): JListIterator[JEntry]         = toEntries().asJava.listIterator()
+-  def iterator: JIterator[JEntry]              = toEntries().iterator.asJava
+-
+-  def current()         = if (index >= 0 && index < buf.size) buf(index) else fail("current()")
+-  def previous()        = (index > 0) && minusOne
+-  def next()            = (index <= lastIndex) && plusOne
+-  def moveToFirst()     = (size > 0) && (index != 0) && setTo(0)
+-  def moveToLast()      = (size > 0) && (index < lastIndex) && setTo(lastIndex)
+-  def moveTo(idx: Int)  = (idx > 0) && (idx <= lastIndex) && setTo(idx)
+-  def moveToEnd(): Unit = setTo(size)
++  override def entries(idx: Int): JListIterator[JEntry] = toEntries().asJava.listIterator(idx)
++  override def entries(): JListIterator[JEntry]         = toEntries().asJava.listIterator()
++  override def iterator: JIterator[JEntry]              = toEntries().iterator.asJava
++
++  override def current()         = if (index >= 0 && index < buf.size) buf(index) else fail("current()")
++  override def previous()        = (index > 0) && minusOne
++  override def next()            = (index <= lastIndex) && plusOne
++  override def moveToFirst()     = (size > 0) && (index != 0) && setTo(0)
++  override def moveToLast()      = (size > 0) && (index < lastIndex) && setTo(lastIndex)
++  override def moveTo(idx: Int)  = (idx > 0) && (idx <= lastIndex) && setTo(idx)
++  override def moveToEnd(): Unit = setTo(size)
+ 
+   // scala legacy interface
+   def asList: List[JEntry] = toEntries().toList
diff --git a/scala-2.10.0-bnd.patch b/scala-2.10.0-bnd.patch
new file mode 100644
index 0000000..cf06ee9
--- /dev/null
+++ b/scala-2.10.0-bnd.patch
@@ -0,0 +1,22 @@
+diff -up scala-2.10.0-sources/build.xml.bndx scala-2.10.0-sources/build.xml
+--- scala-2.10.0-sources/build.xml.bndx	2013-01-07 22:47:24.862355735 +0100
++++ scala-2.10.0-sources/build.xml	2013-01-07 22:55:35.930399829 +0100
+@@ -280,9 +280,6 @@ INITIALISATION
+   </target>
+ 
+   <target name="init.extra.tasks" depends="init.maven.tasks" unless="init.extra.tasks.finished">
+-    <artifact:dependencies pathId="extra.tasks.classpath" filesetId="extra.tasks.fileset">
+-      <dependency groupId="biz.aQute" artifactId="bnd" version="1.50.0"/>
+-    </artifact:dependencies>
+     <!-- Pax runner -->
+     <property name="pax.exam.version" value="2.5.0"/>
+     <artifact:dependencies pathId="pax.exam.classpath" filesetId="pax.exam.fileset">
+@@ -297,7 +294,7 @@ INITIALISATION
+       <dependency groupId="org.apache.felix" artifactId="org.apache.felix.framework" version="3.2.2"/>
+     </artifact:dependencies>
+     <!-- BND support -->
+-    <typedef resource="aQute/bnd/ant/taskdef.properties" classpathref="extra.tasks.classpath" />
++    <typedef resource="aQute/bnd/ant/taskdef.properties" classpath="/usr/share/java/aqute-bnd.jar" />
+     <property name="init.maven.tasks.finished" value="true" />
+   </target>
+ 
diff --git a/scala-2.10.0-compiler-pom.patch b/scala-2.10.0-compiler-pom.patch
new file mode 100644
index 0000000..3a7d044
--- /dev/null
+++ b/scala-2.10.0-compiler-pom.patch
@@ -0,0 +1,13 @@
+--- src/build/maven/scala-compiler-pom.xml	2012-03-18 17:09:24.000000000 +0100
++++ src/build/maven/scala-compiler-pom.xml-gil	2012-09-13 02:41:01.919727846 +0200
+@@ -39,9 +39,9 @@
+ 			<version>@VERSION@</version>
+ 		</dependency>
+     <dependency>
+-      <groupId>org.scala-lang</groupId>
++      <groupId>org.sonatype.jline</groupId>
+       <artifactId>jline</artifactId>
+-      <version>@VERSION@</version>
++      <version>2.5</version>
+       <optional>true</optional>
+     </dependency>
diff --git a/scala-2.10.0-java7.patch b/scala-2.10.0-java7.patch
new file mode 100644
index 0000000..62ccde5
--- /dev/null
+++ b/scala-2.10.0-java7.patch
@@ -0,0 +1,237 @@
+diff -up scala-2.10.0-RC3-sources/build.xml.jdk7 scala-2.10.0-RC3-sources/build.xml
+--- scala-2.10.0-RC3-sources/build.xml.jdk7	2012-12-08 16:10:10.948127863 +0100
++++ scala-2.10.0-RC3-sources/build.xml	2012-12-08 16:16:20.267162236 +0100
+@@ -1087,7 +1087,7 @@ QUICK BUILD (QUICK)
+     </copy>
+   </target>
+ 
+-  <target name="quick.swing" depends="quick.lib" if="has.java6" unless="quick.lib.available">
++  <target name="quick.swing" depends="quick.lib" unless="quick.lib.available">
+     <scalacfork
+       destdir="${build-quick.dir}/classes/library"
+       compilerpathref="locker.classpath"
+@@ -1493,7 +1493,7 @@ PACKED QUICK BUILD (PACK)
+     </jar>
+   </target>
+ 
+-  <target name="pack.swing" depends="pack.lib" if="has.java6">
++  <target name="pack.swing" depends="pack.lib">
+     <jar destfile="${build-pack.dir}/lib/scala-swing.jar">
+       <fileset dir="${build-quick.dir}/classes/library">
+         <include name="scala/swing/**"/>
+@@ -1726,7 +1726,7 @@ OSGi Artifacts
+     <stopwatch name="osgi.bundle.timer" action="total"/>
+   </target>
+ 
+-  <target name="osgi.bundles.swing" depends="osgi.init" if="has.java6" unless="osgi.bundles.available">
++  <target name="osgi.bundles.swing" depends="osgi.init" unless="osgi.bundles.available">
+     <!-- TODO - only if JDK6 -->
+     <make-bundle name="scala-swing" version="${osgi.version.number}"/>
+   </target>
+@@ -1869,7 +1869,7 @@ BOOTSTRAPPING BUILD (STRAP)
+     </copy>
+   </target>
+ 
+-  <target name="strap.swing" if="has.java6" unless="strap.lib.available" depends="strap.lib">
++  <target name="strap.swing" unless="strap.lib.available" depends="strap.lib">
+     <scalacfork
+       destdir="${build-strap.dir}/classes/library"
+       compilerpathref="pack.classpath"
+diff -up scala-2.10.0-RC3-sources/src/swing/scala/swing/ComboBox.scala.jdk7 scala-2.10.0-RC3-sources/src/swing/scala/swing/ComboBox.scala
+--- scala-2.10.0-RC3-sources/src/swing/scala/swing/ComboBox.scala.jdk7	2012-11-05 02:49:19.000000000 +0100
++++ scala-2.10.0-RC3-sources/src/swing/scala/swing/ComboBox.scala	2012-12-07 23:29:32.821949227 +0100
+@@ -9,7 +9,7 @@
+ package scala.swing
+ 
+ import event._
+-import javax.swing.{JList, JComponent, JComboBox, JTextField, ComboBoxModel, AbstractListModel, ListCellRenderer}
++import javax.swing.{ JComponent, JComboBox, JTextField, ComboBoxModel, AbstractListModel, ListCellRenderer }
+ import java.awt.event.ActionListener
+ 
+ object ComboBox {
+@@ -118,10 +118,10 @@ object ComboBox {
+   implicit def floatEditor(c: ComboBox[Float]): Editor[Float] = new BuiltInEditor(c)(s => s.toFloat, s => s.toString)
+   implicit def doubleEditor(c: ComboBox[Double]): Editor[Double] = new BuiltInEditor(c)(s => s.toDouble, s => s.toString)
+ 
+-  def newConstantModel[A](items: Seq[A]): ComboBoxModel = {
+-    new AbstractListModel with ComboBoxModel {
++  def newConstantModel[A](items: Seq[A]): ComboBoxModel[A] = {
++    new AbstractListModel[A] with ComboBoxModel[A] {
+       private var selected: A = if (items.isEmpty) null.asInstanceOf[A] else items(0)
+-      def getSelectedItem: AnyRef = selected.asInstanceOf[AnyRef]
++      def getSelectedItem = selected.asInstanceOf[AnyRef]
+       def setSelectedItem(a: Any) {
+         if ((selected != null && selected != a) ||
+             selected == null && a != null) {
+@@ -129,7 +129,7 @@ object ComboBox {
+           fireContentsChanged(this, -1, -1)
+         }
+       }
+-      def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef]
++      def getElementAt(n: Int) = items(n).asInstanceOf[A]
+       def getSize = items.size
+     }
+   }
+@@ -157,7 +157,7 @@ object ComboBox {
+  * @see javax.swing.JComboBox
+  */
+ class ComboBox[A](items: Seq[A]) extends Component with Publisher {
+-  override lazy val peer: JComboBox = new JComboBox(ComboBox.newConstantModel(items)) with SuperMixin
++  override lazy val peer: JComboBox[A] = new JComboBox(ComboBox.newConstantModel(items)) with SuperMixin
+ 
+   object selection extends Publisher {
+     def index: Int = peer.getSelectedIndex
+@@ -182,7 +182,8 @@ class ComboBox[A](items: Seq[A]) extends
+    * of the component to its own defaults _after_ the renderer has been
+    * configured. That's Swing's principle of most suprise.
+    */
+-  def renderer: ListView.Renderer[A] = ListView.Renderer.wrap(peer.getRenderer)
++  def renderer: ListView.Renderer[A] = ListView.Renderer.wrap[A](peer.getRenderer.asInstanceOf[ListCellRenderer[A]])
++  // def renderer: ListView.Renderer[A] = ListView.Renderer.wrap(peer.getRenderer)
+   def renderer_=(r: ListView.Renderer[A]) { peer.setRenderer(r.peer) }
+ 
+   /* XXX: currently not safe to expose:
+@@ -201,8 +202,8 @@ class ComboBox[A](items: Seq[A]) extends
+     peer.setEditor(editor(this).comboBoxPeer)
+   }
+ 
+-  def prototypeDisplayValue: Option[A] = toOption[A](peer.getPrototypeDisplayValue)
++  def prototypeDisplayValue: Option[A] = Option(peer.getPrototypeDisplayValue)
+   def prototypeDisplayValue_=(v: Option[A]) {
+-    peer.setPrototypeDisplayValue((v map toAnyRef).orNull)
++    peer.setPrototypeDisplayValue((v map toAnyRef).orNull.asInstanceOf[A])
+   }
+ }
+diff -up scala-2.10.0-RC3-sources/src/swing/scala/swing/ListView.scala.jdk7 scala-2.10.0-RC3-sources/src/swing/scala/swing/ListView.scala
+--- scala-2.10.0-RC3-sources/src/swing/scala/swing/ListView.scala.jdk7	2012-11-05 02:49:19.000000000 +0100
++++ scala-2.10.0-RC3-sources/src/swing/scala/swing/ListView.scala	2012-12-07 22:58:13.267919851 +0100
+@@ -24,21 +24,21 @@ object ListView {
+     val MultiInterval = Value(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
+   }
+ 
+-  def wrap[A](c: JList) = new ListView[A] {
++  def wrap[A](c: JList[A]) = new ListView[A] {
+     override lazy val peer = c
+   }
+ 
+   object Renderer {
+-    def wrap[A](r: ListCellRenderer): Renderer[A] = new Wrapped[A](r)
++    def wrap[A](r: ListCellRenderer[A]): Renderer[A] = new Wrapped[A](r)
+ 
+     /**
+      * Wrapper for <code>javax.swing.ListCellRenderer<code>s
+      */
+-  	class Wrapped[A](override val peer: ListCellRenderer) extends Renderer[A] {
+-  	  def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: A, index: Int) = {
++      class Wrapped[A](override val peer: ListCellRenderer[A]) extends Renderer[A] {
++        def componentFor(list: ListView[_ <: A], isSelected: Boolean, focused: Boolean, a: A, index: Int) = {
+         Component.wrap(peer.getListCellRendererComponent(list.peer, a, index, isSelected, focused).asInstanceOf[JComponent])
++        }
+       }
+-  	}
+ 
+     /**
+      * Returns a renderer for items of type <code>A</code>. The given function
+@@ -55,8 +55,8 @@ object ListView {
+      * </code>
+      */
+     def apply[A,B](f: A => B)(implicit renderer: Renderer[B]): Renderer[A] = new Renderer[A] {
+-      def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component =
+-        renderer.componentFor(list, isSelected, focused, f(a), index)
++      def componentFor(list: ListView[_ <: A], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component =
++        renderer.componentFor(list.asInstanceOf[ListView[_ <: B]], isSelected, focused, f(a), index)
+     }
+   }
+ 
+@@ -69,11 +69,11 @@ object ListView {
+    * @see javax.swing.ListCellRenderer
+    */
+   abstract class Renderer[-A] {
+-    def peer: ListCellRenderer = new ListCellRenderer {
+-      def getListCellRendererComponent(list: JList, a: Any, index: Int, isSelected: Boolean, focused: Boolean) =
+-        componentFor(ListView.wrap[A](list), isSelected, focused, a.asInstanceOf[A], index).peer
++    def peer: ListCellRenderer[_ >: A] = new ListCellRenderer[A] {
++      def getListCellRendererComponent(list: JList[_ <: A], a: A, index: Int, isSelected: Boolean, focused: Boolean) =
++        componentFor(ListView.wrap[A](list.asInstanceOf[JList[A]]), isSelected, focused, a, index).peer
+     }
+-    def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component
++    def componentFor(list: ListView[_ <: A], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component
+   }
+ 
+   /**
+@@ -110,7 +110,7 @@ object ListView {
+     /**
+      * Configures the component before returning it.
+      */
+-    def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component = {
++    def componentFor(list: ListView[_ <: A], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component = {
+       preConfigure(list, isSelected, focused, a, index)
+       configure(list, isSelected, focused, a, index)
+       component
+@@ -123,10 +123,10 @@ object ListView {
+    * that renders the string returned from an item's <code>toString</code>.
+    */
+   implicit object GenericRenderer extends Renderer[Any] {
+-    override lazy val peer: ListCellRenderer = new DefaultListCellRenderer
+-    def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: Any, index: Int): Component = {
+-      val c = peer.getListCellRendererComponent(list.peer, a, index, isSelected, focused).asInstanceOf[JComponent]
+-      Component.wrap(c)
++    override lazy val peer: ListCellRenderer[Any] = (new DefaultListCellRenderer).asInstanceOf[ListCellRenderer[Any]]
++    def componentFor(list: ListView[_ <: Any], isSelected: Boolean, focused: Boolean, a: Any, index: Int): Component = {
++      val c = peer.getListCellRendererComponent(list.peer, a, index, isSelected, focused)
++      Component.wrap(c.asInstanceOf[JComponent])
+     }
+   }
+ }
+@@ -142,34 +142,34 @@ object ListView {
+  */
+ class ListView[A] extends Component {
+   import ListView._
+-  override lazy val peer: JList = new JList with SuperMixin
++  override lazy val peer: JList[A] = new JList[A] with SuperMixin
+ 
+   def this(items: Seq[A]) = {
+     this()
+     listData = items
+   }
+ 
+-  protected class ModelWrapper(val items: Seq[A]) extends AbstractListModel {
+-    def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef]
++  protected class ModelWrapper[A](val items: Seq[A]) extends AbstractListModel[A] {
++    def getElementAt(n: Int) = items(n)
+     def getSize = items.size
+   }
+ 
+   def listData: Seq[A] = peer.getModel match {
+-    case model: ModelWrapper => model.items
+-    case model @ _ => new Seq[A] { selfSeq =>
++    case model: ModelWrapper[a] => model.items
++    case model => new Seq[A] { selfSeq =>
+      def length = model.getSize
+      def iterator = new Iterator[A] {
+        var idx = 0
+        def next = { idx += 1; apply(idx-1) }
+        def hasNext = idx < selfSeq.length
+      }
+-     def apply(n: Int) = model.getElementAt(n).asInstanceOf[A]
++     def apply(n: Int): A = model.getElementAt(n)
+     }
+   }
+ 
+   def listData_=(items: Seq[A]) {
+-    peer.setModel(new AbstractListModel {
+-      def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef]
++    peer.setModel(new AbstractListModel[A] {
++      def getElementAt(n: Int) = items(n)
+       def getSize = items.size
+     })
+   }
+@@ -216,7 +216,7 @@ class ListView[A] extends Component {
+     def adjusting = peer.getSelectionModel.getValueIsAdjusting
+   }
+ 
+-  def renderer: ListView.Renderer[A] = ListView.Renderer.wrap(peer.getCellRenderer)
++  def renderer: ListView.Renderer[A] = ListView.Renderer.wrap[A](peer.getCellRenderer.asInstanceOf[ListCellRenderer[A]])
+   def renderer_=(r: ListView.Renderer[A]) { peer.setCellRenderer(r.peer) }
+ 
+   def fixedCellWidth = peer.getFixedCellWidth
diff --git a/scala-2.10.0-tooltemplate.patch b/scala-2.10.0-tooltemplate.patch
new file mode 100644
index 0000000..81337a2
--- /dev/null
+++ b/scala-2.10.0-tooltemplate.patch
@@ -0,0 +1,21 @@
+diff -up scala-2.10.0-RC3/src/compiler/scala/tools/ant/templates/tool-unix.tmpl.tool scala-2.10.0-RC3/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
+--- scala-2.10.0-RC3/src/compiler/scala/tools/ant/templates/tool-unix.tmpl.tool	2012-11-21 17:01:54.000000000 +0100
++++ scala-2.10.0-RC3/src/compiler/scala/tools/ant/templates/tool-unix.tmpl	2012-11-25 14:55:22.583111734 +0100
+@@ -68,7 +68,16 @@ if uname | grep -q ^MINGW; then
+ fi
+ 
+ # Finding the root folder for this Scala distribution
+-SCALA_HOME="$(findScalaHome)"
++export JAVA_HOMe=/usr/share/jvm/java
++
++[ -r @@JAVADIR@@-utils/java-functions ] && . @@JAVADIR@@-utils/java-functions || exit 1
++
++set_javacmd || exit 3
++check_java_env || exit 4
++set_jvm_dirs || exit 5
++
++export SCALA_HOME=@@DATADIR@@/scala
++
+ SEP=":"
+ 
+ # Possible additional command line options
diff --git a/scala-2.10.0-use_system_jline.patch b/scala-2.10.0-use_system_jline.patch
new file mode 100644
index 0000000..c096e97
--- /dev/null
+++ b/scala-2.10.0-use_system_jline.patch
@@ -0,0 +1,135 @@
+diff -up scala-2.10.0-RC5/build.xml.sysjline scala-2.10.0-RC5/build.xml
+--- scala-2.10.0-RC5/build.xml.sysjline	2012-12-07 19:39:49.000000000 +0100
++++ scala-2.10.0-RC5/build.xml	2012-12-07 20:40:26.749580408 +0100
+@@ -206,7 +206,7 @@ PROPERTIES
+   <property name="msil.starr.jar" value="${lib.dir}/msil.jar"/>
+   <property name="reflect.starr.jar" value="${lib.dir}/scala-reflect.jar"/>
+   <property name="comp.starr.jar" value="${lib.dir}/scala-compiler.jar"/>
+-  <property name="jline.jar" value="${lib.dir}/jline.jar"/>
++  <property name="jline.jar" value="/usr/share/java/jline2.jar"/>
+   <property name="ant.jar" value="${ant.home}/lib/ant.jar"/>
+   <property name="scalacheck.jar" value="${lib.dir}/scalacheck.jar"/>
+ 
+@@ -259,7 +259,6 @@ INITIALISATION
+ 
+   <target name="init.jars" depends="init.jars.check" unless="lib.jars.uptodate">
+     <echo level="warn" message="Updating bootstrap libs.  (To do this by hand, run ./pull-binary-libs.sh)"/>
+-    <exec osfamily="unix" vmlauncher="false" executable="./pull-binary-libs.sh" failifexecutionfails="true" />
+     <exec osfamily="windows" vmlauncher="false" executable="pull-binary-libs.sh" failifexecutionfails="true" />
+     <!-- uptodate task needs to know these are what's in the sha. -->
+     <touch>
+@@ -423,7 +422,7 @@ INITIALISATION
+      </echo>
+   </target>
+ 
+-  <target name="init" depends="init.jars, init.maven.jars, init.version.done, init.fail.bad.jdk, init.warn.jdk7, init.extra.tasks">
++  <target name="init" depends="init.maven.jars, init.version.done, init.fail.bad.jdk, init.warn.jdk7, init.extra.tasks">
+     <property name="scalac.args.always" value="-Yreify-copypaste" />
+   <!-- scalac.args.optimise is selectively overridden in certain antcall tasks. -->
+     <property name="scalac.args.optimise" value=""/>
+@@ -1535,7 +1534,6 @@ PACKED QUICK BUILD (PACK)
+       <fileset dir="${build-asm.dir}/classes"/>
+       <fileset dir="${build-libs.dir}/classes/fjbg"/>
+     </jar>
+-    <copy file="${jline.jar}" toDir="${build-pack.dir}/lib"/>
+     <copy todir="${build-pack.dir}/lib">
+       <fileset dir="${lib-extra.dir}">
+         <include name="**/*.jar"/>
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala	2012-12-07 19:51:05.782792214 +0100
+@@ -6,8 +6,8 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline.console.{ ConsoleReader, CursorBuffer }
+-import scala.tools.jline.console.completer.CompletionHandler
++import jline.console.{ ConsoleReader, CursorBuffer }
++import jline.console.completer.CompletionHandler
+ import Completion._
+ 
+ trait ConsoleReaderHelper extends ConsoleReader {
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Delimited.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Delimited.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Delimited.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Delimited.scala	2012-12-07 19:51:05.782792214 +0100
+@@ -6,7 +6,7 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
++import jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
+ 
+ class JLineDelimiter extends ArgumentDelimiter {
+   def toJLine(args: List[String], cursor: Int) = args match {
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala	2012-12-07 19:51:05.783792215 +0100
+@@ -6,8 +6,8 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline._
+-import scala.tools.jline.console.completer._
++import jline._
++import jline.console.completer._
+ import Completion._
+ import scala.collection.mutable.ListBuffer
+ 
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala	2012-12-07 19:51:05.783792215 +0100
+@@ -6,8 +6,8 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline.console.ConsoleReader
+-import scala.tools.jline.console.completer._
++import jline.console.ConsoleReader
++import jline.console.completer._
+ import session._
+ import scala.collection.JavaConverters._
+ import Completion._
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Parsed.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Parsed.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Parsed.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Parsed.scala	2012-12-07 19:51:05.783792215 +0100
+@@ -6,7 +6,7 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
++import jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
+ import util.returning
+ 
+ /** One instance of a command buffer.
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala	2012-12-07 19:51:05.783792215 +0100
+@@ -13,8 +13,8 @@ class ReplProps {
+   private def bool(name: String) = BooleanProp.keyExists(name)
+   private def int(name: String) = IntProp(name)
+ 
+-  val jlineDebug = bool("scala.tools.jline.internal.Log.debug")
+-  val jlineTrace = bool("scala.tools.jline.internal.Log.trace")
++  val jlineDebug = bool("jline.internal.Log.debug")
++  val jlineTrace = bool("jline.internal.Log.trace")
+ 
+   val info  = bool("scala.repl.info")
+   val debug = bool("scala.repl.debug")
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/session/package.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/session/package.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/session/package.scala.sysjline	2012-12-07 19:39:49.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/session/package.scala	2012-12-07 19:51:05.784792216 +0100
+@@ -14,10 +14,10 @@ package object session {
+   type JIterator[T]       = java.util.Iterator[T]
+   type JListIterator[T]   = java.util.ListIterator[T]
+ 
+-  type JEntry             = scala.tools.jline.console.history.History.Entry
+-  type JHistory           = scala.tools.jline.console.history.History
+-  type JMemoryHistory     = scala.tools.jline.console.history.MemoryHistory
+-  type JPersistentHistory = scala.tools.jline.console.history.PersistentHistory
++  type JEntry             = jline.console.history.History.Entry
++  type JHistory           = jline.console.history.History
++  type JMemoryHistory     = jline.console.history.MemoryHistory
++  type JPersistentHistory = jline.console.history.PersistentHistory
+ 
+   private[interpreter] implicit def charSequenceFix(x: CharSequence): String = x.toString
+ }
diff --git a/scala-2.10.1-bc.patch b/scala-2.10.1-bc.patch
new file mode 100644
index 0000000..68227f6
--- /dev/null
+++ b/scala-2.10.1-bc.patch
@@ -0,0 +1,28 @@
+diff -u orig/bincompat-backward.whitelist.conf new/bincompat-backward.whitelist.conf
+--- orig/bincompat-backward.whitelist.conf	2013-09-11 12:59:13.684010082 -0500
++++ new/bincompat-backward.whitelist.conf	2013-09-11 12:59:08.751002599 -0500
+@@ -1,6 +1,10 @@
+ filter {
+     problems=[
+         # Scala library
++	{
++     	    matchName="scala.xml.dtd.ElementValidator.scala$xml$dtd$ElementValidator$$find$2"
++            problemName=IncompatibleMethTypeProblem
++        },
+         {
+             # can only be called from Stream::distinct, which cannot itself be inlined, so distinct is the only feasible call-site
+             matchName="scala.collection.immutable.Stream.scala$collection$immutable$Stream$$loop$4"
+diff -u orig/bincompat-forward.whitelist.conf new/bincompat-forward.whitelist.conf
+--- orig/bincompat-forward.whitelist.conf	2013-09-11 12:59:13.684010082 -0500
++++ new/bincompat-forward.whitelist.conf	2013-09-11 12:59:08.751002599 -0500
+@@ -5,6 +5,10 @@
+         #     matchName="scala.collection.mutable.MutableList.tailImpl"
+         #     problemName=MissingMethodProblem
+         # },
++	{
++     	    matchName="scala.xml.dtd.ElementValidator.scala$xml$dtd$ElementValidator$$find$2"
++            problemName=IncompatibleMethTypeProblem
++        },
+         {
+             # can only be called from Stream::distinct, which cannot itself be inlined, so distinct is the only feasible call-site
+             matchName="scala.collection.immutable.Stream.scala$collection$immutable$Stream$$loop$6"
diff --git a/scala-2.10.2-java7.patch b/scala-2.10.2-java7.patch
new file mode 100644
index 0000000..323ca42
--- /dev/null
+++ b/scala-2.10.2-java7.patch
@@ -0,0 +1,198 @@
+diff -up scala-2.10.0-RC3-sources/src/swing/scala/swing/ComboBox.scala.jdk7 scala-2.10.0-RC3-sources/src/swing/scala/swing/ComboBox.scala
+--- scala-2.10.0-RC3-sources/src/swing/scala/swing/ComboBox.scala.jdk7	2012-11-05 02:49:19.000000000 +0100
++++ scala-2.10.0-RC3-sources/src/swing/scala/swing/ComboBox.scala	2012-12-07 23:29:32.821949227 +0100
+@@ -9,7 +9,7 @@
+ package scala.swing
+ 
+ import event._
+-import javax.swing.{JList, JComponent, JComboBox, JTextField, ComboBoxModel, AbstractListModel, ListCellRenderer}
++import javax.swing.{ JComponent, JComboBox, JTextField, ComboBoxModel, AbstractListModel, ListCellRenderer }
+ import java.awt.event.ActionListener
+ 
+ object ComboBox {
+@@ -118,10 +118,10 @@ object ComboBox {
+   implicit def floatEditor(c: ComboBox[Float]): Editor[Float] = new BuiltInEditor(c)(s => s.toFloat, s => s.toString)
+   implicit def doubleEditor(c: ComboBox[Double]): Editor[Double] = new BuiltInEditor(c)(s => s.toDouble, s => s.toString)
+ 
+-  def newConstantModel[A](items: Seq[A]): ComboBoxModel = {
+-    new AbstractListModel with ComboBoxModel {
++  def newConstantModel[A](items: Seq[A]): ComboBoxModel[A] = {
++    new AbstractListModel[A] with ComboBoxModel[A] {
+       private var selected: A = if (items.isEmpty) null.asInstanceOf[A] else items(0)
+-      def getSelectedItem: AnyRef = selected.asInstanceOf[AnyRef]
++      def getSelectedItem = selected.asInstanceOf[AnyRef]
+       def setSelectedItem(a: Any) {
+         if ((selected != null && selected != a) ||
+             selected == null && a != null) {
+@@ -129,7 +129,7 @@ object ComboBox {
+           fireContentsChanged(this, -1, -1)
+         }
+       }
+-      def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef]
++      def getElementAt(n: Int) = items(n).asInstanceOf[A]
+       def getSize = items.size
+     }
+   }
+@@ -157,7 +157,7 @@ object ComboBox {
+  * @see javax.swing.JComboBox
+  */
+ class ComboBox[A](items: Seq[A]) extends Component with Publisher {
+-  override lazy val peer: JComboBox = new JComboBox(ComboBox.newConstantModel(items)) with SuperMixin
++  override lazy val peer: JComboBox[A] = new JComboBox(ComboBox.newConstantModel(items)) with SuperMixin
+ 
+   object selection extends Publisher {
+     def index: Int = peer.getSelectedIndex
+@@ -182,7 +182,8 @@ class ComboBox[A](items: Seq[A]) extends
+    * of the component to its own defaults _after_ the renderer has been
+    * configured. That's Swing's principle of most suprise.
+    */
+-  def renderer: ListView.Renderer[A] = ListView.Renderer.wrap(peer.getRenderer)
++  def renderer: ListView.Renderer[A] = ListView.Renderer.wrap[A](peer.getRenderer.asInstanceOf[ListCellRenderer[A]])
++  // def renderer: ListView.Renderer[A] = ListView.Renderer.wrap(peer.getRenderer)
+   def renderer_=(r: ListView.Renderer[A]) { peer.setRenderer(r.peer) }
+ 
+   /* XXX: currently not safe to expose:
+@@ -201,8 +202,8 @@ class ComboBox[A](items: Seq[A]) extends
+     peer.setEditor(editor(this).comboBoxPeer)
+   }
+ 
+-  def prototypeDisplayValue: Option[A] = toOption[A](peer.getPrototypeDisplayValue)
++  def prototypeDisplayValue: Option[A] = Option(peer.getPrototypeDisplayValue)
+   def prototypeDisplayValue_=(v: Option[A]) {
+-    peer.setPrototypeDisplayValue((v map toAnyRef).orNull)
++    peer.setPrototypeDisplayValue((v map toAnyRef).orNull.asInstanceOf[A])
+   }
+ }
+diff -up scala-2.10.0-RC3-sources/src/swing/scala/swing/ListView.scala.jdk7 scala-2.10.0-RC3-sources/src/swing/scala/swing/ListView.scala
+--- scala-2.10.0-RC3-sources/src/swing/scala/swing/ListView.scala.jdk7	2012-11-05 02:49:19.000000000 +0100
++++ scala-2.10.0-RC3-sources/src/swing/scala/swing/ListView.scala	2012-12-07 22:58:13.267919851 +0100
+@@ -24,21 +24,21 @@ object ListView {
+     val MultiInterval = Value(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
+   }
+ 
+-  def wrap[A](c: JList) = new ListView[A] {
++  def wrap[A](c: JList[A]) = new ListView[A] {
+     override lazy val peer = c
+   }
+ 
+   object Renderer {
+-    def wrap[A](r: ListCellRenderer): Renderer[A] = new Wrapped[A](r)
++    def wrap[A](r: ListCellRenderer[A]): Renderer[A] = new Wrapped[A](r)
+ 
+     /**
+      * Wrapper for <code>javax.swing.ListCellRenderer<code>s
+      */
+-  	class Wrapped[A](override val peer: ListCellRenderer) extends Renderer[A] {
+-  	  def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: A, index: Int) = {
++      class Wrapped[A](override val peer: ListCellRenderer[A]) extends Renderer[A] {
++        def componentFor(list: ListView[_ <: A], isSelected: Boolean, focused: Boolean, a: A, index: Int) = {
+         Component.wrap(peer.getListCellRendererComponent(list.peer, a, index, isSelected, focused).asInstanceOf[JComponent])
++        }
+       }
+-  	}
+ 
+     /**
+      * Returns a renderer for items of type <code>A</code>. The given function
+@@ -55,8 +55,8 @@ object ListView {
+      * </code>
+      */
+     def apply[A,B](f: A => B)(implicit renderer: Renderer[B]): Renderer[A] = new Renderer[A] {
+-      def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component =
+-        renderer.componentFor(list, isSelected, focused, f(a), index)
++      def componentFor(list: ListView[_ <: A], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component =
++        renderer.componentFor(list.asInstanceOf[ListView[_ <: B]], isSelected, focused, f(a), index)
+     }
+   }
+ 
+@@ -69,11 +69,11 @@ object ListView {
+    * @see javax.swing.ListCellRenderer
+    */
+   abstract class Renderer[-A] {
+-    def peer: ListCellRenderer = new ListCellRenderer {
+-      def getListCellRendererComponent(list: JList, a: Any, index: Int, isSelected: Boolean, focused: Boolean) =
+-        componentFor(ListView.wrap[A](list), isSelected, focused, a.asInstanceOf[A], index).peer
++    def peer: ListCellRenderer[_ >: A] = new ListCellRenderer[A] {
++      def getListCellRendererComponent(list: JList[_ <: A], a: A, index: Int, isSelected: Boolean, focused: Boolean) =
++        componentFor(ListView.wrap[A](list.asInstanceOf[JList[A]]), isSelected, focused, a, index).peer
+     }
+-    def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component
++    def componentFor(list: ListView[_ <: A], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component
+   }
+ 
+   /**
+@@ -110,7 +110,7 @@ object ListView {
+     /**
+      * Configures the component before returning it.
+      */
+-    def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component = {
++    def componentFor(list: ListView[_ <: A], isSelected: Boolean, focused: Boolean, a: A, index: Int): Component = {
+       preConfigure(list, isSelected, focused, a, index)
+       configure(list, isSelected, focused, a, index)
+       component
+@@ -123,10 +123,10 @@ object ListView {
+    * that renders the string returned from an item's <code>toString</code>.
+    */
+   implicit object GenericRenderer extends Renderer[Any] {
+-    override lazy val peer: ListCellRenderer = new DefaultListCellRenderer
+-    def componentFor(list: ListView[_], isSelected: Boolean, focused: Boolean, a: Any, index: Int): Component = {
+-      val c = peer.getListCellRendererComponent(list.peer, a, index, isSelected, focused).asInstanceOf[JComponent]
+-      Component.wrap(c)
++    override lazy val peer: ListCellRenderer[Any] = (new DefaultListCellRenderer).asInstanceOf[ListCellRenderer[Any]]
++    def componentFor(list: ListView[_ <: Any], isSelected: Boolean, focused: Boolean, a: Any, index: Int): Component = {
++      val c = peer.getListCellRendererComponent(list.peer, a, index, isSelected, focused)
++      Component.wrap(c.asInstanceOf[JComponent])
+     }
+   }
+ }
+@@ -142,34 +142,34 @@ object ListView {
+  */
+ class ListView[A] extends Component {
+   import ListView._
+-  override lazy val peer: JList = new JList with SuperMixin
++  override lazy val peer: JList[A] = new JList[A] with SuperMixin
+ 
+   def this(items: Seq[A]) = {
+     this()
+     listData = items
+   }
+ 
+-  protected class ModelWrapper(val items: Seq[A]) extends AbstractListModel {
+-    def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef]
++  protected class ModelWrapper[A](val items: Seq[A]) extends AbstractListModel[A] {
++    def getElementAt(n: Int) = items(n)
+     def getSize = items.size
+   }
+ 
+   def listData: Seq[A] = peer.getModel match {
+-    case model: ModelWrapper => model.items
+-    case model @ _ => new Seq[A] { selfSeq =>
++    case model: ModelWrapper[a] => model.items
++    case model => new Seq[A] { selfSeq =>
+      def length = model.getSize
+      def iterator = new Iterator[A] {
+        var idx = 0
+        def next = { idx += 1; apply(idx-1) }
+        def hasNext = idx < selfSeq.length
+      }
+-     def apply(n: Int) = model.getElementAt(n).asInstanceOf[A]
++     def apply(n: Int): A = model.getElementAt(n)
+     }
+   }
+ 
+   def listData_=(items: Seq[A]) {
+-    peer.setModel(new AbstractListModel {
+-      def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef]
++    peer.setModel(new AbstractListModel[A] {
++      def getElementAt(n: Int) = items(n)
+       def getSize = items.size
+     })
+   }
+@@ -216,7 +216,7 @@ class ListView[A] extends Component {
+     def adjusting = peer.getSelectionModel.getValueIsAdjusting
+   }
+ 
+-  def renderer: ListView.Renderer[A] = ListView.Renderer.wrap(peer.getCellRenderer)
++  def renderer: ListView.Renderer[A] = ListView.Renderer.wrap[A](peer.getCellRenderer.asInstanceOf[ListCellRenderer[A]])
+   def renderer_=(r: ListView.Renderer[A]) { peer.setCellRenderer(r.peer) }
+ 
+   def fixedCellWidth = peer.getFixedCellWidth
diff --git a/scala-2.10.2-use_system_jline.patch b/scala-2.10.2-use_system_jline.patch
new file mode 100644
index 0000000..33d0782
--- /dev/null
+++ b/scala-2.10.2-use_system_jline.patch
@@ -0,0 +1,98 @@
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala	2012-12-07 19:51:05.782792214 +0100
+@@ -6,8 +6,8 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline.console.{ ConsoleReader, CursorBuffer }
+-import scala.tools.jline.console.completer.CompletionHandler
++import jline.console.{ ConsoleReader, CursorBuffer }
++import jline.console.completer.CompletionHandler
+ import Completion._
+ 
+ trait ConsoleReaderHelper extends ConsoleReader {
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Delimited.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Delimited.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Delimited.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Delimited.scala	2012-12-07 19:51:05.782792214 +0100
+@@ -6,7 +6,7 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
++import jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
+ 
+ class JLineDelimiter extends ArgumentDelimiter {
+   def toJLine(args: List[String], cursor: Int) = args match {
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala	2012-12-07 19:51:05.783792215 +0100
+@@ -6,8 +6,8 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline._
+-import scala.tools.jline.console.completer._
++import jline._
++import jline.console.completer._
+ import Completion._
+ import scala.collection.mutable.ListBuffer
+ 
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala	2012-12-07 19:51:05.783792215 +0100
+@@ -6,8 +6,8 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline.console.ConsoleReader
+-import scala.tools.jline.console.completer._
++import jline.console.ConsoleReader
++import jline.console.completer._
+ import session._
+ import scala.collection.JavaConverters._
+ import Completion._
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Parsed.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Parsed.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Parsed.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/Parsed.scala	2012-12-07 19:51:05.783792215 +0100
+@@ -6,7 +6,7 @@
+ package scala.tools.nsc
+ package interpreter
+ 
+-import scala.tools.jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
++import jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
+ import util.returning
+ 
+ /** One instance of a command buffer.
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala.sysjline	2012-12-07 19:39:50.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala	2012-12-07 19:51:05.783792215 +0100
+@@ -13,8 +13,8 @@ class ReplProps {
+   private def bool(name: String) = BooleanProp.keyExists(name)
+   private def int(name: String) = IntProp(name)
+ 
+-  val jlineDebug = bool("scala.tools.jline.internal.Log.debug")
+-  val jlineTrace = bool("scala.tools.jline.internal.Log.trace")
++  val jlineDebug = bool("jline.internal.Log.debug")
++  val jlineTrace = bool("jline.internal.Log.trace")
+ 
+   val info  = bool("scala.repl.info")
+   val debug = bool("scala.repl.debug")
+diff -up scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/session/package.scala.sysjline scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/session/package.scala
+--- scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/session/package.scala.sysjline	2012-12-07 19:39:49.000000000 +0100
++++ scala-2.10.0-RC5/src/compiler/scala/tools/nsc/interpreter/session/package.scala	2012-12-07 19:51:05.784792216 +0100
+@@ -14,10 +14,10 @@ package object session {
+   type JIterator[T]       = java.util.Iterator[T]
+   type JListIterator[T]   = java.util.ListIterator[T]
+ 
+-  type JEntry             = scala.tools.jline.console.history.History.Entry
+-  type JHistory           = scala.tools.jline.console.history.History
+-  type JMemoryHistory     = scala.tools.jline.console.history.MemoryHistory
+-  type JPersistentHistory = scala.tools.jline.console.history.PersistentHistory
++  type JEntry             = jline.console.history.History.Entry
++  type JHistory           = jline.console.history.History
++  type JMemoryHistory     = jline.console.history.MemoryHistory
++  type JPersistentHistory = jline.console.history.PersistentHistory
+ 
+   private[interpreter] implicit def charSequenceFix(x: CharSequence): String = x.toString
+ }
diff --git a/scala-2.10.3-build_xml.patch b/scala-2.10.3-build_xml.patch
new file mode 100644
index 0000000..8987244
--- /dev/null
+++ b/scala-2.10.3-build_xml.patch
@@ -0,0 +1,626 @@
+diff -up scala-2.10.3/build.xml.orig scala-2.10.3/build.xml
+--- scala-2.10.3/build.xml.orig	2013-10-10 21:03:24.000000000 +0200
++++ scala-2.10.3/build.xml	2013-10-11 16:32:56.478147883 +0200
+@@ -1,6 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ 
+-<project name="sabbus" default="build" xmlns:artifact="urn:maven-artifact-ant">
++<project name="sabbus" default="build">
+   <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.
+   </description>
+@@ -44,8 +44,8 @@ TODO:
+ <!-- ===========================================================================
+                                   END-USER TARGETS
+ ============================================================================ -->
+-  <target name="build"     depends="pack.done"      description="Builds the Scala compiler and library. Executables are in 'build/pack/bin'."/>
+-  <target name="test"      depends="test.done"      description="Runs test suite and bootstrapping test on Scala compiler and library."/>
++  <target name="build"     depends="quick.done, pack.bin"      description="Builds the Scala compiler and library. Executables are in 'build/pack/bin'."/>
++  <target name="test"      description="Runs test suite and bootstrapping test on Scala compiler and library."/>
+   <target name="docs"      depends="docs.done"      description="Builds documentation for the Scala library. Scaladoc is in 'build/scaladoc/library'."/>
+   <target name="docscomp"  depends="docs.comp"      description="Builds documentation for the Scala compiler and library. Scaladoc is in 'build/scaladoc'."/>
+   <target name="dist" depends="all.clean, all.done" description="Cleans all and builds and tests a new distribution."/>
+@@ -68,7 +68,7 @@ TODO:
+   <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="all.done" depends="dist.done"/>
+ 
+   <!-- 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">
+@@ -95,8 +95,6 @@ TODO:
+ 
+   <property environment="env"/>
+   <!-- Prevents system classpath from being used -->
+-  <property name="build.sysclasspath"     value="ignore"/>
+-
+   <!-- Defines the repository layout -->
+   <property name="docs.dir"               value="${basedir}/docs"/>
+   <property name="lib.dir"                value="${basedir}/lib"/>
+@@ -122,8 +120,8 @@ TODO:
+   <property name="reflect.starr.jar"       value="${lib.dir}/scala-reflect.jar"/>
+   <property name="compiler.starr.jar"      value="${lib.dir}/scala-compiler.jar"/>
+   <property name="msil.starr.jar"          value="${lib.dir}/msil.jar"/>
+-  <property name="jline.jar"               value="${lib.dir}/jline.jar"/>
+-  <property name="ant.jar"                 value="${ant.home}/lib/ant.jar"/>
++  <property name="jline.jar"               value="/usr/share/java/jline2.jar"/>
++  <property name="ant.jar"                 value="/usr/share/java/ant.jar"/>
+   <property name="scalacheck.jar"          value="${lib.dir}/scalacheck.jar"/>
+ 
+   <!-- Sets location of build folders -->
+@@ -182,86 +180,62 @@ TODO:
+ 
+   <target name="boot" depends="desired.jars.uptodate" unless="lib.jars.uptodate">
+     <echo level="warn" message="Updating bootstrap libs.  (To do this by hand, run ./pull-binary-libs.sh)"/>
+-    <exec osfamily="unix" vmlauncher="false" executable="./pull-binary-libs.sh" failifexecutionfails="true" />
+-    <exec osfamily="windows" vmlauncher="false" executable="pull-binary-libs.sh" failifexecutionfails="true" />
+-    <!-- uptodate task needs to know these are what's in the sha. -->
+-    <touch>
+-      <fileset dir="${basedir}"><patternset refid="desired.jars"/></fileset>
+-      <mapper type="glob" from="*.desired.sha1" to="*"/>
+-    </touch>
+   </target>
+ 
+   <target name="init" depends="boot">
+-    <!-- 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="${lib-ant.dir}/ant-contrib.jar"/>
+ 
+-    <!-- Add our maven ant tasks -->
+-    <path id="maven-ant-tasks.classpath" path="${lib-ant.dir}/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" />
+-
+-    <!-- Resolve maven dependencies -->
+-
+-    <!-- work around http://jira.codehaus.org/browse/MANTTASKS-203:
+-         java.lang.ClassCastException: org.codehaus.plexus.DefaultPlexusContainer cannot be cast to org.codehaus.plexus.PlexusContainer
+-         on repeated use of artifact:dependencies
+-    -->
+-    <if><not><isset property="maven-deps-done"></isset></not><then>
+-      <mkdir dir="${user.home}/.m2/repository"/>
+-      <!-- This task has an issue where if the user directory does not exist, so we create it above. UGH. -->
+-      <artifact:dependencies pathId="extra.tasks.classpath" filesetId="extra.tasks.fileset">
+-        <dependency groupId="biz.aQute" artifactId="bnd" version="1.50.0"/>
+-      </artifact:dependencies>
+-
+-      <!-- JUnit -->
+-      <property name="junit.version" value="4.10"/>
+-      <artifact:dependencies pathId="junit.classpath" filesetId="junit.fileset">
+-        <dependency groupId="junit" artifactId="junit" version="${junit.version}"/>
+-      </artifact:dependencies>
+-
+-      <!-- Pax runner -->
+-      <property name="pax.exam.version" value="2.5.0"/>
+-      <artifact:dependencies pathId="pax.exam.classpath" filesetId="pax.exam.fileset">
+-        <dependency groupId="org.ops4j.pax.exam" artifactId="pax-exam-container-native" version="${pax.exam.version}"/>
+-        <dependency groupId="org.ops4j.pax.exam" artifactId="pax-exam-junit4" version="${pax.exam.version}"/>
+-        <dependency groupId="org.ops4j.pax.exam" artifactId="pax-exam-link-assembly" version="${pax.exam.version}"/>
+-        <dependency groupId="org.ops4j.pax.url" artifactId="pax-url-aether" version="1.4.0"/>
+-        <dependency groupId="org.ops4j.pax.swissbox" artifactId="pax-swissbox-framework" version="1.5.1"/>
+-        <dependency groupId="ch.qos.logback" artifactId="logback-core" version="0.9.20"/>
+-        <dependency groupId="ch.qos.logback" artifactId="logback-classic" version="0.9.20"/>
+-        <dependency groupId="junit" artifactId="junit" version="${junit.version}"/>
+-        <dependency groupId="org.apache.felix" artifactId="org.apache.felix.framework" version="3.2.2"/>
+-      </artifact:dependencies>
+-
+-
+-      <artifact:dependencies pathId="partest.extras.classpath" filesetId="partest.extras.fileset" versionsId="partest.extras.versions">
+-        <dependency groupId="com.googlecode.java-diff-utils" artifactId="diffutils" version="1.3.0"/>
+-      </artifact:dependencies>
+-
+-      <!-- BND support -->
+-      <typedef resource="aQute/bnd/ant/taskdef.properties" classpathref="extra.tasks.classpath" />
+-
+-      <!-- Download STARR via maven if `starr.use.released` is set,
+-           and `starr.version` is specified (see the starr.number properties file).
+-           Want to slow down STARR changes, using only released versions. -->
+-      <if><isset property="starr.use.released"/><then>
+-        <echo message="Using Scala ${starr.version} for STARR."/>
+-        <artifact:dependencies pathId="starr.core.path">
+-          <dependency groupId="org.scala-lang" artifactId="scala-library" version="${starr.version}"/>
+-          <dependency groupId="org.scala-lang" artifactId="scala-reflect" version="${starr.version}"/>
+-          <dependency groupId="org.scala-lang" artifactId="scala-compiler" version="${starr.version}"/>
+-        </artifact:dependencies></then>
+-      <else>
+-        <path id="starr.core.path">
+-          <pathelement location="${library.starr.jar}"/>
+-          <pathelement location="${reflect.starr.jar}"/>
+-          <pathelement location="${compiler.starr.jar}"/>
+-          <pathelement location="${msil.starr.jar}"/>
+-        </path></else>
++    <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="/usr/share/java/ant/ant-contrib.jar"/>
++
++      <if><isset property="doBootstrapBuild"></isset>
++      <then>
++	<path id="scalabootstrap.classpath">
++	  <fileset dir="lib">
++	    <include name="scala*.jar"/>
++	  </fileset>
++	</path>
++      </then>
++    <else>
++
++	<path id="scalabootstrap.classpath">
++	  <fileset dir="/usr/share/scala/lib/">
++	    <include name="scala*.jar"/>
++	  </fileset>
++	</path>
++      </else>
+       </if>
+ 
++    <taskdef name="classloadVerify"
++	     classpathref="scalabootstrap.classpath"
++             classname="scala.tools.ant.ClassloadVerify"/>
++    <taskdef name="fsc"
++	     classpathref="scalabootstrap.classpath"
++             classname="scala.tools.ant.FastScalac"/>
++    <taskdef name="scalac"
++	     classpathref="scalabootstrap.classpath"
++             classname="scala.tools.ant.Scalac"/>
++    <taskdef name="scalascript"
++	     classpathref="scalabootstrap.classpath"
++             classname="scala.tools.ant.ScalaTool"/>
++    <taskdef name="scaladoc"
++	     classpathref="scalabootstrap.classpath"
++             classname="scala.tools.ant.Scaladoc"/>
++    <taskdef name="scalatool"
++	     classpathref="scalabootstrap.classpath"
++             classname="scala.tools.ant.ScalaTool"/>
++    <taskdef name="same"
++	     classpathref="scalabootstrap.classpath"
++             classname="scala.tools.ant.Same"/>
++    <taskdef name="pack200"
++	     classpathref="scalabootstrap.classpath"
++             classname="scala.tools.ant.Pack200Task"/>
++
++    <typedef resource="aQute/bnd/ant/taskdef.properties" classpath="/usr/share/java/aqute-bnd.jar" />
++
++    <if><not><isset property="maven-deps-done"></isset></not><then>
+       <property name="maven-deps-done"     value="yep!"/>
+     </then></if>
+ 
++
+     <!-- NOTE: ant properties are write-once: second writes are silently discarded; the logic below relies on this -->
+ 
+     <!-- Compute defaults (i.e., if not specified on command-line) for OSGi/maven version suffixes.
+@@ -450,6 +424,13 @@ TODO:
+ 
+       There must be a variable of the shape @{stage}.compiler.path  for all @{stage} in starr, locker, quick, strap.
+     -->
++    <path id="starr.core.path">
++      <pathelement location="${library.starr.jar}"/>
++      <pathelement location="${reflect.starr.jar}"/>
++      <pathelement location="${compiler.starr.jar}"/>
++      <pathelement location="${msil.starr.jar}"/>
++    </path>
++
+     <path id="starr.compiler.path">
+       <path refid="starr.core.path"/>
+       <pathelement location="${lib.dir}/forkjoin.jar"/>
+@@ -560,13 +541,6 @@ TODO:
+     <path id="quick.scalap.build.path">
+       <path refid="quick.compiler.build.path"/>
+       <pathelement location="${build-quick.dir}/classes/scalap"/>
+-      <pathelement location="${build-quick.dir}/classes/partest"/>
+-    </path>
+-
+-    <path id="quick.partest.build.path">
+-      <path refid="quick.scalap.build.path"/>
+-      <path refid="partest.extras.classpath"/>
+-      <pathelement location="${scalacheck.jar}"/>
+     </path>
+ 
+     <path id="quick.bin.tool.path">
+@@ -589,12 +563,10 @@ TODO:
+       <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/scala-partest.jar"/>
+       <pathelement location="${build-pack.dir}/lib/scalap.jar"/>
+       <pathelement location="${build-pack.dir}/lib/scala-actors.jar"/>
+       <pathelement location="${ant.jar}"/>
+       <pathelement location="${jline.jar}"/>
+-      <path refid="partest.extras.classpath"/>
+       <path refid="aux.libs"/>
+     </path>
+ 
+@@ -631,18 +603,6 @@ TODO:
+     <path id="pack.scalap.files">     <fileset dir="${build-quick.dir}/classes/scalap"/>
+                                       <fileset file="${src.dir}/scalap/decoder.properties"/> </path>
+ 
+-    <path id="pack.partest.files">
+-      <fileset dir="${build-quick.dir}/classes/partest">
+-        <exclude name="scala/tools/partest/javaagent/**"/>
+-      </fileset>
+-    </path>
+-
+-    <path id="pack.partest-javaagent.files">
+-      <fileset dir="${build-quick.dir}/classes/partest">
+-        <include name="scala/tools/partest/javaagent/**"/>
+-      </fileset>
+-    </path>
+-
+     <!-- STRAP -->
+     <path id="strap.library.build.path">
+       <pathelement location="${build-strap.dir}/classes/library"/>
+@@ -717,10 +677,6 @@ TODO:
+     <path id="test.positions.sub.build.path" path="${build-quick.dir}/classes/library"/>
+ 
+     <!-- TODO: consolidate *.includes -->
+-    <patternset id="partest.includes">
+-      <include name="**/*.xml"/>
+-    </patternset>
+-
+     <patternset id="lib.includes">
+       <include name="**/*.tmpl"/>
+       <include name="**/*.xml"/>
+@@ -749,7 +705,7 @@ TODO:
+       <include name="**/*.txt"/>
+     </patternset>
+ 
+-    <taskdef resource="scala/tools/ant/sabbus/antlib.xml" classpathref="starr.compiler.path"/>
++    <taskdef resource="scala/tools/ant/sabbus/antlib.xml" classpathref="starr.compiler.path"/> 
+   </target>
+ 
+ <!-- ===========================================================================
+@@ -795,7 +751,8 @@ TODO:
+           classpath="${@{project}-classes}"
+           includes="**/*.java"
+           target="1.6" source="1.5"
+-          compiler="javac1.6">
++          compiler="javac1.6"
++	  includeantruntime="false" >
+             <compilerarg line="${javac.args} @{args}"/>
+         </javac>
+         <if><equals arg1="@{jar}" arg2="yes"/><then>
+@@ -828,6 +785,7 @@ TODO:
+         destdir="${build-@{stage}.dir}/classes/@{destproject}"
+         includes="**/*.java"
+         excludes="@{excludes}"
++	includeantruntime="false"
+         target="1.6" source="1.5">
+           <compilerarg line="${javac.args} @{args}"/>
+           <classpath refid="@{stage}.@{destproject}.build.path"/>
+@@ -1167,10 +1125,7 @@ TODO:
+   <target name="quick.scalap"     depends="quick.comp">
+     <staged-build with="locker"   stage="quick" project="scalap"/> </target>
+ 
+-  <target name="quick.partest"    depends="quick.scalap, quick.comp, asm.done">
+-    <staged-build with="locker"   stage="quick" project="partest" version="partest"/> </target>
+-
+-  <target name="quick.swing"      depends="quick.actors, quick.lib" if="has.java6">
++  <target name="quick.swing"      depends="quick.actors, quick.lib">
+     <staged-build with="locker"   stage="quick" project="swing"/> </target>
+ 
+   <target name="quick.plugins"    depends="quick.comp">
+@@ -1206,7 +1161,7 @@ TODO:
+     </staged-uptodate>
+   </target>
+ 
+-  <target name="quick.bin" depends="quick.lib, quick.reflect, quick.comp, quick.scalacheck, quick.scalap, quick.swing, quick.plugins, quick.partest">
++  <target name="quick.bin" depends="quick.lib, quick.reflect, quick.comp, quick.scalacheck, quick.scalap, quick.swing, quick.plugins">
+     <staged-bin stage="quick" classpathref="quick.bin.tool.path"/>
+   </target>
+ 
+@@ -1221,7 +1176,7 @@ TODO:
+     <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.swing" depends="quick.swing"> <staged-pack project="swing"/> </target>
+   <target name="pack.reflect" depends="quick.reflect">            <staged-pack project="reflect"/> </target>
+ 
+   <target name="pack.comp"    depends="quick.comp, asm.done">
+@@ -1251,36 +1206,16 @@ TODO:
+   <target name="pack.plugins"    depends="quick.plugins">    <staged-pack project="plugins"    targetdir="misc/scala-devel/plugins" targetjar="continuations.jar"/> </target>
+   <target name="pack.scalacheck" depends="quick.scalacheck"> <staged-pack project="scalacheck" targetjar="scalacheck.jar"/> </target>
+ 
+-  <target name="pack.partest" depends="quick.partest">
+-    <staged-pack project="partest"/>
+-     <!-- TODO the manifest should influence actuality of this target -->
+-    <staged-pack project="partest-javaagent" manifest="${src.dir}/partest/scala/tools/partest/javaagent/MANIFEST.MF"/>
+-  </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.partest, pack.plugins, pack.reflect, pack.scalacheck, pack.scalap, pack.swing">
++  <target name="pack.bin" depends="pack.comp, pack.lib, pack.actors, pack.plugins, pack.reflect, pack.scalacheck, pack.scalap, pack.swing">
+     <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 -->
+-    <copy todir="${build-pack.dir}/lib">
+-      <resources refid="partest.extras.fileset"/>
+-      <mapper classpathref="maven-ant-tasks.classpath" classname="org.apache.maven.artifact.ant.VersionMapper"
+-              from="${partest.extras.versions}" to="flatten"/>
+-    </copy>
+-
+-    <taskdef resource="scala/tools/ant/antlib.xml" classpathref="pack.compiler.path"/>
+-    <taskdef resource="scala/tools/partest/antlib.xml" classpathref="partest.classpath"/>
+-  </target>
+-
+-
+ <!-- ===========================================================================
+                                   BOOTSTRAPPING BUILD (STRAP)
+ ============================================================================ -->
+-  <target name="strap.done" depends="pack.done">
++  <target name="strap.done" depends="quick.done, pack.bin">
+     <staged-build with="pack" stage="strap" project="library" srcpath="${src.dir}/library" includes="lib.rootdoc.includes"/>
+     <staged-build with="pack" stage="strap" project="msil" java-excludes="**/tests/**"/>
+     <staged-build with="pack" stage="strap" project="reflect"/>
+@@ -1315,7 +1250,7 @@ TODO:
+ <!-- ===========================================================================
+                                   OSGi Artifacts
+ ============================================================================ -->
+-  <target name="osgi.done" depends="pack.done">
++  <target name="osgi.done" depends="quick.done, pack.bin">
+     <mkdir dir="${build-osgi.dir}"/>
+ 
+     <!-- simplify fixing pom versions -->
+@@ -1362,7 +1297,6 @@ TODO:
+     </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-reflect" version="${osgi.version.number}" />
+@@ -1370,10 +1304,7 @@ TODO:
+       <make-plugin-bundle name="continuations" version="${osgi.version.number}" />
+       <touch file="${build-osgi.dir}/bundles.complete" verbose="no"/>
+ 
+-      <if><isset property="has.java6"/><then>
+-        <make-bundle name="scala-swing" version="${osgi.version.number}"/></then>
+-      </if>
+-      <stopwatch name="osgi.bundle.timer" action="total"/></then>
++      <make-bundle name="scala-swing" version="${osgi.version.number}"/></then>
+     </if>
+   </target>
+ 
+@@ -1503,81 +1434,6 @@ TODO:
+     <stopwatch name="test.junit.timer" action="total"/>
+   </target>
+ 
+-  <property name="partest.srcdir" value="files" /> <!-- TODO: make targets for `pending` and other subdirs -->
+-
+-  <target name="test.run" depends="pack.done">
+-    <partest showlog="yes" erroronfailed="yes" javacmd="${java.home}/bin/java"
+-             timeout="1200000"
+-             srcdir="${partest.srcdir}"
+-             scalacopts="${scalac.args.optimise}">
+-
+-      <compilationpath refid="partest.build.path"/>
+-      <runtests  dir="${partest.dir}/${partest.srcdir}/run" includes="*.scala"/>
+-      <jvmtests dir="${partest.dir}/${partest.srcdir}/jvm" includes="*.scala"/>
+-    </partest>
+-  </target>
+-
+-  <target name="test.suite" depends="pack.done">
+-    <partest showlog="yes" erroronfailed="yes" javacmd="${java.home}/bin/java"
+-             timeout="2400000"
+-             srcdir="${partest.srcdir}"
+-             scalacopts="${scalac.args.optimise}">
+-      <compilationpath refid="partest.build.path"/>
+-      <postests  dir="${partest.dir}/${partest.srcdir}/pos" includes="*.scala"/>
+-      <negtests  dir="${partest.dir}/${partest.srcdir}/neg" includes="*.scala"/>
+-      <runtests  dir="${partest.dir}/${partest.srcdir}/run" includes="*.scala"/>
+-      <jvmtests dir="${partest.dir}/${partest.srcdir}/jvm" includes="*.scala"/>
+-      <residenttests dir="${partest.dir}/${partest.srcdir}/res" includes="*.res"/>
+-      <buildmanagertests dir="${partest.dir}/${partest.srcdir}/buildmanager" includes="*"/>
+-      <scalaptests dir="${partest.dir}/${partest.srcdir}/scalap" includes="**/*.scala"/>
+-      <scalachecktests dir="${partest.dir}/${partest.srcdir}/scalacheck">
+-        <include name="*.scala"/>
+-      </scalachecktests>
+-      <specializedtests dir="${partest.dir}/${partest.srcdir}/specialized">
+-        <include name="*.scala"/>
+-      </specializedtests>
+-      <instrumentedtests dir="${partest.dir}/${partest.srcdir}/instrumented">
+-        <include name="*.scala"/>
+-      </instrumentedtests>
+-    </partest>
+-  </target>
+-
+-  <target name="test.continuations.suite" depends="pack.done">
+-    <partest showlog="yes" erroronfailed="yes" javacmd="${java.home}/bin/java"
+-             timeout="2400000"
+-             srcdir="${partest.srcdir}"
+-             scalacopts="${scalac.args.optimise} -Xplugin-require:continuations -P:continuations:enable">
+-      <compilerarg value="-Xpluginsdir"/>
+-      <compilerarg file="${build-quick.dir}/misc/scala-devel/plugins"/>
+-      <compilationpath refid="partest.build.path"/>
+-      <negtests  dir="${partest.dir}/${partest.srcdir}/continuations-neg" includes="*.scala"/>
+-      <runtests  dir="${partest.dir}/${partest.srcdir}/continuations-run" includes="*.scala"/>
+-    </partest>
+-  </target>
+-
+-  <target name="test.scaladoc" depends="pack.done">
+-    <partest erroronfailed="yes" scalacopts="${scalac.args.optimise}" showlog="yes">
+-      <compilationpath refid="partest.build.path"/>
+-      <runtests        dir="${partest.dir}/scaladoc/run"        includes="*.scala" />
+-      <scalachecktests dir="${partest.dir}/scaladoc/scalacheck" includes="*.scala" />
+-    </partest>
+-  </target>
+-
+-  <target name="test.interactive" depends="pack.done">
+-    <partest erroronfailed="yes" scalacopts="${scalac.args.optimise}" showlog="yes">
+-      <compilationpath refid="partest.build.path"/>
+-      <presentationtests dir="${partest.dir}/${partest.srcdir}/presentation">
+-        <include name="*/*.scala"/>
+-      </presentationtests>
+-    </partest>
+-  </target>
+-
+-  <!-- for use in PR validation, where stability is rarely broken, so we're going to use starr for locker,
+-       and skip test.stability (which requires locker == quick) -->
+-  <target name="test.core" depends="test.osgi, test.sbt, test.bc, test.junit, test.interactive, test.continuations.suite, test.scaladoc, test.suite"/>
+-  <target name="test.done" depends="test.core, test.stability"/>
+-
+-
+ <!-- ===========================================================================
+                                   BINARY COMPATIBILITY TESTING
+ ============================================================================ -->
+@@ -1588,69 +1444,25 @@ TODO:
+     <!-- Obtain mima -->
+     <mkdir dir="${bc-build.dir}"/>
+     <!-- Pull down MIMA -->
+-    <artifact:dependencies pathId="mima.classpath">
+-      <dependency groupId="com.typesafe" artifactId="mima-reporter_2.9.2" version="0.1.5"/>
+-    </artifact:dependencies>
+-    <artifact:dependencies pathId="old.bc.classpath">
+-      <dependency groupId="org.scala-lang" artifactId="scala-swing" version="${bc-reference-version}"/>
+-      <dependency groupId="org.scala-lang" artifactId="scala-library" version="${bc-reference-version}"/>
+-      <dependency groupId="org.scala-lang" artifactId="scala-reflect" version="${bc-reference-version}"/>
+-    </artifact:dependencies>
+     <property name="maven-deps-done-mima" value="true"/>
+   </target>
+ 
+   <macrodef name="bc.run-mima">
+-    <attribute name="jar-name"/>
+-    <attribute name="prev"/>
+-    <attribute name="curr"/>
+-    <attribute name="direction"/>
+-    <sequential>
+-      <echo message="Checking @{direction} binary compatibility for @{jar-name} (against ${bc-reference-version})"/>
+-      <java taskname="mima"
+-         fork="true"
+-         failonerror="true"
+-         classname="com.typesafe.tools.mima.cli.Main">
+-           <arg value="--prev"/>
+-           <arg value="@{prev}"/>
+-           <arg value="--curr"/>
+-           <arg value="@{curr}"/>
+-           <arg value="--filters"/>
+-           <arg value="${basedir}/bincompat-@{direction}.whitelist.conf"/>
+-           <arg value="--generate-filters"/>
+-           <classpath>
+-             <path refid="mima.classpath"/>
+-           </classpath>
+-      </java>
+-    </sequential>
++    <sequential></sequential>
+   </macrodef>
+ 
+   <macrodef name="bc.check">
+-    <attribute name="jar-name"/>
+-    <sequential>
+-        <bc.run-mima
+-                jar-name="@{jar-name}"
+-                prev="${org.scala-lang:@{jar-name}:jar}"
+-                curr="${build-pack.dir}/lib/@{jar-name}.jar"
+-                direction="backward"/>
+-        <bc.run-mima
+-                jar-name="@{jar-name}"
+-                prev="${build-pack.dir}/lib/@{jar-name}.jar"
+-                curr="${org.scala-lang:@{jar-name}:jar}"
+-                direction="forward"/>
+-    </sequential>
++    <sequential></sequential>
+   </macrodef>
+ 
+   <target name="test.bc-opt" description="Optimized version of test.bc."> <optimized name="test.bc"/></target>
+   <target name="test.bc" depends="bc.init, pack.lib, pack.reflect, pack.swing">
+-    <bc.check jar-name="scala-library"/>
+-    <bc.check jar-name="scala-reflect"/>
+-    <bc.check jar-name="scala-swing"/>
+   </target>
+ 
+ <!-- ===========================================================================
+                                   DOCUMENTATION
+ ============================================================================ -->
+-  <target name="docs.start" depends="pack.done">
++  <target name="docs.start" depends="quick.done, pack.bin">
+     <!-- 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}">
+@@ -1672,6 +1484,7 @@ TODO:
+   </target>
+ 
+   <target name="docs.lib" depends="docs.start">
++    
+     <staged-uptodate stage="docs" project="library">
+       <check><srcfiles dir="${src.dir}">
+         <include name="library/**"/>
+@@ -1729,25 +1542,12 @@ TODO:
+     </staged-docs>
+   </target>
+ 
+-  <target name="docs.jline" depends="docs.start">
+-    <staged-docs project="jline" dir="jline/src/main/java" title="Scala JLine">
+-      <include name="**/*.scala"/>
+-      <include name="**/*.java"/>
+-    </staged-docs>
+-  </target>
+-
+   <target name="docs.scalap" depends="docs.start">
+     <staged-docs project="scalap" title="Scalap">
+       <include name="**/*.scala"/>
+     </staged-docs>
+   </target>
+ 
+-  <target name="docs.partest" depends="docs.start">
+-    <staged-docs project="partest" title="Scala Parallel Testing Framework">
+-      <include name="**/*.scala"/>
+-    </staged-docs>
+-  </target>
+-
+   <target name="docs.continuations-plugin" depends="docs.start">
+     <staged-docs project="continuations-plugin" dir="continuations/plugin" title="Delimited Continuations Compiler Plugin">
+       <include name="**/*.scala"/>
+@@ -1791,13 +1591,13 @@ TODO:
+     </staged-uptodate>
+   </target>
+ 
+-  <target name="docs.done" depends="docs.jline, docs.comp, docs.man, docs.lib, docs.scalap, docs.partest, docs.continuations-plugin"/>
++  <target name="docs.done" depends="docs.comp, docs.man, docs.lib, docs.scalap, docs.continuations-plugin"/>
+ 
+ 
+ <!-- ===========================================================================
+                                   DISTRIBUTION
+ ============================================================================ -->
+-  <target name="dist.base" depends="pack.done, osgi.done">
++  <target name="dist.base" depends="quick.done, pack.bin, osgi.done">
+     <property name="dist.name" value="scala-${version.number}"/>
+     <property name="dist.dir" value="${dists.dir}/${dist.name}"/>
+ 
+@@ -1820,19 +1620,11 @@ TODO:
+     <mkdir dir="${dist.dir}/lib"/>
+     <copy toDir="${dist.dir}/lib">
+       <fileset dir="${build-pack.dir}/lib">
+-        <include name="jline.jar"/>
+         <include name="scalacheck.jar"/>
+-        <include name="scala-partest.jar"/>
+         <include name="scalap.jar"/>
+       </fileset>
+     </copy>
+ 
+-    <copy todir="${dist.dir}/lib">
+-      <resources refid="partest.extras.fileset"/>
+-      <mapper classpathref="maven-ant-tasks.classpath" classname="org.apache.maven.artifact.ant.VersionMapper"
+-              from="${partest.extras.versions}" to="flatten"/>
+-    </copy>
+-
+     <mkdir dir="${dist.dir}/bin"/>
+     <!-- TODO - Stop being inefficient and don't copy OSGi bundles overtop other jars. -->
+     <copy-bundle name="scala-library"/>
+@@ -2018,10 +1810,9 @@ TODO:
+     </fail>
+     <!-- needs antcall to enforce ordering -->
+     <antcall target="locker.clean"/>
+-    <antcall target="pack.done"/>
++    <antcall target="quick.done, pack.bin"/>
+     <antcall target="starr.done"/>
+     <antcall target="locker.clean"/>
+-    <antcall target="test.done"/>
+   </target>
+ 
+   <target name="replacestarr-opt" description="Replaces the Starr compiler and library by fresh, optimised ones built from current sources and tests them.">
+@@ -2038,7 +1829,6 @@ TODO:
+     <echo message="CAUTION: Make sure to execute 'ant locker.clean build' prior to calling 'replacestarrwin'."/>
+     <antcall target="starr.done"/>
+     <antcall target="locker.clean"/>
+-    <antcall target="test.done"/>
+   </target>
+ 
+   <target name="replacestarrwin-opt" description="Creates a new Starr on Windows. Manually execute 'ant locker.clean build' first!">
diff --git a/scala-library-2.10.0-bnd.properties b/scala-library-2.10.0-bnd.properties
index 7622266..b8c5c49 100644
--- a/scala-library-2.10.0-bnd.properties
+++ b/scala-library-2.10.0-bnd.properties
@@ -1,3 +1,3 @@
 Bundle-Name: Scala Distribution
 Bundle-SymbolicName: org.scala-ide.scala.library
-Bundle-Version: 2.9.2
\ No newline at end of file
+Bundle-Version: 2.10.0
\ No newline at end of file
diff --git a/scala.spec b/scala.spec
index 21a08d1..d003758 100644
--- a/scala.spec
+++ b/scala.spec
@@ -4,11 +4,13 @@
 %global jline2_jar /usr/share/java/jline2.jar
 %global jansi_jar /usr/share/java/jansi.jar
 %global scaladir %{_datadir}/scala
-
+%global gitsha 60d462ef6e0dba5f9a7c4cc81255fcb9fba7939a
+%global gitdate 20130927
+%global bootstrap_build 1
 
 Name:           scala
-Version:        2.9.2
-Release:        5%{?dist}
+Version:        2.10.3
+Release:        1%{?dist}
 Summary:        A hybrid functional/object-oriented language for the JVM
 BuildArch:      noarch
 Group:          Development/Languages
@@ -17,33 +19,50 @@ Group:          Development/Languages
 License:        BSD
 URL:            http://www.scala-lang.org/
 # Source
-Source0:        http://www.scala-lang.org/downloads/distrib/files/scala-sources-%{fullversion}.tgz
-Source1:	scala-library-2.9.2-bnd.properties
+# Source0 and Source2 will generated from upstream git repository via
+# the get-source.sh script
+Source0:        scala-%{version}.tgz
+Source1:	scala-library-2.10.0-bnd.properties
+Source2:        scala-%{version}-bootstrap.tgz
+
+# Source0:        http://www.scala-lang.org/downloads/distrib/files/scala-sources-%{fullversion}.tgz
 # Change the default classpath (SCALA_HOME)
-Patch1:		scala-2.9.2-tooltemplate.patch
+Patch1:		scala-2.10.0-tooltemplate.patch
 # Use system jline2 instead of bundled jline2
-Patch2:	        scala-2.9.2-use_system_jline.patch
+Patch2:	        scala-2.10.2-use_system_jline.patch
 # change org.scala-lang jline in org.sonatype.jline jline
-Patch3:	        scala-2.9.2-compiler-pom.patch
-
-Patch4:	        scala-2.9.2-java7.patch
+Patch3:	        scala-2.10.0-compiler-pom.patch
+# Patch Swing module for JDK 1.7
+Patch4:	        scala-2.10.2-java7.patch
+# fix incompatibilities with JLine 2.7
+Patch6:         scala-2.10-jline.patch
+# work around a known bug when running binary-compatibility tests against
+# non-optimized builds (we can't do optimized builds due to another bug):
+# http://grokbase.com/t/gg/scala-internals/1347g1jahq/2-10-x-bc-test-fails
+Patch7:         scala-2.10.1-bc.patch
+Patch8:         scala-2.10.3-build_xml.patch
 
 Source21:       scala.keys
 Source22:       scala.mime
 Source23:       scala-mime-info.xml
 Source24:       scala.ant.d
 
-# Force build with openjdk/icedtea because gij is horribly slow and I haven't
-# been successful at integrating aot compilation with the build process
-# BuildRequires:  java-1.6.0-openjdk-devel
+Source31:	scala-bootstript.xml
+
 BuildRequires:  java-devel
 BuildRequires:  ant
+BuildRequires:  ant-junit
 BuildRequires:  ant-contrib
 BuildRequires:  jline2
-BuildRequires:  jpackage-utils
-# BuildRequires:  maven-ant-tasks
+BuildRequires:  javapackages-tools
 BuildRequires:  shtool
 BuildRequires:	aqute-bnd
+BuildRequires:  junit4
+BuildRequires:  felix-framework
+
+%if !(0%{?bootstrap_build})
+BuildRequires:	scala
+%endif
 
 Requires:       java
 Requires:       jline2
@@ -89,11 +108,15 @@ object-oriented and functional programming. This package contains examples for
 the Scala programming language
 
 %prep
-%setup -q -n scala-%{fullversion}-sources
+%setup -q 
 %patch1 -p1 -b .tool
 %patch2 -p1 -b .sysjline
-%patch3 -p0 -b .compiler-pom
+# %patch3 -p0 -b .compiler-pom
 %patch4 -p1 -b .jdk7
+# %patch5 -p1 -b .bndx
+%patch6 -p1 -b .rvk
+%patch7 -p1 -b .bc
+%patch8 -p1
 
 pushd src
 rm -rf jline
@@ -102,7 +125,9 @@ popd
 pushd lib
 #  fjbg.jar ch.epfl.lamp
 #  forkjoin.jar scala.concurrent.forkjoin available @ https://bugzilla.redhat.com/show_bug.cgi?id=854234 as jsr166y
-  rm -rf jline.jar
+#  find -not \( -name 'scala-compiler.jar' -or -name 'scala-library.jar' -or -name 'midpapi10.jar' -or \
+#       -name 'msil.jar' -or -name 'fjbg.jar' -or -name 'forkjoin.jar' \) -and -name '*.jar' -delete
+
 #  midpapi10.jar https://bugzilla.redhat.com/show_bug.cgi?id=807242 ?
 #  msil.jar ch.epfl.lamp.compiler
 #  scala-compiler.jar
@@ -114,25 +139,64 @@ pushd lib
     ln -s $(build-classpath ant.jar) ant.jar
     ln -s $(build-classpath ant/ant-contrib) ant-contrib.jar
 #    rm -rf ant-dotnet-1.0.jar
-    rm -rf maven-ant-tasks-2.1.1.jar
+#    rm -rf maven-ant-tasks-2.1.1.jar
 #    rm -rf vizant.jar
   popd
 popd
 
+cp -rf %{SOURCE31} .
+
+%if 0%{?bootstrap_build}
+%global do_bootstrap -DdoBootstrapBuild=yes
+tar -xzvf %{SOURCE2}
+%else
+%global do_bootstrap %{nil}
+%endif
+
+echo echo %{gitsha} > tools/get-scala-commit-sha
+echo echo %{gitdate} > tools/get-scala-commit-date
+chmod 755 tools/get-scala-*
+
 %build
 
-export ANT_OPTS="-Xms1024m -Xmx1024m"
-ant build docs
+export ANT_OPTS="-Xms2048m -Xmx2048m %{do_bootstrap}"
 
+# NB:  the "build" task is (unfortunately) necessary
+#  build-opt will fail due to a scala optimizer bug
+#  and its interaction with the system jline
+# ant -f scala-bootstript.xml build
+ant build docs || exit 1
 pushd build/pack/lib
-cp -p %{SOURCE1} bnd.properties
+cp %{SOURCE1} bnd.properties
 java -jar $(build-classpath aqute-bnd) wrap -properties \
-      bnd.properties scala-library.jar
+    bnd.properties scala-library.jar
 mv scala-library.jar scala-library.jar.no
 mv scala-library.bar scala-library.jar
 popd
 
+%check
+
+# these tests fail, but their failures appear spurious
+rm -f test/files/run/parserJavaIdent.scala
+rm -rf test/files/presentation/implicit-member
+rm -rf test/files/presentation/t5708
+rm -rf test/files/presentation/ide-bug-1000349
+rm -rf test/files/presentation/ide-bug-1000475
+rm -rf test/files/presentation/callcc-interpreter
+rm -rf test/files/presentation/ide-bug-1000531
+rm -rf test/files/presentation/visibility
+rm -rf test/files/presentation/ping-pong
+
+rm -f test/osgi/src/ReflectionToolboxTest.scala
+
+# fails under mock but not under rpmbuild
+rm -f test/files/run/t6223.scala
+
+## Most test dependencies still aren't available in Fedora
+# ant test
+
 %install
+
 install -d $RPM_BUILD_ROOT%{_bindir}
 for prog in scaladoc fsc scala scalac scalap; do
         install -p -m 755 build/pack/bin/$prog $RPM_BUILD_ROOT%{_bindir}
@@ -142,7 +206,12 @@ install -p -m 755 -d $RPM_BUILD_ROOT%{_javadir}/scala
 install -p -m 755 -d $RPM_BUILD_ROOT%{scaladir}/lib
 install -d -m 755 $RPM_BUILD_ROOT%{_mavenpomdir}
 
-for libname in scala-compiler scala-dbc scala-library scala-partest scalap scala-swing ; do
+# XXX: add scala-partest when it works again
+for libname in scala-compiler \
+    scala-library \
+    scala-reflect \
+    scalap \
+    scala-swing ; do
         install -m 644 build/pack/lib/$libname.jar $RPM_BUILD_ROOT%{_javadir}/scala/
         shtool mkln -s $RPM_BUILD_ROOT%{_javadir}/scala/$libname.jar $RPM_BUILD_ROOT%{scaladir}/lib
         sed -i "s|@VERSION@|%{fullversion}|" src/build/maven/$libname-pom.xml
@@ -187,7 +256,7 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 %{_mandir}/man1/*
 %{_mavenpomdir}/JPP.%{name}-*.pom
 %{_mavendepmapfragdir}/%{name}
-%doc docs/LICENSE README
+%doc docs/LICENSE
 
 %files -n ant-scala
 # Following is plain config because the ant task classpath could change from
@@ -204,17 +273,36 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 %doc docs/LICENSE
 
 %changelog
-* Thu Mar 21 2013 Jochen Schmitt <Jochen herr-schmitt de> - 2.9.2-5
-- Bump release number
+* Thu Oct 10 2013 Jochen Schmitt <Jochen herr-schmitt de> - 2.10.3-1
+- New upstream release
+
+* Thu Sep 26 2013 William Benton <willb at redhat.com> - 2.10.2-1
+- upstream version 2.10.2
+
+* Thu Sep 12 2013 William Benton <willb at redhat.com> - 2.10.1-4
+- updated upstream source location (thanks to Antoine Gourlay for the observation)
+
+* Wed Sep 11 2013 William Benton <willb at redhat.com> - 2.10.1-3
+- Fixes to build and install on F19
 
-* Mon Mar 18 2013 Jochen Schmitt <Jochen herr-schmitt de> - 2.9.2-4
-- Rebuilt to fix dependencies issues
+* Sun Aug 04 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.10.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
 
-* Sun Nov 25 2012 Jochen Schmitt <Jochen herr-schmitt de> 2.9.2-3
-- Fix OSGI dependency issue
+* Sat Mar 16 2013 Jochen Schmitt <Jochen herr-schmitt de> - 2.10.1-1
+- New upstream releae
 
-* Sat Nov 24 2012 Jochen Schmitt <Jochen herr-schmitt de> 2.9.2-2
-- Enabel swing module (#879828)
+* Thu Feb 14 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.10.0-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Mon Jan  7 2013 Jochen Schmitt <Jochen herr-schmitt de> - 2.10.0-1
+- New upstream release
+- Add patch to use system aQuate-bnd.jar file
+
+* Thu Dec 13 2012 Jochen Schmitt <s4504kr at omega.in.herr-schmitt.de> - 2.10.0-0.5
+- New upstream release
+
+* Fri Dec  7 2012 Jochen Schmitt <Jochen herr-schmitt de> - 2.10.0-0.3
+- New upstream release
 
 * Thu Sep 13 2012 gil cattaneo <puntogil at libero.it> 2.9.2-1
 - update to 2.9.2
@@ -224,7 +312,7 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 - removed ant-nodeps from buildrequires
 - disabled swing module
 
-* Sat Jul 21 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.9.1-4
+* Sat Jul 21 2012 Fedora Release Engineering <JOchen herr-schmitt de> - 2.9.1-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
 
 * Sat Jan 14 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.9.1-3
@@ -281,7 +369,7 @@ update-mime-database %{_datadir}/mime &> /dev/null || :
 * Mon Nov 03 2008 Geoff Reedy <geoff at programmer-monk.net> - 2.7.2-0.3.RC6
 - bump release to fix upgrade path
 
-* Thu Nov 01 2008 Geoff Reedy <geoff at programmer-monk.net> - 2.7.2-0.1.RC6
+* Sat Nov 01 2008 Geoff Reedy <geoff at programmer-monk.net> - 2.7.2-0.1.RC6
 - update to 2.7.2-RC6
 
 * Thu Oct 30 2008 Geoff Reedy <geoff at programmer-monk.net> - 2.7.2-0.1.RC5
diff --git a/sources b/sources
index a266dc3..8079825 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
-8b4b3347e2350dcba0aa1615f76de746  scala-sources-2.9.2.tgz
+26cc2ead9cfdb91ce0ae1b4fde86c293  scala-2.10.3.tgz
+a95699b8d4d33624f5d74fb29b29c003  scala-2.10.3-bootstrap.tgz


More information about the scm-commits mailing list