# SPDX-License-Identifier: CC0-1.0 language = 'Scala' display = 'Scala (Dotty 3.7.2)' license = [ { name = 'Apache-2.0', url = 'https://github.com/scala/scala3/blob/main/LICENSE' }, ] library.ac-library-scala = { license = [ { name = 'CC0-1.0', url = 'https://github.com/harry0000/ac-library-scala/blob/main/LICENSE' }, ], version = '050a967' } filename = 'Main.scala' install = ''' AC_SCALA_VERSION=3.7.2 sudo apt-get update sudo apt-get install -y apt-transport-https gnupg curl -sS "https://virtuslab.github.io/scala-cli-packages/KEY.gpg" | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/scala-cli.gpg 2>/dev/null sudo curl -s --compressed -o /etc/apt/sources.list.d/scala_cli_packages.list "https://virtuslab.github.io/scala-cli-packages/debian/scala_cli_packages.list" echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo -H gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/scalasbt-release.gpg --import sudo chmod 644 /etc/apt/trusted.gpg.d/scalasbt-release.gpg sudo apt-get update sudo apt-get install -y sbt openjdk-21-jdk-headless scala-cli ansifilter AC_SBT_VERSION="$(dpkg-query -W -f='${Version}' sbt)" # install library pushd /tmp wget -q -O ac-library.tar.gz https://github.com/harry0000/ac-library-scala/archive/050a967.tar.gz mkdir ac-library tar -C ac-library --strip-components=1 -xf ac-library.tar.gz cd ac-library cat << EOF > project/build.properties sbt.version = $AC_SBT_VERSION EOF sed -i "s/.*lazy val supportedScalaVersions.*/lazy val supportedScalaVersions = List(\"$AC_SCALA_VERSION\")/" build.sbt sbt package popd mkdir lib cp /tmp/ac-library/target/scala-"$AC_SCALA_VERSION"/ac-library-scala_3-0.1.0-SNAPSHOT.jar lib/ac-library.jar # create a Scala source to test compilation cat << 'EOF' > Main.scala //> using file "lib/ac-library.jar" import io.github.acl4s.Dsu object Main { def main(args: Array[String]): Unit = val uf = Dsu(10) uf.merge(1, 3) uf.merge(3, 7) println(uf.groups()) println("Hello, world!") val n = 10000000 println(sum(n)) def sum(n: Long): Long = if (n == 1) n else n + sum(n - 1) } EOF # create a script to run cat << 'EOF' > scala.sh #!/bin/sh if [ "$1" -gt 1024 ]; then stack_size=1024 else stack_size="$1" fi heap_size=$(($1 * 90 / 100)) ./Main -J-Xss"$stack_size"m -J-Xmx"$heap_size"m EOF # install and save prebuilt dependencies scala-cli --power package --bloop-jvm system --jvm system -S ${AC_SCALA_VERSION} Main.scala -o Main --assembly --quiet sh scala.sh 2048 rm Main ''' compile = ''' scala-cli --power package --bloop-jvm system --jvm system -S 3.7.2 Main.scala -o Main --assembly --quiet 2>&1 | ansifilter 1>&2 ''' object = 'Main' execution = [ 'sh', 'scala.sh', '{memory:mb}', ]