From eadde6f060b24108e14e723b29dc8f4e5db9d1dd Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Thu, 22 Feb 2024 22:40:13 -0800 Subject: [PATCH] Bump to firtool-resolver 2.0.0 (#3855) --- build.sbt | 2 +- build.sc | 2 +- src/main/scala/circt/stage/phases/CIRCT.scala | 12 +++++-- .../circt/stage/phases/ScribeInterop.scala | 33 ------------------- 4 files changed, 12 insertions(+), 37 deletions(-) delete mode 100644 src/main/scala/circt/stage/phases/ScribeInterop.scala diff --git a/build.sbt b/build.sbt index 6fd2997f667..5d287f184d0 100644 --- a/build.sbt +++ b/build.sbt @@ -198,7 +198,7 @@ lazy val chiselSettings = Seq( "org.scalatest" %% "scalatest" % "3.2.16" % "test", "org.scalatestplus" %% "scalacheck-1-16" % "3.2.14.0" % "test", "com.lihaoyi" %% "upickle" % "3.1.0", - "org.chipsalliance" %% "firtool-resolver" % "1.3.0" + "org.chipsalliance" %% "firtool-resolver" % "2.0.0" ) ) ++ ( // Tests from other projects may still run concurrently diff --git a/build.sc b/build.sc index 5913a3bb204..39ec05709ee 100644 --- a/build.sc +++ b/build.sc @@ -17,7 +17,7 @@ object v { ) val osLib = ivy"com.lihaoyi::os-lib:0.9.1" val upickle = ivy"com.lihaoyi::upickle:3.1.0" - val firtoolResolver = ivy"org.chipsalliance::firtool-resolver:1.3.0" + val firtoolResolver = ivy"org.chipsalliance::firtool-resolver:2.0.0" val scalatest = ivy"org.scalatest::scalatest:3.2.14" val scalacheck = ivy"org.scalatestplus::scalacheck-1-15:3.2.11.0" val json4s = ivy"org.json4s::json4s-native:4.0.6" diff --git a/src/main/scala/circt/stage/phases/CIRCT.scala b/src/main/scala/circt/stage/phases/CIRCT.scala index a4feeecf182..ea061330877 100644 --- a/src/main/scala/circt/stage/phases/CIRCT.scala +++ b/src/main/scala/circt/stage/phases/CIRCT.scala @@ -2,7 +2,7 @@ package circt.stage.phases -import _root_.logger.LogLevel +import _root_.logger.{LogLevel, Logger} import chisel3.BuildInfo.{firtoolVersion, version => chiselVersion} import chisel3.InternalErrorException import chisel3.experimental.hierarchy.core.ImportDefinitionAnnotation @@ -55,6 +55,14 @@ private object Helpers { case true => Seq.empty } } + + class LoggerShim(logger: Logger) extends firtoolresolver.Logger { + def error(msg: String): Unit = logger.error(msg) + def warn(msg: String): Unit = logger.warn(msg) + def info(msg: String): Unit = logger.info(msg) + def debug(msg: String): Unit = logger.debug(msg) + def trace(msg: String): Unit = logger.trace(msg) + } } private[this] object Exceptions { @@ -204,7 +212,7 @@ class CIRCT extends Phase { val binary = circtOptions.firtoolBinaryPath.getOrElse { // .get is safe, firtoolVersion is an Option for backwards compatibility val version = firtoolVersion.get - val resolved = firtoolresolver.Resolve(loggerToScribe(logger), version) + val resolved = firtoolresolver.Resolve(new LoggerShim(logger), version) resolved match { case Left(msg) => throw new Exceptions.FirtoolNotFound(msg) diff --git a/src/main/scala/circt/stage/phases/ScribeInterop.scala b/src/main/scala/circt/stage/phases/ScribeInterop.scala deleted file mode 100644 index 70357cdccfb..00000000000 --- a/src/main/scala/circt/stage/phases/ScribeInterop.scala +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 - -package circt.stage.phases - -import _root_.logger.{Logger => FLogger} -import scribe.{Logger => SLogger, LogRecord, Level} -import scribe.handler.LogHandler - -/** Wrap our logger up as a scribe logger - * - * This is private and located here instead of in package logger because we should probably just - * replace our logger with scribe. We probably shouldn't commit to a public interop API. - * - * @note this interop is extremely limited, scribe formatting features are ignored - */ -private[phases] object loggerToScribe { - def apply(logger: FLogger): SLogger = { - val handler = new LogHandler { - def log(record: LogRecord): Unit = { - val msg = record.logOutput.plainText - val level = record.level - if (level >= Level.Error) logger.error(msg) - else if (level >= Level.Warn) logger.warn(msg) - else if (level >= Level.Info) logger.info(msg) - else if (level >= Level.Debug) logger.debug(msg) - else logger.trace(msg) - } - } - SLogger("Chisel") - .withHandler(handler) - } - -}