From 3de00fa95e9e8b76d342208ffccdbdbd81064da5 Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Tue, 4 Jun 2024 14:08:49 +0200 Subject: [PATCH] Fix Scala.js toolchain logs in server-client mode (#3196) For some reason logging with `scala.Console` doesn't work with the Scala.js linker in server-client mode, maybe it's related to some classloader issue. This works around the problem by using `System.out` instead, which works correctly. Pull Request: https://github.com/com-lihaoyi/mill/pull/3196 --- .../scalajslib/worker/ScalaJSWorkerImpl.scala | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/scalajslib/worker/1/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala b/scalajslib/worker/1/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala index 8b9685e0b98..742f9610344 100644 --- a/scalajslib/worker/1/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala +++ b/scalajslib/worker/1/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala @@ -17,7 +17,7 @@ import org.scalajs.linker.interface.{ ModuleSplitStyle => _, _ } -import org.scalajs.logging.ScalaConsoleLogger +import org.scalajs.logging.{Level, Logger} import org.scalajs.jsenv.{Input, JSEnv, RunConfig} import org.scalajs.testing.adapter.TestAdapter import org.scalajs.testing.adapter.{TestAdapterInitializer => TAI} @@ -158,6 +158,14 @@ class ScalaJSWorkerImpl extends ScalaJSWorkerApi { (linker, irFileCacheCache) } } + private val logger = new Logger { + def log(level: Level, message: => String): Unit = { + System.err.println(message) + } + def trace(t: => Throwable): Unit = { + t.printStackTrace() + } + } def link( runClasspath: Seq[Path], dest: File, @@ -190,7 +198,6 @@ class ScalaJSWorkerImpl extends ScalaJSWorkerApi { dest = dest )) val irContainersAndPathsFuture = PathIRContainer.fromClasspath(runClasspath) - val logger = new ScalaConsoleLogger val testInitializer = if (testBridgeInit) ModuleInitializer.mainMethod(TAI.ModuleClassName, TAI.MainMethodName) :: Nil @@ -284,7 +291,7 @@ class ScalaJSWorkerImpl extends ScalaJSWorkerApi { def run(config: JsEnvConfig, report: Report): Unit = { val env = jsEnv(config) val input = jsEnvInput(report) - val runConfig0 = RunConfig().withLogger(new ScalaConsoleLogger) + val runConfig0 = RunConfig().withLogger(logger) val runConfig = if (mill.api.SystemStreams.isOriginal()) runConfig0 else runConfig0 @@ -315,7 +322,7 @@ class ScalaJSWorkerImpl extends ScalaJSWorkerApi { ): (() => Unit, sbt.testing.Framework) = { val env = jsEnv(config) val input = jsEnvInput(report) - val tconfig = TestAdapter.Config().withLogger(new ScalaConsoleLogger) + val tconfig = TestAdapter.Config().withLogger(logger) val adapter = new TestAdapter(env, input, tconfig)