按照本指南,我尝试使用更大的元组(超过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一样?必须做些什么?
答案 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