Как скомпилировать scala 2.11.2 с большими тупами?

Я попытался собрать scala 2.11.2 с большими кортежами (кратность более 22), следуя этому руководству: http://blog.rogach.org/2013/02/scala-tuplicity-comes-to-210.html

У меня нет предыдущего опыта создания библиотеки и компилятора scala и инструмента сборки ant, поэтому я просто попытался запустить скрипт на свежем git-клоне тега v2.11.2 и надеялся, что он сработает. Это не так.

У меня ошибка в строке ant replacelocker:

BUILD FAILED
Target "replacelocker" does not exist in the project "sabbus".

Похоже, способ построения scala 2.11 изменился. Мне не удалось найти какой-либо конкретной информации о том, как заменить строку ant replacelocker.

Можно ли собрать scala 2.11.2 с большими кортежами, как это возможно для 2.9 и 2.10? Что нужно сделать по-другому?


person dante4d    schedule 25.09.2014    source источник


Ответы (1)


Мне удалось скомпилировать scala с 64-кратными кортежами, используя этот скрипт, хотя это, вероятно, не оптимальный способ (первая компиляция завершается неудачно при отсутствующих классах выше 22-кратности, второй проход завершается нормально):

#!/bin/bash -vx

ARITY=64

#mv scala scala-`date +%y%m%d-%H%M%S`
#git clone https://github.com/scala/scala.git
#cp -R scala-fresh scala
#cd scala
git checkout -b 2.11.2-local tags/v2.11.2
export ANT_OPTS="-Xmx7G -Xss25M -Xms4G -XX:MaxPermSize=512M"
#VERS="-Dbuild.release=true -Dversion.number=2.11.2-local -Dmaven.version.number=2.11.2-local"
VERS="-Dbuild.release=true"
sed -i "s/\(val MaxTupleArity, .*\) 22/\1 $ARITY/" src/reflect/scala/reflect/internal/Definitions.scala
ant build $VERS
sed -i "s/22/$ARITY/" src/library/scala/runtime/ScalaRunTime.scala
sed -i "s/\(MAX_ARITY .*\) 22/\1 $ARITY/" src/build/genprod.scala
sed -i 's/import scala.language.postfixOps//' src/build/genprod.scala
echo 'genprod.main(Array("src/library/scala/"))' >> src/build/genprod.scala
scala src/build/genprod.scala
ant build $VERS
person dante4d    schedule 08.11.2014