# SPDX-License-Identifier: CC0-1.0 language = 'Scala' display = 'Scala 3.7.2 (Scala Native 0.5.8)' license = [ { name = 'Apache-2.0', url = 'https://github.com/sbt/sbt/blob/1.10.x/LICENSE' }, { name = 'Apache-2.0', url = 'https://github.com/scala/scala3/blob/main/LICENSE' }, { name = 'Apache-2.0', url = 'https://github.com/scala-native/scala-native/blob/main/LICENSE.md' }, ] library.ac-library-scala = { license = [ { name = 'CC0-1.0', url = 'https://github.com/harry0000/ac-library-scala/blob/main/LICENSE' }, ], version = '050a967' } filename = 'main/src/main/scala/Main.scala' install = ''' AC_SCALA_VERSION=3.7.2 AC_SCALA_NATIVE_VERSION=0.5.8 sudo apt-get update sudo apt-get install -y apt-transport-https curl gnupg 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 clang AC_SBT_VERSION="$(dpkg-query -W -f='${Version}' sbt)" # crate project mkdir main && cd main cat << EOF > build.sbt import scala.scalanative.build._ scalaVersion := "$AC_SCALA_VERSION" enablePlugins(ScalaNativePlugin) nativeConfig ~= { _.withMode(Mode.releaseFast) } Compile / unmanagedJars += baseDirectory.value / "lib/ac-library-scala_native0.5_3-0.1.0-SNAPSHOT.jar" EOF mkdir -p project src/main/scala lib cat << EOF > project/plugins.sbt addSbtPlugin("org.scala-native" % "sbt-scala-native" % "$AC_SCALA_NATIVE_VERSION") EOF cat << EOF > project/build.properties sbt.version = $AC_SBT_VERSION EOF cat << 'EOF' > src/main/scala/Main.scala 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!") } EOF # 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/plugins.sbt addSbtPlugin("org.scala-native" % "sbt-scala-native" % "$AC_SCALA_NATIVE_VERSION") EOF cat << EOF > project/build.properties sbt.version = $AC_SBT_VERSION EOF sed -i "s/.*lazy val supportedScalaVersions.*/import scala.scalanative.build._\n\nlazy val supportedScalaVersions = List(\"$AC_SCALA_VERSION\")\nenablePlugins(ScalaNativePlugin)\nnativeConfig ~= {\n _.withMode(Mode.releaseFull)\n}/" build.sbt sbt package popd cp /tmp/ac-library/target/scala-"$AC_SCALA_VERSION"/ac-library-scala_native0.5_3-0.1.0-SNAPSHOT.jar lib/ # download, build and save prebuilt objects sbt nativeLink target/scala-"$AC_SCALA_VERSION"/main rm target/scala-"$AC_SCALA_VERSION"/main ''' compile = ''' cd main && sbt -error "set offline := true" nativeLink 1>&2 ''' object = 'main/target/scala-3.7.2/main' environment.SCALANATIVE_THREAD_STACK_SIZE = '{memory:mb}mb' execution = [ './main/target/scala-3.7.2/main', ]