Skip to content

Commit c7d8f6d

Browse files
Fix minors bugs and fix support for Scala 3 (#18)
* Update sbt to 1.6.1 * Use correct Scala binaraies in standalone scripted test * Add explicit maven resolvers for sbt 1.6.1 * Get rid of ScalaNative plugin dependency * Update scripts
1 parent 819f684 commit c7d8f6d

File tree

9 files changed

+41
-19
lines changed

9 files changed

+41
-19
lines changed

build.sbt

+9-4
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ inThisBuild(
7272
Some("scm:git:[email protected]:scala-native/scala-native-cli.git")
7373
)
7474
),
75-
resolvers += Resolver.sonatypeRepo("snapshots")
75+
resolvers += Resolver.sonatypeRepo("snapshots"),
76+
resolvers += Resolver.mavenCentral
7677
)
7778
)
7879
val cliPackLibJars =
@@ -133,6 +134,11 @@ lazy val cliScriptedTests = project
133134
}
134135
)
135136

137+
def nativeBinaryVersion(version: String): String = {
138+
val VersionPattern = raw"(\d+)\.(\d+)\.(\d+)(\-.*)?".r
139+
val VersionPattern(major, minor, _, _) = version
140+
s"$major.$minor"
141+
}
136142
lazy val cliPackSettings = Def.settings(
137143
cliPackLibJars := {
138144
val s = streams.value
@@ -141,8 +147,7 @@ lazy val cliPackSettings = Def.settings(
141147
val scalaNativeOrg = organization.value
142148
val scalaBinVer = scalaBinaryVersion.value
143149
val snVer = scalaNativeVersion.value
144-
val nativeBinVer =
145-
ScalaNativeCrossVersion.binaryVersion(snVer.stripSuffix("-SNAPSHOT"))
150+
val nativeBinVer = nativeBinaryVersion(snVer)
146151

147152
val scalaFullVers = scalaReleasesForBinaryVersion(scalaBinVer)
148153
val cliAssemblyJar = assembly.value
@@ -221,7 +226,7 @@ lazy val cliPackSettings = Def.settings(
221226
.replaceAllLiterally("@SCALANATIVE_VER@", snVer)
222227
.replaceAllLiterally(
223228
"@SCALANATIVE_BIN_VER@",
224-
ScalaNativeCrossVersion.binaryVersion(snVer.stripSuffix("-SNAPSHOT"))
229+
nativeBinaryVersion(snVer)
225230
)
226231
val dest = trgBin / scriptFile.getName
227232
IO.write(dest, processedContent)

cli/src/main/scala/scala/scalanative/cli/options/PrinterOptions.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ object PrinterOptions {
3232
.text("Instead of passing class/object names, pass NIR file paths.")
3333
parser
3434
.opt[Unit]("verbose")
35-
.abbr("-v")
35+
.abbr("v")
3636
.optional()
3737
.action((_, c) => c.copy(verbose = true))
3838
.text("Print all informations about NIR, including method definitions.")

cli/src/sbt-test/integration/standalone/build.sbt

+10-5
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,23 @@ runScript := {
3434
val ver = scalaVersion.value
3535
val cacheDir =
3636
new File(cliPackDir).getParentFile.getParentFile / s"fetchScala-$ver"
37-
val scalaBinDir = cacheDir / s"scala-$ver" / "bin"
37+
val scalaDir =
38+
if (ver.startsWith("3.")) s"scala3-$ver"
39+
else s"scala-$ver"
40+
val scalaBinDir = cacheDir / scalaDir / "bin"
3841

3942
FileFunction.cached(
4043
cacheDir / s"fetchScala-$ver",
4144
FilesInfo.lastModified,
4245
FilesInfo.exists
4346
) { _ =>
4447
if (!scalaBinDir.exists) {
45-
IO.unzipURL(
46-
url(s"https://downloads.lightbend.com/scala/${ver}/scala-$ver.zip"),
47-
cacheDir
48-
)
48+
val downloadUrl =
49+
if (ver.startsWith("3."))
50+
s"https://github.com/lampepfl/dotty/releases/download/$ver/$scalaDir.zip"
51+
else
52+
s"https://downloads.lightbend.com/scala/${ver}/$scalaDir.zip"
53+
IO.unzipURL(url(downloadUrl), cacheDir)
4954
}
5055
// Make sure we can execute scala/scalac from downloaded distro
5156
scalaBinDir

cli/src/script/scala-native-c

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@ SCALANATIVE_VER="@SCALANATIVE_VER@"
55
SCALANATIVE_BIN_VER="@SCALANATIVE_BIN_VER@"
66
SCALA_VER=$(scalac -version 2>&1 | grep -i scala | grep -o '[0-9]\.[0-9]\+\.[0-9]\+')
77

8-
if [ "$(echo $SCALA_VER | cut -d '.' -f 1-2)" != "$SCALA_BIN_VER" ]; then
8+
if [ "$SCALA_BIN_VER" != "3" ] && [ "$(echo $SCALA_VER | cut -d '.' -f 1-2)" != "$SCALA_BIN_VER" ]; then
99
echo "This bundle of Scala Native CLI is for $SCALA_BIN_VER. Your scala version is $SCALA_VER!" >&2
1010
exit 1
1111
fi
1212

13-
1413
BASE="$(dirname $0)/.."
1514
PLUGIN="$BASE/lib/nscplugin_$SCALA_VER-$SCALANATIVE_VER.jar"
1615
NATIVELIB=""
1716
libs="nativelib clib posixlib windowslib auxlib javalib scalalib"
17+
if [ "$SCALA_BIN_VER" = "3" ]; then
18+
libs="$libs scala3lib"
19+
fi
1820
for lib in $libs; do
1921
NATIVELIB="${NATIVELIB}:$BASE/lib/${lib}_native${SCALANATIVE_BIN_VER}_$SCALA_BIN_VER-$SCALANATIVE_VER.jar"
2022
done

cli/src/script/scala-native-c.bat

+8-4
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,19 @@ set SCALANATIVE_BIN_VER=@SCALANATIVE_BIN_VER@
77

88
for /F "tokens=5" %%i in (' scala -version 2^>^&1 1^>nul ') do set SCALA_VER=%%i
99

10-
if NOT "%SCALA_VER:~0,4%" == "%SCALA_BIN_VER%" (
11-
echo "This bundle of Scala Native CLI is for %SCALA_BIN_VER%. Your scala version is %SCALA_VER%!" 1>&2
12-
EXIT 1
10+
if NOT "%SCALA_BIN_VER%" == "3" (
11+
if NOT "%SCALA_VER:~0,4%" == "%SCALA_BIN_VER%" (
12+
echo "This bundle of Scala Native CLI is for %SCALA_BIN_VER%. Your scala version is %SCALA_VER%!" 1>&2
13+
EXIT 1
14+
)
1315
)
1416

1517
set BASE=%~dp0\..\lib
1618
set SUFFIX=_native%SCALANATIVE_BIN_VER%_%SCALA_BIN_VER%-%SCALANATIVE_VER%.jar
1719

1820
set PLUGIN=%BASE%\nscplugin_%SCALA_VER%-%SCALANATIVE_VER%.jar
1921
set NATIVELIB=%BASE%\nativelib%SUFFIX%;%BASE%\clib%SUFFIX%;%BASE%\posixlib%SUFFIX%;%BASE%\windowslib%SUFFIX%;%BASE%\auxlib%SUFFIX%;%BASE%\javalib%SUFFIX%;%BASE%\scalalib%SUFFIX%
20-
22+
if "%SCALA_BIN_VER%" == "3" (
23+
set NATIVELIB=%NATIVELIB% %BASE%\scala3lib%SUFFIX%
24+
)
2125
scalac -classpath .;%NATIVELIB% -Xplugin:%PLUGIN% "%*"

cli/src/script/scala-native-ld

+5
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ BASE="$(dirname $0)/.."
99
CLILIB="$BASE/lib/scala-native-cli-assembly_$SCALA_BIN_VER-$SCALANATIVE_VER.jar"
1010
NATIVELIB=""
1111
libs="nativelib clib posixlib windowslib auxlib javalib scalalib"
12+
if [ "$SCALA_BIN_VER" = "3" ]; then
13+
libs="$libs scala3lib"
14+
NATIVELIB="$BASE/lib/scalalib_native${SCALANATIVE_BIN_VER}_2.13-$SCALANATIVE_VER.jar"
15+
fi
16+
1217
for lib in $libs; do
1318
NATIVELIB="${NATIVELIB} $BASE/lib/${lib}_native${SCALANATIVE_BIN_VER}_$SCALA_BIN_VER-$SCALANATIVE_VER.jar"
1419
done

cli/src/script/scala-native-ld.bat

+3
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,8 @@ set SUFFIX=_native%SCALANATIVE_BIN_VER%_%SCALA_BIN_VER%-%SCALANATIVE_VER%.jar
1111
set CLILIB=%BASE%\scala-native-cli-assembly_%SCALA_BIN_VER%-%SCALANATIVE_VER%.jar
1212
set PLUGIN=%BASE%\nscplugin_%SCALA_VER%-%SCALANATIVE_VER%.jar
1313
set NATIVELIB=%BASE%\nativelib%SUFFIX% %BASE%\clib%SUFFIX% %BASE%\posixlib%SUFFIX% %BASE%\windowslib%SUFFIX% %BASE%\auxlib%SUFFIX% %BASE%\javalib%SUFFIX% %BASE%\scalalib%SUFFIX%
14+
if "%SCALA_BIN_VER%" == "3" (
15+
set NATIVELIB=%NATIVELIB% %BASE%\scala3lib%SUFFIX% %BASE%\scalalib_native%SCALANATIVE_BIN_VER%_2.13-%SCALANATIVE_VER%.jar
16+
)
1417

1518
scala -classpath %CLILIB% scala.scalanative.cli.ScalaNativeLd %* %NATIVELIB%

project/build.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=1.5.5
1+
sbt.version=1.6.1

project/plugins.sbt

-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.0.0")
22
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.10.0")
3-
// SN plugin used only to get correct binary version of Scala Native
4-
addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.2")

0 commit comments

Comments
 (0)