Skip to content

Commit 27a158c

Browse files
authored
ship cassandra-stress jar with elassandra (strapdata#19)
* integrate cassandra ant into gradle * add a CASSANDRA_JAVA_HOME var to select the jdk used to build cassandra * fix packaging filterhack applied to wrong binary files * update contributing doc * update cassandra submodule
1 parent 5276234 commit 27a158c

File tree

6 files changed

+65
-11
lines changed

6 files changed

+65
-11
lines changed

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ env:
66
- LATEST_VERSION=6.2.3
77
# Make sure gcloud command is on our PATH and the App Engine SDK is in the Python path
88
- GAE_PYTHONPATH=${HOME}/.cache/google_appengine PATH=$PATH:${HOME}/google-cloud-sdk/bin PYTHONPATH=${PYTHONPATH}:${GAE_PYTHONPATH} CLOUDSDK_CORE_DISABLE_PROMPTS=1
9+
# jdk used to build some cassandra artifacts
10+
- CASSANDRA_JAVA_HOME=/usr/lib/jvm/java-8-oracle
911

1012
language:
1113
- java
@@ -38,7 +40,7 @@ matrix:
3840

3941
install: ./gradlew --version
4042

41-
script:
43+
script:
4244
- ./gradlew server:test -Dbuild.snapshot=false
4345
- ./gradlew assemble -Dbuild.snapshot=false
4446

CONTRIBUTING.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,18 @@ When cloning Elassandra, use **git clone --recurse-submodules https://github.com
5252

5353
If you forgot the **--recurse-submodules** when cloning, you can also fetch the cassandra submodule with **git submodule update --init** and **git checkout cassandra-3.x-strapdata** to set the strapdata branch.
5454

55-
Then, to build from sources:
56-
* Elassandra v5.x: run **mvn clean packages -DskipTests**.
57-
* Elassandra v6.x: run **gradle clean distribution:deb:assemble -Dbuild.snapshot=false**.
55+
Then, to build from sources:
56+
57+
* Elassandra v5.x:
58+
59+
gradle clean assemble -Dbuild.snapshot=false
60+
61+
62+
* Elassandra v6.x:
63+
64+
export JAVA_HOME=/path/to/jdk-10
65+
export CASSANDRA_JAVA_HOME=/path/to/jdk-8
66+
./gradlew clean assemble -Dbuild.snapshot=false
5867

5968
Note: For elassandra v6.X, javadoc task failed due to [https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8194281](https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8194281).
6069

build.gradle

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ plugins {
3939
id 'com.github.jk1.dependency-license-report' version '1.3'
4040
}
4141

42+
apply plugin:'base'
4243
apply plugin: 'com.github.jk1.dependency-license-report'
4344

4445
licenseReport {
@@ -566,3 +567,15 @@ gradle.projectsEvaluated {
566567
}
567568
}
568569
}
570+
571+
572+
gradle.projectsEvaluated {
573+
// import ant tasks from cassandra
574+
ant.importBuild('server/cassandra/build.xml') { antTargetName ->
575+
'cassandra-' + antTargetName
576+
}
577+
578+
ant.setProperty("javac.executable", project.cassandraJavaHome + "/bin/javac")
579+
}
580+
581+
tasks.getByName('clean').dependsOn('cassandra-realclean')

buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ class BuildPlugin implements Plugin<Project> {
5959

6060
static final JavaVersion minimumRuntimeVersion = JavaVersion.VERSION_1_8
6161
static final JavaVersion minimumCompilerVersion = JavaVersion.VERSION_1_9
62+
static final JavaVersion minimumCassandraVersion = JavaVersion.VERSION_1_8
63+
static final JavaVersion maximumCassandraVersion = JavaVersion.VERSION_1_8
64+
6265

6366
@Override
6467
void apply(Project project) {
@@ -86,6 +89,7 @@ class BuildPlugin implements Plugin<Project> {
8689
configureJavadoc(project)
8790
configureSourcesJar(project)
8891
configurePomGeneration(project)
92+
configureCassandraStress(project)
8993

9094
configureTest(project)
9195
configurePrecommit(project)
@@ -97,6 +101,7 @@ class BuildPlugin implements Plugin<Project> {
97101
if (project.rootProject.ext.has('buildChecksDone') == false) {
98102
String compilerJavaHome = findCompilerJavaHome()
99103
String runtimeJavaHome = findRuntimeJavaHome(compilerJavaHome)
104+
String cassandraJavaHome = findCassandraJavaHome(runtimeJavaHome)
100105
File gradleJavaHome = Jvm.current().javaHome
101106
String javaVendor = System.getProperty('java.vendor')
102107
String javaVersion = System.getProperty('java.version')
@@ -117,19 +122,28 @@ class BuildPlugin implements Plugin<Project> {
117122
runtimeJavaVersionEnum = JavaVersion.toVersion(findJavaSpecificationVersion(project, runtimeJavaHome))
118123
}
119124

125+
String cassandraJavaVersionDetails = gradleJavaVersionDetails
126+
JavaVersion cassandraJavaVersionEnum = JavaVersion.current()
127+
if (new File(cassandraJavaHome).canonicalPath != gradleJavaHome.canonicalPath) {
128+
cassandraJavaVersionDetails = findJavaVersionDetails(project, cassandraJavaHome)
129+
cassandraJavaVersionEnum = JavaVersion.toVersion(findJavaSpecificationVersion(project, cassandraJavaHome))
130+
}
131+
120132
// Build debugging info
121133
println '======================================='
122134
println 'Elasticsearch Build Hamster says Hello!'
123135
println '======================================='
124136
println " Gradle Version : ${project.gradle.gradleVersion}"
125137
println " OS Info : ${System.getProperty('os.name')} ${System.getProperty('os.version')} (${System.getProperty('os.arch')})"
126-
if (gradleJavaVersionDetails != compilerJavaVersionDetails || gradleJavaVersionDetails != runtimeJavaVersionDetails) {
138+
if (gradleJavaVersionDetails != compilerJavaVersionDetails || gradleJavaVersionDetails != runtimeJavaVersionDetails || gradleJavaVersionDetails != cassandraJavaVersionDetails) {
127139
println " JDK Version (gradle) : ${gradleJavaVersionDetails}"
128140
println " JAVA_HOME (gradle) : ${gradleJavaHome}"
129141
println " JDK Version (compile) : ${compilerJavaVersionDetails}"
130142
println " JAVA_HOME (compile) : ${compilerJavaHome}"
131143
println " JDK Version (runtime) : ${runtimeJavaVersionDetails}"
132144
println " JAVA_HOME (runtime) : ${runtimeJavaHome}"
145+
println " JDK Version (cassandra) : ${cassandraJavaVersionDetails}"
146+
println " JAVA_HOME (cassandra) : ${cassandraJavaHome}"
133147
} else {
134148
println " JDK Version : ${gradleJavaVersionDetails}"
135149
println " JAVA_HOME : ${gradleJavaHome}"
@@ -153,10 +167,16 @@ class BuildPlugin implements Plugin<Project> {
153167
throw new GradleException("Java ${minimumRuntimeVersion} or above is required to run Elasticsearch")
154168
}
155169

170+
if (cassandraJavaVersionEnum < minimumCassandraVersion || cassandraJavaVersionEnum > maximumCassandraVersion) {
171+
throw new GradleException("Java ${minimumCassandraVersion} is required to build cassandra")
172+
}
173+
156174
project.rootProject.ext.compilerJavaHome = compilerJavaHome
157175
project.rootProject.ext.runtimeJavaHome = runtimeJavaHome
176+
project.rootProject.ext.cassandraJavaHome = cassandraJavaHome
158177
project.rootProject.ext.compilerJavaVersion = compilerJavaVersionEnum
159178
project.rootProject.ext.runtimeJavaVersion = runtimeJavaVersionEnum
179+
project.rootProject.ext.cassandraJavaVersion = cassandraJavaVersionEnum
160180
project.rootProject.ext.buildChecksDone = true
161181
}
162182

@@ -188,6 +208,12 @@ class BuildPlugin implements Plugin<Project> {
188208
return System.getenv('RUNTIME_JAVA_HOME') ?: compilerJavaHome
189209
}
190210

211+
private static String findCassandraJavaHome(final String runtimeJavaHome) {
212+
assert runtimeJavaHome != null
213+
return System.getenv('CASSANDRA_JAVA_HOME') ?: runtimeJavaHome
214+
}
215+
216+
191217
/** Finds printable java version of the given JAVA_HOME */
192218
private static String findJavaVersionDetails(Project project, String javaHome) {
193219
String versionInfoScript = 'print(' +
@@ -519,6 +545,10 @@ class BuildPlugin implements Plugin<Project> {
519545
project.assemble.dependsOn(sourcesJarTask)
520546
}
521547

548+
static void configureCassandraStress(Project project) {
549+
project.assemble.dependsOn(':cassandra-stress-jar')
550+
}
551+
522552
/** Adds additional manifest info to jars */
523553
static void configureJars(Project project) {
524554
project.ext.licenseFile = null

distribution/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ task customClean(type: Delete) {
133133
}
134134
clean.dependsOn customClean
135135

136-
137136
configure(distributions) {
138137
/*****************************************************************************
139138
* Rest test config *
@@ -233,7 +232,6 @@ configure(distributions) {
233232

234233
pylibFiles = copySpec {
235234
from '../../server/cassandra/pylib'
236-
MavenFilteringHack.filter(it, expansions)
237235
}
238236

239237
cassandraLicenseFiles = copySpec {
@@ -242,17 +240,17 @@ configure(distributions) {
242240

243241
sigarFiles = copySpec {
244242
from '../../server/cassandra/lib/sigar-bin'
245-
eachFile { it.setMode(0755) }
246-
MavenFilteringHack.filter(it, expansions)
247243
}
248244

249245
toolsFiles = copySpec {
250246
from '../../server/cassandra/tools'
251247
exclude 'stress/**'
252248
eachFile { it.setMode(0755) }
253-
MavenFilteringHack.filter(it, expansions)
254249
}
255250

251+
stressFiles = copySpec {
252+
from '../../server/cassandra/build/tools'
253+
}
256254

257255
commonFiles = copySpec {
258256
from rootProject.projectDir
@@ -355,6 +353,7 @@ configure(distributions.findAll { ['zip', 'tar', 'integ-test-zip'].contains(it.n
355353
}
356354
into('tools') {
357355
with toolsFiles
356+
with stressFiles
358357
}
359358
into('') {
360359
from {
@@ -580,6 +579,7 @@ configure(distributions.findAll { ['deb', 'rpm'].contains(it.name) }) {
580579
into('tools') {
581580
with copySpec {
582581
with toolsFiles
582+
with stressFiles
583583
exclude 'bin/*.bat'
584584
exclude 'bin/*.exe'
585585
exclude 'bin/*.ps1'

server/cassandra

0 commit comments

Comments
 (0)