Bagaimana cara mengkompilasi scala 2.11.2 dengan tupe yang lebih besar?

Saya mencoba membangun scala 2.11.2 dengan tupel yang lebih besar (arity over 22) dengan mengikuti panduan ini: http://blog.rogach.org/2013/02/scala-tuplicity-comes-to-210.html

Saya tidak memiliki pengalaman sebelumnya dalam membangun perpustakaan & kompiler scala dan alat pembuatan semut, jadi saya hanya mencoba menjalankan skrip pada klon git baru dari tag v2.11.2 dan berharap itu akan berhasil. Ternyata tidak.

Saya mendapat kesalahan pada baris ant replacelocker:

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

Sepertinya cara pembuatan scala 2.11 telah berubah. Saya tidak dapat menemukan info spesifik tentang cara mengganti baris ant replacelocker.

Apakah mungkin untuk membangun scala 2.11.2 dengan tupel yang lebih besar seperti yang dimungkinkan untuk 2.9 dan 2.10? Apa yang harus dilakukan secara berbeda?


person dante4d    schedule 25.09.2014    source sumber


Jawaban (1)


Saya berhasil mengkompilasi scala dengan tupel 64-arity menggunakan skrip ini, meskipun itu mungkin bukan cara yang optimal (kompilasi pertama gagal pada kelas yang hilang di atas 22-arity, pass kedua selesai 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
person dante4d    schedule 08.11.2014