aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordimdim11 <dimdim11@yandex-team.com>2025-02-05 21:27:20 +0300
committerdimdim11 <dimdim11@yandex-team.com>2025-02-05 21:42:39 +0300
commit7cb114b7cc680c6ec0055e7530b1aa48afd4b94e (patch)
tree74c6a78ea8edd8475be20bc12badfd7aeefbe3e5
parent53c94da1fd856e0a2a445bb594b8da9ee02eaacb (diff)
downloadydb-7cb114b7cc680c6ec0055e7530b1aa48afd4b94e.tar.gz
Support kotlin proto without grpc in ya ide gradle, update Kotlin plugin, sources -> source
commit_hash:dcaf3228b9c1433141dfad4d88533188dbcad04b
-rw-r--r--build/conf/java.conf2
-rw-r--r--build/conf/proto.conf3
-rw-r--r--build/export_generators/gradle/generator.toml25
-rw-r--r--build/export_generators/ide-gradle/generator.toml1
-rw-r--r--build/export_generators/ide-gradle/proto_plugins.jinja5
-rw-r--r--build/export_generators/ide-gradle/proto_prepare.jinja7
-rw-r--r--build/export_generators/ide-gradle/proto_source_sets.jinja12
-rw-r--r--build/export_generators/ide-gradle/proto_vars.jinja2
-rw-r--r--build/export_generators/ide-gradle/protobuf.jinja13
9 files changed, 60 insertions, 10 deletions
diff --git a/build/conf/java.conf b/build/conf/java.conf
index bfd91651be..913a5f9022 100644
--- a/build/conf/java.conf
+++ b/build/conf/java.conf
@@ -357,6 +357,7 @@ module EXTERNAL_JAVA_LIBRARY: _BASE_UNIT {
PEERDIR+=$JDK_RESOURCE_PEERDIR $EXTERNAL_JAVA_EXTRA_PEERDIR
when ($KOTLIN_PROTO == "yes") {
PEERDIR+=build/platform/java/kotlin contrib/java/org/jetbrains/kotlin/kotlin-stdlib-jdk8/${_KOTLIN_VERSION}
+ _WITH_KOTLIN_PROTO_SEM=$_DO_WITH_KOTLIN_PROTO_SEM
}
when ($MAVEN_EXPORT == "yes") {
@@ -2017,6 +2018,7 @@ DETEKT_VERSION=1.23.7
_KOTLIN_SEM= \
${_WITH_KOTLIN_SEM} \
${_KOTLIN_VERSION_SEM} \
+ ${_WITH_KOTLIN_PROTO_SEM} \
${_WITH_KOTLIN_GRPC_SEM} \
${_WITH_KOTLINC_PLUGIN_ALLOPEN_SEM} \
${_WITH_KOTLINC_PLUGIN_LOMBOK_SEM} \
diff --git a/build/conf/proto.conf b/build/conf/proto.conf
index 2ac19f9446..356293d9d9 100644
--- a/build/conf/proto.conf
+++ b/build/conf/proto.conf
@@ -674,6 +674,8 @@ module _CPP_PROTO : LIBRARY {
}
}
+_WITH_KOTLIN_PROTO_SEM=
+_DO_WITH_KOTLIN_PROTO_SEM=&& with_kotlin && kotlin_version ${_KOTLIN_VERSION} && proto_kotlin
module _JAVA_PROTO: EXTERNAL_JAVA_LIBRARY {
.EXTS=.jsrc
.ALLOWED=GRPC
@@ -685,6 +687,7 @@ module _JAVA_PROTO: EXTERNAL_JAVA_LIBRARY {
when ($KOTLIN_PROTO == "yes") {
KOTLIN_PROTO_PEERS=contrib/java/com/google/protobuf/protobuf-kotlin/${JAVA_PROTO_RUNTIME_VERSION}
KOTLIN_PROTO_FLAGS=--kotlin_out=$ARCADIA_BUILD_ROOT/java_out
+ _WITH_KOTLIN_PROTO_SEM=$_DO_WITH_KOTLIN_PROTO_SEM
}
when ($GRADLE_EXPORT_PUBLISHING == "yes") {
_GRADLE_EXPORT_PUBLISHING_SEM=$_DO_GRADLE_EXPORT_PUBLISHING_SEM
diff --git a/build/export_generators/gradle/generator.toml b/build/export_generators/gradle/generator.toml
index f447c1ed6d..4c2b464c18 100644
--- a/build/export_generators/gradle/generator.toml
+++ b/build/export_generators/gradle/generator.toml
@@ -25,6 +25,7 @@ add_vcs_info_to_mf="bool"
junit4_test="flag"
junit5_test="flag"
app_main_class="str"
+jar_source_set="list"
enable_preview="flag"
use_annotation_processor="list"
use_errorprone="flag"
@@ -43,6 +44,9 @@ proto_common_version="str"
proto_grpc="flag"
proto_grpc_version="str"
+proto_kotlin="flag"
+proto_kotlin_grpc="flag"
+proto_kotlin_grpc_version="str"
kotlin_version="str"
with_kotlin="flag"
@@ -51,6 +55,27 @@ with_kotlinc_plugin_lombok="set"
with_kotlinc_plugin_noarg="set"
with_kotlinc_plugin_serialization="set"
+runs="list"
+runs-args="list"
+runs-classpath="list"
+runs-cwd="str"
+runs-in="list"
+runs-in_dir="list"
+runs-in_dirs_inputs="list"
+runs-in_noparse="list"
+runs-out="list"
+runs-out_dir="list"
+runs-tool="list"
+
+custom_runs="list"
+custom_runs-depends="list"
+custom_runs-env="list"
+custom_runs-command="list"
+custom_runs-outputs="list"
+custom_runs-cwd="str"
+
+javac-flags="list"
+
[attrs.root]
[attrs.dir]
diff --git a/build/export_generators/ide-gradle/generator.toml b/build/export_generators/ide-gradle/generator.toml
index cbb34c45e4..6e7d747633 100644
--- a/build/export_generators/ide-gradle/generator.toml
+++ b/build/export_generators/ide-gradle/generator.toml
@@ -47,6 +47,7 @@ proto_common_version="str"
proto_grpc="flag"
proto_grpc_version="str"
+proto_kotlin="flag"
proto_kotlin_grpc="flag"
proto_kotlin_grpc_version="str"
diff --git a/build/export_generators/ide-gradle/proto_plugins.jinja b/build/export_generators/ide-gradle/proto_plugins.jinja
index 655614672d..28b9910492 100644
--- a/build/export_generators/ide-gradle/proto_plugins.jinja
+++ b/build/export_generators/ide-gradle/proto_plugins.jinja
@@ -1,11 +1,14 @@
{#- empty string #}
plugins {
id("java-library")
- id("com.google.protobuf") version "0.8.19"
+ id("com.google.protobuf") version "0.9.4"
{%- if publish %}
`maven-publish`
`signing`
{%- endif %}
+{%- if with_kotlin and kotlin_version %}
+ kotlin("jvm") version "{{ kotlin_version }}"
+{%- endif %}
}
{%- if jdk_version %}
diff --git a/build/export_generators/ide-gradle/proto_prepare.jinja b/build/export_generators/ide-gradle/proto_prepare.jinja
index 2ac84b5014..cf6fc96adf 100644
--- a/build/export_generators/ide-gradle/proto_prepare.jinja
+++ b/build/export_generators/ide-gradle/proto_prepare.jinja
@@ -1,4 +1,5 @@
{#- empty string #}
+{%- if target.proto_files|length %}
val prepareMainProtos = tasks.register<Copy>("prepareMainProtos") {
from("$project_root") {
{#- list of all current project proto files -#}
@@ -8,6 +9,7 @@ val prepareMainProtos = tasks.register<Copy>("prepareMainProtos") {
}
into(mainProtosDir)
}
+{%- endif %}
{% if libraries|length -%}
val extractMainLibrariesProtos = tasks.register<Copy>("extractMainLibrariesProtos") {
@@ -23,10 +25,15 @@ val extractMainLibrariesProtos = tasks.register<Copy>("extractMainLibrariesProto
{% endif -%}
afterEvaluate {
+{%- if target.proto_files|length %}
tasks.getByName("extractProto").dependsOn(prepareMainProtos)
+{%- endif %}
{%- if libraries|length %}
tasks.getByName("extractProto").dependsOn(extractMainLibrariesProtos)
{%- endif %}
}
tasks.getByName("sourcesJar").dependsOn("generateProto")
+{%- if with_kotlin %}
+tasks.getByName("compileKotlin").dependsOn("generateProto")
+{%- endif %}
diff --git a/build/export_generators/ide-gradle/proto_source_sets.jinja b/build/export_generators/ide-gradle/proto_source_sets.jinja
index fffe7301a6..7c7814d940 100644
--- a/build/export_generators/ide-gradle/proto_source_sets.jinja
+++ b/build/export_generators/ide-gradle/proto_source_sets.jinja
@@ -1,15 +1,15 @@
{#- empty string #}
sourceSets {
main {
- java.srcDir("$buildDir/generated/sources/proto/main/java")
+ java.srcDir("$buildDir/generated/source/proto/main/java")
{%- if target.proto_grpc %}
- java.srcDir("$buildDir/generated/sources/proto/main/grpc")
+ java.srcDir("$buildDir/generated/source/proto/main/grpc")
{%- endif %}
}
test {
- java.srcDir("$buildDir/generated/sources/proto/test/java")
+ java.srcDir("$buildDir/generated/source/proto/test/java")
{%- if target.proto_grpc %}
- java.srcDir("$buildDir/generated/sources/proto/test/grpc")
+ java.srcDir("$buildDir/generated/source/proto/test/grpc")
{%- endif %}
}
}
@@ -20,3 +20,7 @@ sourceSets {
sourceSets.main.java.srcDirs += "{{ srcdir_glob[0] }}"
{% endfor -%}
{%- endif %}
+
+tasks.withType<Jar>() {
+ duplicatesStrategy = DuplicatesStrategy.INCLUDE
+}
diff --git a/build/export_generators/ide-gradle/proto_vars.jinja b/build/export_generators/ide-gradle/proto_vars.jinja
index 761c74b070..3ef6275d87 100644
--- a/build/export_generators/ide-gradle/proto_vars.jinja
+++ b/build/export_generators/ide-gradle/proto_vars.jinja
@@ -1,4 +1,6 @@
{%- set publish = target.publish -%}
{%- set libraries = target.consumer|selectattr('type', 'eq', 'library') -%}
+{%- set with_kotlin = target.with_kotlin -%}
+{%- set kotlin_version = target.kotlin_version -%}
{%- include "[generator]/jdk.jinja" -%}
diff --git a/build/export_generators/ide-gradle/protobuf.jinja b/build/export_generators/ide-gradle/protobuf.jinja
index 6803206957..d2935b18b4 100644
--- a/build/export_generators/ide-gradle/protobuf.jinja
+++ b/build/export_generators/ide-gradle/protobuf.jinja
@@ -1,7 +1,5 @@
{#- empty string #}
protobuf {
- generatedFilesBaseDir = "$buildDir/generated/sources/proto"
-
protoc {
// Download from repositories
artifact = "com.google.protobuf:protoc:{%- if target.proto_compiler_version -%}{{ target.proto_compiler_version }}{%- else -%}3.22.5{%- endif -%}"
@@ -18,16 +16,21 @@ protobuf {
}
{%- endif %}
}
+{%- endif %}
+
+{%- if target.proto_kotlin or target.proto_grpc %}
generateProtoTasks {
all().forEach {
+{%- if target.proto_grpc %}
it.plugins {
id("grpc")
-{%- if target.proto_kotlin_grpc %}
+{%- if target.proto_kotlin_grpc %}
id("grpckt")
-{%- endif %}
+{%- endif %}
}
-{%- if target.proto_kotlin_grpc %}
+{%- endif %}
+{%- if target.proto_kotlin or target.proto_kotlin_grpc %}
it.builtins {
create("kotlin")
}