mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-217708 First try to get plugin descriptor from cache
GitOrigin-RevId: 22501f0f3846893b1a85aebec2cf7df95f8a5a38
This commit is contained in:
committed by
intellij-monorepo-bot
parent
030a14314f
commit
abdc98bd02
@@ -99,13 +99,15 @@ internal fun generateClassPathByLayoutReport(libDir: Path, entries: List<Distrib
|
||||
* so we would like to include all distribution entities of **embedded** modules (and their libraries) from plugins marked with `use-idea-classloader`.
|
||||
*/
|
||||
internal fun generateCoreClasspathFromPlugins(
|
||||
platformLayout: PlatformLayout,
|
||||
context: BuildContext,
|
||||
pluginEntities: List<PluginBuildDescriptor>,
|
||||
): Set<Path> {
|
||||
val classPathResult = mutableSetOf<Path>()
|
||||
for (pluginEntity in pluginEntities) {
|
||||
val pluginLayout = pluginEntity.layout
|
||||
val classPathModules = getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(context, pluginLayout.mainModule)
|
||||
val cacheContainer = platformLayout.descriptorCacheContainer.forPlugin(pluginEntity.dir)
|
||||
val classPathModules = getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(context, pluginLayout.mainModule, cacheContainer)
|
||||
for (distributionEntry in pluginEntity.distribution) {
|
||||
if (distributionEntry is ModuleOwnedFileEntry && distributionEntry.owner?.moduleName in classPathModules) {
|
||||
classPathResult.add(distributionEntry.path)
|
||||
@@ -122,9 +124,11 @@ internal fun generateCoreClasspathFromPlugins(
|
||||
internal fun getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(
|
||||
context: BuildContext,
|
||||
pluginMainModule: String,
|
||||
cacheContainer: ScopedCachedDescriptorContainer?,
|
||||
): Set<String> {
|
||||
val pluginModule = context.findRequiredModule(pluginMainModule)
|
||||
val pluginXmlContent = getUnprocessedPluginXmlContent(pluginModule, context).decodeToString()
|
||||
val pluginXmlBytes = cacheContainer?.getCachedFileData(PLUGIN_XML_RELATIVE_PATH) ?: getUnprocessedPluginXmlContent(pluginModule, context)
|
||||
val pluginXmlContent = pluginXmlBytes.decodeToString()
|
||||
val rootElement = JDOMUtil.load(pluginXmlContent)
|
||||
if (rootElement.getAttribute("use-idea-classloader")?.value?.toBoolean() != true) {
|
||||
return emptySet()
|
||||
|
||||
@@ -235,7 +235,8 @@ internal suspend fun buildProduct(request: BuildRequest, createProductProperties
|
||||
launch {
|
||||
val platformClasspath = platformLayoutResultDeferred.await().coreClassPath
|
||||
val pluginDistributionEntities = pluginDistributionEntriesDeferred.await().pluginEntries
|
||||
val coreClasspathFromPlugins = generateCoreClasspathFromPlugins(context, pluginDistributionEntities)
|
||||
val platformLayoutAwaited = platformLayout.await()
|
||||
val coreClasspathFromPlugins = generateCoreClasspathFromPlugins(platformLayoutAwaited, context, pluginDistributionEntities)
|
||||
val classPath = platformClasspath + coreClasspathFromPlugins
|
||||
|
||||
if (request.writeCoreClasspath) {
|
||||
|
||||
+3
-2
@@ -138,7 +138,7 @@ internal suspend fun buildDistribution(
|
||||
)
|
||||
|
||||
val platformItems = buildPlatformJob.await()
|
||||
context.bootClassPathJarNames = generateCoreClassPath(context, platformItems, bundledPluginItems)
|
||||
context.bootClassPathJarNames = generateCoreClassPath(platformLayout, context, platformItems, bundledPluginItems)
|
||||
|
||||
ContentReport(platform = platformItems, bundledPlugins = bundledPluginItems, nonBundledPlugins = buildNonBundledPlugins.await())
|
||||
}
|
||||
@@ -167,6 +167,7 @@ internal suspend fun buildDistribution(
|
||||
}
|
||||
|
||||
private fun generateCoreClassPath(
|
||||
platformLayout: PlatformLayout,
|
||||
context: BuildContext,
|
||||
platformDistribution: List<DistributionFileEntry>,
|
||||
bundledPluginsDistribution: List<PluginBuildDescriptor>,
|
||||
@@ -181,7 +182,7 @@ private fun generateCoreClassPath(
|
||||
skipNioFs = isMultiRoutingFileSystemEnabledForProduct(context.productProperties.platformPrefix)
|
||||
).map { libDir.relativize(it).toString() }
|
||||
val pluginsDir = context.paths.distAllDir.resolve("plugins")
|
||||
val coreClassPathFromPlugins = generateCoreClasspathFromPlugins(context, bundledPluginsDistribution).map { pluginsDir.resolve(it).toString() }
|
||||
val coreClassPathFromPlugins = generateCoreClasspathFromPlugins(platformLayout, context, bundledPluginsDistribution).map { pluginsDir.resolve(it).toString() }
|
||||
return platformClassPath + coreClassPathFromPlugins
|
||||
}
|
||||
|
||||
|
||||
@@ -520,7 +520,7 @@ private suspend fun computeImplicitRequiredModules(
|
||||
|
||||
private fun computeContentModulesPluginsWhichUseIdeaClassloader(context: BuildContext): Set<String> {
|
||||
val bundledPlugins = getPluginLayoutsByJpsModuleNames(modules = context.getBundledPluginModules(), productLayout = context.productProperties.productLayout)
|
||||
val pluginContents = bundledPlugins.flatMap { getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(context, it.mainModule) }.toSet()
|
||||
val pluginContents = bundledPlugins.flatMap { getEmbeddedContentModulesOfPluginsWithUseIdeaClassloader(context, it.mainModule, cacheContainer = null) }.toSet()
|
||||
return pluginContents
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user