mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-209476 we have 3+ packaging tests now - do not duplicate product module info in each content report, avoid getting approval for each product
GitOrigin-RevId: 62dba088d24badacde4f6873fe9b1efb80a0449a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
201a4d0ef5
commit
6becea3390
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.regexp
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: fleet.rpc.server
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.grid
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.grid.core.impl
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.grid.csv.core.impl
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.grid.impl
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.grid.types
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.idea.customization.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.idea.customization.base
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.customization.min
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.aalto.xml
|
||||
library: aalto-xml
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/fasterxml/aalto-xml/1/aalto-xml-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/codehaus/woodstox/stax2-api/4/stax2-api-4.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.asm
|
||||
library: ASM
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/asm-all/9/asm-all-9.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.caffeine
|
||||
library: caffeine
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/github/ben-manes/caffeine/caffeine/3/caffeine-3.jar
|
||||
@@ -0,0 +1,19 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.coil
|
||||
libraries:
|
||||
io.coil.kt.coil3.network.ktor3.jvm:
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-network-ktor3-jvm/3/coil-network-ktor3-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-core-jvm/3/coil-core-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/com/squareup/okio/okio-jvm/3/okio-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-network-core-jvm/3/coil-network-core-jvm-3.jar
|
||||
io.coil.kt.coil3.svg.jvm:
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-svg-jvm/3/coil-svg-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-core-jvm/3/coil-core-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/com/squareup/okio/okio-jvm/3/okio-jvm-3.jar
|
||||
io.coil.kt.coil3.compose.jvm:
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-compose-jvm/3/coil-compose-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-jvm/3/coil-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-core-jvm/3/coil-core-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/com/squareup/okio/okio-jvm/3/okio-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/coil-kt/coil3/coil-compose-core-jvm/3/coil-compose-core-jvm-3.jar
|
||||
@@ -0,0 +1,33 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.compose.foundation.desktop
|
||||
libraries:
|
||||
compose-foundation-desktop:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/foundation/foundation-desktop/1/foundation-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/annotation/annotation-jvm/1/annotation-jvm-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/collection/collection-jvm/1/collection-jvm-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/animation/animation-desktop/1/animation-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/animation/animation-core-desktop/1/animation-core-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/ui/ui-geometry-desktop/1/ui-geometry-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/foundation/foundation-layout-desktop/1/foundation-layout-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/ui/ui-desktop/1/ui-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/lifecycle/lifecycle-common-jvm/2/lifecycle-common-jvm-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jspecify/jspecify/1/jspecify-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/lifecycle/lifecycle-runtime-desktop/2/lifecycle-runtime-desktop-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/arch/core/core-common/2/core-common-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/annotation/annotation/1/annotation-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/lifecycle/lifecycle-viewmodel-desktop/2/lifecycle-viewmodel-desktop-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/lifecycle/lifecycle-viewmodel-savedstate-desktop/2/lifecycle-viewmodel-savedstate-desktop-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/savedstate/savedstate-desktop/1/savedstate-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/androidx/lifecycle/lifecycle-runtime-compose-desktop/2/lifecycle-runtime-compose-desktop-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/lifecycle/lifecycle-runtime-compose-desktop/2/lifecycle-runtime-compose-desktop-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/runtime/runtime-saveable-desktop/1/runtime-saveable-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/compose/runtime/runtime-saveable-desktop/1/runtime-saveable-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/savedstate/savedstate-compose-desktop/1/savedstate-compose-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/androidx/savedstate/savedstate-compose-desktop/1/savedstate-compose-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/ui/ui-backhandler-desktop/1/ui-backhandler-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/ui/ui-graphics-desktop/1/ui-graphics-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/ui/ui-unit-desktop/1/ui-unit-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/ui/ui-text-desktop/1/ui-text-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/ui/ui-util-desktop/1/ui-util-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/atomicfu-jvm/0/atomicfu-jvm-0.jar
|
||||
@@ -0,0 +1,9 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.compose.runtime.desktop
|
||||
libraries:
|
||||
compose.runtime.desktop:
|
||||
- name: $MAVEN_REPOSITORY$/androidx/compose/runtime/runtime-desktop/1/runtime-desktop-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/collection/collection-jvm/1/collection-jvm-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/annotation/annotation-jvm/1/annotation-jvm-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/androidx/compose/runtime/runtime-annotation-jvm/1/runtime-annotation-jvm-1.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.fastutil
|
||||
library: fastutil-min
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/fastutil/intellij-deps-fastutil/8/intellij-deps-fastutil-8.jar
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.grpc.netty.shaded
|
||||
library: grpc-netty-shaded
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-netty-shaded/1/grpc-netty-shaded-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-util/1/grpc-util-1.jar
|
||||
@@ -0,0 +1,23 @@
|
||||
- name: <file>
|
||||
projectLibraries:
|
||||
- name: grpc-core
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-core/1/grpc-core-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-api/1/grpc-api-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/com/google/android/annotations/4/annotations-4.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/codehaus/mojo/animal-sniffer-annotations/1/animal-sniffer-annotations-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/perfmark/perfmark-api/0/perfmark-api-0.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-context/1/grpc-context-1.jar
|
||||
- name: grpc-kotlin-stub
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-kotlin-stub/1/grpc-kotlin-stub-1.jar
|
||||
- name: grpc-protobuf
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-protobuf/1/grpc-protobuf-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/com/google/api/grpc/proto-google-common-protos/2/proto-google-common-protos-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-protobuf-lite/1/grpc-protobuf-lite-1.jar
|
||||
- name: grpc-stub
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-stub/1/grpc-stub-1.jar
|
||||
modules:
|
||||
- name: intellij.libraries.grpc
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.gson
|
||||
library: gson
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/google/code/gson/gson/2/gson-2.jar
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.guava
|
||||
library: Guava
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/google/guava/guava/33/guava-33.jar
|
||||
- name: $MAVEN_REPOSITORY$/com/google/guava/failureaccess/1/failureaccess-1.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.hash4j
|
||||
libraries:
|
||||
hash4j:
|
||||
- name: $MAVEN_REPOSITORY$/com/dynatrace/hash4j/hash4j/0/hash4j-0.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.icu4j
|
||||
library: icu4j
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/ibm/icu/icu4j/77/icu4j-77.jar
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.kotlinx.io
|
||||
library: kotlinx-io-core
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-core-jvm/0/kotlinx-io-core-jvm-0.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-bytestring-jvm/0/kotlinx-io-bytestring-jvm-0.jar
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.ion
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.jackson.databind
|
||||
library: jackson-databind
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2/jackson-databind-2.jar
|
||||
- name: $MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2/jackson-annotations-2.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.jackson
|
||||
library: jackson
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2/jackson-core-2.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.jackson.jr.objects
|
||||
library: jackson-jr-objects
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/fasterxml/jackson/jr/jackson-jr-objects/2/jackson-jr-objects-2.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.jackson.module.kotlin
|
||||
library: jackson-module-kotlin
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-kotlin/2/jackson-module-kotlin-2.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.kotlin.reflect
|
||||
library: kotlin-reflect
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/2/kotlin-reflect-2.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.kotlinx.coroutines.slf4j
|
||||
library: kotlinx-coroutines-slf4j
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/intellij/platform/kotlinx-coroutines-slf4j/1/kotlinx-coroutines-slf4j-1.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.kotlinx.serialization.core
|
||||
library: kotlinx-serialization-core
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1/kotlinx-serialization-core-jvm-1.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.kotlinx.serialization.json
|
||||
library: kotlinx-serialization-json
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-serialization-json-jvm/1/kotlinx-serialization-json-jvm-1.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.ktor.client.cio
|
||||
libraries:
|
||||
ktor-client-cio-internal:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-client-cio-jvm/3/ktor-client-cio-jvm-3.jar
|
||||
@@ -0,0 +1,36 @@
|
||||
- name: <file>
|
||||
projectLibraries:
|
||||
- name: kotlinx-serialization-json-io
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-serialization-json-io-jvm/1/kotlinx-serialization-json-io-jvm-1.jar
|
||||
- name: ktor-client-auth
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-client-auth-jvm/3/ktor-client-auth-jvm-3.jar
|
||||
- name: ktor-client-content-negotiation
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-client-content-negotiation-jvm/3/ktor-client-content-negotiation-jvm-3.jar
|
||||
- name: ktor-client-core
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-client-core-jvm/3/ktor-client-core-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-http-jvm/3/ktor-http-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-http-cio-jvm/3/ktor-http-cio-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-events-jvm/3/ktor-events-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-websocket-serialization-jvm/3/ktor-websocket-serialization-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-serialization-jvm/3/ktor-serialization-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-websockets-jvm/3/ktor-websockets-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-sse-jvm/3/ktor-sse-jvm-3.jar
|
||||
- name: ktor-client-encoding
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-client-encoding-jvm/3/ktor-client-encoding-jvm-3.jar
|
||||
- name: ktor-client-java
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-client-java-jvm/3/ktor-client-java-jvm-3.jar
|
||||
- name: ktor-client-logging
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-client-logging-jvm/3/ktor-client-logging-jvm-3.jar
|
||||
- name: ktor-serialization-kotlinx-json
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-serialization-kotlinx-json-jvm/3/ktor-serialization-kotlinx-json-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-serialization-kotlinx-jvm/3/ktor-serialization-kotlinx-jvm-3.jar
|
||||
modules:
|
||||
- name: intellij.libraries.ktor.client
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.ktor.io
|
||||
libraries:
|
||||
ktor-io:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-io-jvm/3/ktor-io-jvm-3.jar
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.ktor.network.tls
|
||||
library: ktor-network-tls
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-network-tls-jvm/3/ktor-network-tls-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-network-jvm/3/ktor-network-jvm-3.jar
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.ktor.utils
|
||||
libraries:
|
||||
ktor-utils:
|
||||
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-utils-jvm/3/ktor-utils-jvm-3.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-serialization-core-jvm/1/kotlinx-serialization-core-jvm-1.jar
|
||||
@@ -0,0 +1,10 @@
|
||||
- name: <file>
|
||||
projectLibraries:
|
||||
- name: lucene-analysis-common
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/apache/lucene/lucene-analysis-common/10/lucene-analysis-common-10.jar
|
||||
- name: lucene-core
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/apache/lucene/lucene-core/10/lucene-core-10.jar
|
||||
modules:
|
||||
- name: intellij.libraries.lucene.common
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.lz4
|
||||
library: lz4-java
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/lz4/lz4-java/1/lz4-java-1.jar
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.microba
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.miglayout.swing
|
||||
library: miglayout-swing
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/com/miglayout/miglayout-swing/11/miglayout-swing-11.jar
|
||||
- name: $MAVEN_REPOSITORY$/com/miglayout/miglayout-core/11/miglayout-core-11.jar
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.mvstore
|
||||
@@ -0,0 +1,7 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.proxy.vole
|
||||
library: proxy-vole
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/bidib/com/github/markusbernhardt/proxy-vole/1/proxy-vole-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/org/javadelight/delight-rhino-sandbox/0/delight-rhino-sandbox-0.jar
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.rhino
|
||||
@@ -0,0 +1,8 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.skiko
|
||||
libraries:
|
||||
jetbrains.skiko.awt.compose:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/skiko/skiko-awt/0/skiko-awt-0.jar
|
||||
jetbrains.skiko.awt.runtime.all:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/skiko/skiko-awt-runtime-all/0/skiko-awt-runtime-all-0.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.winp
|
||||
library: winp
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/winp/winp/1/winp-1.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.xerces
|
||||
libraries:
|
||||
Xerces:
|
||||
- name: $MAVEN_REPOSITORY$/xerces/xercesImpl/2/xercesImpl-2.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.xml.rpc
|
||||
libraries:
|
||||
xml-rpc:
|
||||
- name: $MAVEN_REPOSITORY$/org/apache/ws/xmlrpc/xmlrpc/2/xmlrpc-2.jar
|
||||
@@ -0,0 +1,8 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.xstream
|
||||
libraries:
|
||||
xstream:
|
||||
- name: $MAVEN_REPOSITORY$/com/thoughtworks/xstream/xstream/1/xstream-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/io/github/x-stream/mxparser/1/mxparser-1.jar
|
||||
- name: $MAVEN_REPOSITORY$/xmlpull/xmlpull/1/xmlpull-1.jar
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.libraries.xz
|
||||
library: xz
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/tukaani/xz/1/xz-1.jar
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.bookmarks.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.bookmarks.frontend
|
||||
@@ -4,6 +4,7 @@
|
||||
package org.jetbrains.intellij.build
|
||||
|
||||
import com.intellij.platform.util.putMoreLikelyPluginJarsFirst
|
||||
import org.jetbrains.intellij.build.impl.ModuleIncludeReasons
|
||||
import org.jetbrains.intellij.build.impl.ModuleOutputPatcher
|
||||
import org.jetbrains.intellij.build.impl.PlatformJarNames
|
||||
import org.jetbrains.intellij.build.impl.PlatformJarNames.APP_BACKEND_JAR
|
||||
@@ -28,15 +29,16 @@ internal fun generateClassPathByLayoutReport(libDir: Path, entries: List<Distrib
|
||||
val file = entry.path
|
||||
|
||||
// exclude files like ext/platform-main.jar - if a file in lib, take only direct children in an account
|
||||
if ((entry.relativeOutputFile ?: "").contains('/')) {
|
||||
if ((entry.relativeOutputFile ?: "").contains('/') && !(entry is ModuleOutputEntry && entry.reason == ModuleIncludeReasons.PRODUCT_EMBEDDED_MODULES)) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (entry is ModuleOutputEntry) {
|
||||
if (TEST_FRAMEWORK_MODULE_NAMES.contains(entry.moduleName) || entry.moduleName.startsWith("intellij.platform.unitTestMode")) {
|
||||
val moduleName = entry.owner.moduleName
|
||||
if (TEST_FRAMEWORK_MODULE_NAMES.contains(moduleName) || moduleName.startsWith("intellij.platform.unitTestMode")) {
|
||||
continue
|
||||
}
|
||||
if (skipNioFs && entry.moduleName == "intellij.platform.core.nio.fs") {
|
||||
if (skipNioFs && moduleName == "intellij.platform.core.nio.fs") {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,6 +226,8 @@ class ModuleItem(
|
||||
}
|
||||
}
|
||||
|
||||
internal fun isProductModule(): Boolean = ModuleIncludeReasons.isProductModule(reason)
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
return this === other || other is ModuleItem && moduleName == other.moduleName && relativeOutputFile == other.relativeOutputFile
|
||||
}
|
||||
|
||||
+19
-16
@@ -1064,8 +1064,8 @@ suspend fun layoutDistribution(
|
||||
tasks.add(async(CoroutineName("pack $outputDir")) {
|
||||
spanBuilder("pack").setAttribute("outputDir", outputDir.toString()).use {
|
||||
JarPackager.pack(
|
||||
includedModules,
|
||||
outputDir,
|
||||
includedModules = includedModules,
|
||||
outputDir = outputDir,
|
||||
isRootDir = layout is PlatformLayout,
|
||||
layout = layout,
|
||||
platformLayout = platformLayout,
|
||||
@@ -1221,14 +1221,16 @@ private fun addArtifactMapping(artifact: JpsArtifact, entries: MutableCollection
|
||||
val rootElement = artifact.rootElement
|
||||
for (element in rootElement.children) {
|
||||
if (element is JpsProductionModuleOutputPackagingElement) {
|
||||
entries.add(ModuleOutputEntry(
|
||||
path = artifactFile,
|
||||
moduleName = element.moduleReference.moduleName,
|
||||
size = 0,
|
||||
hash = 0,
|
||||
relativeOutputFile = "",
|
||||
reason = "artifact: ${artifact.name}",
|
||||
))
|
||||
entries.add(
|
||||
ModuleOutputEntry(
|
||||
path = artifactFile,
|
||||
owner = ModuleItem(moduleName = element.moduleReference.moduleName, relativeOutputFile = "DO NOT USE ME", reason = null),
|
||||
size = 0,
|
||||
hash = 0,
|
||||
relativeOutputFile = "",
|
||||
reason = "artifact: ${artifact.name}",
|
||||
)
|
||||
)
|
||||
}
|
||||
else if (element is JpsTestModuleOutputPackagingElement) {
|
||||
entries.add(ModuleTestOutputEntry(path = artifactFile, moduleName = element.moduleReference.moduleName))
|
||||
@@ -1244,7 +1246,8 @@ private fun addArtifactMapping(artifact: JpsArtifact, entries: MutableCollection
|
||||
libraryFile = null,
|
||||
hash = 0,
|
||||
size = 0,
|
||||
relativeOutputFile = null
|
||||
relativeOutputFile = null,
|
||||
owner = null,
|
||||
))
|
||||
}
|
||||
else {
|
||||
@@ -1361,7 +1364,7 @@ private fun sortEntries(unsorted: List<DistributionFileEntry>): List<Distributio
|
||||
compareBy(
|
||||
{ it.path.invariantSeparatorsPathString },
|
||||
{ it.type },
|
||||
{ (it as? ModuleOutputEntry)?.moduleName },
|
||||
{ (it as? ModuleOutputEntry)?.owner?.moduleName },
|
||||
{ (it as? LibraryFileEntry)?.libraryFile?.let(::isFromLocalMavenRepo) != true },
|
||||
{ (it as? LibraryFileEntry)?.libraryFile?.invariantSeparatorsPathString },
|
||||
)
|
||||
@@ -1379,7 +1382,7 @@ suspend fun createIdeClassPath(platformLayout: PlatformLayout, context: BuildCon
|
||||
|
||||
val libDir = context.paths.distAllDir.resolve("lib")
|
||||
for (entry in sortEntries(contentReport.platform)) {
|
||||
if (!(entry is ModuleOutputEntry && entry.reason == ModuleIncludeReasons.PRODUCT_MODULES)) {
|
||||
if (entry !is ModuleOutputEntry || !ModuleIncludeReasons.isProductModule(entry.reason)) {
|
||||
val relativePath = libDir.relativize(entry.path)
|
||||
if (relativePath.nameCount != 1 && !relativePath.startsWith("modules")) {
|
||||
continue
|
||||
@@ -1388,7 +1391,7 @@ suspend fun createIdeClassPath(platformLayout: PlatformLayout, context: BuildCon
|
||||
|
||||
when (entry) {
|
||||
is ModuleOutputEntry -> {
|
||||
classPath.addAll(context.getModuleOutputRoots(context.findRequiredModule(entry.moduleName)))
|
||||
classPath.addAll(context.getModuleOutputRoots(context.findRequiredModule(entry.owner.moduleName)))
|
||||
}
|
||||
is LibraryFileEntry -> classPath.add(entry.libraryFile!!)
|
||||
else -> throw UnsupportedOperationException("Entry $entry is not supported")
|
||||
@@ -1406,8 +1409,8 @@ suspend fun createIdeClassPath(platformLayout: PlatformLayout, context: BuildCon
|
||||
|
||||
when (entry) {
|
||||
is ModuleOutputEntry -> {
|
||||
classPath.addAll(context.getModuleOutputRoots(context.findRequiredModule(entry.moduleName)))
|
||||
for (classpathPluginEntry in pluginLayouts.firstOrNull { it.mainModule == entry.moduleName }?.scrambleClasspathPlugins ?: emptyList()) {
|
||||
classPath.addAll(context.getModuleOutputRoots(context.findRequiredModule(entry.owner.moduleName)))
|
||||
for (classpathPluginEntry in pluginLayouts.firstOrNull { it.mainModule == entry.owner.moduleName }?.scrambleClasspathPlugins ?: emptyList()) {
|
||||
classPath.addAll(context.getModuleOutputRoots(context.findRequiredModule(classpathPluginEntry.pluginMainModuleName)))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -446,7 +446,7 @@ class JarPackager private constructor(
|
||||
withTests: Boolean,
|
||||
) {
|
||||
val moduleName = module.name
|
||||
val includeProjectLib = if (layout is PluginLayout) layout.auto else item.reason == ModuleIncludeReasons.PRODUCT_MODULES
|
||||
val includeProjectLib = if (layout is PluginLayout) layout.auto else item.isProductModule()
|
||||
|
||||
val excluded = if (layout is PluginLayout) (layout.excludedLibraries.get(moduleName) ?: emptyList()) + (layout.excludedLibraries.get(null) ?: emptyList()) else emptySet()
|
||||
for (element in helper.getLibraryDependencies(module, withTests = withTests)) {
|
||||
@@ -463,7 +463,12 @@ class JarPackager private constructor(
|
||||
continue
|
||||
}
|
||||
|
||||
projectLibraryData = ProjectLibraryData(libraryName = libName, reason = "<- $moduleName")
|
||||
if (layout !is PluginLayout && item.isProductModule()) {
|
||||
projectLibraryData = ProjectLibraryData(libraryName = libName, owner = item, reason = null)
|
||||
}
|
||||
else {
|
||||
projectLibraryData = ProjectLibraryData(libraryName = libName, reason = "<- $moduleName")
|
||||
}
|
||||
}
|
||||
else if (platformLayout != null && platformLayout.isLibraryAlwaysPackedIntoPlugin(libName)) {
|
||||
platformLayout.findProjectLibrary(libName)?.let {
|
||||
@@ -487,7 +492,7 @@ class JarPackager private constructor(
|
||||
continue
|
||||
}
|
||||
|
||||
if (item.reason == ModuleIncludeReasons.PRODUCT_MODULES) {
|
||||
if (item.isProductModule()) {
|
||||
packLibFilesIntoModuleJar(
|
||||
asset = asset.value,
|
||||
item = item,
|
||||
@@ -557,6 +562,7 @@ class JarPackager private constructor(
|
||||
size = size,
|
||||
hash = hash,
|
||||
relativeOutputFile = item.relativeOutputFile,
|
||||
owner = item,
|
||||
)
|
||||
}
|
||||
else {
|
||||
@@ -748,7 +754,8 @@ class JarPackager private constructor(
|
||||
libraryFile = file,
|
||||
size = size,
|
||||
hash = hash,
|
||||
relativeOutputFile = relativeOutputFile
|
||||
relativeOutputFile = relativeOutputFile,
|
||||
owner = null,
|
||||
)
|
||||
}
|
||||
},
|
||||
@@ -1153,7 +1160,7 @@ private fun computeDistributionFileEntries(
|
||||
list.add(
|
||||
ModuleOutputEntry(
|
||||
path = asset.effectiveFile,
|
||||
moduleName = module.moduleName,
|
||||
owner = module,
|
||||
size = size,
|
||||
hash = hash,
|
||||
relativeOutputFile = module.relativeOutputFile,
|
||||
|
||||
@@ -60,7 +60,7 @@ class PlatformLayout : BaseLayout() {
|
||||
val uniqueGuard = HashSet<String>()
|
||||
for (item in includedModules) {
|
||||
// libraries are packed into product module
|
||||
if (item.reason == ModuleIncludeReasons.PRODUCT_MODULES) {
|
||||
if (item.isProductModule()) {
|
||||
continue
|
||||
}
|
||||
|
||||
|
||||
@@ -685,7 +685,8 @@ private suspend fun collectAndEmbedProductModules(root: Element, xIncludePathRes
|
||||
continue
|
||||
}
|
||||
|
||||
val relativeOutFile = if (loadingRule == "embedded") {
|
||||
val isEmbedded = loadingRule == "embedded"
|
||||
val relativeOutFile = if (isEmbedded) {
|
||||
if (isModuleCloseSource(moduleName, context = context)) {
|
||||
if (frontendModuleFilter.isBackendModule(moduleName)) PRODUCT_BACKEND_JAR else PRODUCT_JAR
|
||||
}
|
||||
@@ -698,7 +699,11 @@ private suspend fun collectAndEmbedProductModules(root: Element, xIncludePathRes
|
||||
else {
|
||||
"modules/$moduleName.jar"
|
||||
}
|
||||
result.add(ModuleItem(moduleName = moduleName, relativeOutputFile = relativeOutFile, reason = ModuleIncludeReasons.PRODUCT_MODULES))
|
||||
result.add(ModuleItem(
|
||||
moduleName = moduleName,
|
||||
relativeOutputFile = relativeOutFile,
|
||||
reason = if (isEmbedded) ModuleIncludeReasons.PRODUCT_EMBEDDED_MODULES else ModuleIncludeReasons.PRODUCT_MODULES,
|
||||
))
|
||||
PRODUCT_MODULE_IMPL_COMPOSITION.get(moduleName)?.let {
|
||||
it.mapTo(result) { subModuleName ->
|
||||
ModuleItem(moduleName = subModuleName, relativeOutputFile = relativeOutFile, reason = ModuleIncludeReasons.PRODUCT_MODULES)
|
||||
@@ -728,4 +733,7 @@ private val PRODUCT_MODULE_IMPL_COMPOSITION = java.util.Map.of(
|
||||
|
||||
internal object ModuleIncludeReasons {
|
||||
const val PRODUCT_MODULES: String = "productModule"
|
||||
const val PRODUCT_EMBEDDED_MODULES: String = "productEmbeddedModule"
|
||||
|
||||
fun isProductModule(reason: String?): Boolean = reason == PRODUCT_MODULES || reason == PRODUCT_EMBEDDED_MODULES
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ class ProjectLibraryData(
|
||||
@JvmField val libraryName: String,
|
||||
@JvmField val packMode: LibraryPackMode = LibraryPackMode.STANDALONE_MERGED,
|
||||
@JvmField val reason: String?,
|
||||
@JvmField val owner: ModuleItem? = null,
|
||||
@JvmField val outPath: String? = null,
|
||||
) {
|
||||
init {
|
||||
|
||||
+3
-3
@@ -151,7 +151,7 @@ private suspend fun generateRepositoryForDistribution(
|
||||
for (entry in entries) {
|
||||
when (entry.origin) {
|
||||
is ModuleOutputEntry -> {
|
||||
val module = context.findRequiredModule(entry.origin.moduleName)
|
||||
val module = context.findRequiredModule(entry.origin.owner.moduleName)
|
||||
if (isMainPath(module, entry.relativePath)) {
|
||||
moduleProductionPaths.putValue(module, entry.relativePath)
|
||||
}
|
||||
@@ -256,7 +256,7 @@ private suspend fun computeMainPathsForResourcesCopiedToMultiplePlaces(
|
||||
val element = when (entry.origin) {
|
||||
is ProjectLibraryEntry if isPackedIntoSingleJar(entry.origin) -> project.libraryCollection.findLibrary(entry.origin.data.libraryName)
|
||||
is ModuleLibraryFileEntry -> entry.origin.findLibrary(context).takeIf { it.getFiles(JpsOrderRootType.COMPILED).size == 1 }
|
||||
is ModuleOutputEntry -> context.findRequiredModule(entry.origin.moduleName)
|
||||
is ModuleOutputEntry -> context.findRequiredModule(entry.origin.owner.moduleName)
|
||||
else -> null
|
||||
}
|
||||
element?.let { it to entry.relativePath }
|
||||
@@ -264,7 +264,7 @@ private suspend fun computeMainPathsForResourcesCopiedToMultiplePlaces(
|
||||
.groupBy({ it.first }, { Path(it.second) })
|
||||
|
||||
suspend fun isIncludedInEmbeddedFrontend(entry: DistributionFileEntry): Boolean {
|
||||
return entry is ModuleOutputEntry && !context.getFrontendModuleFilter().isBackendModule(entry.moduleName)
|
||||
return entry is ModuleOutputEntry && !context.getFrontendModuleFilter().isBackendModule(entry.owner.moduleName)
|
||||
}
|
||||
|
||||
suspend fun chooseMainLocation(element: JpsNamedElement, paths: List<Path>): String {
|
||||
|
||||
+15
-5
@@ -2,6 +2,7 @@
|
||||
package org.jetbrains.intellij.build.impl.projectStructureMapping
|
||||
|
||||
import org.jetbrains.intellij.build.PluginBuildDescriptor
|
||||
import org.jetbrains.intellij.build.impl.ModuleItem
|
||||
import org.jetbrains.intellij.build.impl.ProjectLibraryData
|
||||
import java.nio.file.Path
|
||||
|
||||
@@ -52,6 +53,10 @@ data class CustomAssetEntry(
|
||||
get() = "custom-asset"
|
||||
}
|
||||
|
||||
internal interface ModuleOwnedFileEntry {
|
||||
val owner: ModuleItem?
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a file in a module-level library
|
||||
*/
|
||||
@@ -63,7 +68,8 @@ internal data class ModuleLibraryFileEntry(
|
||||
override val size: Int,
|
||||
override val hash: Long,
|
||||
override val relativeOutputFile: String?,
|
||||
) : DistributionFileEntry, LibraryFileEntry {
|
||||
override val owner: ModuleItem?,
|
||||
) : DistributionFileEntry, LibraryFileEntry, ModuleOwnedFileEntry {
|
||||
override val type: String
|
||||
get() = "module-library-file"
|
||||
}
|
||||
@@ -92,21 +98,25 @@ internal data class ProjectLibraryEntry(
|
||||
override val hash: Long,
|
||||
override val size: Int,
|
||||
override val relativeOutputFile: String?,
|
||||
) : DistributionFileEntry, LibraryFileEntry {
|
||||
) : DistributionFileEntry, LibraryFileEntry, ModuleOwnedFileEntry {
|
||||
override val type: String
|
||||
get() = "project-library" }
|
||||
get() = "project-library"
|
||||
|
||||
override val owner: ModuleItem?
|
||||
get() = data.owner
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents production classes of a module
|
||||
*/
|
||||
data class ModuleOutputEntry(
|
||||
override val path: Path,
|
||||
@JvmField val moduleName: String,
|
||||
override val owner: ModuleItem,
|
||||
@JvmField val size: Int,
|
||||
override val hash: Long,
|
||||
override val relativeOutputFile: String,
|
||||
@JvmField val reason: String? = null,
|
||||
) : DistributionFileEntry {
|
||||
) : DistributionFileEntry, ModuleOwnedFileEntry {
|
||||
override val type: String
|
||||
get() = "module-output"
|
||||
}
|
||||
|
||||
+116
-18
@@ -11,6 +11,8 @@ import org.jetbrains.intellij.build.BuildPaths
|
||||
import org.jetbrains.intellij.build.DistFile
|
||||
import org.jetbrains.intellij.build.MAVEN_REPO
|
||||
import org.jetbrains.intellij.build.PluginBuildDescriptor
|
||||
import org.jetbrains.intellij.build.impl.ModuleIncludeReasons
|
||||
import org.jetbrains.intellij.build.impl.ModuleItem
|
||||
import org.jetbrains.intellij.build.impl.ProjectLibraryData
|
||||
import org.jetbrains.intellij.build.io.ZipFileWriter
|
||||
import java.io.ByteArrayOutputStream
|
||||
@@ -19,11 +21,13 @@ import java.nio.file.Path
|
||||
import java.util.TreeMap
|
||||
|
||||
internal fun getIncludedModules(entries: Sequence<DistributionFileEntry>): Sequence<String> {
|
||||
return entries.mapNotNull { (it as? ModuleOutputEntry)?.moduleName }.distinct()
|
||||
return entries.mapNotNull { (it as? ModuleOutputEntry)?.owner?.moduleName }.distinct()
|
||||
}
|
||||
|
||||
internal fun buildJarContentReport(contentReport: ContentReport, zipFileWriter: ZipFileWriter, buildPaths: BuildPaths, context: BuildContext) {
|
||||
zipFileWriter.uncompressedData("platform.yaml", buildPlatformContentReport(contentReport, buildPaths, context.getDistFiles(os = null, arch = null, libcImpl = null)))
|
||||
val (platformData, productModuleMap) = buildPlatformContentReport(contentReport, buildPaths, context.getDistFiles(os = null, arch = null, libcImpl = null))
|
||||
zipFileWriter.uncompressedData("platform.yaml", platformData)
|
||||
zipFileWriter.uncompressedData("product-modules.yaml", buildProductModuleContentReport(productModuleMap, buildPaths))
|
||||
zipFileWriter.uncompressedData("bundled-plugins.yaml", buildPluginContentReport(contentReport.bundledPlugins, buildPaths))
|
||||
zipFileWriter.uncompressedData("non-bundled-plugins.yaml", buildPluginContentReport(contentReport.nonBundledPlugins, buildPaths))
|
||||
}
|
||||
@@ -103,23 +107,94 @@ private fun buildPluginContentReport(pluginToEntries: List<Pair<PluginBuildDescr
|
||||
return out.toByteArray()
|
||||
}
|
||||
|
||||
private fun buildProductModuleContentReport(productModuleMap: List<Pair<ModuleItem, MutableList<DistributionFileEntry>>>, buildPaths: BuildPaths): ByteArray {
|
||||
val out = ByteArrayOutputStream()
|
||||
val writer = createYamlGenerator(out)
|
||||
|
||||
val fileToEntry = TreeMap<String, MutableList<DistributionFileEntry>>()
|
||||
val fileToPresentablePath = HashMap<Path, String>()
|
||||
|
||||
writer.writeStartArray()
|
||||
for ((moduleItem, entries) in productModuleMap) {
|
||||
fileToPresentablePath.clear()
|
||||
fileToEntry.clear()
|
||||
|
||||
for (entry in entries) {
|
||||
val file = entry.path
|
||||
// the issue is that some modules embedded into some products (Rider), so, name maybe product.jar...
|
||||
val presentablePath = if ((entry as ModuleOwnedFileEntry).owner!!.moduleName == moduleItem.moduleName) {
|
||||
"<file>"
|
||||
}
|
||||
else {
|
||||
fileToPresentablePath.computeIfAbsent(file) {
|
||||
shortenAndNormalizePath(it, buildPaths)
|
||||
}
|
||||
}
|
||||
fileToEntry.computeIfAbsent(presentablePath) { mutableListOf() }.add(entry)
|
||||
}
|
||||
|
||||
writer.writeStartObject()
|
||||
writer.writeStringField("mainModule", moduleItem.moduleName)
|
||||
|
||||
writer.writeArrayFieldStart("content")
|
||||
for ((filePath, fileEntries) in fileToEntry) {
|
||||
writer.writeStartObject()
|
||||
writer.writeStringField("name", filePath)
|
||||
writeProjectLibs(entries = fileEntries, writer = writer, buildPaths = buildPaths, isInner = false)
|
||||
|
||||
if (fileEntries.all { it is ModuleLibraryFileEntry }) {
|
||||
writeSeparatePackedModuleLibrary(fileEntries = fileEntries, writer = writer, buildPaths = buildPaths)
|
||||
writer.writeEndObject()
|
||||
continue
|
||||
}
|
||||
|
||||
// module maybe embedded in one product and not embedded in another one (rider case)
|
||||
writeModules(writer = writer, fileEntries = fileEntries, buildPaths = buildPaths, writeReason = false)
|
||||
writer.writeEndObject()
|
||||
}
|
||||
writer.writeEndArray()
|
||||
|
||||
writer.writeEndObject()
|
||||
}
|
||||
writer.writeEndArray()
|
||||
|
||||
writer.close()
|
||||
return out.toByteArray()
|
||||
}
|
||||
|
||||
private fun createYamlGenerator(out: ByteArrayOutputStream): YAMLGenerator {
|
||||
return YAMLFactory().createGenerator(out)
|
||||
.useDefaultPrettyPrinter()
|
||||
.configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)
|
||||
}
|
||||
|
||||
private fun buildPlatformContentReport(contentReport: ContentReport, buildPaths: BuildPaths, distFiles: Collection<DistFile>): ByteArray {
|
||||
private fun buildPlatformContentReport(
|
||||
contentReport: ContentReport,
|
||||
buildPaths: BuildPaths,
|
||||
distFiles: Collection<DistFile>,
|
||||
): Pair<ByteArray, List<Pair<ModuleItem, MutableList<DistributionFileEntry>>>> {
|
||||
val out = ByteArrayOutputStream()
|
||||
val writer = createYamlGenerator(out)
|
||||
val fileToEntry = TreeMap<String, MutableList<DistributionFileEntry>>()
|
||||
val fileToPresentablePath = HashMap<Path, String>()
|
||||
|
||||
val productModuleToEntries = HashMap<ModuleItem, MutableList<DistributionFileEntry>>()
|
||||
|
||||
for (entry in contentReport.platform) {
|
||||
if (entry is ModuleOwnedFileEntry) {
|
||||
val owner = entry.owner
|
||||
if (owner != null && ModuleIncludeReasons.isProductModule(owner.reason)) {
|
||||
productModuleToEntries.computeIfAbsent(owner) { mutableListOf() }.add(entry)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
val presentablePath = fileToPresentablePath.computeIfAbsent(entry.path) {
|
||||
shortenAndNormalizePath(it, buildPaths)
|
||||
}
|
||||
fileToEntry.computeIfAbsent(presentablePath) { mutableListOf() }.add(entry)
|
||||
}
|
||||
|
||||
writer.writeStartArray()
|
||||
for ((filePath, fileEntries) in fileToEntry) {
|
||||
writer.writeStartObject()
|
||||
@@ -154,28 +229,49 @@ private fun buildPlatformContentReport(contentReport: ContentReport, buildPaths:
|
||||
}
|
||||
}
|
||||
|
||||
writer.writeObjectField("name", "plugins")
|
||||
writer.writeArrayFieldStart("bundled")
|
||||
writeWithoutDuplicates(contentReport.bundledPlugins)
|
||||
writer.writeEndArray()
|
||||
writer.writeArrayFieldStart("nonBundled")
|
||||
writeWithoutDuplicates(contentReport.nonBundledPlugins)
|
||||
writer.writeEndArray()
|
||||
val productModules = productModuleToEntries.toList().sortedBy { it.first.moduleName }
|
||||
|
||||
writeProductModules(writer = writer, productModules = productModules, kind = ModuleIncludeReasons.PRODUCT_MODULES)
|
||||
writeProductModules(writer = writer, productModules = productModules, kind = ModuleIncludeReasons.PRODUCT_EMBEDDED_MODULES)
|
||||
|
||||
writer.writeObjectField("name", "plugins")
|
||||
run {
|
||||
writer.writeArrayFieldStart("bundled")
|
||||
writeWithoutDuplicates(contentReport.bundledPlugins)
|
||||
writer.writeEndArray()
|
||||
|
||||
writer.writeArrayFieldStart("nonBundled")
|
||||
writeWithoutDuplicates(contentReport.nonBundledPlugins)
|
||||
writer.writeEndArray()
|
||||
}
|
||||
writer.writeEndObject()
|
||||
|
||||
writer.writeEndArray()
|
||||
writer.close()
|
||||
return out.toByteArray()
|
||||
return out.toByteArray() to productModules
|
||||
}
|
||||
|
||||
private fun writeProductModules(
|
||||
writer: YAMLGenerator,
|
||||
productModules: List<Pair<ModuleItem, MutableList<DistributionFileEntry>>>,
|
||||
kind: String,
|
||||
) {
|
||||
writer.writeArrayFieldStart(if (kind == ModuleIncludeReasons.PRODUCT_MODULES) "productModules" else "productEmbeddedModules")
|
||||
for ((item) in productModules) {
|
||||
if (item.reason == kind) {
|
||||
writer.writeString(item.moduleName)
|
||||
}
|
||||
}
|
||||
writer.writeEndArray()
|
||||
}
|
||||
|
||||
private fun shortenPath(file: Path, buildPaths: BuildPaths, extraRoot: Path?): String {
|
||||
if (file.startsWith(MAVEN_REPO)) {
|
||||
return "\$MAVEN_REPOSITORY$/" + MAVEN_REPO.relativize(file).toString().replace(File.separatorChar, '/')
|
||||
return $$"$MAVEN_REPOSITORY$/" + MAVEN_REPO.relativize(file).toString().replace(File.separatorChar, '/')
|
||||
}
|
||||
val projectHome = buildPaths.projectHome
|
||||
if (file.startsWith(projectHome)) {
|
||||
return "\$PROJECT_DIR$/" + projectHome.relativize(file).toString()
|
||||
return $$"$PROJECT_DIR$/" + projectHome.relativize(file).toString()
|
||||
}
|
||||
else {
|
||||
val buildOutputDir = buildPaths.buildOutputDir
|
||||
@@ -212,8 +308,8 @@ private fun writeModules(
|
||||
}
|
||||
|
||||
writer.writeStartObject()
|
||||
val moduleName = entry.moduleName
|
||||
writeModuleItem(writer, entry, writeReason = writeReason)
|
||||
val moduleName = entry.owner.moduleName
|
||||
writeModuleItem(writer = writer, entry = entry, writeReason = writeReason)
|
||||
writeModuleLibraries(fileEntries = fileEntries, moduleName = moduleName, writer = writer, buildPaths = buildPaths)
|
||||
writer.writeEndObject()
|
||||
}
|
||||
@@ -223,11 +319,13 @@ private fun writeModules(
|
||||
}
|
||||
|
||||
private fun writeModuleItem(writer: JsonGenerator, entry: ModuleOutputEntry, writeReason: Boolean) {
|
||||
writer.writeStringField("name", entry.moduleName)
|
||||
writer.writeStringField("name", entry.owner.moduleName)
|
||||
writer.writeNumberField("size", entry.size)
|
||||
if (writeReason) {
|
||||
entry.reason?.let {
|
||||
writer.writeStringField("reason", it)
|
||||
val reason = entry.reason ?: return
|
||||
// product module is obvious, reduce size (for embedded, we still want to report)
|
||||
if (reason != ModuleIncludeReasons.PRODUCT_MODULES) {
|
||||
writer.writeStringField("reason", reason)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+25
-5
@@ -31,6 +31,7 @@ private data class PackageResult(
|
||||
|
||||
private data class ContentReportList(
|
||||
@JvmField val platform: List<FileEntry>,
|
||||
@JvmField val productModules: List<PluginContentReport>,
|
||||
@JvmField val bundled: List<PluginContentReport>,
|
||||
@JvmField val nonBundled: List<PluginContentReport>,
|
||||
)
|
||||
@@ -47,9 +48,15 @@ fun createContentCheckTests(
|
||||
): Iterator<DynamicTest> {
|
||||
val packageResult by lazy {
|
||||
lateinit var result: PackageResult
|
||||
computePackageResult(productProperties, testInfo, {
|
||||
result = it
|
||||
}, projectHomePath, buildTools)
|
||||
computePackageResult(
|
||||
productProperties = productProperties,
|
||||
testInfo = testInfo,
|
||||
contentConsumer = {
|
||||
result = it
|
||||
},
|
||||
homePath = projectHomePath,
|
||||
buildTools = buildTools
|
||||
)
|
||||
result
|
||||
}
|
||||
|
||||
@@ -67,8 +74,19 @@ fun createContentCheckTests(
|
||||
)
|
||||
})
|
||||
|
||||
val project = packageResult.jpsProject
|
||||
|
||||
val productModules = toMap(contentList.productModules)
|
||||
checkPlugins(
|
||||
fileEntries = productModules.values.asSequence(),
|
||||
project = project,
|
||||
projectHome = projectHome,
|
||||
nonBundled = null,
|
||||
testInfo = testInfo,
|
||||
contentFileName = "module-content.yaml",
|
||||
)
|
||||
|
||||
if (checkPlugins) {
|
||||
val project = packageResult.jpsProject
|
||||
// a non-bundled plugin may duplicated bundled one
|
||||
// - first check non-bundled: any valid mismatch will lead to test failure
|
||||
// - then check bundled: may be a mismatch due to a difference between bundled and non-bundled one
|
||||
@@ -110,11 +128,12 @@ private suspend fun SequenceScope<DynamicTest>.checkPlugins(
|
||||
projectHome: Path?,
|
||||
testInfo: TestInfo,
|
||||
suggestedReviewer: String? = null,
|
||||
contentFileName: String = "plugin-content.yaml",
|
||||
) {
|
||||
for (item in fileEntries) {
|
||||
val module = project.findModuleByName(item.mainModule) ?: continue
|
||||
val contentRoot = Path.of(JpsPathUtil.urlToPath(module.contentRootsList.urls.first()))
|
||||
val expectedFile = contentRoot.resolve("plugin-content.yaml")
|
||||
val expectedFile = contentRoot.resolve(contentFileName)
|
||||
|
||||
//if (true) {
|
||||
// java.nio.file.Files.writeString(expectedFile, serializeContentEntries(normalizeContentReport(fileEntries = item.content, short = true)))
|
||||
@@ -191,6 +210,7 @@ private fun computePackageResult(
|
||||
contentConsumer(PackageResult(
|
||||
content = ContentReportList(
|
||||
platform = getPlatformData("platform.yaml"),
|
||||
productModules = getData("product-modules.yaml"),
|
||||
bundled = getData("bundled-plugins.yaml"),
|
||||
nonBundled = getData("non-bundled-plugins.yaml"),
|
||||
),
|
||||
|
||||
+54
-1
@@ -37,12 +37,14 @@ fun createLayoutProviderByContentYamlFiles(
|
||||
mainModuleOfCorePlugin: String,
|
||||
corePluginDescriptorPath: String,
|
||||
nameOfTestWhichGeneratesFiles: String,
|
||||
project: org.jetbrains.jps.model.JpsProject,
|
||||
): PluginLayoutProvider {
|
||||
return YamlFileBasedPluginLayoutProvider(
|
||||
ideContentYamlPath = ideContentYamlPath,
|
||||
mainModuleOfCorePlugin = mainModuleOfCorePlugin,
|
||||
corePluginDescriptorPath = corePluginDescriptorPath,
|
||||
nameOfTestWhichGeneratesFiles = nameOfTestWhichGeneratesFiles,
|
||||
project = project,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -51,14 +53,65 @@ private class YamlFileBasedPluginLayoutProvider(
|
||||
private val mainModuleOfCorePlugin: String,
|
||||
private val corePluginDescriptorPath: String,
|
||||
private val nameOfTestWhichGeneratesFiles: String,
|
||||
private val project: org.jetbrains.jps.model.JpsProject,
|
||||
) : PluginLayoutProvider {
|
||||
private val ideContentData by lazy {
|
||||
deserializeContentData(ideContentYamlPath.readText())
|
||||
}
|
||||
|
||||
private val mergedContentData by lazy {
|
||||
loadMergedContentData()
|
||||
}
|
||||
|
||||
private fun loadMergedContentData(): List<FileEntry> {
|
||||
val baseEntries = ideContentData.toMutableList()
|
||||
|
||||
// Collect productModules and productEmbeddedModules separately
|
||||
val productModuleNames = ideContentData.flatMap { it.productModules }.distinct()
|
||||
val productEmbeddedModuleNames = ideContentData.flatMap { it.productEmbeddedModules }.distinct()
|
||||
|
||||
if (productModuleNames.isEmpty() && productEmbeddedModuleNames.isEmpty()) {
|
||||
return baseEntries
|
||||
}
|
||||
|
||||
// Process productModules with "dist.all/lib/modules/{moduleName}.jar" pattern
|
||||
for (moduleName in productModuleNames) {
|
||||
loadAndMergeModuleContent(moduleName, "dist.all/lib/modules/$moduleName.jar", baseEntries)
|
||||
}
|
||||
|
||||
// Process productEmbeddedModules with "dist.all/lib/module-{moduleName}.jar" pattern
|
||||
for (moduleName in productEmbeddedModuleNames) {
|
||||
loadAndMergeModuleContent(moduleName, "dist.all/lib/module-$moduleName.jar", baseEntries)
|
||||
}
|
||||
|
||||
return baseEntries
|
||||
}
|
||||
|
||||
private fun loadAndMergeModuleContent(moduleName: String, jarName: String, baseEntries: MutableList<FileEntry>) {
|
||||
val module = project.findModuleByName(moduleName) ?: return
|
||||
val contentRootUrl = module.contentRootsList.urls.firstOrNull() ?: return
|
||||
val moduleContentPath = JpsPathUtil.urlToNioPath(contentRootUrl).resolve("module-content.yaml")
|
||||
|
||||
if (!moduleContentPath.exists()) {
|
||||
return
|
||||
}
|
||||
|
||||
val moduleEntries = deserializeContentData(moduleContentPath.readText())
|
||||
|
||||
// replace <file> placeholder with actual jar path
|
||||
for (entry in moduleEntries) {
|
||||
if (entry.name == "<file>") {
|
||||
baseEntries.add(entry.copy(name = jarName))
|
||||
}
|
||||
else {
|
||||
baseEntries.add(entry)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun loadCorePluginLayout(): PluginLayoutDescription {
|
||||
return toPluginLayoutDescription(
|
||||
entries = ideContentData,
|
||||
entries = mergedContentData,
|
||||
mainModuleName = mainModuleOfCorePlugin,
|
||||
pluginDescriptorPath = corePluginDescriptorPath,
|
||||
mainLibDir = "dist.all/lib",
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.buildView.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.buildView.frontend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.buildView
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.collaborationTools.auth.base
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.collaborationTools.auth
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.collaborationTools
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.compose.markdown
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.compose
|
||||
library: jetbrains.compose.components.ui.tooling.preview.desktop
|
||||
files:
|
||||
- name: $MAVEN_REPOSITORY$/org/jetbrains/compose/components/components-ui-tooling-preview-desktop/1/components-ui-tooling-preview-desktop-1.jar
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.diagnostic.freezeAnalyzer
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.diagnostic.freezes
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.diagnostic.telemetry.agent.extension
|
||||
+5
-1
@@ -25,6 +25,10 @@ data class FileEntry(
|
||||
* The list of included in the file module outputs.
|
||||
*/
|
||||
@JvmField val modules: List<ModuleEntry> = emptyList(),
|
||||
|
||||
@JvmField val productModules: List<String> = emptyList(),
|
||||
@JvmField val productEmbeddedModules: List<String> = emptyList(),
|
||||
|
||||
@JvmField val contentModules: List<ModuleEntry> = emptyList(),
|
||||
|
||||
@JvmField val library: String? = null,
|
||||
@@ -68,7 +72,7 @@ data class ProjectLibraryEntry(
|
||||
*/
|
||||
@JvmField val reason: String? = null,
|
||||
) {
|
||||
fun compareImportantFields(o: ProjectLibraryEntry) = name == o.name && files == o.files && reason == o.reason
|
||||
fun compareImportantFields(o: ProjectLibraryEntry): Boolean = name == o.name && files == o.files && reason == o.reason
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.vcs.dvcs
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.vcs.dvcs.impl
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.vcs.dvcs.impl.shared
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.editor.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.editor.frontend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.editor
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.eel.impl
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.execution.impl.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.execution.impl.frontend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.execution.process.elevation
|
||||
@@ -0,0 +1,6 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.execution.process.mediator.client
|
||||
libraries:
|
||||
grpc-inprocess:
|
||||
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-inprocess/1/grpc-inprocess-1.jar
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.execution.process.mediator.common
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.execution.process.mediator.daemon
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.execution.dashboard.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.execution.dashboard.frontend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.execution.dashboard
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.execution.serviceView.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.execution.serviceView.frontend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.execution.serviceView
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.find.backend
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.find
|
||||
@@ -0,0 +1,3 @@
|
||||
- name: <file>
|
||||
modules:
|
||||
- name: intellij.platform.inline.completion
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user