scala-cli icon indicating copy to clipboard operation
scala-cli copied to clipboard

Can't build Scala CLI with custom Scala version via `scala.version.internal` & `scala.version.user` props

Open Gedochao opened this issue 1 year ago • 0 comments

Version(s) d4618124e4dd872cc8a1902b8a9504bcb54dc4a3

Describe the bug It is currently not possible to build Scala CLI with 3.5.0-RC1-bin-20240415-c47138c-NIGHTLY passed via the scala.version.internal and scala.version.user props, as per https://github.com/VirtusLab/scala-cli/blob/main/DEV.md#overriding-scala-versions-in-scala-cli-builds

To Reproduce

./mill -i --define scala.version.internal=3.5.0-RC1-bin-20240415-c47138c-NIGHTLY --define scala.version.user=3.5.0-RC1-bin-20240415-c47138c-NIGHTLY scala version --offline
[build.sc] [47/53] zincReportCachedProblems 
java.util.NoSuchElementException: key not found: List(3.5.0-RC1-bin-20240415-c47138c-NIGHTLY)
    scala.collection.MapOps.default(Map.scala:274)
    scala.collection.MapOps.default$(Map.scala:273)
    scala.collection.AbstractMapView.default(MapView.scala:186)
    scala.collection.MapOps.apply(Map.scala:176)
    scala.collection.MapOps.apply$(Map.scala:175)
    scala.collection.AbstractMapView.apply(MapView.scala:186)
    mill.define.Cross.apply(Cross.scala:372)
    millbuild.build$Build.moduleDeps(build.sc:653)
    millbuild.build$Build.moduleDeps$(build.sc:649)
    millbuild.build$build$minusmodule$$anonfun$22$Build$macro$3$1.moduleDeps(build.sc:92)
    mill.scalalib.JavaModule.$anonfun$recModuleDeps$1(JavaModule.scala:174)
    mill.scalalib.internal.ModuleUtils$.rec$1(ModuleUtils.scala:40)
    mill.scalalib.internal.ModuleUtils$.recursive(ModuleUtils.scala:46)
    mill.scalalib.JavaModule.mill$scalalib$JavaModule$$recModuleDeps(JavaModule.scala:174)
    mill.scalalib.JavaModule.moduleDepsChecked(JavaModule.scala:165)
    mill.scalalib.JavaModule.transitiveModuleCompileModuleDeps(JavaModule.scala:216)
    mill.scalalib.JavaModule.$anonfun$upstreamCompileOutput$1(JavaModule.scala:268)
    scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:469)
    mill.moduledefs.Cacher.cachedTarget(Cacher.scala:10)
    mill.moduledefs.Cacher.cachedTarget$(Cacher.scala:9)
    mill.define.Module$BaseClass.cachedTarget(Module.scala:58)
    mill.scalalib.JavaModule.upstreamCompileOutput(JavaModule.scala:267)
    mill.scalalib.JavaModule.upstreamCompileOutput$(JavaModule.scala:267)
    millbuild.build$cli$$anonfun$1$Cli$macro$3$1.upstreamCompileOutput(build.sc:40)
    mill.scalalib.ScalaModule.$anonfun$compile$1(ScalaModule.scala:290)
    scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:469)
    mill.moduledefs.Cacher.cachedTarget(Cacher.scala:10)
    mill.moduledefs.Cacher.cachedTarget$(Cacher.scala:9)
    mill.define.Module$BaseClass.cachedTarget(Module.scala:58)
    mill.scalalib.ScalaModule.compile(ScalaModule.scala:280)
    mill.scalalib.ScalaModule.compile$(ScalaModule.scala:280)
    millbuild.build$cli$$anonfun$1$Cli$macro$3$1.compile(build.sc:40)
    mill.scalalib.JavaModule.$anonfun$finalMainClassOpt$1(JavaModule.scala:99)
    scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:469)
    mill.moduledefs.Cacher.cachedTarget(Cacher.scala:10)
    mill.moduledefs.Cacher.cachedTarget$(Cacher.scala:9)
    mill.define.Module$BaseClass.cachedTarget(Module.scala:58)
    mill.scalalib.JavaModule.finalMainClassOpt(JavaModule.scala:95)
    mill.scalalib.JavaModule.finalMainClassOpt$(JavaModule.scala:95)
    millbuild.build$cli$$anonfun$1$Cli$macro$3$1.finalMainClassOpt(build.sc:40)
    mill.scalalib.JavaModule.$anonfun$finalMainClass$1(JavaModule.scala:112)
    scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:469)
    mill.moduledefs.Cacher.cachedTarget(Cacher.scala:10)
    mill.moduledefs.Cacher.cachedTarget$(Cacher.scala:9)
    mill.define.Module$BaseClass.cachedTarget(Module.scala:58)
    mill.scalalib.JavaModule.finalMainClass(JavaModule.scala:111)
    mill.scalalib.JavaModule.finalMainClass$(JavaModule.scala:111)
    millbuild.build$cli$$anonfun$1$Cli$macro$3$1.finalMainClass(build.sc:40)
    mill.scalalib.JavaModule.run(JavaModule.scala:795)
    mill.scalalib.JavaModule.run$(JavaModule.scala:792)
    millbuild.build$cli$$anonfun$1$Cli$macro$3$1.run(build.sc:40)
    millbuild.build.scala(build.sc:1320)
    millbuild.MiscInfo_build$.$anonfun$millBaseModuleInfo$980(build.sc:13)
    mainargs.Invoker$.$anonfun$invoke0$2(Invoker.scala:77)
    mainargs.Result.flatMap(Result.scala:13)
    mainargs.Result.flatMap$(Result.scala:12)
    mainargs.Result$Success.flatMap(Result.scala:23)
    mainargs.Invoker$.invoke0(Invoker.scala:76)
    mainargs.Invoker$.invoke(Invoker.scala:86)
    mill.resolve.Resolve$.$anonfun$invokeCommand0$12(Resolve.scala:159)
    mainargs.Result.flatMap(Result.scala:13)
    mainargs.Result.flatMap$(Result.scala:12)
    mainargs.Result$Success.flatMap(Result.scala:23)

Expected behaviour I'd expect:

./mill -i --define scala.version.internal=3.5.0-RC1-bin-20240415-c47138c-NIGHTLY --define scala.version.user=3.5.0-RC1-bin-20240415-c47138c-NIGHTLY scala version --offline
# Scala CLI version: 1.x.x-SNAPSHOT
# Scala version (default): 3.5.0-RC1-bin-20240415-c47138c-NIGHTLY

Extra context This might block #2838

Gedochao avatar Apr 16 '24 11:04 Gedochao