From ffe58abac5f60d785b684bb249aee0153bddea3f Mon Sep 17 00:00:00 2001 From: Jim Lawson Date: Mon, 19 Sep 2016 15:27:52 -0700 Subject: Add sbt-buildinfo support. --- build.sbt | 19 +++++++++++++++++++ project/plugins.sbt | 2 ++ src/main/scala/chisel3/Driver.scala | 4 ++++ src/test/scala/chiselTests/BuildInfoTests.scala | 13 +++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 src/test/scala/chiselTests/BuildInfoTests.scala diff --git a/build.sbt b/build.sbt index 02a0e9f5..fe22c95a 100644 --- a/build.sbt +++ b/build.sbt @@ -93,6 +93,25 @@ lazy val chiselFrontend = (project in file("chiselFrontend")). dependsOn(coreMacros) lazy val chisel = (project in file(".")). + enablePlugins(BuildInfoPlugin). + settings( + // We should really be using name.value, but currently, the package is "Chisel" (uppercase first letter) + buildInfoPackage := /* name.value */ "chisel3", + buildInfoOptions += BuildInfoOption.BuildTime, + buildInfoKeys := Seq[BuildInfoKey](buildInfoPackage, version, scalaVersion, sbtVersion), + // Move the managed source directory where git won't complain about it, + // and where we can easily package its files as part of the source jar artifact. + // We'd like to use versionToArray(), slice(), and mkString() to convert an explicit + // Scala version (like 2.10.6), into the leftmost two components (2.10), + // but this seems to run afoul of assumptions sbt makes about the inclusion + // of Scala-version-specfic code (we get + // BuildInfo is already defined as case class BuildInfo + // so use the full version spec. + //sourceManaged in Compile <<= (sourceDirectory in Compile, scalaVersion){ (s,v) => s / ("scala-" + versionToArray(v).slice(0,2).mkString(".") + "/src_managed") }, + sourceManaged in Compile <<= (sourceDirectory in Compile, scalaVersion){ (s,v) => s / ("scala-" + v + "/src_managed") }, + // Add the generated sources to the packagedSrc artifact since they are excluded by default. + mappings in (Compile, packageSrc) += { ((sourceManaged in Compile).value / "sbt-buildinfo" / "BuildInfo.scala") -> "BuildInfo.scala" } + ). settings(commonSettings: _*). settings(chiselSettings: _*). dependsOn(coreMacros). diff --git a/project/plugins.sbt b/project/plugins.sbt index 585435a0..70e12de8 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -13,3 +13,5 @@ addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.3.5") addSbtPlugin("com.typesafe.sbt" % "sbt-ghpages" % "0.5.4") addSbtPlugin("com.typesafe.sbt" % "sbt-site" % "0.8.2") + +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.6.1") diff --git a/src/main/scala/chisel3/Driver.scala b/src/main/scala/chisel3/Driver.scala index 5e0a3a0f..2216bbbd 100644 --- a/src/main/scala/chisel3/Driver.scala +++ b/src/main/scala/chisel3/Driver.scala @@ -7,6 +7,7 @@ import java.io._ import internal._ import internal.firrtl._ +import BuildInfo._ trait BackendCompilationUtilities { /** Create a temporary directory with the prefix name. Exists here because it doesn't in Java 6. @@ -132,4 +133,7 @@ object Driver extends BackendCompilationUtilities { } def targetDir(): String = { target_dir getOrElse new File(".").getCanonicalPath } + + val version = BuildInfo.version + val chiselVersionString = BuildInfo.toString } diff --git a/src/test/scala/chiselTests/BuildInfoTests.scala b/src/test/scala/chiselTests/BuildInfoTests.scala new file mode 100644 index 00000000..21eae17c --- /dev/null +++ b/src/test/scala/chiselTests/BuildInfoTests.scala @@ -0,0 +1,13 @@ +package chiselTests + +import org.scalatest.FlatSpec + +//import Chisel._ + +class BuildInfoTests extends FlatSpec { + behavior of "BuildInfoTests" + + it should "provide correct BuildInfo" in { + println(Chisel.Driver.chiselVersionString) + } +} -- cgit v1.2.3 From f98171296f821034cf66ace070bcf179183e833d Mon Sep 17 00:00:00 2001 From: Jim Lawson Date: Wed, 5 Oct 2016 09:25:07 -0700 Subject: Print Chisel version when Driver object is created. --- src/main/scala/chisel3/Driver.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/scala/chisel3/Driver.scala b/src/main/scala/chisel3/Driver.scala index 2216bbbd..e91b40b4 100644 --- a/src/main/scala/chisel3/Driver.scala +++ b/src/main/scala/chisel3/Driver.scala @@ -136,4 +136,5 @@ object Driver extends BackendCompilationUtilities { val version = BuildInfo.version val chiselVersionString = BuildInfo.toString + println(chiselVersionString) } -- cgit v1.2.3 From 39e3d05dfcd05bb278e08543be3bbc9204e690ca Mon Sep 17 00:00:00 2001 From: Jim Lawson Date: Thu, 6 Oct 2016 13:30:31 -0700 Subject: Remove non-standard sbt-buildinfo settings; write buildinfo to firrtl file. --- build.sbt | 14 +------------- src/main/scala/chisel3/Driver.scala | 1 - src/main/scala/chisel3/internal/firrtl/Emitter.scala | 2 +- src/test/scala/chiselTests/BuildInfoTests.scala | 13 ------------- 4 files changed, 2 insertions(+), 28 deletions(-) delete mode 100644 src/test/scala/chiselTests/BuildInfoTests.scala diff --git a/build.sbt b/build.sbt index f4aae4aa..09bf75ba 100644 --- a/build.sbt +++ b/build.sbt @@ -106,19 +106,7 @@ lazy val chisel = (project in file(".")). // We should really be using name.value, but currently, the package is "Chisel" (uppercase first letter) buildInfoPackage := /* name.value */ "chisel3", buildInfoOptions += BuildInfoOption.BuildTime, - buildInfoKeys := Seq[BuildInfoKey](buildInfoPackage, version, scalaVersion, sbtVersion), - // Move the managed source directory where git won't complain about it, - // and where we can easily package its files as part of the source jar artifact. - // We'd like to use versionToArray(), slice(), and mkString() to convert an explicit - // Scala version (like 2.10.6), into the leftmost two components (2.10), - // but this seems to run afoul of assumptions sbt makes about the inclusion - // of Scala-version-specfic code (we get - // BuildInfo is already defined as case class BuildInfo - // so use the full version spec. - //sourceManaged in Compile <<= (sourceDirectory in Compile, scalaVersion){ (s,v) => s / ("scala-" + versionToArray(v).slice(0,2).mkString(".") + "/src_managed") }, - sourceManaged in Compile <<= (sourceDirectory in Compile, scalaVersion){ (s,v) => s / ("scala-" + v + "/src_managed") }, - // Add the generated sources to the packagedSrc artifact since they are excluded by default. - mappings in (Compile, packageSrc) += { ((sourceManaged in Compile).value / "sbt-buildinfo" / "BuildInfo.scala") -> "BuildInfo.scala" } + buildInfoKeys := Seq[BuildInfoKey](buildInfoPackage, version, scalaVersion, sbtVersion) ). settings(commonSettings: _*). settings(customUnidocSettings: _*). diff --git a/src/main/scala/chisel3/Driver.scala b/src/main/scala/chisel3/Driver.scala index 03f8547e..b0c7aeda 100644 --- a/src/main/scala/chisel3/Driver.scala +++ b/src/main/scala/chisel3/Driver.scala @@ -139,5 +139,4 @@ object Driver extends BackendCompilationUtilities { val version = BuildInfo.version val chiselVersionString = BuildInfo.toString - println(chiselVersionString) } diff --git a/src/main/scala/chisel3/internal/firrtl/Emitter.scala b/src/main/scala/chisel3/internal/firrtl/Emitter.scala index f1908089..a559ddc5 100644 --- a/src/main/scala/chisel3/internal/firrtl/Emitter.scala +++ b/src/main/scala/chisel3/internal/firrtl/Emitter.scala @@ -102,7 +102,7 @@ private class Emitter(circuit: Circuit) { private def unindent() { require(indentLevel > 0); indentLevel -= 1 } private def withIndent(f: => Unit) { indent(); f; unindent() } - private val res = new StringBuilder(s"circuit ${circuit.name} : ") + private val res = new StringBuilder(s";${Driver.chiselVersionString}\ncircuit ${circuit.name} : ") withIndent { circuit.components.foreach(c => res ++= emit(c)) } res ++= newline } diff --git a/src/test/scala/chiselTests/BuildInfoTests.scala b/src/test/scala/chiselTests/BuildInfoTests.scala deleted file mode 100644 index 21eae17c..00000000 --- a/src/test/scala/chiselTests/BuildInfoTests.scala +++ /dev/null @@ -1,13 +0,0 @@ -package chiselTests - -import org.scalatest.FlatSpec - -//import Chisel._ - -class BuildInfoTests extends FlatSpec { - behavior of "BuildInfoTests" - - it should "provide correct BuildInfo" in { - println(Chisel.Driver.chiselVersionString) - } -} -- cgit v1.2.3 From 5b8c8fbb169c9e0635bbd7274232390049e7c894 Mon Sep 17 00:00:00 2001 From: Jim Lawson Date: Thu, 6 Oct 2016 16:42:10 -0700 Subject: Breakup the initial emitted string per @ducky64. --- src/main/scala/chisel3/internal/firrtl/Emitter.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala/chisel3/internal/firrtl/Emitter.scala b/src/main/scala/chisel3/internal/firrtl/Emitter.scala index a559ddc5..9c766ec3 100644 --- a/src/main/scala/chisel3/internal/firrtl/Emitter.scala +++ b/src/main/scala/chisel3/internal/firrtl/Emitter.scala @@ -102,7 +102,9 @@ private class Emitter(circuit: Circuit) { private def unindent() { require(indentLevel > 0); indentLevel -= 1 } private def withIndent(f: => Unit) { indent(); f; unindent() } - private val res = new StringBuilder(s";${Driver.chiselVersionString}\ncircuit ${circuit.name} : ") + private val res = new StringBuilder() + res ++= s";${Driver.chiselVersionString}\n" + res ++= "circuit ${circuit.name} : " withIndent { circuit.components.foreach(c => res ++= emit(c)) } res ++= newline } -- cgit v1.2.3 From b9e2a664de7cd35ab5cd176350bafed435dc10e9 Mon Sep 17 00:00:00 2001 From: Jim Lawson Date: Thu, 6 Oct 2016 16:55:42 -0700 Subject: Fix typo in emitted string. --- src/main/scala/chisel3/internal/firrtl/Emitter.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/chisel3/internal/firrtl/Emitter.scala b/src/main/scala/chisel3/internal/firrtl/Emitter.scala index 9c766ec3..e0daa95c 100644 --- a/src/main/scala/chisel3/internal/firrtl/Emitter.scala +++ b/src/main/scala/chisel3/internal/firrtl/Emitter.scala @@ -104,7 +104,7 @@ private class Emitter(circuit: Circuit) { private val res = new StringBuilder() res ++= s";${Driver.chiselVersionString}\n" - res ++= "circuit ${circuit.name} : " + res ++= s"circuit ${circuit.name} : " withIndent { circuit.components.foreach(c => res ++= emit(c)) } res ++= newline } -- cgit v1.2.3