Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
dc9d945
Translate `settings.gradle` into Kotlin
dmdashenkov May 5, 2020
207f593
Translate `version.gradle` into Kotlin
dmdashenkov May 5, 2020
72ab492
Update Gradle
dmdashenkov May 7, 2020
44c33e4
Update config
dmdashenkov May 7, 2020
57c171b
Translate root `build.gradle` into Kotlin and stage `Deps` object
dmdashenkov May 8, 2020
2d1f833
Make `version.gradle.kts` prettier
dmdashenkov May 8, 2020
771b67d
Extract `RunBuild` as a task class
dmdashenkov May 8, 2020
17f5781
Document `RunBuild` task
dmdashenkov May 11, 2020
340a48e
Use Gradle `all` distro for debug purposes
dmdashenkov May 12, 2020
ec40086
Update config
dmdashenkov May 12, 2020
c13f231
Use `RunBuild` instead of `run-build.gradle`
dmdashenkov May 12, 2020
2481505
Translate `base/build.gradle` into Kotlin
dmdashenkov May 13, 2020
f8932ea
Use type-safe accessors
dmdashenkov May 14, 2020
25845e4
Translate some `build.gradle` files into Kotlin
dmdashenkov May 14, 2020
9a65a52
Use type-safe accessors
dmdashenkov May 14, 2020
663d8dd
Translate `build.gradle` files into Kotlin and remove unnecessary `pl…
dmdashenkov May 14, 2020
e6238b9
Update config
dmdashenkov May 14, 2020
3e5a802
Update config
dmdashenkov May 14, 2020
ac2c47e
Update config
dmdashenkov May 14, 2020
c3d948c
Clean up
dmdashenkov May 14, 2020
3807949
Update config
dmdashenkov May 18, 2020
051f6ee
Use `bin` Gradle distro
dmdashenkov May 18, 2020
69f96a2
Update Gradle
dmdashenkov May 18, 2020
6ba5569
Manually add path to JDK 8 to $PATH
dmdashenkov May 18, 2020
0068cb3
Add a TODO
dmdashenkov May 18, 2020
548886a
Use type-safe accessors
dmdashenkov May 18, 2020
a87f8bb
Remove empty lines
dmdashenkov May 18, 2020
71febad
Update config
dmdashenkov May 18, 2020
19bc1ad
Fix a typo
dmdashenkov May 18, 2020
5c21405
Fix a typo
dmdashenkov May 18, 2020
5425745
Clean up a build script
dmdashenkov May 18, 2020
45db098
Update config
dmdashenkov May 18, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ env:
# Encrypted `GCS_SECRET` variable.
- secure: "i8MhONZu7QjyM2V887A1Tydr1WMqQP5jJZNjIJjc1Uae8F0/z8cJZIZ1hstodN7FpoR4VF92zyhUwbt6fz/dsdPEJFccsiMlEc9vlqecQCd267160wgRZneaB6Xe/y/EUmq9XsGdn/k1Ey+QZwX9au/8RU191v+fDsCtMRYXzyEa/BvbQuSwuYRgQDxTAxuJgTmG5Sxl9jWqKw1BfxUcEoErc/jqymU58w6z2TxKxVzIXT29Jy/Z12VuSiS8opigSrIP8e/1fctC84wI7S52mext2ZfhPYSTHFKS+xg1vQDYPb8m5aomL8E6Of7hVD5BTnEnyjj+/Gr63GAzHXtkHhWoxo+vB+xBFfDu8wxM5Aqna3H7LMDD5kGCxQEz8qmzHBHMAhLnhsRzjNVu2+tLCZdeMN88Ud2uemL2SCAcR8Juleg7DGMj3D0SAbPyUH3+9yYYWzSg6iaxgTdHBnJ+uXUJp0Nu+M2EK6Kl+pYAsCLVfZRPGaajFXVnJEPPeSr2PYzk7F4pIzgn/E8AtYEJ0gcEbjoTItS8EjliJKDXM4HdkluXBFLvzIH1O1nCtxKNv4UkUmPhFbfHrPXDcsYq2zsEe+NkvsJlxjAwYnOMkT4NLiEsec1a7K9bBC+iQA9e8rriMbu6/1w63JErQyx05avPjgO8XRDK8hxTf4rhBmY="
- GRADLE_OPTS="-Xmx2G"
# TODO:2020-05-18:dmytro.dashenkov: Remove these 2 lines when Travis stops failing when installing JDK 8.
- JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
- PATH="$JAVA_HOME/bin:$PATH"

before_install:
- chmod +x gradlew
Expand Down
2 changes: 1 addition & 1 deletion base-validating-builders/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
*/

buildscript {
apply from: "$projectDir/../version.gradle"
apply from: "$projectDir/../version.gradle.kts"
apply from: "$projectDir/../config/gradle/dependencies.gradle"

repositories {
Expand Down
94 changes: 0 additions & 94 deletions base/build.gradle

This file was deleted.

145 changes: 145 additions & 0 deletions base/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
/*
* Copyright 2020, TeamDev. All rights reserved.
*
* Redistribution and use in source and/or binary forms, with or without
* modification, must retain the above copyright notice and the following
* disclaimer.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

import com.google.protobuf.gradle.ProtobufConfigurator.JavaGenerateProtoTaskCollection
import groovy.lang.Closure
import groovy.lang.GString
import io.spine.gradle.internal.DependencyResolution
import io.spine.gradle.internal.Deps
import io.spine.gradle.internal.RunBuild
import java.nio.file.Files.isSameFile

plugins {
`java-library`
id("com.google.protobuf")
}

group = "io.spine"

apply(from = Deps.scripts.testArtifacts(project))

DependencyResolution.excludeProtobufLite(configurations)

dependencies {
Deps.build.protobuf.forEach { protobuf(it) }
annotationProcessor(Deps.build.autoService.processor)
compileOnly(Deps.build.autoService.annotations)
Deps.build.errorProneAnnotations.forEach { api(it) }
testImplementation(project(":testlib"))
testImplementation(project(":mute-logging"))
}

sourceSets {
main {
resources.srcDir("$buildDir/descriptors/main")
proto.setSrcDirs(listOf("$projectDir/src/main/proto"))
}
test {
resources.srcDir("$buildDir/descriptors/test")
proto.setSrcDirs(listOf("$projectDir/src/test/proto"))
}
}

/**
* The JAR task assembles class files with a respect to the re-built message classes.
*
* The task checks each input file for a newer version in the `base-validating-builders`. If such
* a version is found, the older version is excluded.
*/
tasks.jar.configure {
// See `base-validating-builders/README.md`
val compiledProtoPath = "$rootDir/base-validating-builders/compiled-proto"
val compiledProtos = fileTree(compiledProtoPath)

from(compiledProtos)

eachFile {
logger.info("Appending $this")
val classFile = file.toPath()
val isProto = compiledProtos.filter { it.path.endsWith(relativePath.toString()) }
.filter { !isSameFile(it.toPath(), classFile) }
if (!isProto.isEmpty) {
logger.info("File $classFile is excluded")
this.exclude()
} else {
logger.debug("File $classFile is not excluded")
}
}
}

apply(from = Deps.scripts.publishProto(project))

val rebuildProtobuf by tasks.registering(RunBuild::class) {
directory = "$rootDir/base-validating-builders"
dependsOn(rootProject.subprojects.map { p -> p.tasks["publishToMavenLocal"] })
}

tasks.publish.get().dependsOn(rebuildProtobuf)
tasks.build.get().finalizedBy(rebuildProtobuf)

val compiledProtoRoot = "$projectDir/generated"
val googlePackagePrefix = "com/google"

val pruneGoogleProtos by tasks.registering(type = Delete::class) {
delete("$compiledProtoRoot/main/java/$googlePackagePrefix")
tasks.compileJava.get().dependsOn(this)
}

val pruneTestGoogleProtos by tasks.registering(type = Delete::class) {
delete("$compiledProtoRoot/test/java/$googlePackagePrefix")
tasks.compileTestJava.get().dependsOn(this)
}

protobuf {
protobuf.generatedFilesBaseDir = compiledProtoRoot
protobuf.generateProtoTasks(object : Closure<Any>(this) {
private fun doCall(tasks: JavaGenerateProtoTaskCollection) {
for (task in tasks.all()) {
val scope = task.sourceSet.name
task.generateDescriptorSet = true
task.descriptorSetOptions.path = GString.EMPTY.plus("$buildDir/descriptors/$scope/known_types_${scope}.desc")
task.descriptorSetOptions.includeImports = true
task.descriptorSetOptions.includeSourceInfo = true

if (scope.contains("test")) {
pruneTestGoogleProtos.configure { dependsOn(task) }
} else {
pruneGoogleProtos.configure { dependsOn(task) }
}
}
}
})
}

/**
* Checks if the given file belongs to the Google `.proto` sources.
*/
fun FileTreeElement.isGoogleProtoSource(): Boolean {
val pathSegments = relativePath.segments
return pathSegments.isNotEmpty() && pathSegments[0].equals("google")
}

/**
* From all artifacts, exclude Google `.proto` sources.
*/
tasks.withType(Jar::class) {
exclude { it.isGoogleProtoSource() }
}

86 changes: 0 additions & 86 deletions base/script/protobuf.gradle

This file was deleted.

Loading