Sync from SUSE:ALP:Source:Standard:1.0 scala revision 1f3c65af275760daaa29422be3ed683a

This commit is contained in:
Adrian Schröter 2023-06-07 08:37:45 +02:00
commit 98542e30d5
24 changed files with 1961 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

10
_constraints Normal file
View File

@ -0,0 +1,10 @@
<constraints>
<hardware>
<physicalmemory>
<size unit="G">4</size>
</physicalmemory>
<disk>
<size unit="G">4</size>
</disk>
</hardware>
</constraints>

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>bootstrap</package>
</multibuild>

19
_service Normal file
View File

@ -0,0 +1,19 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">git://github.com/scala/scala.git</param>
<param name="revision">v2.10.7</param>
<param name="versionformat">2.10.7</param>
<param name="filename">scala</param>
<param name="exclude">lib/*.jar</param>
<param name="exclude">lib/ant/*.jar</param>
<param name="exclude">test</param>
<param name="exclude">tools/*jar</param>
<param name="exclude">src/compiler/scala/tools/nsc/doc/html/resource/lib</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="disabled"/>
</services>

99
scala-2.10-jline.patch Normal file
View File

@ -0,0 +1,99 @@
--- scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala 2019-11-27 16:04:03.141644641 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala 2019-11-27 16:04:24.461764259 +0100
@@ -45,7 +45,7 @@
def readOneKey(prompt: String) = {
this.print(prompt)
this.flush()
- this.readVirtualKey()
+ this.readCharacter()
}
def eraseLine() = consoleReader.resetPromptLine("", "", 0)
def redrawLineAndFlush(): Unit = { flush() ; drawLine() ; flush() }
--- scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/session/FileBackedHistory.scala 2019-11-27 16:04:03.141644641 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/session/FileBackedHistory.scala 2019-11-27 16:05:14.034042924 +0100
@@ -15,7 +15,7 @@
/** TODO: file locking.
*/
trait FileBackedHistory extends JLineHistory with JPersistentHistory {
- def maxSize: Int
+ def maxSize: Int = 2500
// For a history file in the standard location, always try to restrict permission,
// creating an empty file if none exists.
--- scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/session/JLineHistory.scala 2019-11-27 16:04:03.141644641 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/session/JLineHistory.scala 2019-11-27 16:04:24.461764259 +0100
@@ -13,7 +13,6 @@
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 @@
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() }
--- scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/session/SimpleHistory.scala 2019-11-27 16:04:03.141644641 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/session/SimpleHistory.scala 2019-11-27 16:04:24.461764259 +0100
@@ -10,7 +10,7 @@
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 @@
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

View File

@ -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

198
scala-2.10.2-java7.patch Normal file
View File

@ -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

View File

@ -0,0 +1,15 @@
diff -up scala-2.10.3/src/build/maven/scala-compiler-pom.xml.compiler-pom scala-2.10.3/src/build/maven/scala-compiler-pom.xml
--- scala-2.10.3/src/build/maven/scala-compiler-pom.xml.compiler-pom 2013-12-09 18:00:10.765090809 +0100
+++ scala-2.10.3/src/build/maven/scala-compiler-pom.xml 2013-12-09 18:02:31.251138135 +0100
@@ -43,9 +43,9 @@
<version>@VERSION@</version>
</dependency>
<dependency>
- <groupId>org.scala-lang</groupId>
+ <groupId>jline</groupId>
<artifactId>jline</artifactId>
- <version>@VERSION@</version>
+ <version>2.10</version>
<optional>true</optional>
</dependency>
</dependencies>

View File

@ -0,0 +1,109 @@
diff -up scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala.sysjline scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala
--- scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala.sysjline 2013-10-10 21:03:24.000000000 +0200
+++ scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/ConsoleReaderHelper.scala 2013-10-13 15:28:24.478283303 +0200
@@ -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.3/src/compiler/scala/tools/nsc/interpreter/Delimited.scala.sysjline scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/Delimited.scala
--- scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/Delimited.scala.sysjline 2013-10-10 21:03:24.000000000 +0200
+++ scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/Delimited.scala 2013-10-13 15:28:24.483282990 +0200
@@ -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.3/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala.sysjline scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala
--- scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala.sysjline 2013-10-10 21:03:24.000000000 +0200
+++ scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/JLineCompletion.scala 2013-10-13 15:28:24.487282739 +0200
@@ -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.3/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala.sysjline scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala
--- scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala.sysjline 2013-10-10 21:03:24.000000000 +0200
+++ scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/JLineReader.scala 2013-10-13 15:30:16.619034744 +0200
@@ -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._
@@ -71,6 +71,9 @@ class JLineReader(_completion: => Comple
def eraseLine() = consoleReader.eraseLine()
// Alternate implementation, not sure if/when I need this.
// def eraseLine() = while (consoleReader.delete()) { }
- def readOneLine(prompt: String) = consoleReader readLine prompt
+ def readOneLine(prompt: String) = {
+ consoleReader.setExpandEvents(false)
+ consoleReader readLine prompt
+ }
def readOneKey(prompt: String) = consoleReader readOneKey prompt
}
diff -up scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/Parsed.scala.sysjline scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/Parsed.scala
--- scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/Parsed.scala.sysjline 2013-10-10 21:03:24.000000000 +0200
+++ scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/Parsed.scala 2013-10-13 15:28:24.496282176 +0200
@@ -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.3/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala.sysjline scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala
--- scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala.sysjline 2013-10-10 21:03:24.000000000 +0200
+++ scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/ReplProps.scala 2013-10-13 15:28:24.500281925 +0200
@@ -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.3/src/compiler/scala/tools/nsc/interpreter/session/package.scala.sysjline scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/session/package.scala
--- scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/session/package.scala.sysjline 2013-10-10 21:03:24.000000000 +0200
+++ scala-2.10.3/src/compiler/scala/tools/nsc/interpreter/session/package.scala 2013-10-13 15:28:24.504281675 +0200
@@ -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
}

View File

@ -0,0 +1,675 @@
--- a/build.xml 2014-09-15 16:38:35.523938086 -0500
+++ b/build.xml 2014-09-18 14:37:16.648133327 -0500
@@ -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 @@
<!-- ===========================================================================
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 @@
<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">
@@ -89,14 +89,13 @@
</sequential>
</macrodef>
+
<!-- ===========================================================================
PROPERTIES
============================================================================ -->
<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 +121,8 @@
<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="@JLINE@"/>
+ <property name="ant.jar" value="/usr/share/java/ant.jar"/>
<property name="scalacheck.jar" value="${lib.dir}/scalacheck.jar"/>
<!-- Sets location of build folders -->
@@ -181,91 +180,57 @@
</target>
<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" />
+ <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="/usr/share/java/ant-contrib/ant-contrib.jar"/>
- <!-- 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.6.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}"/>
- <!-- upgraded to 1.6.0 to get fix for https://ops4j1.jira.com/browse/PAXURL-217
- https://ops4j1.jira.com/browse/PAXURL-138 is still unresolved... -->
- <dependency groupId="org.ops4j.pax.url" artifactId="pax-url-aether" version="1.6.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" />
-
- <artifact:remoteRepository id="extra-repo" url="${extra.repo.url}"/>
-
- <!-- 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">
- <artifact:remoteRepository refid="extra-repo"/>
- <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>
+ <if>
+ <isset property="doBootstrapBuild"></isset>
+ <then>
+ <path id="scalabootstrap.classpath">
+ <fileset dir="lib">
+ <include name="scala*.jar"/>
+ </fileset>
+ </path>
+ </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>
- </if>
+ <path id="scalabootstrap.classpath">
+ <fileset dir="/usr/share/scala/lib/">
+ <include name="scala*.jar"/>
+ </fileset>
+ </path>
+ </else>
+ </if>
- <property name="maven-deps-done" value="yep!"/>
- </then></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" />
<!-- NOTE: ant properties are write-once: second writes are silently discarded; the logic below relies on this -->
@@ -337,7 +302,7 @@
<if><isset property="build.release"/><then>
<property name="version.number" value="${maven.version.number}"/>
</then><else>
- <property name="version.number" value="${version.major}.${version.minor}.${version.patch}${version.suffix}-${git.commit.date}-${git.commit.sha}"/>
+ <property name="version.number" value="${version.major}.${version.minor}.${version.patch}${version.suffix}"/>
</else></if>
<condition property="has.java6">
@@ -466,6 +431,13 @@
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"/>
@@ -576,13 +548,6 @@
<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">
@@ -605,12 +570,10 @@
<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>
@@ -647,18 +610,6 @@
<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"/>
@@ -733,10 +684,6 @@
<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"/>
@@ -765,7 +712,8 @@
<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>
<!-- ===========================================================================
@@ -811,7 +759,8 @@
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>
@@ -844,6 +793,7 @@
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"/>
@@ -1015,7 +965,7 @@
</srcfiles>
</check>
<do>
- <taskdef name="mk-bin" classname="scala.tools.ant.ScalaTool" classpathref="@{stage}.bin.tool.path"/>
+ <taskdef name="mk-bin" classname="scala.tools.ant.ScalaTool" classpathref="starr.core.path"/>
<mkdir dir="${build-@{stage}.dir}/bin"/>
<if><equals arg1="@{classpathref}" arg2="NOT SET"/><then>
<mk-bin file="${build-@{stage}.dir}/bin/scala" class="scala.tools.nsc.MainGenericRunner" javaFlags="${java.flags}"/>
@@ -1183,10 +1133,7 @@
<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">
@@ -1222,7 +1169,7 @@
</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>
@@ -1237,7 +1184,7 @@
<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">
@@ -1267,36 +1214,16 @@
<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"/>
@@ -1331,7 +1258,7 @@
<!-- ===========================================================================
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 -->
@@ -1378,7 +1305,6 @@
</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}" />
@@ -1386,10 +1312,7 @@
<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>
@@ -1519,81 +1442,6 @@
<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
============================================================================ -->
@@ -1604,71 +1452,37 @@
<!-- Obtain mima -->
<mkdir dir="${bc-build.dir}"/>
<!-- Pull down MIMA -->
- <artifact:dependencies pathId="mima.classpath">
- <dependency groupId="com.typesafe" artifactId="mima-reporter_2.10" version="0.1.6"/>
- </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 -->
+
+ <pathconvert property="packBinToolPath" refid="pack.bin.tool.path"/>
+ <echo>pack.bin.tool.path is ${packBinToolPath}</echo>
+
+ <taskdef name="scaladoc" classname="scala.tools.ant.Scaladoc">
+ <classpath>
+ <path refid="starr.core.path"/>
+ </classpath>
+ </taskdef>
+
<condition property="scaladoc.git.commit" value="v${maven.version.number}">
<isset property="build.release"/>
</condition>
@@ -1688,6 +1502,7 @@
</target>
<target name="docs.lib" depends="docs.start">
+
<staged-uptodate stage="docs" project="library">
<check><srcfiles dir="${src.dir}">
<include name="library/**"/>
@@ -1740,15 +1555,14 @@
</target>
<target name="docs.comp" depends="docs.start">
- <staged-docs project="compiler" title="Scala Compiler" docroot="rootdoc.txt">
- <include name="**/*.scala"/>
- </staged-docs>
- </target>
+ <taskdef name="scaladoc" classname="scala.tools.ant.Scaladoc">
+ <classpath>
+ <path refid="starr.core.path"/>
+ </classpath>
+ </taskdef>
- <target name="docs.jline" depends="docs.start">
- <staged-docs project="jline" dir="jline/src/main/java" title="Scala JLine">
+ <staged-docs project="compiler" title="Scala Compiler" docroot="rootdoc.txt">
<include name="**/*.scala"/>
- <include name="**/*.java"/>
</staged-docs>
</target>
@@ -1758,12 +1572,6 @@
</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"/>
@@ -1771,10 +1579,12 @@
</target>
<target name="docs.man" depends="docs.start">
+ <taskdef resource="scala/tools/ant/sabbus/antlib.xml" classpathref="starr.compiler.path"/>
<staged-uptodate stage="docs" project="manual">
<check><srcfiles dir="${src.dir}/manual"/></check>
<do>
<mkdir dir="${build.dir}/manmaker/classes"/>
+
<scalac
destdir="${build.dir}/manmaker/classes"
classpathref="pack.compiler.path"
@@ -1807,13 +1617,13 @@
</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}"/>
@@ -1836,7 +1646,6 @@
<mkdir dir="${dist.dir}/lib"/>
<copy toDir="${dist.dir}/lib">
<fileset dir="${build-pack.dir}/lib">
- <include name="jline.jar"/>
<include name="scala-partest.jar"/> <!-- needed for maven publish -->
<include name="scalap.jar"/>
</fileset>
@@ -2027,10 +1836,9 @@
</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.">
@@ -2047,7 +1855,6 @@
<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!">

View File

@ -0,0 +1,25 @@
From f9b8176c668d3dff01da73fe65308bc50e355226 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Fri, 12 Oct 2018 16:43:59 +0000
Subject: [PATCH] Stop scaladoc from bundling web assets in generated docs
---
src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala b/src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala
index 4630c3d..648a588 100644
--- a/src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala
+++ b/src/compiler/scala/tools/nsc/doc/html/HtmlFactory.scala
@@ -121,8 +121,6 @@ class HtmlFactory(val universe: doc.Universe, index: doc.Index) {
DiagramGenerator.initialize(universe.settings)
- libResources foreach (s => copyResource("lib/" + s))
-
new page.Index(universe, index) writeFor this
new page.IndexScript(universe, index) writeFor this
--
2.17.2

View File

@ -0,0 +1,184 @@
--- scala-2.10.7/src/compiler/scala/tools/nsc/io/SourceReader.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/io/SourceReader.scala 2019-11-28 18:22:37.444126737 +0100
@@ -8,7 +8,7 @@
package io
import java.io.{ FileInputStream, InputStream, IOException }
-import java.nio.{ByteBuffer, CharBuffer}
+import java.nio.{Buffer, ByteBuffer, CharBuffer}
import java.nio.channels.{FileChannel, ReadableByteChannel, Channels}
import java.nio.charset.{CharsetDecoder, CoderResult}
import scala.tools.nsc.reporters._
@@ -61,13 +61,13 @@
/** Reads the specified byte channel. */
protected def read(input: ReadableByteChannel): Array[Char] = {
val decoder: CharsetDecoder = this.decoder.reset()
- val bytes: ByteBuffer = this.bytes; bytes.clear()
- var chars: CharBuffer = this.chars; chars.clear()
+ val bytes: ByteBuffer = this.bytes; bytes.asInstanceOf[Buffer].clear()
+ var chars: CharBuffer = this.chars; chars.asInstanceOf[Buffer].clear()
var endOfInput = false
while (!endOfInput ) {
endOfInput = input.read(bytes) < 0
- bytes.flip()
+ bytes.asInstanceOf[Buffer].flip()
chars = decode(decoder, bytes, chars, endOfInput)
}
terminate(flush(decoder, chars))
@@ -76,7 +76,7 @@
/** Reads the specified byte buffer. */
protected def read(bytes: ByteBuffer): Array[Char] = {
val decoder: CharsetDecoder = this.decoder.reset()
- val chars: CharBuffer = this.chars; chars.clear()
+ val chars: CharBuffer = this.chars; chars.asInstanceOf[Buffer].clear()
terminate(flush(decoder, decode(decoder, bytes, chars, true)))
}
@@ -128,7 +128,7 @@
def flush(decoder: CharsetDecoder, chars: CharBuffer): CharBuffer = {
val result: CoderResult = decoder.flush(chars)
if (result.isUnderflow()) {
- chars.flip()
+ chars.asInstanceOf[Buffer].flip()
chars
} else {
if (result.isError()) throw new IOException(result.toString())
@@ -142,7 +142,7 @@
* content but with an increased capacity.
*/
private def increaseCapacity(buffer: CharBuffer): CharBuffer = {
- buffer.flip()
+ buffer.asInstanceOf[Buffer].flip()
val capacity = 2 * buffer.capacity()
CharBuffer.allocate(capacity).put(buffer)
}
--- scala-2.10.7/src/msil/ch/epfl/lamp/compiler/msil/Attribute.java 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/msil/ch/epfl/lamp/compiler/msil/Attribute.java 2019-11-28 17:28:47.932834776 +0100
@@ -11,6 +11,7 @@
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Iterator;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.io.UnsupportedEncodingException;
@@ -462,7 +463,7 @@
return null;
try { str = new String(value, buf.position(), length, "UTF-8" ); }
catch (UnsupportedEncodingException e) { throw new Error(e); }
- buf.position(buf.position() + length);
+ ((Buffer)buf).position(buf.position() + length);
return str;
}
--- scala-2.10.7/src/msil/ch/epfl/lamp/compiler/msil/PEFile.java 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/msil/ch/epfl/lamp/compiler/msil/PEFile.java 2019-11-28 17:32:27.926199324 +0100
@@ -17,6 +17,7 @@
import java.io.IOException;
import java.io.FileNotFoundException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.MappedByteBuffer;
@@ -454,7 +455,7 @@
/** Go to the specified position in the file. */
public void seek(int pos) {
- buf.position(pos);
+ ((Buffer)buf).position(pos);
}
@@ -485,7 +486,7 @@
/** Move the forward in the file by the specified number of bytes. */
public void skip(int n) {
- buf.position(buf.position() + n);
+ ((Buffer)buf).position(buf.position() + n);
}
/**
@@ -503,11 +504,11 @@
/** Returns a buffer from the given offset to the end of the file. */
public ByteBuffer getBuffer(long offset, int size) {
- buf.mark();
- buf.position((int)offset);
+ ((Buffer)buf).mark();
+ ((Buffer)buf).position((int)offset);
ByteBuffer bb = buf.slice();
- buf.reset();
- bb.limit(size);
+ ((Buffer)buf).reset();
+ ((Buffer)bb).limit(size);
bb.order(java.nio.ByteOrder.LITTLE_ENDIAN);
return bb;
}
@@ -707,11 +708,11 @@
if (i < length - 1)
b.append(" ");
}
- buf.position(savedPos);
+ ((Buffer)buf).position(savedPos);
return b.append(")").toString();
}
- public Sig reset() { buf.position(pos); return this; }
+ public Sig reset() { ((Buffer)buf).position(pos); return this; }
public int pos() { return buf.position() - pos; }
--- scala-2.10.7/src/msil/ch/epfl/lamp/compiler/msil/util/PEStream.java 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/msil/ch/epfl/lamp/compiler/msil/util/PEStream.java 2019-11-28 17:36:37.103730311 +0100
@@ -11,6 +11,7 @@
import java.io.PrintStream;
import java.io.IOException;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
@@ -64,7 +65,7 @@
/** Move to the specified position in the stream. */
private void seek(int pos) {
try {
- buffer.position(pos);
+ ((Buffer)buffer).position(pos);
} catch (IllegalArgumentException e) {
System.err.println("\nSeek failed in file " + file
+ " for position " + pos
@@ -76,11 +77,11 @@
/** Return a string from the specified position in the stream. */
public String getString(int pos) {
seek(pos);
- buffer.mark();
+ ((Buffer)buffer).mark();
int i;
for (i = 0; getByte() != 0; i++);
byte[] buf = new byte[i];
- buffer.reset(); // go back to the marked position
+ ((Buffer)buffer).reset(); // go back to the marked position
buffer.get(buf);
try {
return new String(buf, "UTF-8");
--- scala-2.10.7/src/msil/ch/epfl/lamp/compiler/msil/util/Table.java 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/msil/ch/epfl/lamp/compiler/msil/util/Table.java 2019-11-28 17:34:43.543040457 +0100
@@ -9,6 +9,7 @@
import ch.epfl.lamp.compiler.msil.PEFile.Sig;
import java.io.PrintStream;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer;
@@ -327,7 +328,7 @@
protected final void seekRow(int row) {
assert row > 0 && row <= rows
: "Index " + row + " is not within the table with #rows = " + rows;
- buffer.position((row - 1)* rowSize());
+ ((Buffer)buffer).position((row - 1)* rowSize());
}
public final int currentRow() { return currentRow; }

147
scala-2.10.7-lines.patch Normal file
View File

@ -0,0 +1,147 @@
--- scala-2.10.7/src/compiler/scala/tools/cmd/gen/AnyVals.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/compiler/scala/tools/cmd/gen/AnyVals.scala 2019-11-28 13:37:03.940143371 +0100
@@ -183,7 +183,7 @@
}
def objectLines = {
val comp = if (isCardinal) cardinalCompanion else floatingCompanion
- (comp + allCompanions + "\n" + nonUnitCompanions).trim.lines.toList ++ implicitCoercions map interpolate
+ (comp + allCompanions + "\n" + nonUnitCompanions).trim.linesIterator.toList ++ implicitCoercions map interpolate
}
/** Makes a set of binary operations based on the given set of ops, args, and resultFn.
@@ -225,7 +225,7 @@
def representation = repr.map(", a " + _).getOrElse("")
def indent(s: String) = if (s == "") "" else " " + s
- def indentN(s: String) = s.lines map indent mkString "\n"
+ def indentN(s: String) = s.linesIterator map indent mkString "\n"
def boxUnboxImpls = Map(
"@boxImpl@" -> "%s.valueOf(x)".format(boxedName),
@@ -453,9 +453,9 @@
def ^(x: Boolean): Boolean
override def getClass(): Class[Boolean] = null
- """.trim.lines.toList
+ """.trim.linesIterator.toList
- def objectLines = interpolate(allCompanions + "\n" + nonUnitCompanions).lines.toList
+ def objectLines = interpolate(allCompanions + "\n" + nonUnitCompanions).linesIterator.toList
}
object U extends AnyValRep("Unit", None, "void") {
override def classDoc = """
@@ -468,7 +468,7 @@
def classLines = List(
"""override def getClass(): Class[Unit] = null"""
)
- def objectLines = interpolate(allCompanions).lines.toList
+ def objectLines = interpolate(allCompanions).linesIterator.toList
override def boxUnboxImpls = Map(
"@boxImpl@" -> "scala.runtime.BoxedUnit.UNIT",
--- scala-2.10.7/src/compiler/scala/tools/nsc/doc/base/CommentFactoryBase.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/doc/base/CommentFactoryBase.scala 2019-11-28 13:38:10.892515720 +0100
@@ -209,7 +209,7 @@
SafeTags.replaceAllIn(javadoclessComment, { mtch =>
java.util.regex.Matcher.quoteReplacement(safeTagMarker + mtch.matched + safeTagMarker)
})
- markedTagComment.lines.toList map (cleanLine(_))
+ markedTagComment.linesIterator.toList map (cleanLine(_))
}
/** Parses a comment (in the form of a list of lines) to a `Comment`
--- scala-2.10.7/src/compiler/scala/tools/nsc/interactive/tests/InteractiveTestSettings.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interactive/tests/InteractiveTestSettings.scala 2019-11-28 13:39:14.716870692 +0100
@@ -58,7 +58,7 @@
val str = try File(optsFile).slurp() catch {
case e: java.io.IOException => ""
}
- str.lines.filter(!_.startsWith(CommentStartDelimiter)).mkString(" ")
+ str.linesIterator.filter(!_.startsWith(CommentStartDelimiter)).mkString(" ")
}
override protected def printClassPath(implicit reporter: Reporter) {
--- scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/AbstractFileClassLoader.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/AbstractFileClassLoader.scala 2019-11-28 13:57:53.339092518 +0100
@@ -85,7 +85,7 @@
defineClass(name, bytes, 0, bytes.length)
}
- private val packages = mutable.Map[String, Package]()
+ private val whatever = mutable.Map[String, Package]()
override def definePackage(name: String, specTitle: String, specVersion: String, specVendor: String, implTitle: String, implVersion: String, implVendor: String, sealBase: URL): Package = {
throw new UnsupportedOperationException()
@@ -94,7 +94,7 @@
override def getPackage(name: String): Package = {
findAbstractDir(name) match {
case null => super.getPackage(name)
- case file => packages.getOrElseUpdate(name, {
+ case file => whatever.getOrElseUpdate(name, {
val ctor = classOf[Package].getDeclaredConstructor(classOf[String], classOf[String], classOf[String], classOf[String], classOf[String], classOf[String], classOf[String], classOf[URL], classOf[ClassLoader])
ctor.setAccessible(true)
ctor.newInstance(name, null, null, null, null, null, null, null, this)
--- scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/Formatting.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/Formatting.scala 2019-11-28 13:43:44.162369415 +0100
@@ -25,7 +25,7 @@
def indentCode(code: String) = {
val indent = spaces(code)
stringFromWriter(str =>
- for (line <- code.lines) {
+ for (line <- code.linesIterator) {
str print indent
str print (line + "\n")
str.flush()
--- scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/IMain.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/IMain.scala 2019-11-28 13:47:12.735529430 +0100
@@ -454,7 +454,7 @@
// enclosing in braces it is constructed like "val x =\n5 // foo".
private def removeComments(line: String): String = {
showCodeIfDebugging(line) // as we're about to lose our // show
- line.lines map (s => s indexOf "//" match {
+ line.linesIterator map (s => s indexOf "//" match {
case -1 => s
case idx => s take idx
}) mkString "\n"
@@ -580,7 +580,7 @@
if (printResults && result != "")
printMessage(result stripSuffix "\n")
else if (isReplDebug) // show quiet-mode activity
- printMessage(result.trim.lines map ("[quiet] " + _) mkString "\n")
+ printMessage(result.trim.linesIterator map ("[quiet] " + _) mkString "\n")
// Book-keeping. Have to record synthetic requests too,
// as they may have been issued for information, e.g. :type
@@ -1161,8 +1161,8 @@
/** Secret bookcase entrance for repl debuggers: end the line
* with "// show" and see what's going on.
*/
- def isShow = code.lines exists (_.trim endsWith "// show")
- def isShowRaw = code.lines exists (_.trim endsWith "// raw")
+ def isShow = code.linesIterator exists (_.trim endsWith "// show")
+ def isShowRaw = code.linesIterator exists (_.trim endsWith "// raw")
// old style
beSilentDuring(parse(code)) foreach { ts =>
--- scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/Power.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/compiler/scala/tools/nsc/interpreter/Power.scala 2019-11-28 13:46:26.087269973 +0100
@@ -150,7 +150,7 @@
// Then we import everything from $r.
intp interpret ("import " + intp.pathToTerm("$r") + "._")
// And whatever else there is to do.
- init.lines foreach (intp interpret _)
+ init.linesIterator foreach (intp interpret _)
}
def valsDescription: String = {
def to_str(m: Symbol) = "%12s %s".format(
--- scala-2.10.7/src/scalacheck/org/scalacheck/Pretty.scala 2017-11-01 04:52:36.000000000 +0100
+++ scala-2.10.7/src/scalacheck/org/scalacheck/Pretty.scala 2019-11-28 14:07:48.018400196 +0100
@@ -45,7 +45,7 @@
else s.substring(0, length) / break(lead+s.substring(length), lead, length)
def format(s: String, lead: String, trail: String, width: Int) =
- s.lines.map(l => break(lead+l+trail, " ", width)).mkString("\n")
+ s.linesIterator.map(l => break(lead+l+trail, " ", width)).mkString("\n")
implicit def prettyAny(t: Any) = Pretty { p => t.toString }

View File

@ -0,0 +1,22 @@
Index: scala-2.10.7/build.xml
===================================================================
--- scala-2.10.7.orig/build.xml
+++ scala-2.10.7/build.xml
@@ -758,7 +758,7 @@ TODO:
destdir="${@{project}-classes}"
classpath="${@{project}-classes}"
includes="**/*.java"
- target="1.6" source="1.5"
+ target="1.6" source="1.6"
compiler="javac1.6"
includeantruntime="false" >
<compilerarg line="${javac.args} @{args}"/>
@@ -794,7 +794,7 @@ TODO:
includes="**/*.java"
excludes="@{excludes}"
includeantruntime="false"
- target="1.6" source="1.5">
+ target="1.6" source="1.6">
<compilerarg line="${javac.args} @{args}"/>
<classpath refid="@{stage}.@{destproject}.build.path"/>
</javac>

BIN
scala-2.10.7.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

BIN
scala-compiler.jar (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,3 @@
Bundle-Name: Scala Distribution
Bundle-SymbolicName: org.scala-ide.scala.library
Export-Package: scala.*

BIN
scala-library.jar (Stored with Git LFS) Normal file

Binary file not shown.

8
scala-mime-info.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-scala">
<sub-class-of type="text/plain"/>
<comment>Scala source code</comment>
<glob pattern="*.scala" />
</mime-type>
</mime-info>

BIN
scala-reflect.jar (Stored with Git LFS) Normal file

Binary file not shown.

1
scala.ant.d Normal file
View File

@ -0,0 +1 @@
scala

93
scala.changes Normal file
View File

@ -0,0 +1,93 @@
-------------------------------------------------------------------
Mon May 16 11:28:03 UTC 2022 - Fridrich Strba <fstrba@suse.com>
- Fix the scala build to find correctly the jansi.jar file
- Make the package that links the jansi.jar file archfull
-------------------------------------------------------------------
Thu Jul 29 21:25:14 UTC 2021 - Fridrich Strba <fstrba@suse.com>
- Bootstrap the build with our own built jar instead of downloading
prebuilt binaries from www.scala-lang.org
-------------------------------------------------------------------
Fri Jun 26 12:30:08 UTC 2020 - Dominique Leuenberger <dimstar@opensuse.org>
- No longer package /usr/share/mime-info: this came from GNOME 1
times which are long gone (boo#1062631).
+ Drop scala.keys and scala.mime source files.
-------------------------------------------------------------------
Tue Dec 17 06:34:27 UTC 2019 - Fridrich Strba <fstrba@suse.com>
- Stop overriding default fuzz in spec file
- Changed patch:
* scala-2.10.7-source6.patch
+ Refresh using source service
-------------------------------------------------------------------
Fri Dec 13 11:11:24 UTC 2019 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Add _constraints to avoid long builds because of swapping
-------------------------------------------------------------------
Wed Dec 4 09:21:06 UTC 2019 - Dominique Leuenberger <dimstar@opensuse.org>
- Have scala-bootstrap-swing require scala*bootstrap and
scala-swing require scala. There is not guarantee that the
rebuild counters between scala and scala-bootstrap would be in
sync, making the Requires: scala = %{version}-%{release} for
scala-bootstrap unresolvable (let alone that it would not be
usable before scala is built)
-------------------------------------------------------------------
Fri Nov 29 10:53:22 UTC 2019 - Fridrich Strba <fstrba@suse.com>
- Do not package ant tasks in bootstrap build
- Added patch:
* scala-2.10.7-java8compat.patch
+ Build binaries compatible with java 8 even when building
with jdk >= 9
-------------------------------------------------------------------
Thu Nov 28 14:27:20 UTC 2019 - Fridrich Strba <fstrba@suse.com>
- Upgrade to upstream version 2.10.7
* Can be built and used with java 11
- Get sources by a source service instead of a custom script
- Clean a bit the spec file and remove unnecessary sources
- Added patches:
* scala-2.10.7-source6.patch
+ Build not only with target level 6, but also with source
level 6, in order to be able to build with jdk9+
* scala-2.10.7-lines.patch
+ Fix type conflict with jdk11's java.lang.String.lines
-------------------------------------------------------------------
Tue Nov 26 10:56:50 UTC 2019 - Fridrich Strba <fstrba@suse.com>
- Do not build api documentation in bootstrap flavour
- Be extra verbose for the scalac build
* The build is long on non-JIT architectures and OBS needs some
compiler output in order to know that the job is not dead;
otherwise it kills it.
- Do not build apidocs to avoid intermittent internal scaladoc
errors after hours of build on s390x
- Remove obsolete scriptlets
-------------------------------------------------------------------
Mon Mar 25 13:30:12 UTC 2019 - Fridrich Strba <fstrba@suse.com>
- Let the non-bootstrap packages obsolete their bootstrap
counterparts
-------------------------------------------------------------------
Sat Mar 23 08:27:59 UTC 2019 - Jan Engelhardt <jengelh@inai.de>
- Make scriptlets POSIX sh compatible.
- Trim filler wording from descriptions.
-------------------------------------------------------------------
Fri Mar 1 06:35:22 UTC 2019 - Fridrich Strba <fstrba@suse.com>
- Initial packaging of scala compiler 2.10.6

2
scala.gitinfo Normal file
View File

@ -0,0 +1,2 @@
89e57bc7ad4a1809864b637617456736fd7b8101
20171031

292
scala.spec Normal file
View File

@ -0,0 +1,292 @@
#
# spec file
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "bootstrap"
%bcond_without bootstrap
%else
%bcond_with bootstrap
%endif
%global fullversion %{version}
%global release_repository http://nexus.scala-tools.org/content/repositories/releases
%global snapshot_repository http://nexus.scala-tools.org/content/repositories/snapshots
%global jansi_jar %{_jnidir}/jansi/jansi.jar
%global jline2_jar %{_javadir}/jline/jline.jar
%global scaladir %{_datadir}/scala
%global base_name scala
%define __requires_exclude .*org\.apache\.ant.*
Version: 2.10.7
Release: 0
Summary: A hybrid functional/object-oriented language for the JVM
License: BSD-3-Clause AND CC0-1.0 AND SUSE-Public-Domain
Group: Development/Libraries/Java
URL: https://www.scala-lang.org/
Source0: %{base_name}-%{version}.tar.xz
Source1: scala-library-2.10.0-bnd.properties
# git log --pretty=format:"%H%n%ci" v%{version} | head -n 2 | sed -e 's/\-//g' -e 's/\s\+.*//g'
Source3: scala.gitinfo
Source23: scala-mime-info.xml
Source24: scala.ant.d
# Change the default classpath (SCALA_HOME)
Patch1: scala-2.10.0-tooltemplate.patch
# Use system jline2 instead of bundled jline2
Patch2: scala-2.10.3-use_system_jline.patch
# change org.scala-lang jline in org.sonatype.jline jline
Patch3: scala-2.10.3-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
Patch8: scala-2.10.4-build_xml.patch
# Stop scaladoc from trying to bundle non-existent resources that were
# removed due to being in object form only, whithout sources
Patch9: scala-2.10.6-scaladoc-resources.patch
Patch10: scala-2.10.7-source6.patch
Patch11: scala-2.10.7-lines.patch
Patch12: scala-2.10.7-java8compat.patch
BuildRequires: ant
BuildRequires: ant-contrib
BuildRequires: ant-junit
BuildRequires: aqute-bnd
BuildRequires: graphviz
BuildRequires: java-devel >= 1.7
BuildRequires: javapackages-local
BuildRequires: jline >= 2.10
BuildRequires: junit
BuildConflicts: java >= 9
BuildConflicts: java-devel >= 9
BuildConflicts: java-headless >= 9
Requires: jansi
Requires: java-headless >= 1.7
# Require full javapackages-tools since scripts use
# /usr/share/java-utils/java-functions
Requires: javapackages-tools
Requires: jline >= 2.10
%if %{with bootstrap}
Source100: scala-compiler.jar
Source101: scala-library.jar
Source102: scala-reflect.jar
%endif
%if %{with bootstrap}
Name: %{base_name}-bootstrap
%else
Name: %{base_name}
BuildRequires: %{base_name}-bootstrap >= %{version}
Provides: %{base_name}-bootstrap = %{version}-%{release}
Obsoletes: %{base_name}-bootstrap
%endif
%description
Scala is a general purpose programming language designed to express
common programming patterns in a concise and type-safe way. It
integrates features of object-oriented and functional languages. It
is also interoperable with Java.
%if %{without bootstrap}
%package apidoc
Summary: Documentation for the Scala programming language
Group: Documentation/HTML
Obsoletes: %{base_name}-bootstrap-apidoc
BuildArch: noarch
%description apidoc
Scala is a general purpose programming language for the JVM that blends
object-oriented and functional programming. This package provides
reference and API documentation for the Scala programming language.
%endif
%package swing
Summary: The swing library for the Scala programming languages
Group: Development/Libraries/Java
Requires: %{name} = %{version}-%{release}
Requires: java >= 1.7
BuildArch: noarch
%if %{without bootstrap}
Obsoletes: %{base_name}-bootstrap-swing
%endif
%description swing
This package contains the swing library for the Scala programming languages.
This library is required to develop GUI-related applications in Scala.
The release provided by this package is not the original version from upstream
because this version is not compatible with JDK 1.7.
%package -n ant-%{name}
Summary: Development files for Scala
Group: Development/Libraries/Java
Requires: ant
Requires: scala = %{version}-%{release}
BuildArch: noarch
%if %{without bootstrap}
Obsoletes: ant-%{base_name}-bootstrap
%endif
%description -n ant-%{name}
Scala is a general purpose programming language for the JVM that blends
object-oriented and functional programming. This package enables support for
the Scala ant tasks.
%prep
%setup -q -n %{base_name}-%{version}
%patch1 -p1 -b .tool
%patch2 -p1 -b .sysjline
%patch3 -p1 -b .compiler-pom
%patch4 -p1 -b .jdk7
%patch6 -p1 -b .rvk
%patch8 -p1 -b .bld
%patch9 -p1 -b .scaladoc
%patch10 -p1 -b .source6
%patch11 -p1 -b .jdk11
%patch12 -p1 -b .java8compat
echo "starr.version=2.10.4\nstarr.use.released=0" > starr.number
pushd src
rm -rf jline
popd
sed -i '/is not supported by/d' build.xml
sed -i '/exec.*pull-binary-libs.sh/d' build.xml
%if %{with bootstrap}
%global do_bootstrap -DdoBootstrapBuild=yes
%global docs_target %{nil}
%else
%global do_bootstrap %{nil}
%global docs_target docs
%endif
pushd lib
%if %{without bootstrap}
rm -rf scala-compiler.jar
ln -s $(find-jar scala/scala-compiler) scala-compiler.jar
rm -rf scala-library.jar
ln -s $(find-jar scala/scala-library) scala-library.jar
rm -rf scala-reflect.jar
ln -s $(find-jar scala/scala-reflect) scala-reflect.jar
%else
cp %{SOURCE100} scala-compiler.jar
cp %{SOURCE101} scala-library.jar
cp %{SOURCE102} scala-reflect.jar
%endif
pushd ant
rm -rf ant.jar
rm -rf ant-contrib.jar
ln -s $(build-classpath ant.jar) ant.jar
ln -s $(build-classpath ant/ant-contrib) ant-contrib.jar
popd
popd
sed -i -e 's!@JLINE@!%{jline2_jar}!g' build.xml
echo echo $(head -n 1 %{SOURCE3}) > tools/get-scala-commit-sha
echo echo $(tail -n 1 %{SOURCE3}) > tools/get-scala-commit-date
chmod 755 tools/get-scala-*
%build
export ANT_OPTS="-Xms2048m -Xmx2048m %{do_bootstrap}"
# Add the -verbose flag to scalac on zero architectures. The build
# is slow, OBS thinks it is stuck and kills it before it has chance
# to finish
%{ant} \
build %{docs_target} || exit 1
pushd build/pack/lib
mv scala-library.jar scala-library.jar.no
bnd wrap --properties %{SOURCE1} --output scala-library.jar \
--version "%{version}" scala-library.jar.no
popd
%install
install -d %{buildroot}%{_bindir}
for prog in scaladoc fsc scala scalac scalap; do
install -p -m 755 build/pack/bin/$prog %{buildroot}%{_bindir}
done
install -dm 0755 %{buildroot}%{scaladir}/lib
install -dm 0755 %{buildroot}%{_javadir}/%{base_name}
install -dm 0755 %{buildroot}%{_mavenpomdir}
# XXX: add scala-partest when it works again
for libname in scala-compiler \
scala-library \
scala-reflect \
scalap \
scala-swing ; do
sed -i "s|@VERSION@|%{fullversion}|" src/build/maven/$libname-pom.xml
sed -i "s|@RELEASE_REPOSITORY@|%{release_repository}|" src/build/maven/$libname-pom.xml
sed -i "s|@SNAPSHOT_REPOSITORY@|%{snapshot_repository}|" src/build/maven/$libname-pom.xml
install -pm 0644 build/pack/lib/$libname.jar %{buildroot}%{_javadir}/%{base_name}/$libname.jar
ln -sf $(abs2rel %{_javadir}/%{base_name}/$libname.jar %{scaladir}/lib) %{buildroot}%{scaladir}/lib
# climbing-nemesis uses the old JPP naming convention
install -pm 0644 src/build/maven/$libname-pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{base_name}-$libname.pom
if [ $libname == scala-swing ]; then
%add_maven_depmap JPP.%{base_name}-$libname.pom %{base_name}/$libname.jar -f swing
else
%add_maven_depmap JPP.%{base_name}-$libname.pom %{base_name}/$libname.jar
fi
done
ln -s $(abs2rel %{jline2_jar} %{scaladir}/lib) %{buildroot}%{scaladir}/lib
ln -s $(abs2rel %{jansi_jar} %{scaladir}/lib) %{buildroot}%{scaladir}/lib
%if %{without bootstrap}
install -d %{buildroot}%{_sysconfdir}/ant.d
install -p -m 644 %{SOURCE24} %{buildroot}%{_sysconfdir}/ant.d/scala
%endif
install -d %{buildroot}%{_datadir}/mime/packages/
install -p -m 644 %{SOURCE23} %{buildroot}%{_datadir}/mime/packages/
sed -i -e 's,@JAVADIR@,%{_javadir},g' -e 's,@DATADIR@,%{_datadir},g' %{buildroot}%{_bindir}/*
%if %{without bootstrap}
install -d %{buildroot}%{_mandir}/man1
install -p -m 644 build/scaladoc/manual/man/man1/* %{buildroot}%{_mandir}/man1
%endif
%files -f .mfiles
%{_bindir}/*
%dir %{_datadir}/%{base_name}
%dir %{_datadir}/%{base_name}/lib
%{_datadir}/%{base_name}/lib/*.jar
%exclude %{_datadir}/%{base_name}/lib/scala-swing.jar
%{_datadir}/mime/packages/*
%license docs/LICENSE
%if %{without bootstrap}
%{_mandir}/man1/*
%endif
%files swing -f .mfiles-swing
%license docs/LICENSE
%{_datadir}/%{base_name}/lib/scala-swing.jar
%if %{without bootstrap}
%files -n ant-%{name}
# Following is plain config because the ant task classpath could change from
# release to release
%config %{_sysconfdir}/ant.d/*
%license docs/LICENSE
%files apidoc
%doc build/scaladoc/library/*
%license docs/LICENSE
%endif
%changelog