From 98542e30d52c81639675949e0145782715174663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Wed, 7 Jun 2023 08:37:45 +0200 Subject: [PATCH] Sync from SUSE:ALP:Source:Standard:1.0 scala revision 1f3c65af275760daaa29422be3ed683a --- .gitattributes | 23 + _constraints | 10 + _multibuild | 3 + _service | 19 + scala-2.10-jline.patch | 99 ++++ scala-2.10.0-tooltemplate.patch | 21 + scala-2.10.2-java7.patch | 198 ++++++++ scala-2.10.3-compiler-pom.patch | 15 + scala-2.10.3-use_system_jline.patch | 109 +++++ scala-2.10.4-build_xml.patch | 675 ++++++++++++++++++++++++++ scala-2.10.6-scaladoc-resources.patch | 25 + scala-2.10.7-java8compat.patch | 184 +++++++ scala-2.10.7-lines.patch | 147 ++++++ scala-2.10.7-source6.patch | 22 + scala-2.10.7.tar.xz | 3 + scala-compiler.jar | 3 + scala-library-2.10.0-bnd.properties | 3 + scala-library.jar | 3 + scala-mime-info.xml | 8 + scala-reflect.jar | 3 + scala.ant.d | 1 + scala.changes | 93 ++++ scala.gitinfo | 2 + scala.spec | 292 +++++++++++ 24 files changed, 1961 insertions(+) create mode 100644 .gitattributes create mode 100644 _constraints create mode 100644 _multibuild create mode 100644 _service create mode 100644 scala-2.10-jline.patch create mode 100644 scala-2.10.0-tooltemplate.patch create mode 100644 scala-2.10.2-java7.patch create mode 100644 scala-2.10.3-compiler-pom.patch create mode 100644 scala-2.10.3-use_system_jline.patch create mode 100644 scala-2.10.4-build_xml.patch create mode 100644 scala-2.10.6-scaladoc-resources.patch create mode 100644 scala-2.10.7-java8compat.patch create mode 100644 scala-2.10.7-lines.patch create mode 100644 scala-2.10.7-source6.patch create mode 100644 scala-2.10.7.tar.xz create mode 100644 scala-compiler.jar create mode 100644 scala-library-2.10.0-bnd.properties create mode 100644 scala-library.jar create mode 100644 scala-mime-info.xml create mode 100644 scala-reflect.jar create mode 100644 scala.ant.d create mode 100644 scala.changes create mode 100644 scala.gitinfo create mode 100644 scala.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fecc750 --- /dev/null +++ b/.gitattributes @@ -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 diff --git a/_constraints b/_constraints new file mode 100644 index 0000000..f4dd3c8 --- /dev/null +++ b/_constraints @@ -0,0 +1,10 @@ + + + + 4 + + + 4 + + + diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..2eb4fda --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + bootstrap + diff --git a/_service b/_service new file mode 100644 index 0000000..8442f93 --- /dev/null +++ b/_service @@ -0,0 +1,19 @@ + + + git + git://github.com/scala/scala.git + v2.10.7 + 2.10.7 + scala + lib/*.jar + lib/ant/*.jar + test + tools/*jar + src/compiler/scala/tools/nsc/doc/html/resource/lib + + + *.tar + xz + + + diff --git a/scala-2.10-jline.patch b/scala-2.10-jline.patch new file mode 100644 index 0000000..fb93f7e --- /dev/null +++ b/scala-2.10-jline.patch @@ -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 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.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 javax.swing.ListCellRenderers + */ +- 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 A. The given function +@@ -55,8 +55,8 @@ object ListView { + * + */ + 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 toString. + */ + 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.3-compiler-pom.patch b/scala-2.10.3-compiler-pom.patch new file mode 100644 index 0000000..fbc0cee --- /dev/null +++ b/scala-2.10.3-compiler-pom.patch @@ -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@ + + +- org.scala-lang ++ jline + jline +- @VERSION@ ++ 2.10 + true + + diff --git a/scala-2.10.3-use_system_jline.patch b/scala-2.10.3-use_system_jline.patch new file mode 100644 index 0000000..c8a43eb --- /dev/null +++ b/scala-2.10.3-use_system_jline.patch @@ -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 + } diff --git a/scala-2.10.4-build_xml.patch b/scala-2.10.4-build_xml.patch new file mode 100644 index 0000000..4d9a04b --- /dev/null +++ b/scala-2.10.4-build_xml.patch @@ -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 @@ + + +- ++ + + 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. + +@@ -44,8 +44,8 @@ + +- +- ++ ++ + + + +@@ -68,7 +68,7 @@ + + + +- ++ + + + +@@ -89,14 +89,13 @@ + + + ++ + + + + +- +- + + + +@@ -122,8 +121,8 @@ + + + +- +- ++ ++ + + + +@@ -181,91 +180,57 @@ + + + +- +- +- +- +- +- +- +- + + + + +- +- +- +- +- ++ + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ + +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -337,7 +302,7 @@ + + + +- ++ + + + +@@ -466,6 +431,13 @@ + + There must be a variable of the shape @{stage}.compiler.path for all @{stage} in starr, locker, quick, strap. + --> ++ ++ ++ ++ ++ ++ ++ + + + +@@ -576,13 +548,6 @@ + + + +- +- +- +- +- +- +- + + + +@@ -605,12 +570,10 @@ + + + +- + + + + +- + + + +@@ -647,18 +610,6 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- + + + +@@ -733,10 +684,6 @@ + + + +- +- +- +- + + + +@@ -765,7 +712,8 @@ + + + +- ++ ++ + + + +- +- +- + + +- ++ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- + +- ++ + + + +@@ -1331,7 +1258,7 @@ + +- ++ + + + +@@ -1378,7 +1305,6 @@ + + + +- + + + +@@ -1386,10 +1312,7 @@ + + + +- +- +- +- ++ + + + +@@ -1519,81 +1442,6 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + +@@ -1604,71 +1452,37 @@ + + + +- +- +- +- +- +- +- +- + + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ + + + +- +- +- +- +- ++ + + + + +- +- +- + + + +- ++ + + ++ ++ ++ pack.bin.tool.path is ${packBinToolPath} ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1688,6 +1502,7 @@ + + + ++ + + + +@@ -1740,15 +1555,14 @@ + + + +- +- +- +- ++ ++ ++ ++ ++ + +- +- ++ + +- + + + +@@ -1758,12 +1572,6 @@ + + + +- +- +- +- +- +- + + + +@@ -1771,10 +1579,12 @@ + + + ++ + + + + ++ + + + +- ++ + + + +- ++ + + + +@@ -1836,7 +1646,6 @@ + + + +- + + + +@@ -2027,10 +1836,9 @@ + + + +- ++ + + +- + + + +@@ -2047,7 +1855,6 @@ + + + +- + + + diff --git a/scala-2.10.6-scaladoc-resources.patch b/scala-2.10.6-scaladoc-resources.patch new file mode 100644 index 0000000..86a7da6 --- /dev/null +++ b/scala-2.10.6-scaladoc-resources.patch @@ -0,0 +1,25 @@ +From f9b8176c668d3dff01da73fe65308bc50e355226 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +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 + diff --git a/scala-2.10.7-java8compat.patch b/scala-2.10.7-java8compat.patch new file mode 100644 index 0000000..6dd7d73 --- /dev/null +++ b/scala-2.10.7-java8compat.patch @@ -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; } diff --git a/scala-2.10.7-lines.patch b/scala-2.10.7-lines.patch new file mode 100644 index 0000000..01697fe --- /dev/null +++ b/scala-2.10.7-lines.patch @@ -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 } + diff --git a/scala-2.10.7-source6.patch b/scala-2.10.7-source6.patch new file mode 100644 index 0000000..1aabf60 --- /dev/null +++ b/scala-2.10.7-source6.patch @@ -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" > + +@@ -794,7 +794,7 @@ TODO: + includes="**/*.java" + excludes="@{excludes}" + includeantruntime="false" +- target="1.6" source="1.5"> ++ target="1.6" source="1.6"> + + + diff --git a/scala-2.10.7.tar.xz b/scala-2.10.7.tar.xz new file mode 100644 index 0000000..eea81fe --- /dev/null +++ b/scala-2.10.7.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0deeee6a636b0da742b4880ae62215aad6f5aa4e0ec8a3b0ce386c40edc53674 +size 2864660 diff --git a/scala-compiler.jar b/scala-compiler.jar new file mode 100644 index 0000000..19a179c --- /dev/null +++ b/scala-compiler.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f514e88ce18b07350d6f6b04af751e89be7390ad6ab6bf28c9ca76ba5e24f136 +size 15442780 diff --git a/scala-library-2.10.0-bnd.properties b/scala-library-2.10.0-bnd.properties new file mode 100644 index 0000000..eacc122 --- /dev/null +++ b/scala-library-2.10.0-bnd.properties @@ -0,0 +1,3 @@ +Bundle-Name: Scala Distribution +Bundle-SymbolicName: org.scala-ide.scala.library +Export-Package: scala.* diff --git a/scala-library.jar b/scala-library.jar new file mode 100644 index 0000000..49bafbc --- /dev/null +++ b/scala-library.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c960031a08b5d56c65362586f2b51e56387f27b18664a4e81fc72f9405870cde +size 7192234 diff --git a/scala-mime-info.xml b/scala-mime-info.xml new file mode 100644 index 0000000..914f6cc --- /dev/null +++ b/scala-mime-info.xml @@ -0,0 +1,8 @@ + + + + + Scala source code + + + diff --git a/scala-reflect.jar b/scala-reflect.jar new file mode 100644 index 0000000..968f053 --- /dev/null +++ b/scala-reflect.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdda7c7b298147dcd9eae5fb0bddfcff4211ccf57b7ae5203147c76c1219c8ca +size 3368851 diff --git a/scala.ant.d b/scala.ant.d new file mode 100644 index 0000000..9be890a --- /dev/null +++ b/scala.ant.d @@ -0,0 +1 @@ +scala diff --git a/scala.changes b/scala.changes new file mode 100644 index 0000000..82e2279 --- /dev/null +++ b/scala.changes @@ -0,0 +1,93 @@ +------------------------------------------------------------------- +Mon May 16 11:28:03 UTC 2022 - Fridrich Strba + +- 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 + +- 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 + +- 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 + +- 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 + +- Add _constraints to avoid long builds because of swapping + +------------------------------------------------------------------- +Wed Dec 4 09:21:06 UTC 2019 - Dominique Leuenberger + +- 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 + +- 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 + +- 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 + +- 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 + +- Let the non-bootstrap packages obsolete their bootstrap + counterparts + +------------------------------------------------------------------- +Sat Mar 23 08:27:59 UTC 2019 - Jan Engelhardt + +- Make scriptlets POSIX sh compatible. +- Trim filler wording from descriptions. + +------------------------------------------------------------------- +Fri Mar 1 06:35:22 UTC 2019 - Fridrich Strba + +- Initial packaging of scala compiler 2.10.6 diff --git a/scala.gitinfo b/scala.gitinfo new file mode 100644 index 0000000..06ef567 --- /dev/null +++ b/scala.gitinfo @@ -0,0 +1,2 @@ +89e57bc7ad4a1809864b637617456736fd7b8101 +20171031 diff --git a/scala.spec b/scala.spec new file mode 100644 index 0000000..f4fa1d7 --- /dev/null +++ b/scala.spec @@ -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