如何用更大的类型编译scala 2.11.2?

时间:2014-09-25 02:30:57

标签: scala tuples scala-2.11 scala-compiler

按照本指南,我尝试使用更大的元组(超过22个)构建scala 2.11.2: http://blog.rogach.org/2013/02/scala-tuplicity-comes-to-210.html

我以前没有构建scala库的经验。编译器和ant构建工具,所以我只是尝试在标签v2.11.2的新git克隆上运行脚本,并希望它能工作。它没有。

我在第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一样?必须做些什么?

1 个答案:

答案 0 :(得分:0)

我设法使用这个脚本使用64-arity元组编译scala,虽然它可能不是最佳方式(第一次编译在22-arity之上缺少类失败,第二遍完成OK):

#!/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