@@ -17,10 +17,11 @@ import scala.build.interactive.Interactive.*
17
17
import scala .build .internal .Constants .*
18
18
import scala .build .internal .CsLoggerUtil .*
19
19
import scala .build .internal .Regexes .scala3NightlyNicknameRegex
20
- import scala .build .internal .{Constants , StableScalaVersion }
20
+ import scala .build .internal .{Constants , OsLibc , StableScalaVersion }
21
21
import scala .build .options .validation .BuildOptionsRule
22
22
import scala .build .{Artifacts , Logger , Os , Position , Positioned }
23
23
import scala .concurrent .duration .*
24
+ import scala .util .Properties
24
25
25
26
final case class BuildOptions (
26
27
scalaOptions : ScalaOptions = ScalaOptions (),
@@ -173,7 +174,7 @@ final case class BuildOptions(
173
174
lazy val archiveCache : ArchiveCache [Task ] = ArchiveCache ().withCache(finalCache)
174
175
175
176
private lazy val javaCommand0 : Positioned [JavaHomeInfo ] =
176
- javaOptions.javaHome(archiveCache, finalCache, internal.verbosityOrDefault )
177
+ javaHomeLocation().map( JavaHomeInfo (_) )
177
178
178
179
def javaHomeLocationOpt (): Option [Positioned [os.Path ]] =
179
180
javaOptions.javaHomeLocationOpt(archiveCache, finalCache, internal.verbosityOrDefault)
@@ -544,6 +545,15 @@ object BuildOptions {
544
545
version : Int
545
546
)
546
547
548
+ object JavaHomeInfo {
549
+ def apply (javaHome : os.Path ): JavaHomeInfo = {
550
+ val ext = if (Properties .isWin) " .exe" else " "
551
+ val javaCmd = (javaHome / " bin" / s " java $ext" ).toString
552
+ val javaVersion = OsLibc .javaVersion(javaCmd)
553
+ JavaHomeInfo (javaHome, javaCmd, javaVersion)
554
+ }
555
+ }
556
+
547
557
implicit val hasHashData : HasHashData [BuildOptions ] = HasHashData .derive
548
558
implicit val monoid : ConfigMonoid [BuildOptions ] = ConfigMonoid .derive
549
559
}
0 commit comments