diff --git a/images/resources/META-INF/ImagesPlugin.xml b/images/resources/META-INF/plugin.xml similarity index 97% rename from images/resources/META-INF/ImagesPlugin.xml rename to images/resources/META-INF/plugin.xml index 3d081e0d9cdb..12b0ae5dc794 100644 --- a/images/resources/META-INF/ImagesPlugin.xml +++ b/images/resources/META-INF/plugin.xml @@ -1,8 +1,9 @@ - - + JetBrains + com.intellij.platform.images + - + diff --git a/java/debugger/impl/intellij.java.debugger.impl.iml b/java/debugger/impl/intellij.java.debugger.impl.iml index da1dd8979f85..b5149a2e1d32 100644 --- a/java/debugger/impl/intellij.java.debugger.impl.iml +++ b/java/debugger/impl/intellij.java.debugger.impl.iml @@ -37,6 +37,7 @@ + diff --git a/java/ide-resources/resources/META-INF/JavaIdePlugin.xml b/java/ide-resources/resources/META-INF/JavaIdePlugin.xml index 0a5ffe1aff0e..e7a2fece2f84 100644 --- a/java/ide-resources/resources/META-INF/JavaIdePlugin.xml +++ b/java/ide-resources/resources/META-INF/JavaIdePlugin.xml @@ -32,9 +32,6 @@ - - - diff --git a/java/java-impl/src/META-INF/JavaPlugin.xml b/java/java-impl/src/META-INF/JavaPlugin.xml index 4e1d8c3cf3a7..b7c1795f27f8 100644 --- a/java/java-impl/src/META-INF/JavaPlugin.xml +++ b/java/java-impl/src/META-INF/JavaPlugin.xml @@ -16,6 +16,8 @@ + com.intellij.platform.images + @@ -1419,7 +1421,7 @@ implementationClass="com.intellij.codeInspection.RedundantStreamOptionalCallInspection" displayName="Redundant step in Stream or Optional call chain"/> bundledPluginModules = [] + List bundledPluginModules = ["com.intellij.platform.images"] /** * @deprecated use {@link #bundledPluginModules} directly instead @@ -53,7 +53,7 @@ class ProductModulesLayout { } /** - * @see #setPluginModulesToPublish + * @see #setPluginModulesToPublish */ List getPluginModulesToPublish() { return pluginsToPublish.toList() @@ -105,7 +105,7 @@ class ProductModulesLayout { * @see #setPluginModulesToPublish */ boolean prepareCustomPluginRepositoryForPublishedPlugins = true - + /** * If {@code true} then all plugins that compatible with an IDE will be built. By default these plugins will be placed to "auto-uploading" * subdirectory and may be automatically uploaded to plugins.jetbrains.com. @@ -121,7 +121,7 @@ class ProductModulesLayout { /** * @deprecated we generate the order file automatically based on the application startup statistics - * + * * Specifies path to a text file containing list of classes in order they are loaded by the product. Entries in the produces *.jar files * will be reordered accordingly to reduct IDE startup time. If {@code null} no reordering will be performed. */ diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.groovy index 74eaf2070d65..27ac13050607 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/DistributionJARsBuilder.groovy @@ -1,4 +1,4 @@ -// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package org.jetbrains.intellij.build.impl import com.intellij.openapi.util.MultiValuesMap @@ -142,7 +142,6 @@ class DistributionJARsBuilder { withModule("intellij.platform.credentialStore") withModule("intellij.json") withModule("intellij.spellchecker") - withModule("intellij.platform.images") withModule("intellij.platform.statistics") withModule("intellij.platform.statistics.uploader") withModule("intellij.platform.statistics.devkit") @@ -767,12 +766,13 @@ class DistributionJARsBuilder { * directory name return the old module name to temporary keep layout of plugins unchanged. */ static String getActualPluginDirectoryName(PluginLayout plugin, BuildContext context) { - if (!plugin.directoryNameSetExplicitly && plugin.directoryName == BaseLayout.convertModuleNameToFileName(plugin.mainModule) + // do not use old name for intellij.platform. modules + if (!plugin.directoryNameSetExplicitly && !plugin.mainModule.startsWith("intellij.platform.") && plugin.directoryName == BaseLayout.convertModuleNameToFileName(plugin.mainModule) && context.getOldModuleName(plugin.mainModule) != null) { context.getOldModuleName(plugin.mainModule) } else { - plugin.directoryName + return plugin.directoryName } } @@ -786,7 +786,7 @@ class DistributionJARsBuilder { private void buildPlugins(LayoutBuilder layoutBuilder, List pluginsToInclude, String targetDirectory) { addSearchableOptions(layoutBuilder) def enabledModulesSet = enabledPluginModules - pluginsToInclude.each { plugin -> + (buildContext.options.runBuildStepsInParallel ? pluginsToInclude.parallelStream() : pluginsToInclude.stream()).each { plugin -> def actualModuleJars = plugin.getActualModules(enabledModulesSet) checkOutputOfPluginModules(plugin.mainModule, actualModuleJars.values(), plugin.moduleExcludes) List> generatedResources = plugin.resourceGenerators.collectMany { diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java index 0ef955eb1709..659c1f85c77f 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java @@ -632,8 +632,7 @@ public final class PluginManagerCore { } } - @NotNull - private static URL localFileToUrl(@NotNull Path file, IdeaPluginDescriptor descriptor) { + private static @NotNull URL localFileToUrl(@NotNull Path file, @NotNull IdeaPluginDescriptor descriptor) { try { // it is important not to have traversal elements in classpath return new URL("file", "", file.normalize().toUri().getRawPath()); @@ -1692,10 +1691,23 @@ public final class PluginManagerCore { } } - private static IdeaPluginDescriptorImpl @NotNull [] getTopologicallySorted(@NotNull CachingSemiGraph graph) { + private static @NotNull IdeaPluginDescriptorImpl @NotNull [] getTopologicallySorted(@NotNull CachingSemiGraph graph) { DFSTBuilder requiredOnlyGraph = new DFSTBuilder<>(GraphGenerator.generate(graph)); IdeaPluginDescriptorImpl[] sortedRequired = graph.getNodes().toArray(IdeaPluginDescriptorImpl.EMPTY_ARRAY); - Arrays.sort(sortedRequired, requiredOnlyGraph.comparator()); + Comparator comparator = requiredOnlyGraph.comparator(); + // there is circular reference between core and implementation-detail plugin, as not all such plugins extracted from core, + // so, ensure that core plugin is always first (otherwise not possible to register actions - parent group not defined) + Arrays.sort(sortedRequired, (o1, o2) -> { + if (o1.getPluginId() == CORE_ID) { + return -1; + } + else if (o2.getPluginId() == CORE_ID) { + return 1; + } + else { + return comparator.compare(o1, o2); + } + }); return sortedRequired; } diff --git a/platform/platform-resources/src/META-INF/PlatformLangXmlPlugin.xml b/platform/platform-resources/src/META-INF/PlatformLangXmlPlugin.xml index c9072fa725b8..f081ac272a0a 100644 --- a/platform/platform-resources/src/META-INF/PlatformLangXmlPlugin.xml +++ b/platform/platform-resources/src/META-INF/PlatformLangXmlPlugin.xml @@ -1,9 +1,6 @@ - - - diff --git a/platform/platform-tests/testData/plugins/sort/ultimatePlugins.txt b/platform/platform-tests/testData/plugins/sort/ultimatePlugins.txt index 43e8bb2d95a9..f97a9e57bcb9 100644 --- a/platform/platform-tests/testData/plugins/sort/ultimatePlugins.txt +++ b/platform/platform-tests/testData/plugins/sort/ultimatePlugins.txt @@ -1,5 +1,5 @@ --org-jetbrains-python-concurrency-visualiser- + com.intellij + -org-jetbrains-python-concurrency-visualiser- + -HtmlTools- + -PerforceDirectPlugin- + -Refactor-X- diff --git a/plugins/devkit/devkit-core/resources/META-INF/plugin.xml b/plugins/devkit/devkit-core/resources/META-INF/plugin.xml index 8a94e2ea15c3..396d16945262 100644 --- a/plugins/devkit/devkit-core/resources/META-INF/plugin.xml +++ b/plugins/devkit/devkit-core/resources/META-INF/plugin.xml @@ -15,6 +15,7 @@ com.intellij.properties com.intellij.modules.java com.intellij.modules.json + com.intellij.platform.images org.jetbrains.plugins.gradle org.intellij.groovy com.intellij.uiDesigner diff --git a/resources/intellij.java.resources.iml b/resources/intellij.java.resources.iml index 4a8078ba308c..678b0ac53e68 100644 --- a/resources/intellij.java.resources.iml +++ b/resources/intellij.java.resources.iml @@ -9,7 +9,6 @@ -