-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathbuild.sbt
150 lines (116 loc) · 4.8 KB
/
build.sbt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
import sbt.Keys._
import sbt._
name := "piglet"
libraryDependencies ++= Dependencies.rootDeps
libraryDependencies ++= itDeps
mainClass in (Compile, packageBin) := Some("dbis.piglet.PigletREPL")
mainClass in (Compile, run) := Some("dbis.piglet.PigletREPL")
assemblyJarName in assembly := "piglet.jar"
mainClass in assembly := Some("dbis.piglet.Piglet")
assemblyMergeStrategy in assembly := {
case PathList(ps@_*) if ps.last == "libjansi.so" || ps.last == "libjansi.jnilib" || ps.last == "jansi.dll" => MergeStrategy.first // linux
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
test in assembly := {}
logLevel in assembly := Level.Error
parallelExecution in ThisBuild := false
// needed for serialization/deserialization
fork in Test := true
// enable for debug support in eclipse
//javaOptions in (Test) += "-Xdebug"
//javaOptions in (Test) += "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
fork in IntegrationTest := false
// scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature","-Ylog-classpath")
scalacOptions ++= Seq("-feature","-language:implicitConversions")
// run only those it tests, that are available for the selected backend
testOptions in IntegrationTest := Seq(
Tests.Filter(s => itTests.contains(s)),
Tests.Argument("-oDF")
)
coverageExcludedPackages := "<empty>;dbis.piglet.Piglet;dbis.piglet.plan.rewriting.internals.MaterializationSupport;dbis.piglet.plan.rewriting.internals.WindowSupport"
sourcesInBase := false
EclipseKeys.skipParents in ThisBuild := false // to enable piglet (parent not only children) eclispe import
/*
* Common Settings **********************************************************
*/
lazy val commonSettings = Seq(
version := "0.3",
scalaVersion := Dependencies.scalaVersion,
organization := "dbis"
)
/*
* Projects *****************************************************************
*/
lazy val piglet = (project in file(".")).
enablePlugins(BuildInfoPlugin).
settings(
buildInfoKeys := Seq[BuildInfoKey](
name, version, scalaVersion, sbtVersion, buildInfoBuildNumber,
"master" -> sys.props.getOrElse("master", default=s"local[${java.lang.Runtime.getRuntime.availableProcessors()}]")
),
buildInfoOptions += BuildInfoOption.BuildTime,
buildInfoPackage := "dbis.piglet"
).
configs(IntegrationTest).
settings(commonSettings: _*).
settings(Defaults.itSettings: _*).
dependsOn(common).
dependsOn(sparklib % "test;it").
dependsOn(flinklib % "test;it").
dependsOn(mapreducelib % "test;it").
dependsOn(ceplib % "test;it").
dependsOn(setm).
// dependsOn(ProjectRef(uri("https://github.com/sthagedorn/setm.git#master"), "setm")).
aggregate(common, sparklib, flinklib, mapreducelib, ceplib) // remove this if you don't want to automatically build these projects when building piglet
lazy val setm = (project in file("setm"))
lazy val common = (project in file("common")).
settings(commonSettings: _*).
disablePlugins(sbtassembly.AssemblyPlugin)
lazy val sparklib = (project in file("sparklib")).
settings(commonSettings: _*).
settings(unmanagedJars in Compile += file(s"./lib_unmanaged/jvmr_2.11-2.11.2.1.jar")).
dependsOn(common).
disablePlugins(sbtassembly.AssemblyPlugin)
lazy val flinklib = (project in file("flinklib")).
settings(commonSettings: _*).
dependsOn(common)
// .disablePlugins(sbtassembly.AssemblyPlugin)
lazy val mapreducelib = (project in file("mapreducelib")).
settings(commonSettings: _*).
dependsOn(common).
disablePlugins(sbtassembly.AssemblyPlugin)
lazy val ceplib = (project in file("ceplib")).
settings(commonSettings: _*).
dependsOn(common)
lazy val zeppelin = (project in file("zeppelin")).
settings(commonSettings: _*).
dependsOn(common).
disablePlugins(sbtassembly.AssemblyPlugin).
dependsOn(piglet)
/*
* define the backend for the compiler: currently we support spark and flink
*/
val backend = sys.props.getOrElse("backend", default="spark")
val itDeps = backend match {
case "flink" | "flinks" => Seq(
Dependencies.flinkScala % "test;it",
Dependencies.flinkStreaming % "test;it"
)
case "spark" | "sparks" => Seq(
Dependencies.sparkCore % "test;it",
Dependencies.sparkSql % "test;it",
Dependencies.jdbc % "test;it"
)
case "mapreduce" => Seq(Dependencies.pig % "test;it")
case _ => println(s"Unsupported backend: $backend ! I don't know which dependencies to include!"); Seq.empty[ModuleID]
}
val itTests = backend match{
case "flink" => Seq("dbis.test.flink.FlinkCompileIt")
case "flinks" => Seq("dbis.test.flink.FlinksCompileIt")
case "spark" => Seq("dbis.test.spark.SparkCompileIt")
case "sparks" => Seq("dbis.test.spark.SparksCompileIt")
case "mapreduce" => Seq.empty[String] // TODO
case _ => println(s"Unsupported backend: $backend - Will execute no tests"); Seq.empty[String]
}