From 12d5d6c2c75d45b69bdaa09d4e1bc33035c93d75 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Fri, 31 Jan 2025 19:00:40 +0100 Subject: [PATCH 01/18] Drop sbt-spark-packages && update plugins + drop sbt-spark-packages + rewrite build.sbt in the modern way + update plugins --- .gitignore | 1 + build.sbt | 156 ++++++++++++++++++--------------------- project/build.properties | 2 +- project/plugins.sbt | 12 +-- version.sbt | 2 +- 5 files changed, 78 insertions(+), 95 deletions(-) diff --git a/.gitignore b/.gitignore index 3f992a889..a07973c1e 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ lib_managed/ src_managed/ project/boot/ project/plugins/project/ +.bsp # intellij .idea/ diff --git a/build.sbt b/build.sbt index d49da406e..52f84d8c6 100644 --- a/build.sbt +++ b/build.sbt @@ -1,92 +1,82 @@ -// Your sbt build file. Guides on how to write one can be found at -// http://www.scala-sbt.org/0.13/docs/index.html - import ReleaseTransformations._ -val sparkVer = sys.props.getOrElse("spark.version", "3.5.3") -val sparkBranch = sparkVer.substring(0, 3) -val defaultScalaVer = sparkBranch match { +lazy val sparkVer = sys.props.getOrElse("spark.version", "3.5.3") +lazy val sparkBranch = sparkVer.substring(0, 3) +lazy val defaultScalaVer = sparkBranch match { case "3.5" => "2.12.18" case _ => throw new IllegalArgumentException(s"Unsupported Spark version: $sparkVer.") } -val scalaVer = sys.props.getOrElse("scala.version", defaultScalaVer) -val defaultScalaTestVer = scalaVer match { +lazy val scalaVer = sys.props.getOrElse("scala.version", defaultScalaVer) +lazy val defaultScalaTestVer = scalaVer match { case s if s.startsWith("2.12") || s.startsWith("2.13") => "3.0.8" } -sparkVersion := sparkVer - -scalaVersion := scalaVer - -name := "graphframes" - -spName := "graphframes/graphframes" - -organization := "org.graphframes" - -version := (version in ThisBuild).value + s"-spark$sparkBranch" - -isSnapshot := version.value.contains("SNAPSHOT") - -// All Spark Packages need a license -licenses := Seq("Apache-2.0" -> url("http://opensource.org/licenses/Apache-2.0")) - -spAppendScalaVersion := true - -// Add Spark components this package depends on, e.g, "mllib", .... -sparkComponents ++= Seq("graphx", "sql", "mllib") - -// uncomment and change the value below to change the directory where your zip artifact will be created -// spDistDirectory := target.value - -// add any Spark Package dependencies using spDependencies. -// e.g. spDependencies += "databricks/spark-avro:0.1" - -libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.16" - -libraryDependencies += "org.scalatest" %% "scalatest" % defaultScalaTestVer % "test" - -libraryDependencies += "com.github.zafarkhaja" % "java-semver" % "0.9.0" % "test" // MIT license - -parallelExecution := false - -scalacOptions ++= Seq("-deprecation", "-feature") - -scalacOptions in (Compile, doc) ++= Seq( - "-groups", - "-implicits", - "-skip-packages", Seq("org.apache.spark").mkString(":")) - -scalacOptions in (Test, doc) ++= Seq("-groups", "-implicits") - -// This fixes a class loader problem with scala.Tuple2 class, scala-2.11, Spark 2.x -fork in Test := true - -// This and the next line fix a problem with forked run: https://github.com/scalatest/scalatest/issues/770 -javaOptions in Test ++= Seq( - "-XX:+IgnoreUnrecognizedVMOptions", - "-Xmx2048m", - "-XX:ReservedCodeCacheSize=384m", - "-XX:MaxMetaspaceSize=384m", - "--add-opens=java.base/sun.nio.ch=ALL-UNNAMED", - "--add-opens=java.base/java.lang=ALL-UNNAMED" -) - -concurrentRestrictions in Global := Seq( - Tags.limitAll(1)) - -autoAPIMappings := true - -coverageHighlighting := false - -// We only use sbt-release to update version numbers. -releaseProcess := Seq[ReleaseStep]( - inquireVersions, - setReleaseVersion, - commitReleaseVersion, - tagRelease, - setNextVersion, - commitNextVersion -) +ThisBuild / version := { + val baseVersion = (ThisBuild / version).value + s"${baseVersion}-spark${sparkBranch}" +} -credentials += Credentials(Path.userHome / ".ivy2" / ".sbtcredentials") +ThisBuild / scalaVersion := scalaVer +ThisBuild / organization := "org.graphframes" + +lazy val root = (project in file(".")) + .settings( + name := "graphframes", + + // Replace spark-packages plugin functionality with explicit dependencies + libraryDependencies ++= Seq( + "org.apache.spark" %% "spark-graphx" % sparkVer % "provided", + "org.apache.spark" %% "spark-sql" % sparkVer % "provided", + "org.apache.spark" %% "spark-mllib" % sparkVer % "provided", + "org.slf4j" % "slf4j-api" % "1.7.16", + "org.scalatest" %% "scalatest" % defaultScalaTestVer % Test, + "com.github.zafarkhaja" % "java-semver" % "0.9.0" % Test + ), + + licenses := Seq("Apache-2.0" -> url("http://opensource.org/licenses/Apache-2.0")), + + // Modern way to set Scala options + Compile / scalacOptions ++= Seq("-deprecation", "-feature"), + + Compile / doc / scalacOptions ++= Seq( + "-groups", + "-implicits", + "-skip-packages", Seq("org.apache.spark").mkString(":") + ), + + Test / doc / scalacOptions ++= Seq("-groups", "-implicits"), + + // Test settings + Test / fork := true, + Test / parallelExecution := false, + + Test / javaOptions ++= Seq( + "-XX:+IgnoreUnrecognizedVMOptions", + "-Xmx2048m", + "-XX:ReservedCodeCacheSize=384m", + "-XX:MaxMetaspaceSize=384m", + "--add-opens=java.base/sun.nio.ch=ALL-UNNAMED", + "--add-opens=java.base/java.lang=ALL-UNNAMED" + ), + + // Global settings + Global / concurrentRestrictions := Seq( + Tags.limitAll(1) + ), + + autoAPIMappings := true, + + coverageHighlighting := false, + + // Release settings + releaseProcess := Seq[ReleaseStep]( + inquireVersions, + setReleaseVersion, + commitReleaseVersion, + tagRelease, + setNextVersion, + commitNextVersion + ), + + credentials += Credentials(Path.userHome / ".ivy2" / ".sbtcredentials") + ) \ No newline at end of file diff --git a/project/build.properties b/project/build.properties index 5c4bcd91b..51c77c168 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1,2 +1,2 @@ // This file should only contain the version of sbt to use. -sbt.version=0.13.18 +sbt.version=1.9.9 diff --git a/project/plugins.sbt b/project/plugins.sbt index a27f399b4..581a1cd39 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,10 +1,2 @@ -// You may use this file to add plugin dependencies for sbt. -resolvers += "Spark Packages repo" at "https://repos.spark-packages.org/" - -addSbtPlugin("org.spark-packages" %% "sbt-spark-package" % "0.2.6") - -// scalacOptions in (Compile,doc) := Seq("-groups", "-implicits") - -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1") - -addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.13") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.3.0") +addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") diff --git a/version.sbt b/version.sbt index ca68fcbd5..f72bdcc0e 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version in ThisBuild := "0.8.4" +ThisBuild / version := "0.8.4" From 87f85e43a11bd1422c5ec37ea73d9f4c3fd3204c Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 13:40:53 +0100 Subject: [PATCH 02/18] Update sbt-launch-lib like in Apache Spark --- build/sbt-launch-lib.bash | 52 +++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/build/sbt-launch-lib.bash b/build/sbt-launch-lib.bash index 6ab8d7313..01ba6b929 100755 --- a/build/sbt-launch-lib.bash +++ b/build/sbt-launch-lib.bash @@ -7,7 +7,7 @@ # TODO - Should we merge the main SBT script with this library? if test -z "$HOME"; then - declare -r script_dir="$(dirname $script_path)" + declare -r script_dir="$(dirname "$script_path")" else declare -r script_dir="$HOME/.sbt" fi @@ -17,6 +17,7 @@ declare -a java_args declare -a scalac_args declare -a sbt_commands declare -a maven_profiles +declare sbt_default_mem=4096 if test -x "$JAVA_HOME/bin/java"; then echo -e "Using $JAVA_HOME as default JAVA_HOME." @@ -37,32 +38,36 @@ dlog () { } acquire_sbt_jar () { - SBT_VERSION=`awk -F "=" '/sbt\\.version/ {print $2}' ./project/build.properties` - URL1=https://repo.scala-sbt.org/scalasbt/ivy-releases/org.scala-sbt/sbt-launch/${SBT_VERSION}/sbt-launch.jar + SBT_VERSION=`awk -F "=" '/sbt\.version/ {print $2}' ./project/build.properties` + # DEFAULT_ARTIFACT_REPOSITORY env variable can be used to only fetch + # artifacts from internal repos only. + # Ex: + # DEFAULT_ARTIFACT_REPOSITORY=https://artifacts.internal.com/libs-release/ + URL1=${DEFAULT_ARTIFACT_REPOSITORY:-https://repo1.maven.org/maven2/}org/scala-sbt/sbt-launch/${SBT_VERSION}/sbt-launch-${SBT_VERSION}.jar JAR=build/sbt-launch-${SBT_VERSION}.jar sbt_jar=$JAR if [[ ! -f "$sbt_jar" ]]; then # Download sbt launch jar if it hasn't been downloaded yet - if [ ! -f ${JAR} ]; then + if [ ! -f "${JAR}" ]; then # Download printf "Attempting to fetch sbt\n" - JAR_DL=${JAR}.part - if hash curl 2>/dev/null; then + JAR_DL="${JAR}.part" + if [ $(command -v curl) ]; then curl --fail --location --silent ${URL1} > "${JAR_DL}" &&\ mv "${JAR_DL}" "${JAR}" - elif hash wget 2>/dev/null; then + elif [ $(command -v wget) ]; then wget --quiet ${URL1} -O "${JAR_DL}" &&\ mv "${JAR_DL}" "${JAR}" else - printf "You do not have curl or wget installed, please install sbt manually from http://www.scala-sbt.org/\n" + printf "You do not have curl or wget installed, please install sbt manually from https://www.scala-sbt.org/\n" exit -1 fi fi - if [ ! -f ${JAR} ]; then + if [ ! -f "${JAR}" ]; then # We failed to download - printf "Our attempt to download sbt locally to ${JAR} failed. Please install sbt manually from http://www.scala-sbt.org/\n" + printf "Our attempt to download sbt locally to ${JAR} failed. Please install sbt manually from https://www.scala-sbt.org/\n" exit -1 fi printf "Launching sbt from ${JAR}\n" @@ -82,7 +87,7 @@ execRunner () { echo "" } - exec "$@" + "$@" } addJava () { @@ -105,19 +110,18 @@ addResidual () { residual_args=( "${residual_args[@]}" "$1" ) } addDebugger () { - addJava "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$1" + addJava "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$1" } # a ham-fisted attempt to move some memory settings in concert # so they need not be dicked around with individually. get_mem_opts () { - local mem=${1:-2048} - local perm=$(( $mem / 4 )) - (( $perm > 256 )) || perm=256 - (( $perm < 4096 )) || perm=4096 - local codecache=$(( $perm / 2 )) + local mem=${1:-$sbt_default_mem} + local codecache=$(( $mem / 8 )) + (( $codecache > 128 )) || codecache=128 + (( $codecache < 2048 )) || codecache=2048 - echo "-Xms${mem}m -Xmx${mem}m -XX:MaxMetaspaceSize=${perm}m -XX:ReservedCodeCacheSize=${codecache}m" + echo "-Xms${mem}m -Xmx${mem}m -XX:ReservedCodeCacheSize=${codecache}m" } require_arg () { @@ -125,7 +129,8 @@ require_arg () { local opt="$2" local arg="$3" if [[ -z "$arg" ]] || [[ "${arg:0:1}" == "-" ]]; then - die "$opt requires <$type> argument" + echo "$opt requires <$type> argument" 1>&2 + exit 1 fi } @@ -178,18 +183,11 @@ run() { # run sbt execRunner "$java_cmd" \ - ${SBT_OPTS:-$default_sbt_opts} \ $(get_mem_opts $sbt_mem) \ + ${SBT_OPTS:-$default_sbt_opts} \ ${java_opts} \ ${java_args[@]} \ -jar "$sbt_jar" \ "${sbt_commands[@]}" \ "${residual_args[@]}" } - -runAlternateBoot() { - local bootpropsfile="$1" - shift - addJava "-Dsbt.boot.properties=$bootpropsfile" - run $@ -} From d28d27ab348698aceb55f4f307fecfffed3e8a53 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 13:47:32 +0100 Subject: [PATCH 03/18] Explicit crossScalaVersions to make CI works --- build.sbt | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sbt b/build.sbt index 52f84d8c6..57b7582ca 100644 --- a/build.sbt +++ b/build.sbt @@ -18,6 +18,7 @@ ThisBuild / version := { ThisBuild / scalaVersion := scalaVer ThisBuild / organization := "org.graphframes" +ThisBuild / crossScalaVersions := Seq("2.12.18", "2.13.8") lazy val root = (project in file(".")) .settings( From 7192ecb3ff1d2d76122bf1ea48de7b3a46fc357f Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 13:56:52 +0100 Subject: [PATCH 04/18] Fix assembly && 2.13 build --- build.sbt | 16 +++++++++++++--- project/plugins.sbt | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/build.sbt b/build.sbt index 57b7582ca..33e14e658 100644 --- a/build.sbt +++ b/build.sbt @@ -26,9 +26,9 @@ lazy val root = (project in file(".")) // Replace spark-packages plugin functionality with explicit dependencies libraryDependencies ++= Seq( - "org.apache.spark" %% "spark-graphx" % sparkVer % "provided", - "org.apache.spark" %% "spark-sql" % sparkVer % "provided", - "org.apache.spark" %% "spark-mllib" % sparkVer % "provided", + "org.apache.spark" %% "spark-graphx" % sparkVer % "provided" cross CrossVersion.for3Use2_13, + "org.apache.spark" %% "spark-sql" % sparkVer % "provided" cross CrossVersion.for3Use2_13, + "org.apache.spark" %% "spark-mllib" % sparkVer % "provided" cross CrossVersion.for3Use2_13, "org.slf4j" % "slf4j-api" % "1.7.16", "org.scalatest" %% "scalatest" % defaultScalaTestVer % Test, "com.github.zafarkhaja" % "java-semver" % "0.9.0" % Test @@ -79,5 +79,15 @@ lazy val root = (project in file(".")) commitNextVersion ), + // Assembly settings + assembly / test := {}, // No tests in assembly + assembly / assemblyMergeStrategy := { + case PathList("META-INF", xs*) => MergeStrategy.discard + case x if x.endsWith("module-info.class") => MergeStrategy.discard + case x => + val oldStrategy = (assembly / assemblyMergeStrategy).value + oldStrategy(x) + }, + credentials += Credentials(Path.userHome / ".ivy2" / ".sbtcredentials") ) \ No newline at end of file diff --git a/project/plugins.sbt b/project/plugins.sbt index 581a1cd39..50f097c3e 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,2 +1,3 @@ addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.3.0") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") +addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") From c56b4f8e364ff5ec37870f5cdf29b342194aab3a Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 13:58:20 +0100 Subject: [PATCH 05/18] Fix syntax --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 33e14e658..cd74f0da4 100644 --- a/build.sbt +++ b/build.sbt @@ -82,7 +82,7 @@ lazy val root = (project in file(".")) // Assembly settings assembly / test := {}, // No tests in assembly assembly / assemblyMergeStrategy := { - case PathList("META-INF", xs*) => MergeStrategy.discard + case PathList("META-INF", xs @ _*) => MergeStrategy.discard case x if x.endsWith("module-info.class") => MergeStrategy.discard case x => val oldStrategy = (assembly / assemblyMergeStrategy).value From 3b1a9e13b3218efc1321a225f55a263d1c60823e Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 14:03:01 +0100 Subject: [PATCH 06/18] Downgrade scoverage to work with 2.13.8 --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 50f097c3e..7260dc5f3 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.3.0") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.11") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") From 6237241a8361ecf4877e1440c0d3ae5d59f18b8b Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 14:05:37 +0100 Subject: [PATCH 07/18] Spark version like in CI by default --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index cd74f0da4..061901717 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,6 @@ import ReleaseTransformations._ -lazy val sparkVer = sys.props.getOrElse("spark.version", "3.5.3") +lazy val sparkVer = sys.props.getOrElse("spark.version", "3.5.4") lazy val sparkBranch = sparkVer.substring(0, 3) lazy val defaultScalaVer = sparkBranch match { case "3.5" => "2.12.18" From 8ee2c1abb16d4237ce22fe3ce66f43650487fc9f Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 14:07:46 +0100 Subject: [PATCH 08/18] Sbt 1.9.3 (like in Spark) --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 51c77c168..3c3220437 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1,2 +1,2 @@ // This file should only contain the version of sbt to use. -sbt.version=1.9.9 +sbt.version=1.9.3 From 77cdf963c200fc827e5b8f9c3c8bcd8a55df6443 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 14:16:50 +0100 Subject: [PATCH 09/18] Downgrade scoverage --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 7260dc5f3..c1b94835e 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.11") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.9.3") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") From dc7f41e6d70f5456bc1bf074f476a41fc8e7d2d7 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 14:20:41 +0100 Subject: [PATCH 10/18] An attempt to fix ivy2 cache problem --- .github/workflows/scala-ci.yml | 3 +++ project/plugins.sbt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scala-ci.yml b/.github/workflows/scala-ci.yml index 032b46592..75f6dd386 100644 --- a/.github/workflows/scala-ci.yml +++ b/.github/workflows/scala-ci.yml @@ -26,6 +26,9 @@ jobs: path: | ~/.ivy2/cache key: sbt-ivy-cache-spark-${{ matrix.spark-version}}-scala-${{ matrix.scala-version }} + - name: Remove scoverage because of bugs + run: | + rm -rf ~/.ivy2/cache/org.scoverage - name: Build and Test run: build/sbt -v ++${{ matrix.scala-version }} -Dspark.version=${{ matrix.spark-version }} coverage test coverageReport - uses: codecov/codecov-action@v3 diff --git a/project/plugins.sbt b/project/plugins.sbt index c1b94835e..7260dc5f3 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.9.3") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.11") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") From ea565b19d13b8b71e49e46685076267b34378f10 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 14:24:59 +0100 Subject: [PATCH 11/18] Cache problem --- .github/workflows/scala-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scala-ci.yml b/.github/workflows/scala-ci.yml index 75f6dd386..26885be38 100644 --- a/.github/workflows/scala-ci.yml +++ b/.github/workflows/scala-ci.yml @@ -28,7 +28,7 @@ jobs: key: sbt-ivy-cache-spark-${{ matrix.spark-version}}-scala-${{ matrix.scala-version }} - name: Remove scoverage because of bugs run: | - rm -rf ~/.ivy2/cache/org.scoverage + rm -rf ~/.ivy2/cache/localorg.scoverage - name: Build and Test run: build/sbt -v ++${{ matrix.scala-version }} -Dspark.version=${{ matrix.spark-version }} coverage test coverageReport - uses: codecov/codecov-action@v3 From 55a70b658e09ed8c5dff43d5732afd6ffdb67088 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 14:48:38 +0100 Subject: [PATCH 12/18] Downgrade scoverage --- .github/workflows/scala-ci.yml | 5 +---- project/plugins.sbt | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/scala-ci.yml b/.github/workflows/scala-ci.yml index 26885be38..bee91ff43 100644 --- a/.github/workflows/scala-ci.yml +++ b/.github/workflows/scala-ci.yml @@ -9,7 +9,7 @@ jobs: - spark-version: 3.5.4 scala-version: 2.13.8 - spark-version: 3.5.4 - scala-version: 2.12.12 + scala-version: 2.12.18 runs-on: ubuntu-22.04 env: # fixing this error after tests success: sbt.ForkMain failed with exit code 134 @@ -26,9 +26,6 @@ jobs: path: | ~/.ivy2/cache key: sbt-ivy-cache-spark-${{ matrix.spark-version}}-scala-${{ matrix.scala-version }} - - name: Remove scoverage because of bugs - run: | - rm -rf ~/.ivy2/cache/localorg.scoverage - name: Build and Test run: build/sbt -v ++${{ matrix.scala-version }} -Dspark.version=${{ matrix.spark-version }} coverage test coverageReport - uses: codecov/codecov-action@v3 diff --git a/project/plugins.sbt b/project/plugins.sbt index 7260dc5f3..d5a3b7b7b 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.11") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") From 1b23ae1c61a23030c407643e3b64df06b1387761 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 14:52:59 +0100 Subject: [PATCH 13/18] Return an old scala ver to CI --- .github/workflows/scala-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scala-ci.yml b/.github/workflows/scala-ci.yml index bee91ff43..032b46592 100644 --- a/.github/workflows/scala-ci.yml +++ b/.github/workflows/scala-ci.yml @@ -9,7 +9,7 @@ jobs: - spark-version: 3.5.4 scala-version: 2.13.8 - spark-version: 3.5.4 - scala-version: 2.12.18 + scala-version: 2.12.12 runs-on: ubuntu-22.04 env: # fixing this error after tests success: sbt.ForkMain failed with exit code 134 From 1a91178e705be6e92e56ffd74937e0093268b581 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 15:24:14 +0100 Subject: [PATCH 14/18] 2.12.18 in CI --- .github/workflows/scala-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scala-ci.yml b/.github/workflows/scala-ci.yml index 032b46592..bee91ff43 100644 --- a/.github/workflows/scala-ci.yml +++ b/.github/workflows/scala-ci.yml @@ -9,7 +9,7 @@ jobs: - spark-version: 3.5.4 scala-version: 2.13.8 - spark-version: 3.5.4 - scala-version: 2.12.12 + scala-version: 2.12.18 runs-on: ubuntu-22.04 env: # fixing this error after tests success: sbt.ForkMain failed with exit code 134 From 3eb2d149293d9ef4714f75650057c9704a585d99 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 15:44:25 +0100 Subject: [PATCH 15/18] Update the plugin --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index d5a3b7b7b..7260dc5f3 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.6.1") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.11") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") From 3efdce77d716136c0c19b89cba7920a71aa265c9 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 15:47:37 +0100 Subject: [PATCH 16/18] Update the version --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 7260dc5f3..50f097c3e 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,3 @@ -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.11") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.3.0") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") From 61a94e5c93eb4aa26dfd26ef5acd201fc0f5d88c Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 15:52:20 +0100 Subject: [PATCH 17/18] Try a workaround --- project/plugins.sbt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/project/plugins.sbt b/project/plugins.sbt index 50f097c3e..e5b685c42 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,10 @@ +// https://github.com/scala/bug/issues/12632 +// https://github.com/scoverage/sbt-scoverage/issues/475 +// Workaround: +ThisBuild / libraryDependencySchemes ++= Seq( + "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always +) + addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.3.0") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1") From 52488479ff85c66a82d2e6f0600ed75d56b39495 Mon Sep 17 00:00:00 2001 From: semyonsinchenko Date: Mon, 3 Feb 2025 15:59:48 +0100 Subject: [PATCH 18/18] 2.0.10 scoverage --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index e5b685c42..46028c336 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -5,6 +5,6 @@ ThisBuild / libraryDependencySchemes ++= Seq( "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always ) -addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.3.0") +addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.10") addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0") addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.3.1")