Commit Graph

573 Commits

Author SHA1 Message Date
Vladimir Koshelev
6582cf707a [platform] ModuleBasedProductLoadingStrategy: support modules without package prefix
GitOrigin-RevId: 487619cfedb00b8efb1a98890cc8f3b26853521a
2024-07-23 15:59:55 +00:00
Nikolay Chashnikov
7683109180 [rdct] use the proper config and system paths for the frontend process started from PyCharm Community installation (RDCT-1430)
The embedded frontend launcher in PyCharm Community already has the proper pathsSelector, so an attempt to fix it will replace 'PyCharmCE' by 'PyCharmCECE'.

GitOrigin-RevId: dfba27a2316c9934a8b6bfa3025909a88731ffa7
2024-07-04 18:19:42 +00:00
Daniil Ovchinnikov
9f2b32c3c7 rename intellij.platform.devBuildServer -> intellij.platform.buildScripts.devBuildServer
This change excludes this module from the platform.

GitOrigin-RevId: 96e159a092772b0ae9bc3faa224f544281c951f5
2024-06-24 15:32:55 +00:00
Nikolay Chashnikov
bc04a7877c [rdct] use proper paths to settings and caches directories when connecting to Community editions (RDCT-1430)
We use the same distribution of the frontend part for community and ultimate/professional editions of IntelliJ IDEA and PyCharm, and 'idea.path.selector' property is set to the value from the ultimate/professional edition. To use proper value when connecting to a backend from the community edition, we need to adjust it based on the product code specified in the join link in the command line arguments.

GitOrigin-RevId: 663f40075eef089d7a8e36ec0ee2a8ba5f39af10
2024-06-20 18:28:24 +00:00
Nikolay Chashnikov
d7ac809361 [rdct] cleanup: simplify code in FrontendProcessPathCustomizer
Since it's used for the frontend process only, the check for the mode isn't needed anymore. However, we still need to support a 'generic' variant of the frontend which isn't built for a specific IDE and therefore needs to use a  'JetBrainsClient' prefix for directory names.

GitOrigin-RevId: be52b1a8d32c2e63fe6d90a279e93209a07b2f43
2024-06-20 18:28:24 +00:00
Nikolay Chashnikov
a532a0e244 [rdct] refactoring: rename PerProcessPathCustomizer to FrontendProcessPathCustomizer
This is needed for clarity, since we have a separate P3PathCustomizer now. The common code which was reused by P3PathCustomizer is moved to a separate PerProcessPathCustomization class.

GitOrigin-RevId: bee9775ff2f5790239a6c1b55283ffbadb11f39f
2024-06-20 18:28:24 +00:00
alexey.afanasiev
c672589e5e QD-9246 Remove "Qodana" prefix, use "qodana.application" to define if Qodana is in headless run
GitOrigin-RevId: f56172ce17b5c3581df1249876d722716d57da46
2024-06-18 17:04:57 +00:00
Dmitry Batrak
b4e950e883 GTW-8951 Pull Request window has bigger scaling than other interface
Also fixes GTW-8962 (Main window is broken)

GitOrigin-RevId: 8494669cd53abb329311d745bc274e1981a51a22
2024-06-17 19:23:19 +00:00
Roman Shevchenko
75a2117432 [platform] acknowledging the dirty reality of I/O producing exceptions sometimes
GitOrigin-RevId: 7e262eda77247185f877e86783e5adfb35edc21f
2024-06-11 10:12:19 +00:00
Roman Shevchenko
c843eec5bd Cleanup (suppressions; typos; formatting)
GitOrigin-RevId: 0a3bdb418e27c1af79af78536ad5023821401c38
2024-06-10 12:34:56 +00:00
Roman Shevchenko
a81a718d56 [platform] refactoring IDE startup error reporting code (IJPL-358 preparation)
GitOrigin-RevId: ea0b019db9c5369a7258579d890ec7a127879847
2024-06-10 12:34:56 +00:00
Vadim Salavatov
f5ed723e48 IJPL-155958 remove ApiStatus.Internal from kotlin.coroutines.jvm.internal package
GitOrigin-RevId: 8a7fe07ab81fd5631054aaedaa0e1efa52714132
2024-05-31 14:24:15 +00:00
Konstantin Nisht
e95d9319ed IJPL-797 intellij.platform.bootstrap.dev review internal API
GitOrigin-RevId: 956d6f70473e55a8477e7c7de5db65adb92d85d9
2024-05-19 21:45:46 +00:00
Nikolay Chashnikov
b9b0a2f1f7 [rdct] use 'frontend' subdirectory instead of generic 'tmp' subdirectory for temp folders in the frontend process (GTW-2077)
If the frontend process uses the same 'idea.paths.selector' as the monolithic IDE, it's better to put its temporary config and system directories under a special 'frontend' folder. This way they won't be mixed with other per-process folders, and we can be sure that they won't be cleared by the monolithic IDE while the frontend process is running.

GitOrigin-RevId: 5662f7fce327bd5c4d38a829d21d420caee63777
2024-05-15 23:26:42 +00:00
Vladimir Krivosheev
51586a31a1 IJPL-149476 ignore NoSuchFileException
GitOrigin-RevId: 162ee036ed149dd82a1fa4650bbf25d8defc1bad
2024-05-15 21:10:00 +00:00
Vladimir Krivosheev
155813717e IJPL-149476 simplify loadPluginDescriptorsImpl
GitOrigin-RevId: 4c65ac2423950aac96b5dabbf1b79811ef634855
2024-05-15 21:09:30 +00:00
Vladimir Krivosheev
31b8661267 IJPL-149476 extract loadPluginDescriptorsImpl
GitOrigin-RevId: db6d1ffd52ef3587f3cc7c93a52acad4d23d6e8b
2024-05-15 21:09:26 +00:00
Vadim Salavatov
e9fb55c821 IJPL-797 intellij.platform.bootstrap.coroutine review internal API
GitOrigin-RevId: e952315df7add1ae248bc052b1e269c23179fece
2024-05-15 15:10:47 +00:00
Daniil Ovchinnikov
abdcd6d940 IJPL-797 intellij.platform.bootstrap review internal API
GitOrigin-RevId: 9c424d4078bafd27c7586b382882aa1594db13f9
2024-05-15 14:56:44 +00:00
Nikolay Chashnikov
42acfbd38b [platform] ensure that intellij.platform.bootstrap.coroutine comes before kotlin-stdlib in the classpath (IJPL-986)
'intellij.platform.bootstrap.coroutine' module provides a custom variant of DebugProbesKt class from kotlin-stdlib, so it should come first in the classpath to ensure that coroutines dumps work if the IDE or tests are started without packing modules to JARs and without explicitly specified coroutines agent.

GitOrigin-RevId: 2751c8052f3c0285ad109d67daa1d3eb0e7ddb10
2024-05-15 12:05:44 +00:00
Nikolay Chashnikov
fdda4dd520 [rdct] support migration of settings and plugins if the frontend process uses the same config directory as the local IDE (GTW-2077)
If the frontend process uses the same config directory as the corresponding local IDE, there is no need to customize where it imports settings from, the default behavior should work well. However, we still need to store plugins for the local IDE and the frontend variant separately, because not all plugins are compatible with both variants, and we currently cannot determine compatibility while loading plugins. So plugins for the frontend variant are stored in ${idea.plugins.path}/frontend directory.

It isn't enough to migrate plugins from the local IDE to the frontend during migration of the settings. It may happen that the local IDE of this major version was already run on this machine, so when the frontend is started, the config directory will exist and no importing will be performed. To initiate migration of plugins in that case, PerProcessPathCustomizer manually initiates config importing if the plugins directory doesn't exist.
Also, it may happen that the frontend process performs the initial config importing. In that case, it also migrates the plugins for the local IDE from the previous version, because when the local IDE will be started for the first time, the config directory will exist and no importing will be performed.

GitOrigin-RevId: 9dae5c03001b45240e6ae3bbaa56224b522de2f4
2024-05-08 16:17:31 +00:00
Nikolay Chashnikov
bc15ebd252 [rdct] always use per-process config/system directories for the frontend process (GTW-8638)
'JBC_SEPARATE_CONFIG' environment variable and 'rdct.enable.per.connection.client.process' registry options are removed.

GitOrigin-RevId: dba5e66d20d9b076f02c272bacda55f331a7d332
2024-05-06 16:02:36 +00:00
Daniil Ovchinnikov
b03b92e140 IJPL-148490 clean up empty file-classes from existing dumps
GitOrigin-RevId: ca701387e601a76ae25a3a31ca0a02432126e0fb
2024-04-30 20:39:42 +00:00
Egor Ushakov
da7debd54c [kotlin debugger] in coroutines 1.8 creation stacktraces are disabled by default, enable it explicitly for now only in debug mode
GitOrigin-RevId: 2b9b76e629ac52adf4af56484e0fba0e8661f636
2024-04-17 13:00:44 +00:00
Vladimir Krivosheev
567972c35c IJPL-973 extract loadProductModule, move log.debug ModuleBasedProductLoadingStrategy as only this strategy returns null
GitOrigin-RevId: 413e85843ec81d4dea0a0e0e7785a169b1c01094
2024-04-12 07:35:21 +00:00
Nikolay Chashnikov
5ef1ece97e [module-based loader] don't fail startup if product content module cannot be found (CPP-38280)
We use the same root JetBrainsClientPlugin.xml for all IDE-specific frontends, and not all product content modules specified in it are available in all IDEs. E.g., 'intellij.notebooks.ui' isn't present in CLion. Since content modules are optional, absence of some of the in the distribution shouldn't cause an error.

GitOrigin-RevId: 074f93d1a5c31de6d6bf5152d96ba150c72bf7b2
2024-04-09 09:43:58 +00:00
Daniil Ovchinnikov
4369d7df5f IJPL-797 API dump: generate api-dump-unreviewed.txt and exposed API lists [4/4]
GitOrigin-RevId: c48b0b9a6e9596e841dc7928020418b9cd303bcd
2024-04-09 02:21:37 +00:00
Daniil Ovchinnikov
5ec66a02cd IJPL-797 API dump: generate api-dump-unreviewed.txt and exposed API lists [2/4]
GitOrigin-RevId: 1f2fcb6d02f6bf1bb52d4063ac8b13ba953b6697
2024-04-09 02:21:27 +00:00
Vladimir Krivosheev
89503d9d07 IJPL-866 fix Qodana
GitOrigin-RevId: 31ce664b84994c3ee9abf0373274e06225a7cacd
2024-04-03 20:21:19 +00:00
Nikolay Chashnikov
b389067fb7 [module-based loader] fix locating product content modules when the embedded frontend process is started from full IDE (RDCT-1226)
The frontend part of the IDE has its own list of content modules, and at least one of them ('intellij.cwm.guest.notebooks') is not included in lib/modules directory, and it's not simple to put it there, because it's currently part of CWM plugin distribution. So 'findProductContentModuleClassesRoot' is introduced in 'ProductLoadingStrategy', which computes path to the classes root of the module using data from the module repository if the module-based loader is used.

GitOrigin-RevId: dddcb8b16dce64fd73a0cbdde507daaa5b069a10
2024-04-02 15:41:07 +00:00
Kate Botsman
e68cdb6036 RDCT-1200 Fix JetBrains Client doesn't report native crashes
To find and report native crashes `PerformanceWatcherImpl` requires two files: `.pid` and `.appinfo`

These files are stored in the system directory (`PathManager.getSystemPath()`).
For JetBrainsClient we replace default system path (`JetBrains/IntelliJIdea[VERSION]`) with custom per process path (`JetBrains/JetBrainsClient[VERSION]/tmp/per_process_system_0`)

This custom directory is cleaned up on every start therefore `.pid` and `.appinfo` files are also deleted and `PerformanceWatcherImpl` cannot send crash reports.

To fix that, we now keep these files between client restarts.

GitOrigin-RevId: 7c50445d07767cc3a12e36c5511778235e8142b6
2024-03-22 18:25:52 +00:00
Vladimir Krivosheev
c175babc14 IJPL-166 coroutine dump without byte-buddy (final variant #10.1)
GitOrigin-RevId: b203c7d1e4c89087509f5bd697e8b152fc6cc94d
2024-03-20 22:50:15 +00:00
Nikolay Chashnikov
1fa2a2329a [module-based loader] properly pass 'isBundled' and 'pluginDir' parameters when loading custom plugins
This is needed to include testing code as a custom plugin in the client process (RDCT-773).

GitOrigin-RevId: 04eb2a759633e8f22879af13cbd6afb207369fe6
2024-03-13 00:24:22 +00:00
Ilya Usov
5a64ef0caa copy options/jdk.table.xml to P3 folder to be able to build the ultimate project
GitOrigin-RevId: 83700934b555d982f865d000ab986ce60ff37cad
2024-03-08 19:59:59 +00:00
Vladimir Koshelev
affa8ec645 [IJPL-748] initMarketplace do not receive path class loader eagerly
IJ-CR-128287

GitOrigin-RevId: 7770028f1d29af338d2772c5e60886d44adc0b84
2024-03-08 16:14:01 +00:00
Ilya Usov
f28e7aaf37 Fix FunctionalIntelliJTestNewInstancePerProject for new P3 implementation
GitOrigin-RevId: cc0c3ac9d74afd58088af0f1ac5f61d42d1cc4bd
2024-03-06 19:41:28 +00:00
Ilya.Usov
aaa219a289 Move SharedConfig classes to platform
Rename PerProcess to P3 (Project Per process)

open different projects in different processes if perProcess mode is enabled

GitOrigin-RevId: cd44340f0cca0caad8f5bac0882978735e0e2e17
2024-03-06 19:41:28 +00:00
Vladimir Krivosheev
82fc2d4219 Revert "IJPL-166 coroutine dump without byte-buddy (final variant #10)"
This reverts commit 4c661ba2

GitOrigin-RevId: dfc8542b326af558428adbb9a403fdd65a6fe313
2024-03-04 17:37:45 +00:00
Ivan Migalev
94efe0af9a Dev builds: fix the DevKit Plugin message formatting
GitOrigin-RevId: b0349e795a502e433d3f3f8c80a3d715c58d9540
2024-02-27 20:04:49 +00:00
Alexander Lobas
b93d7a8ad8 IDEA-337916 Improve localization experience (partial revert)
GitOrigin-RevId: e18a7683781cfce7019c5a00e789af8aa2691b40
2024-02-24 14:30:42 +00:00
Vladimir Krivosheev
f35d60b144 IJPL-166 coroutine dump without byte-buddy (final variant #10)
GitOrigin-RevId: 4c661ba22f763bd897b6bebbcaff62bdfc14cd19
2024-02-22 10:47:17 +00:00
Artem.Bukhonov
fc2f05fe5f RDCT-1076 Debugger tree is rendered slowly under Lux
Disable AntiFlickeringPanel that wraps the debugger tree to reduce flickering and proxies the primitives into a big image

GitOrigin-RevId: 42cac5be81df9a1ea839f6d64abe8f779f6dcdee
2024-02-21 18:46:33 +00:00
Alexander Lobas
d50ead86d6 IDEA-337916 Improve localization experience
GitOrigin-RevId: 60094c19cc442182eddc2fabbd4349f2284b4acd
2024-02-20 21:19:18 +00:00
Dmitry Batrak
5b5e04f899 GTW-7761 Chinese characters aren't displayed in plugin description sometimes
GitOrigin-RevId: 41458eb3e9607766e47c9a6d53bb86339f9c6845
2024-02-19 16:10:59 +00:00
Vadim Salavatov
b630f4b292 IDEA-327560 manual revert of ConfigImportHelper and corresponding changes in bootstrap code
Original MR: IJ-MR-122541

GitOrigin-RevId: eb090de06db06b53cb22be194762264174f5e416
2024-02-16 17:51:27 +00:00
Nikolay Chashnikov
9e108a45d0 [modular loader] properly support dependencies of plugin modules (IJPL-128)
Modules defined in 'content' tag in plugin.xml may have dependencies on other modules which aren't included in the platform part or other plugin (e.g. 'intellij.terminal' depends on 'intellij.terminal.completion'). Before only dependencies on libraries were supported. Now ServiceModuleMapping collects all such dependencies and associates them with corresponding plugin module groups, so they are added to the plugin classloaders.

GitOrigin-RevId: 772763ba8834f0306475c5666eadbf0de0e47e00
2024-02-15 18:45:39 +00:00
Nikolay Chashnikov
8ba5f5cedc [module loader] cleanup: simplify code by using PluginModuleGroup.mainModule property (IJPL-128)
GitOrigin-RevId: 246ded40afe5b96f9cfb5a8b8cbd7b62497cb1c0
2024-02-15 18:45:34 +00:00
Nikolay Chashnikov
b9607b4f58 [modular loader] optimization: use a set instead of a list (IJPL-128)
GitOrigin-RevId: 7b14e1d6ab2fda46eb48aad5800deaa0e3be79ca
2024-02-15 18:45:14 +00:00
Nikolay Chashnikov
f0dbae242a [platform] provide API to get the current mode the product is running on (RDCT-735)
ProductLoadingStrategy.currentModeId is added. For module-based implementation which is currently used for JetBrains Client, it returns the value explicitly passed via a system property. For path-based implementation, which is currently used for local IDE and backend, the value is computed manually depending on command line arguments.

GitOrigin-RevId: 4a61eaef60febcf3e6d086b8e6eb68fcf2b935ef
2024-02-15 09:57:58 +00:00
Nikolay Chashnikov
f4812edb7e [modular loader] refactoring: extract ProductModules API to a separate module (IJPL-128)
ProductModules and related API aren't needed for the initial startup procedure in IntellijLoader, they are used later from ProductLoadingStrategy. So they are now moved from 'intellij.platform.runtime.repository' module to a new 'intellij.platform.runtime.product' module. This reduces the amount of code located in platform-loader.jar included in the initial classpath. Also, it allows to use code from other modules and libraries in the implementation of ProductModules (e.g., write code in Kotlin).

GitOrigin-RevId: 86bbab20f217b91104df20d546dc6bda376fb63c
2024-02-15 09:57:49 +00:00