Skip to content

Commit 42504e3

Browse files
authored
[query] supplant build-info.properties with cgen (#15211)
Replace generated `build-info.properties` with a generated Scala package object. Renamed terms to be less shouty. Retired useless `BuildConfiguration` enum. This change cannot impact the Hail Batch instance as deployed by Broad Institute in GCP
1 parent 0718551 commit 42504e3

File tree

18 files changed

+55
-123
lines changed

18 files changed

+55
-123
lines changed

hail/.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ src/main/c/.cxx.vsn
7373
src/main/c/headers
7474
src/main/c/lib
7575
src/main/c/libsimdpp-2*
76-
src/main/resources/build-info.properties
7776
src/main/resources/include/catch.hpp
7877
env/
7978
www/docs

hail/hail/package.mill

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,36 +23,42 @@ trait RootHailModule extends CrossScalaModule, HailScalaModule:
2323
override def crossScalaVersion: String =
2424
Settings.scalaMinorVersions(crossValue)
2525

26-
def buildInfo: T[PathRef] = Task {
27-
val revision = VcsVersion.vcsState().currentRevision
28-
os.write(
29-
Task.dest / "build-info.properties",
30-
s"""[Build Metadata]
31-
|revision=$revision
32-
|sparkVersion=${Env.sparkVersion()}
33-
|hailPipVersion=${Settings.hailMajorMinorVersion}.${Settings.hailPatchVersion}
34-
|hailBuildConfiguration=${buildMode.toString.toLowerCase}
35-
|""".stripMargin,
36-
)
37-
PathRef(Task.dest)
38-
}
39-
4026
override def moduleDeps: Seq[JavaModule] =
4127
Seq(
4228
build.hail.memory(if buildMode == CI then "debug" else "release"),
4329
)
44-
30+
4531
override def resources: T[Seq[PathRef]] =
4632
super.resources() ++ Seq(
4733
BuildCtx.withFilesystemCheckerDisabled {
4834
PathRef(BuildCtx.workspaceRoot / "prebuilt" / "lib")
4935
},
50-
buildInfo(),
5136
)
5237

5338
override def generatedSources: T[Seq[PathRef]] =
5439
Task {
55-
Seq(build.hail.`ir-gen`.generate())
40+
os.write(
41+
Task.dest / "is" / "hail" / "package.scala",
42+
f"""package is
43+
|
44+
|package object hail {
45+
| // FIXME: This should be a compiler switch/flag
46+
| val EmitTracebackInAssertions = ${buildMode != Release}
47+
|
48+
| val PipVersion = "${Settings.hailMajorMinorVersion}.${Settings.hailPatchVersion}"
49+
| val Revision = "${VcsVersion.vcsState().currentRevision}"
50+
| val SparkVersion = "${Env.sparkVersion()}"
51+
|
52+
| // FIXME: probably should use tags or something to choose English name
53+
| val PrettyVersion = PipVersion + "-" + Revision.substring(0, 12)
54+
|}""".stripMargin,
55+
createFolders = true,
56+
)
57+
58+
Seq(
59+
PathRef(Task.dest),
60+
build.hail.`ir-gen`.generate(),
61+
)
5662
}
5763

5864
override def unmanagedClasspath: T[Seq[PathRef]] =

hail/hail/src-2.12/is/hail/utils/compat/package.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ import scala.reflect.ClassTag
88

99
package compat {
1010
class ArrayOps[A: ClassTag](val a: WrappedArray[A]) {
11-
def sortInPlace[B >: A]()(implicit ct: ClassTag[B], ord: Ordering[B])
12-
: WrappedArray[A] = {
11+
def sortInPlace[B >: A]()(implicit ct: ClassTag[B], ord: Ordering[B]): WrappedArray[A] = {
1312
scala.util.Sorting.stableSort(a.array.asInstanceOf[Array[B]])
1413
a
1514
}

hail/hail/src/is/hail/asm4s/CodeBuilder.scala

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package is.hail.asm4s
22

3-
import is.hail.{lir, HAIL_BUILD_CONFIGURATION}
3+
import is.hail.{lir, EmitTracebackInAssertions}
44
import is.hail.utils.{toRichIterable, Traceback}
55

66
import scala.collection.compat._
@@ -274,13 +274,14 @@ trait CodeBuilderLike {
274274

275275
def _assert(cond: => Code[Boolean], msgs: Code[String]*): Unit = {
276276
val message = msgs.reduce(_.concat(_))
277-
if (HAIL_BUILD_CONFIGURATION.isDebug) {
278-
val traceback = mb.cb.modb.getObject[Throwable](new Traceback().fillInStackTrace())
279-
val assertion = Code.newInstance[AssertionError, String, Throwable](message, traceback)
280-
if_(cond, {}, _throw(assertion))
281-
} else {
282-
if_(cond, {}, _throw(Code.newInstance[AssertionError, Object](message)))
283-
}
277+
278+
val assertion =
279+
if (EmitTracebackInAssertions) {
280+
val traceback = mb.cb.modb.getObject[Throwable](new Traceback().fillInStackTrace())
281+
Code.newInstance[AssertionError, String, Throwable](message, traceback)
282+
} else Code.newInstance[AssertionError, Object](message)
283+
284+
if_(cond, {}, _throw(assertion))
284285
}
285286
}
286287

hail/hail/src/is/hail/backend/ExecutionCache.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ case object ExecutionCache {
2727
if (Option(flags.get(Flags.UseFastRestarts)).isEmpty) noCache
2828
else fsCache(
2929
fs,
30-
Option(flags.get(Flags.Cachedir)).getOrElse(s"$tmpdir/hail/${is.hail.HAIL_PIP_VERSION}"),
30+
Option(flags.get(Flags.Cachedir)).getOrElse(s"$tmpdir/hail/${is.hail.PipVersion}"),
3131
)
3232

3333
def fsCache(fs: FS, cachedir: String): ExecutionCache = {

hail/hail/src/is/hail/backend/driver/BatchQueryDriver.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package is.hail.backend.driver
22

3-
import is.hail.{HAIL_PRETTY_VERSION, HailFeatureFlags}
3+
import is.hail.{HailFeatureFlags, PrettyVersion}
44
import is.hail.annotations.Memory
55
import is.hail.asm4s.HailClassLoader
66
import is.hail.backend.{Backend, ExecuteContext, OwningTempFileManager}
@@ -134,7 +134,7 @@ object BatchQueryDriver extends HttpLikeRpc with Logging {
134134
val inputURL = argv(5)
135135
val outputURL = argv(6)
136136

137-
logger.info(f"${getClass.getName} $HAIL_PRETTY_VERSION")
137+
logger.info(f"${getClass.getName} $PrettyVersion")
138138

139139
sys.env.get("HAIL_SSL_CONFIG_DIR").foreach(tls.setSSLConfigFromDir)
140140

hail/hail/src/is/hail/backend/service/ServiceBackend.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package is.hail.backend.service
22

3-
import is.hail.HAIL_REVISION
3+
import is.hail.Revision
44
import is.hail.backend._
55
import is.hail.backend.Backend.PartitionFn
66
import is.hail.backend.local.LocalTaskContext
@@ -82,7 +82,7 @@ object ServiceBackend {
8282
new ServiceBackend(
8383
name,
8484
client,
85-
GitRevision(HAIL_REVISION),
85+
GitRevision(Revision),
8686
BatchConfig(batchId, 0),
8787
workerConfig,
8888
)

hail/hail/src/is/hail/backend/service/Worker.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package is.hail.backend.service
22

3-
import is.hail.{HAIL_REVISION, HailFeatureFlags}
3+
import is.hail.{HailFeatureFlags, Revision}
44
import is.hail.asm4s._
55
import is.hail.backend.Backend.PartitionFn
66
import is.hail.backend.HailTaskContext
@@ -176,7 +176,7 @@ object Worker extends Logging {
176176

177177
sys.env.get("HAIL_SSL_CONFIG_DIR").foreach(tls.setSSLConfigFromDir)
178178

179-
logger.info(s"${getClass.getName} $HAIL_REVISION")
179+
logger.info(s"${getClass.getName} $Revision")
180180
logger.info(s"running partition $partition root '$root' with scratch directory '$scratchDir'")
181181

182182
timer.start(s"partition $partition")

hail/hail/src/is/hail/backend/spark/SparkBackend.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ object SparkBackend extends Logging {
109109
: SparkConf = {
110110
require(blockSize >= 0)
111111

112-
checkSparkCompatibility(is.hail.HAIL_SPARK_VERSION, org.apache.spark.SPARK_VERSION)
112+
checkSparkCompatibility(is.hail.SparkVersion, org.apache.spark.SPARK_VERSION)
113113

114114
val conf = new SparkConf().setAppName(appName)
115115

hail/hail/src/is/hail/expr/ir/MatrixValue.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ case class MatrixValue(
107107

108108
val colsSpec = TableSpecParameters(
109109
FileFormat.version.rep,
110-
is.hail.HAIL_PRETTY_VERSION,
110+
is.hail.PrettyVersion,
111111
"../references",
112112
typ.colsTableType.copy(key = FastSeq[String]()),
113113
Map(
@@ -144,7 +144,7 @@ case class MatrixValue(
144144

145145
val globalsSpec = TableSpecParameters(
146146
FileFormat.version.rep,
147-
is.hail.HAIL_PRETTY_VERSION,
147+
is.hail.PrettyVersion,
148148
"../references",
149149
TableType(typ.globalType, FastSeq(), TStruct.empty),
150150
Map(
@@ -175,7 +175,7 @@ case class MatrixValue(
175175

176176
val rowsSpec = TableSpecParameters(
177177
FileFormat.version.rep,
178-
is.hail.HAIL_PRETTY_VERSION,
178+
is.hail.PrettyVersion,
179179
"../references",
180180
typ.rowsTableType,
181181
Map(
@@ -190,7 +190,7 @@ case class MatrixValue(
190190

191191
val entriesSpec = TableSpecParameters(
192192
FileFormat.version.rep,
193-
is.hail.HAIL_PRETTY_VERSION,
193+
is.hail.PrettyVersion,
194194
"../references",
195195
TableType(entriesRVType, FastSeq(), typ.globalType),
196196
Map(
@@ -218,7 +218,7 @@ case class MatrixValue(
218218

219219
val spec = MatrixTableSpecParameters(
220220
FileFormat.version.rep,
221-
is.hail.HAIL_PRETTY_VERSION,
221+
is.hail.PrettyVersion,
222222
"references",
223223
typ,
224224
Map(

0 commit comments

Comments
 (0)