From 026a76e98c5d2f3f947a8d5e70c6a321e0265fef Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 27 Mar 2017 07:01:49 +0300 Subject: [PATCH] Assemble protobuf-lite with gradle, and use it in kotlin-reflect. --- libraries/settings.gradle | 1 + libraries/tools/kotlin-reflect/build.gradle | 21 ++--- libraries/tools/protobuf-lite/build.gradle | 97 +++++++++++++++++++++ 3 files changed, 106 insertions(+), 13 deletions(-) create mode 100644 libraries/tools/protobuf-lite/build.gradle diff --git a/libraries/settings.gradle b/libraries/settings.gradle index 531aa5b995f..6ab2829ca97 100644 --- a/libraries/settings.gradle +++ b/libraries/settings.gradle @@ -13,6 +13,7 @@ include ':kotlin-stdlib-jre7' include ':kotlin-stdlib-jre8' include ':tools:binary-compatibility-validator' include ':tools:kotlin-stdlib-gen' +include ':tools:protobuf-lite' include ':kotlin-reflect' //include ':kotlin-compiler' diff --git a/libraries/tools/kotlin-reflect/build.gradle b/libraries/tools/kotlin-reflect/build.gradle index 6014aa1a7a5..89df80fdc2d 100644 --- a/libraries/tools/kotlin-reflect/build.gradle +++ b/libraries/tools/kotlin-reflect/build.gradle @@ -15,7 +15,6 @@ buildscript { apply plugin: 'com.github.johnrengelman.shadow' def core = "${rootDir}/../core" -def depDir = "${rootDir}/../dependencies" def annotationsSrc = "${buildDir}/annotations" def relocatedCoreSrc = "${buildDir}/core-relocated" @@ -36,14 +35,14 @@ sourceSets { configurations { proguardDeps - shadowes - compileOnly.extendsFrom(shadowes) + shadows + compileOnly.extendsFrom(shadows) } dependencies { proguardDeps project(':kotlin-stdlib') - shadowes 'javax.inject:javax.inject:1' - shadowes files("${depDir}/protobuf-2.6.1-lite.jar") + shadows 'javax.inject:javax.inject:1' + shadows project(path: ':tools:protobuf-lite') compile project(':kotlin-stdlib') } @@ -85,7 +84,7 @@ task reflectShadowJar(type: ShadowJar) { include 'META-INF/services/**' } - configurations = [project.configurations.shadowes] + configurations = [project.configurations.shadows] relocate 'org.jetbrains.kotlin', 'kotlin.reflect.jvm.internal.impl' relocate 'javax.inject', 'kotlin.reflect.jvm.internal.impl.javax.inject' } @@ -161,14 +160,10 @@ task relocatedSourcesJar(type: Jar) { } artifacts { - it.default(file(outputJarPath)) { - builtBy proguard - } + def artifactJar = [file: file(outputJarPath), builtBy: proguard, name: archivesBaseName] - archives(file(outputJarPath)) { - name archivesBaseName - builtBy proguard - } + runtime artifactJar + archives artifactJar archives relocatedSourcesJar archives javadocJar } diff --git a/libraries/tools/protobuf-lite/build.gradle b/libraries/tools/protobuf-lite/build.gradle new file mode 100644 index 00000000000..a79d895bf0c --- /dev/null +++ b/libraries/tools/protobuf-lite/build.gradle @@ -0,0 +1,97 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +buildscript { + repositories { + jcenter() + } + + dependencies { + classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4' + } +} + +apply plugin: 'com.github.johnrengelman.shadow' + + +def protobufVersion = "2.6.1" +def outputJarPath = "$buildDir/libs/${archivesBaseName}-${protobufVersion}.jar" + +version = protobufVersion + +configurations { + protobuf + protobufSrc +} + + +dependencies { + protobuf "com.google.protobuf:protobuf-java:$protobufVersion" + protobufSrc "com.google.protobuf:protobuf-java:$protobufVersion:sources" +} + +task shadowJar(type: ShadowJar) { + classifier = "shadow" + version = null + + configurations = [project.configurations.protobuf] + relocate("com.google.protobuf", "org.jetbrains.kotlin.protobuf" ) { + exclude("META-INF/maven/com.google.protobuf/protobuf-java/pom.properties") + } +} + +createScriptTask(project, "buildLiteJar") { + dependsOn shadowJar + def inputJar = shadowJar.archivePath + inputs.file(inputJar) + outputs.file(outputJarPath) + args += [ + "${rootDir}/../generators/infrastructure/build-protobuf-lite.kts", + inputJar, + outputJarPath + ] +} + +def artifactJar = [file: file(outputJarPath), builtBy: buildLiteJar] + + + + +task sourcesJar(type: Jar) { + inputs.file configurations.protobufSrc + def tmpSrcDir = "${buildDir}/src" + + doFirst { + copy { + from (zipTree(configurations.protobufSrc.singleFile)) + into tmpSrcDir + } + ant.replaceregexp( + match: 'com\\.google\\.protobuf', + replace: 'org.jetbrains.kotlin.protobuf', + flags: 'g' + ) { + fileset(dir: tmpSrcDir) { + include(name: "**/*.java") + } + } + } + + classifier 'sources' + from ("${tmpSrcDir}/com/google/protobuf") { + into 'org/jetbrains/kotlin/protobuf' + } + + doLast { + delete(tmpSrcDir) + } +} + +artifacts { + it."default"(artifactJar) + archives(artifactJar) + archives(sourcesJar) +} + +assemble { + dependsOn configurations.archives +} \ No newline at end of file