Skip to content

Commit 1e98bf5

Browse files
Merge pull request #826 from romanowski/cross-compile-cli
Cross compile cli
2 parents f1c553e + fe71ac9 commit 1e98bf5

File tree

17 files changed

+54
-45
lines changed

17 files changed

+54
-45
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ jobs:
2727
jvm: "temurin:17"
2828
- name: Unit 3.x tests
2929
run: |
30-
./mill -i _[3.1.1].compile
30+
./mill -i cli3.compile
31+
./mill -i cli3.test
3132
./mill -i _[3.1.1].test
3233
jvm-tests:
3334
timeout-minutes: 120

build.sc

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ import _root_.scala.util.Properties
3333
implicit def millModuleBasePath: define.BasePath =
3434
define.BasePath(super.millModuleBasePath.value / "modules")
3535

36-
object cli extends Cli
36+
object cli extends Cli
37+
// remove once migrate to Scala 3
38+
object cli3 extends Cli { override def myScalaVersion = Scala.scala3 }
3739
object `cli-options` extends CliOptions
3840
object `build-macros` extends Cross[BuildMacros](Scala.defaultInternal, Scala.scala3)
3941
object options extends Cross[Options](Scala.defaultInternal, Scala.scala3)
@@ -196,9 +198,10 @@ class BuildMacros(val crossScalaVersion: String) extends ScalaCliCrossSbtModule
196198
def asyncScalacOptions(scalaVersion: String) =
197199
if (scalaVersion.startsWith("3")) Nil else Seq("-Xasync")
198200

199-
trait BuildLikeModule
200-
extends ScalaCliCrossSbtModule with ScalaCliPublishModule with HasTests
201-
with ScalaCliScalafixModule {
201+
trait ProtoBuildModule extends ScalaCliPublishModule with HasTests
202+
with ScalaCliScalafixModule
203+
204+
trait BuildLikeModule extends ScalaCliCrossSbtModule with ProtoBuildModule {
202205

203206
def scalacOptions = T {
204207
super.scalacOptions() ++ Seq("-Ywarn-unused", "-deprecation")
@@ -484,28 +487,32 @@ trait CliOptions extends SbtModule with ScalaCliPublishModule with settings.Scal
484487
def scalaVersion = Scala.defaultInternal
485488
}
486489

487-
trait Cli extends SbtModule with CliLaunchers with ScalaCliPublishModule with FormatNativeImageConf
488-
with HasTests with HasMacroAnnotations with ScalaCliScalafixModule {
489-
def scalaVersion = Scala.defaultInternal
490+
trait Cli extends SbtModule with ProtoBuildModule with CliLaunchers
491+
with HasMacroAnnotations with FormatNativeImageConf {
492+
493+
def millSourcePath = super.millSourcePath / os.up / "cli"
494+
495+
def myScalaVersion = Scala.defaultInternal
496+
497+
def scalaVersion = T(myScalaVersion)
498+
490499
def scalacOptions = T {
491-
super.scalacOptions() ++ Seq("-Xasync", "-Ywarn-unused", "-deprecation")
500+
super.scalacOptions() ++ asyncScalacOptions(scalaVersion()) ++ Seq("-Ywarn-unused")
492501
}
493502
def javacOptions = T {
494503
super.javacOptions() ++ Seq("--release", "16")
495504
}
496505
def moduleDeps = Seq(
497-
build(Scala.defaultInternal),
498-
`test-runner`(Scala.defaultInternal),
499-
`cli-options`
506+
build(myScalaVersion),
507+
`cli-options`,
508+
`test-runner`(myScalaVersion)
500509
)
501510

502511
def repositories = super.repositories ++ customRepositories
503512

504513
def ivyDeps = super.ivyDeps() ++ Agg(
505-
Deps.caseApp,
506514
Deps.coursierLauncher,
507515
Deps.coursierPublish,
508-
Deps.dataClass,
509516
Deps.jimfs, // scalaJsEnvNodeJs pulls jimfs:1.1, whose class path seems borked (bin compat issue with the guava version it depends on)
510517
Deps.jniUtils,
511518
Deps.jsoniterCore,
@@ -522,7 +529,7 @@ trait Cli extends SbtModule with CliLaunchers with ScalaCliPublishModule with Fo
522529

523530
object test extends Tests with ScalaCliScalafixModule {
524531
def moduleDeps = super.moduleDeps ++ Seq(
525-
build(Scala.defaultInternal).test
532+
build(myScalaVersion).test
526533
)
527534
}
528535
}
File renamed without changes.

modules/cli/src/main/scala/scala/cli/commands/CustomWindowsEnvVarUpdater.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
package scala.cli.commands
22

33
import coursier.env._
4-
import dataclass._
54

65
// Only using this instead of coursier.env.WindowsEnvVarUpdater for the "\u0000" striping thing,
76
// that earlier version of the Scala CLI may have left behind.
87
// We should be able to switch back to coursier.env.WindowsEnvVarUpdater
98
// after a bit of time (once super early users used this code more).
109

11-
@data class CustomWindowsEnvVarUpdater(
10+
case class CustomWindowsEnvVarUpdater(
1211
powershellRunner: PowershellRunner = PowershellRunner(),
13-
@since
1412
useJni: Option[Boolean] = None
1513
) extends EnvVarUpdater {
1614

15+
def withUseJni(opt: Option[Boolean]) = copy(useJni = opt)
16+
1717
private lazy val useJni0 = useJni.getOrElse {
1818
// FIXME Should be coursier.paths.Util.useJni(), but it's not available from here.
1919
!System.getProperty("coursier.jni", "").equalsIgnoreCase("false")

modules/cli/src/main/scala/scala/cli/commands/Export.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import scala.build.options.{BuildOptions, Scope}
1111
import scala.build.{CrossSources, Inputs, Logger, Os, Sources}
1212
import scala.cli.CurrentParams
1313
import scala.cli.commands.util.SharedOptionsUtil._
14-
import scala.cli.export._
14+
import scala.cli.exportCmd._
1515

1616
object Export extends ScalaCommand[ExportOptions] {
1717

modules/cli/src/main/scala/scala/cli/commands/Fmt.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,11 @@ object Fmt extends ScalaCommand[FmtOptions] {
4141
def readVersionFromFile(workspace: os.Path, logger: Logger): (Option[String], Boolean) = {
4242
case class ScalafmtVersionConfig(version: String = "")
4343
object ScalafmtVersionConfig {
44-
lazy val default = ScalafmtVersionConfig()
45-
implicit lazy val surface = metaconfig.generic.deriveSurface[ScalafmtVersionConfig]
46-
implicit lazy val decoder = metaconfig.generic.deriveDecoder[ScalafmtVersionConfig](default)
44+
lazy val default = ScalafmtVersionConfig()
45+
implicit lazy val surface: metaconfig.generic.Surface[ScalafmtVersionConfig] =
46+
metaconfig.generic.deriveSurface[ScalafmtVersionConfig]
47+
implicit lazy val decoder: metaconfig.ConfDecoder[ScalafmtVersionConfig] =
48+
metaconfig.generic.deriveDecoder[ScalafmtVersionConfig](default)
4749
}
4850

4951
val confName = ".scalafmt.conf"

modules/cli/src/main/scala/scala/cli/commands/Package.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package scala.cli.commands
22

33
import caseapp._
44
import coursier.launcher._
5-
import dependency.dependencyString
5+
import dependency._
66
import packager.config._
77
import packager.deb.DebianPackage
88
import packager.docker.DockerPackage

modules/cli/src/main/scala/scala/cli/export/BuildTool.scala renamed to modules/cli/src/main/scala/scala/cli/exportCmd/BuildTool.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package scala.cli.export
1+
package scala.cli.exportCmd
22

33
import java.nio.charset.Charset
44

modules/cli/src/main/scala/scala/cli/export/Mill.scala renamed to modules/cli/src/main/scala/scala/cli/exportCmd/Mill.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package scala.cli.export
1+
package scala.cli.exportCmd
22

33
import coursier.maven.MavenRepository
44
import coursier.parse.RepositoryParser

modules/cli/src/main/scala/scala/cli/export/MillProject.scala renamed to modules/cli/src/main/scala/scala/cli/exportCmd/MillProject.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package scala.cli.export
1+
package scala.cli.exportCmd
22

33
import java.nio.charset.StandardCharsets
44

0 commit comments

Comments
 (0)