Skip to content

Conversation

@kolipakakondal
Copy link
Collaborator

@kolipakakondal kolipakakondal commented Mar 19, 2025

Description

Please include a summary of the change and which issue is fixed.

Fixes # (IEP-XXX)

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How has this been tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

  • Test A
  • Test B

Test Configuration:

  • ESP-IDF Version:
  • OS (Windows,Linux and macOS):

Dependent components impacted by this PR:

  • Component 1
  • Component 2

Checklist

  • PR Self Reviewed
  • Applied Code formatting
  • Added Documentation
  • Added Unit Test
  • Verified on all platforms - Windows,Linux and macOS

Summary by CodeRabbit

  • New Features

    • Added new default configurations for editor and language server settings.
  • Improvements

    • Updated support for newer versions of Eclipse and Java (Java 21).
    • Enhanced compatibility with recent Eclipse platform and dependencies.
    • Streamlined configuration and preference management for the language server.
    • Improved integration with Maven for dependency management.
    • Updated documentation with Java 21 prerequisite and detailed plugin upgrade instructions.
  • Bug Fixes

    • Improved handling of build configuration and toolchain selection to prevent potential errors.
  • Refactor

    • Simplified and modernized internal configuration logic for language server and editor settings.
  • Chores

    • Removed obsolete configuration files and classes related to Clangd configuration.
    • Updated classpath and manifest files for better dependency management and clarity.
    • Raised minimum Java version requirement to 21 in product and build configurations.

@coderabbitai
Copy link

coderabbitai bot commented Mar 19, 2025

Walkthrough

This update modernizes the Espressif Eclipse plugin's build and runtime environment by upgrading Java and Eclipse dependencies to newer versions, refactoring LSP/Clangd configuration integration, and improving Maven and classpath management. Java 21 replaces Java 17 across product, build, and CI configurations. The LSP/Clangd preference architecture is reworked, removing older configuration classes and XML components and introducing new metadata-based defaults. Several .classpath files are updated for Maven compatibility and streamlined output paths. Various Eclipse target platform repositories and features are updated to their latest releases, and new features are added or removed in the update site configuration.

Changes

File(s) / Path(s) Change Summary
releng/com.espressif.idf.target/com.espressif.idf.target.target, releng/com.espressif.idf.product/idf.product, releng/com.espressif.idf.product/pom.xml, releng/com.espressif.idf.configuration/pom.xml, releng/com.espressif.idf.update/category.xml Upgraded Eclipse repositories, LSP4E, TM4E, JustJ JRE, CDT LSP, and changed Java version requirements from 17 to 21. Updated features and bundles in update site.
.github/workflows/ci.yml, releng/com.espressif.idf.configuration/pom.xml, releng/com.espressif.idf.product/pom.xml, releng/com.espressif.idf.product/idf.product CI and build system updated to use JDK 21; SpotBugs removed from CI; Tycho version updated.
bundles/com.espressif.idf.core/.classpath, bundles/com.espressif.idf.branding/.classpath, bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath, bundles/com.espressif.idf.help/.classpath, bundles/com.espressif.idf.launch.serial.core/.classpath, bundles/com.espressif.idf.launch.serial.ui/.classpath, bundles/com.espressif.idf.lsp/.classpath, bundles/com.espressif.idf.sdk.config.core/.classpath, bundles/com.espressif.idf.sdk.config.ui/.classpath, bundles/com.espressif.idf.serial.monitor/.classpath, bundles/com.espressif.idf.terminal.connector/.classpath, bundles/com.espressif.idf.terminal.connector.serial/.classpath, bundles/com.espressif.idf.ui/.classpath, bundles/com.espressif.idf.wokwi/.classpath Classpath entries restructured: generalized JRE references, Maven integration, updated source/output paths, added/remodeled library entries.
bundles/com.espressif.idf.core/META-INF/MANIFEST.MF, bundles/com.espressif.idf.ui/META-INF/MANIFEST.MF Required bundle versions updated for CDT Core, LSP, and related dependencies.
bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java, bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java Refactored build configuration logic: removed/changed constructors, improved launch target/toolchain handling, renamed methods.
bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF, bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdOptionsDefaults.xml, bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdConfigurationAccess.xml, bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFEditorMetadataDefaults.xml Refactored OSGi service components: removed old Clangd configuration access, renamed and replaced defaults, added new editor metadata component.
bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdConfigurationAccess.java, bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdOptionsDefaults.java, bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdPreferredOptions.java Removed old Clangd configuration and options classes.
bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdMetadataDefaults.java, bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFEditorMetadataDefaults.java Added new metadata-based defaults for Clangd and editor preferences.
bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/util/LspService.java Simplified methods: removed ClangdMetadata instance checks, now use Predefined identifiers directly.
bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/LspPluginStartup.java Minor comment formatting change.
bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/CMakeBuildTab2.java Updated attribute references and imports to use new CMake build configuration interfaces/constants.
bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/templates/FormBrowser.java Refactored LocationListener addition and behavior in FormBrowser.
bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/LaunchBarListener.java, bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/handlers/FileOpenListener.java Added imports related to launch targets and Eclipse runtime jobs/status.
docs/en/prerequisites.rst Updated minimum required Java version from 17 to 21.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Eclipse IDE
    participant IDFBuildConfigurationProvider
    participant IDFBuildConfiguration
    participant LspService
    participant ClangdMetadataDefaults

    User->>Eclipse IDE: Initiates build/configuration or LSP action
    Eclipse IDE->>IDFBuildConfigurationProvider: Request build configuration
    IDFBuildConfigurationProvider->>IDFBuildConfiguration: Create with launch target/toolchain
    IDFBuildConfiguration->>IDFBuildConfigurationProvider: Return configuration
    Eclipse IDE->>LspService: Update LSP/Clangd preferences
    LspService->>ClangdMetadataDefaults: Retrieve metadata defaults
    ClangdMetadataDefaults-->>LspService: Provide metadata (clangdPath, queryDriver, etc.)
    LspService-->>Eclipse IDE: Preferences updated
Loading

Possibly related PRs

  • espressif/idf-eclipse-plugin#1113: Both PRs update multiple Eclipse target repositories and unit versions including adding org.eclipse.lsp4e and org.eclipse.lsp4e.debug units and repositioning org.yaml.snakeyaml, while the retrieved PR adds a new unit org.commonmark and updates the org.eclipse.lsp4j repository location in the same target configuration file; both modify the same target platform XML file to manage Eclipse dependencies and units, indicating related changes at the configuration level.

  • espressif/idf-eclipse-plugin#1193: The main PR updates Eclipse target platform dependencies and Java runtime versions, while the retrieved PR modifies the IDFBuildConfiguration class and related UI to add and handle a dedicated build folder path field, including changes to constructors and toolchain handling; since both modify the same class IDFBuildConfiguration and related build configuration creation logic, their changes are directly related at the code level.

  • espressif/idf-eclipse-plugin#1021: The main PR updates the Eclipse target platform and dependencies to newer versions including the CDT LSP from 2.0 to 3.0 and adds new LSP4E units, while the retrieved PR fix: Address issue with the cdt-lsp-2.0.0 #1021 focuses on fixing issues specifically in the IDFClangdOptionsDefaults class and related LSP preferences to restore clangd functionality after upgrading to CDT LSP 2.0; thus, both PRs involve changes to the Eclipse CDT LSP integration and preferences but the main PR is a broad platform upgrade whereas the retrieved PR is a targeted bug fix on clangd options defaults.

Suggested reviewers

  • kolipakakondal
  • AndriiFilippov

Poem

In the warren where code bunnies dwell,
We hopped from Java 17 to 21—oh swell!
Old configs and listeners, we swept them away,
And Maven’s bright carrots now guide our way.
With clangd and LSP, we’ve tidied the nest,
Eclipse now sparkles, with features refreshed!
🥕✨ Hoppy coding, everybunny!


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 84d0722 and 711cdc1.

⛔ Files ignored due to path filters (2)
  • media/Resolve_update_error.png is excluded by !**/*.png
  • media/Update_dependencies.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • docs/en/marketplaceupdate.rst (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • docs/en/marketplaceupdate.rst
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build_macos

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@kolipakakondal kolipakakondal marked this pull request as draft March 19, 2025 05:14
@kolipakakondal
Copy link
Collaborator Author

Hi @sigmaaa I believe this is no more required right? I will close this.

@sigmaaa
Copy link
Collaborator

sigmaaa commented Mar 24, 2025

Hi @sigmaaa I believe this is no more required right? I will close this.

Hi @kolipakakondal, I moved my changes to this branch, so we can continue using this branch

@kolipakakondal kolipakakondal marked this pull request as ready for review April 1, 2025 12:02
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
.github/workflows/ci.yml (1)

41-46: Updated CI workflow to use JDK 21

The CI workflow has been updated to use JDK 21 instead of JDK 17, and the GitHub Actions setup-java has been upgraded from v3 to v4.

Remove the trailing spaces on line 46 to fix the linting error.

-        distribution: 'temurin'
-    
+        distribution: 'temurin'
🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 46-46: trailing spaces

(trailing-spaces)

bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.java (1)

71-83: Compile commands directory update mechanism rewritten

The implementation has been updated to use the predefined metadata structure, but the core logic of updating the compile commands directory remains the same. There's a minor typo in the variable name newCompuileCommandsDirString (should be "compile" not "compuile").

Fix the variable naming typo:

-		String newCompuileCommandsDirString = compileCommandsDirString + buildDir;
+		String newCompileCommandsDirString = compileCommandsDirString + buildDir;
-		String updatedOptions = existingOptions.contains(compileCommandsDirString)
-				? existingOptions.replaceAll(compileCommandsDirString + ".+", //$NON-NLS-1$
-						Matcher.quoteReplacement(newCompuileCommandsDirString))
-				: newCompuileCommandsDirString;
+		String updatedOptions = existingOptions.contains(compileCommandsDirString)
+				? existingOptions.replaceAll(compileCommandsDirString + ".+", //$NON-NLS-1$
+						Matcher.quoteReplacement(newCompileCommandsDirString))
+				: newCompileCommandsDirString;
bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdMetadataDefaults.java (1)

1-53: Well-structured new class for Clangd metadata defaults

This new class properly implements the ClangdMetadata interface and provides ESP-IDF specific default values for Clangd configuration. The implementation follows good practices:

  1. It appropriately filters predefined keys to override
  2. Uses utilities from IDFUtil to find the Clangd executable
  3. Leverages the ESP toolchain manager to find the correct compiler path for the query driver
  4. Handles potential null values safely with Optional

The wrapWithCustomDefaultValue helper method is a clean way to preserve the original metadata while changing just the default value.

One suggestion to consider is adding more documentation comments, especially for the public methods, to explain the purpose and behavior of this class more clearly.

 @Component(property = { "service.ranking:Integer=0" })
+/**
+ * Provides ESP-IDF specific default values for Clangd configuration.
+ * This class overrides the standard Clangd metadata defaults with values
+ * that are appropriate for ESP-IDF development.
+ */
 public class IDFClangdMetadataDefaults extends ConfigurationMetadataBase implements ClangdMetadata
 {

+    /**
+     * Defines the preferences for Clangd configuration with ESP-IDF specific default values.
+     * 
+     * @return A list of preference metadata with custom default values for ESP-IDF.
+     */
     @Override
     protected List<PreferenceMetadata<?>> definePreferences()
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3358701 and d2c0f05.

📒 Files selected for processing (18)
  • .github/workflows/ci.yml (2 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java (1 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java (5 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.java (1 hunks)
  • bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF (1 hunks)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdConfigurationAccess.xml (0 hunks)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdOptionsDefaults.xml (1 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdConfigurationAccess.java (0 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdMetadataDefaults.java (1 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdOptionsDefaults.java (0 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdPreferredOptions.java (0 hunks)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/CMakeBuildTab2.java (6 hunks)
  • bundles/pom.xml (1 hunks)
  • releng/com.espressif.idf.configuration/pom.xml (2 hunks)
  • releng/com.espressif.idf.product/idf.product (2 hunks)
  • releng/com.espressif.idf.product/pom.xml (1 hunks)
  • releng/com.espressif.idf.target/com.espressif.idf.target.target (5 hunks)
  • releng/com.espressif.idf.update/category.xml (0 hunks)
💤 Files with no reviewable changes (5)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdOptionsDefaults.java
  • releng/com.espressif.idf.update/category.xml
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdConfigurationAccess.xml
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdConfigurationAccess.java
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdPreferredOptions.java
🚧 Files skipped from review as they are similar to previous changes (1)
  • releng/com.espressif.idf.target/com.espressif.idf.target.target
🧰 Additional context used
🪛 YAMLlint (1.35.1)
.github/workflows/ci.yml

[error] 46-46: trailing spaces

(trailing-spaces)

🔇 Additional comments (22)
bundles/pom.xml (1)

49-49: Java execution environment updated to JDK 21

The execution environment has been updated from JDK 17 to JDK 21 to align with the LSP dependencies update. This is a significant version upgrade that requires verification across development environments.

Please verify that all developers have updated their development environments to support JDK 21. This change will require adjustments to development setups and CI environments.

releng/com.espressif.idf.product/pom.xml (1)

117-117: Java execution environment updated to JDK 21

The execution environment has been updated from JDK 17 to JDK 21, consistent with the changes in other configuration files.

releng/com.espressif.idf.product/idf.product (2)

17-22: Updated Java version requirement to 21 in launcher arguments

The required Java version has been updated from 17 to 21 in the launcher arguments for all supported platforms (Linux, macOS, Windows).


45-48: Updated Java VM configuration to JDK 21

Java VM configurations for Linux, macOS, and Windows have been updated to use JavaSE-21 instead of JavaSE-17.

Note that the Solaris configuration on line 47 still references JavaSE-11. Please verify if this is intentional or if it should also be updated to JavaSE-21 for consistency.

.github/workflows/ci.yml (2)

48-48: SpotBugs analysis removed from Maven build command

The Maven build command has been simplified to remove the SpotBugs analysis.

Please confirm if removing the SpotBugs analysis was intentional. SpotBugs is a valuable static analysis tool that helps identify potential bugs. If it's causing compatibility issues with Java 21, consider addressing those issues rather than removing the analysis.


65-69: Updated macOS build job to use JDK 21

The macOS build job has been updated to use JDK 21 and the GitHub Actions setup-java has been upgraded from v3 to v4.

bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF (1)

19-19: Service component configuration updated

The Service-Component entry now excludes IDFClangdConfigurationAccess.xml, which aligns with the broader restructuring of Clangd-related components in this PR. This change is consistent with moving away from the older configuration access pattern as part of the LSP dependencies update.

releng/com.espressif.idf.configuration/pom.xml (2)

10-10: Tycho version updated from 4.0.6 to 4.0.9

Updating the Tycho version brings in the latest improvements and fixes for the build system.


41-41:

✅ Verification successful

JDK requirement upgraded from 17 to 21

The execution environment has been updated to Java 21, which is a significant change requiring developers and users to have JDK 21 installed. Ensure this change is clearly communicated in the documentation and that all CI/CD pipelines are updated accordingly.

Run this verification script to confirm if other POM files have been consistently updated with this JDK change:


🏁 Script executed:

#!/bin/bash
# Check if all POM files have been updated to JDK 21
echo "Checking POM files for Java version references:"
grep -r "org.eclipse.justj.openjdk.hotspot.jre.full" --include="pom.xml" .
echo "Checking other files for Java version references:"
grep -r "requiredJavaVersion" --include="*.product" .

Length of output: 1340


JDK Upgrade Verification: Consistent Update to JDK 21

All relevant POM and product files have been updated to reference JDK 21:

  • bundles/pom.xml: <executionEnvironment>org.eclipse.justj.openjdk.hotspot.jre.full-21</executionEnvironment>
  • releng/com.espressif.idf.configuration/pom.xml: <executionEnvironment>org.eclipse.justj.openjdk.hotspot.jre.full-21</executionEnvironment>
  • releng/com.espressif.idf.product/pom.xml: <executionEnvironment>org.eclipse.justj.openjdk.hotspot.jre.full-21</executionEnvironment>
  • releng/com.espressif.idf.product/idf.product: Contains settings for -Dosgi.requiredJavaVersion=21 across Linux, Mac, and Windows configurations

Please ensure that the documentation and CI/CD pipelines are updated accordingly to reflect the upgraded JDK requirement.

bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdOptionsDefaults.xml (1)

2-7:

✅ Verification successful

Component definition aligned with upstream Eclipse CDT structure

The component has been significantly refactored:

  1. Component name changed to use Eclipse CDT namespace
  2. Service ranking changed from 100 to 0
  3. Service interface updated to use ClangdMetadata instead of ClangdOptionsDefaults
  4. Implementation uses new IDFClangdMetadataDefaults class

These changes align with the upstream Eclipse CDT architectural changes for LSP support.

Verify that the new IDFClangdMetadataDefaults class properly implements the ClangdMetadata interface:


🏁 Script executed:

#!/bin/bash
# Check the implementation of IDFClangdMetadataDefaults
echo "Checking implementation of IDFClangdMetadataDefaults:"
find . -name "IDFClangdMetadataDefaults.java" | xargs cat

Length of output: 2233


Component Definition and Interface Implementation Verified

The updates in the component definition have been confirmed:

  • The component now uses the Eclipse CDT namespace (org.eclipse.cdt.lsp.clangd.internal.config.ClangdMetadataDefaults).
  • The service ranking has been updated from 100 to 0.
  • The service interface is correctly set to ClangdMetadata, replacing the previous ClangdOptionsDefaults.
  • The new implementation in IDFClangdMetadataDefaults properly implements the ClangdMetadata interface as verified by the file content.

Everything appears to align with the upstream Eclipse CDT architectural changes.

bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.java (3)

55-60: Simplified query driver configuration

The method now directly sets the toolchain path obtained from IDFUtil.getToolchainExePathForActiveTarget() as the query driver setting. This implementation is cleaner and more straightforward.


64-67: Streamlined clangd path configuration

The implementation now uses the predefined metadata identifier and its default value directly. This approach is more consistent with the architectural changes in the PR.


48-50:

✅ Verification successful

Direct usage of ClangdMetadata predefined identifiers

The code now uses ClangdMetadata.Predefined constants directly, simplifying the implementation. Note that there's a possible typo in the method name - identifer() instead of identifier(). This appears to be from the upstream API, not an error in this code.

Run this check to verify the method name in the upstream API:


🏁 Script executed:

#!/bin/bash
# Check if the method is really spelled as "identifer" in the upstream API
find . -name "*.java" -exec grep -l "identifer()" {} \;

Length of output: 242


Action: Confirmed usage of upstream API's method naming conventions

The shell script output shows that the method is indeed spelled as identifer() in multiple locations (including the upstream API). Therefore, the direct usage of the ClangdMetadata.Predefined constants is valid, and the misspelled method name is inherited from the upstream API rather than being an error in our code.

Approved as-is.

bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java (3)

70-71: Updated constructor call to include launch target

The constructor call for IDFBuildConfiguration has been updated to include the launch target parameter, which is necessary for consistency with the changes in the IDFBuildConfiguration class.


80-81: Method signature update for build configuration creation

The method has been renamed from createBuildConfiguration to createCBuildConfiguration and now includes an ILaunchTarget parameter. The constant used for the configuration name has changed from DEFAULT_NAME to TOOLCHAIN_ID, which might better reflect its purpose.

These changes align with updates to the corresponding constructor in the IDFBuildConfiguration class and ensure the launch target information is properly passed through the build system.

Also applies to: 107-107, 119-120


52-57:

✅ Verification successful

Simplified launch target logic

The code has been updated to use a more direct approach for determining if a build configuration should be created. Instead of complex logic that might have previously validated the toolchain based on the active launch target, this change simply returns null if the configuration name matches the default configuration name.

The addition of retrieving the active launch target but not using it in the immediate check seems redundant, though it may be used elsewhere.


🏁 Script executed:

#!/bin/bash
# Check if the active launch target is used elsewhere in the method
rg -A 5 -B 5 "target" bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java

Length of output: 1348


Clarification: Active Launch Target is Properly Utilized
After verification, we can confirm that although the active launch target is retrieved before the default configuration check, it is indeed used later in the method when handling a toolchain change. The simplified logic that returns null for the default configuration is intentional, and the early retrieval of the launch target supports its later usage in constructing a new build configuration.

bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java (2)

125-128: Updated constructor to include launch target parameter

The constructor has been updated to include an ILaunchTarget parameter, which is correctly passed to the more detailed constructor with appropriate default values for other parameters. This change supports the updated signature in the parent class.


130-135: Updated constructor signature for full configuration

The full constructor now includes the ILaunchTarget parameter and properly passes it to the superclass constructor. This ensures that launch target information is properly maintained throughout the build configuration hierarchy.

bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/CMakeBuildTab2.java (4)

16-17: Updated imports for CMake configuration interfaces

The import for CMakeBuildConfiguration has been changed from the internal package to the public API, and the ICMakeBuildConfiguration interface has been added. This is a good practice as it reduces dependency on internal implementation details.


175-176: Updated attribute references to use new constants

The code now uses CMAKE_BUILD_COMMAND and CMAKE_CLEAN_TARGET constants from CMakeBuildConfiguration instead of the previous constants. This ensures consistency with the updated LSP dependencies.

Also applies to: 179-180


218-219: Using interface instead of implementation class

The code now references ICMakeBuildConfiguration interface instead of CMakeBuildConfiguration class for accessing constants. This follows good object-oriented design principles by programming to interfaces rather than concrete implementations.

Also applies to: 226-227, 232-233


264-265: Updated remaining attribute references for consistency

The remaining references to CMakeBuildConfiguration constants have been updated to use the new constant names, maintaining consistency throughout the class. This aligns with the changes in the CMake and LSP dependencies.

Also applies to: 299-300, 309-310

@AndriiFilippov
Copy link
Collaborator

@kolipakakondal @sigmaaa hi !

Tested under:
OS - Winodws 11
ESP-IDF: v5.4

created project -> got error on "idf.py reconfigure":

Cannot run program "clangd" (in directory "C:\Users\AndriiFilippov\workspacejLSP333\kkiim"): CreateProcess error=2, The system cannot find the file specified

image
1.log

@kolipakakondal
Copy link
Collaborator Author

@kolipakakondal @sigmaaa hi !

Tested under: OS - Winodws 11 ESP-IDF: v5.4

created project -> got error on "idf.py reconfigure":

Cannot run program "clangd" (in directory "C:\Users\AndriiFilippov\workspacejLSP333\kkiim"): CreateProcess error=2, The system cannot find the file specified

image 1.log

Hi @sigmaaa Not sure if you recall, but we have discussed this issue earlier during our team meetings. This issue happens when you’re holding on to the Clangd path in the preferences while it has actually been deleted from the file system. That means, the environment has become invalid!

@AndriiFilippov To verify, can you check if the Clangd path exists in the file system?

@sigmaaa
Copy link
Collaborator

sigmaaa commented Apr 2, 2025

Hi @kolipakakondal,

I've reproduced the issue—it occurs due to the default clangd path after installing tools in a fresh workspace. Working on a fix now.
image

@sigmaaa
Copy link
Collaborator

sigmaaa commented Apr 2, 2025

Hi @AndriiFilippov , @kolipakakondal

The issue should be resolved after the latest commit.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/handlers/FileOpenListener.java (3)

2-2: Check the copyright year.

The copyright notice shows 2025, which is a future date. Consider updating it to the current year or a range (e.g., "2023-2024") depending on your project's copyright policy.


57-74: Good fix for LSP server initialization race condition.

This addition properly addresses the race condition where LSP servers could be restarted before the launch bar is fully initialized during Eclipse startup. The error handling is appropriate, and the comments clearly explain the issue that's being fixed.

The empty comment line (//) on line 65 should be removed or filled with descriptive text.

 try
 {
     ILaunchTarget launchtarget = launchBarManager.getActiveLaunchTarget();
-    //
     if (launchtarget == null)
     {
         return;
     }
 }

57-75: Consider refactoring for better error flow.

The current implementation has a good safety check but could be made more concise by combining the null check with the exception handler.

 ILaunchBarManager launchBarManager = IDFCorePlugin.getService(ILaunchBarManager.class);
 // Ensure the launch bar is initialized before restarting LSP servers.
 // Sometimes, when restarting Eclipse with a C file open, attempting to restart LSP servers immediately
 // during startup can throw an exception if the launch bar is not yet initialized.
 // This issue has been observed on CDT 12 and LSP 3.0.0.
+ILaunchTarget launchTarget = null;
 try
 {
-    ILaunchTarget launchtarget = launchBarManager.getActiveLaunchTarget();
-    //
-    if (launchtarget == null)
-    {
-        return;
-    }
+    launchTarget = launchBarManager.getActiveLaunchTarget();
 }
 catch (Exception e)
 {
     Logger.log(e);
+    return;
+}
+
+if (launchTarget == null)
+{
+    return;
 }
 lspService.restartLspServers();
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0836969 and ce998e5.

📒 Files selected for processing (1)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/handlers/FileOpenListener.java (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: build_macos
  • GitHub Check: build
🔇 Additional comments (1)
bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/handlers/FileOpenListener.java (1)

10-11: LGTM: Required imports for launch target handling.

The added imports are necessary for the new functionality to access launch target information.

@AndriiFilippov
Copy link
Collaborator

@sigmaaa @kolipakakondal hi!

Tested under:
OS - Windows 11
ESP-IDF: v5.4

open .c file and restart IDE -> after restart, error:

java.lang.IllegalStateException: Unexpected null value present!
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Unexpected null value present!
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)

LOGS3.log

@AndriiFilippov
Copy link
Collaborator

@sigmaaa @kolipakakondal

OS - Windows 11
ESP-IDF: v5.4

create project - open .c file - click "Switch back to the classic C/C++ editing"
image

unresolved headers:
image

rebuild does not help. the only thing helps is right clicking in .c file - then unresolved headers disappears

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/LaunchBarListener.java (1)

98-111: Good use of background job for LSP operations.

Moving the LSP query driver updates to a background job improves UI responsiveness by preventing these potentially lengthy operations from blocking the main thread. The 1000ms delay also helps ensure other initialization tasks complete before the LSP update begins.

However, there are some areas for improvement:

  1. No error handling if LSP operations fail
  2. No progress reporting to the user
  3. No checks to prevent multiple identical jobs from running simultaneously

Consider enhancing the job implementation with error handling and status reporting:

 Job updateLspQueryJob = new Job("Update Lsp Query Drivers...")
 {
     protected IStatus run(IProgressMonitor monitor)
     {
+        try {
+            monitor.beginTask("Updating LSP query drivers", IProgressMonitor.UNKNOWN);
             LspService lspService = new LspService();
             lspService.updateLspQueryDrivers();
             lspService.restartLspServers();
+            return Status.OK_STATUS;
+        } catch (Exception e) {
+            Logger.log(e);
+            return new Status(IStatus.ERROR, IDFUIPlugin.PLUGIN_ID, "Failed to update LSP query drivers", e);
+        } finally {
+            monitor.done();
+        }
-        return Status.OK_STATUS;
     }
 };
+updateLspQueryJob.setUser(false); // System job, not visible to users
+updateLspQueryJob.setRule(ResourcesPlugin.getWorkspace().getRoot()); // Prevent concurrent runs
 updateLspQueryJob.schedule(1000);
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ce998e5 and a0318be.

📒 Files selected for processing (1)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/LaunchBarListener.java (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: build
  • GitHub Check: build_macos
🔇 Additional comments (3)
bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/LaunchBarListener.java (3)

20-23: Appropriate import additions for Job implementation.

The new imports for IStatus, Status, and Job are necessary for the asynchronous job implementation.


105-105:

❓ Verification inconclusive

Investigate server restart implications.

The restartLspServers() method is called after updating query drivers, which could interrupt ongoing editor sessions. Consider if there are cases where this restart could be avoided or if users should be notified.


🏁 Script executed:

#!/bin/bash
# Examine how restartLspServers is implemented and what its impact might be
echo "Checking restartLspServers implementation..."
rg -A 15 "restartLspServers" --glob "*.java"

echo "Checking for any user notification related to LSP server restarts..."
rg "restart.*server.*notif|notif.*restart.*server" --glob "*.java"

Length of output: 7163


Review Update: Revisit LSP Server Restart Behavior
The restartLspServers() method in LspService.java forcefully shuts down and restarts language servers without any user notification. Our repository search confirms that this behavior is consistent across several contexts (e.g., in LaunchBarListener.java, FileOpenListener.java, and during build operations) and no notification mechanisms were found. Given that this restart occurs after updates to query drivers, there's a risk of inadvertently interrupting active editor sessions. Please verify if the restart is strictly necessary in all cases, or if it would be preferable to either suppress unnecessary restarts or implement a user notification to mitigate potential disruptions.


103-106:

❓ Verification inconclusive

Verify Clangd path handling in LspService.

Based on PR comments, there were issues with Clangd not being found during testing. This might be related to how the LspService handles Clangd paths.

Run the following to check how LspService handles Clangd paths:


🏁 Script executed:

#!/bin/bash
# Check LspService implementation for Clangd path handling
echo "Searching for Clangd path handling in LspService..."
rg -A 10 "Clangd" --glob "*.java" | grep -i "path\|find\|locate\|not found"

echo "Checking related preference handling..."
rg -A 5 "getClangdPath\|setClangdPath" --glob "*.java"

Length of output: 3307


Clangd Path Handling in LspService – Please Verify Manually

  • The grep output confirms that updateClangdPath() is implemented in LspService and is called from ToolsActivationJob.java. In the core LspService, it retrieves the toolchain path via IDFUtil.getToolchainExePathForActiveTarget() and updates the corresponding preference node using InstanceScope.INSTANCE.getNode().
  • Note that the search for explicit getter/setter methods (e.g. getClangdPath/setClangdPath) returned no results. This appears intentional as the implementation relies on direct preference node manipulation.
  • Given the previous PR issues regarding Clangd not being found, please run manual tests to ensure that the fallback mechanism using IDFUtil.findCommandFromBuildEnvPath(ILSPConstants.CLANGD_EXECUTABLE) correctly resolves clangd across all expected environments.

@kolipakakondal
Copy link
Collaborator Author

@sigmaaa @kolipakakondal

OS - Windows 11 ESP-IDF: v5.4

create project - open .c file - click "Switch back to the classic C/C++ editing" image

unresolved headers: image

rebuild does not help. the only thing helps is right clicking in .c file - then unresolved headers disappears

Oh man! Having the “Switch to the C/C++ Classic editor” option will screw us since we don’t support it! I don’t know if there’s a way to disable it!

@sigmaaa
Copy link
Collaborator

sigmaaa commented Apr 3, 2025

Hi @kolipakakondal , @AndriiFilippov
In the latest commit, I've added updates to the default LSP editor options to disable a banner and set the LSP editor as the default.
image

@kolipakakondal
Copy link
Collaborator Author

Hi @kolipakakondal , @AndriiFilippov In the latest commit, I've added updates to the default LSP editor options to disable a banner and set the LSP editor as the default. image

That helps!

@AndriiFilippov
Copy link
Collaborator

AndriiFilippov commented Apr 9, 2025

Tested under:
OS - Windows 11
ESP-IDF: v5.4

  1. warning action does some weird thing. does not disappears after use and still active. I am just clicking on it. just watch video.
Screen.Recording.2025-04-09.114235.mp4

@AndriiFilippov
Copy link
Collaborator

@sigmaaa

  1. empty project description
    image

@sigmaaa
Copy link
Collaborator

sigmaaa commented Apr 9, 2025

@sigmaaa

  1. empty project description
    image

Hi @AndriiFilippov,

should be fixed in the last commit

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

46-46: Remove trailing whitespace

There's a trailing space at the end of line 46 that should be removed.

-    
+
🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 46-46: trailing spaces

(trailing-spaces)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7b9457e and 1c39fb5.

📒 Files selected for processing (36)
  • .github/workflows/ci.yml (2 hunks)
  • bundles/com.espressif.idf.branding/.classpath (1 hunks)
  • bundles/com.espressif.idf.core/.classpath (1 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java (1 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java (5 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.java (2 hunks)
  • bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath (1 hunks)
  • bundles/com.espressif.idf.help/.classpath (2 hunks)
  • bundles/com.espressif.idf.launch.serial.core/.classpath (1 hunks)
  • bundles/com.espressif.idf.launch.serial.ui/.classpath (1 hunks)
  • bundles/com.espressif.idf.lsp/.classpath (1 hunks)
  • bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF (1 hunks)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdConfigurationAccess.xml (0 hunks)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdOptionsDefaults.xml (1 hunks)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFEditorMetadataDefaults.xml (1 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/LspPluginStartup.java (1 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdConfigurationAccess.java (0 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdMetadataDefaults.java (1 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdOptionsDefaults.java (0 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdPreferredOptions.java (0 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFEditorMetadataDefaults.java (1 hunks)
  • bundles/com.espressif.idf.sdk.config.core/.classpath (1 hunks)
  • bundles/com.espressif.idf.sdk.config.ui/.classpath (1 hunks)
  • bundles/com.espressif.idf.serial.monitor/.classpath (2 hunks)
  • bundles/com.espressif.idf.terminal.connector.serial/.classpath (1 hunks)
  • bundles/com.espressif.idf.terminal.connector/.classpath (1 hunks)
  • bundles/com.espressif.idf.ui/.classpath (1 hunks)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/CMakeBuildTab2.java (6 hunks)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/templates/FormBrowser.java (2 hunks)
  • bundles/com.espressif.idf.wokwi/.classpath (1 hunks)
  • bundles/pom.xml (1 hunks)
  • releng/com.espressif.idf.configuration/pom.xml (2 hunks)
  • releng/com.espressif.idf.product/idf.product (2 hunks)
  • releng/com.espressif.idf.product/pom.xml (1 hunks)
  • releng/com.espressif.idf.target/com.espressif.idf.target.target (4 hunks)
  • releng/com.espressif.idf.update/category.xml (0 hunks)
💤 Files with no reviewable changes (5)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdOptionsDefaults.java
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdConfigurationAccess.java
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdPreferredOptions.java
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdConfigurationAccess.xml
  • releng/com.espressif.idf.update/category.xml
🚧 Files skipped from review as they are similar to previous changes (14)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/LspPluginStartup.java
  • releng/com.espressif.idf.product/pom.xml
  • bundles/pom.xml
  • releng/com.espressif.idf.product/idf.product
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFEditorMetadataDefaults.java
  • bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFEditorMetadataDefaults.xml
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.java
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdOptionsDefaults.xml
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/CMakeBuildTab2.java
  • releng/com.espressif.idf.configuration/pom.xml
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdMetadataDefaults.java
  • releng/com.espressif.idf.target/com.espressif.idf.target.target
🧰 Additional context used
🧬 Code Graph Analysis (1)
bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java (1)
bundles/com.espressif.idf.core/src/com/espressif/idf/core/IDFCorePlugin.java (1)
  • IDFCorePlugin (20-77)
🪛 YAMLlint (1.35.1)
.github/workflows/ci.yml

[error] 46-46: trailing spaces

(trailing-spaces)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build
🔇 Additional comments (61)
.github/workflows/ci.yml (3)

41-45: LGTM: Java version upgrade to JDK 21

The update from JDK 17 to JDK 21 and the newer setup-java action (v4) aligns with the PR objective of updating dependencies. This change modernizes the build environment and ensures compatibility with updated LSP components.


48-48: Simplified build command looks good

Removing the SpotBugs execution from the build command while retaining other parameters simplifies the build process.


65-69: LGTM: Consistent JDK 21 upgrade for macOS workflow

The update from JDK 17 to JDK 21 for the macOS build environment is consistent with the changes made in the Linux workflow. This ensures uniformity across different build environments.

bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/templates/FormBrowser.java (1)

54-77: LGTM: Refactored LocationListener implementation

The refactoring of the LocationListener implementation makes the code more concise by using an inline listener. The removal of formText.setText(text) from the changing method is a behavior change but appears intentional as it prevents redundant text setting. The comment in the changed method appropriately explains why it's empty.

bundles/com.espressif.idf.lsp/.classpath (3)

3-7: LGTM: Updated JRE container for flexible Java version

Replacing the specific JavaSE-17 path with a more generic JRE container path provides flexibility for Java version compatibility. Adding the Maven attributes ensures proper integration with Maven-based builds.


9-14: LGTM: Updated source path configuration

Explicitly specifying the output directory and adding Maven-related attributes improves build configuration clarity and ensures proper integration with Maven.


15-19: LGTM: Added Maven integration classpath container

The addition of the Maven classpath container enhances dependency management and integration with Maven-based builds.

bundles/com.espressif.idf.serial.monitor/.classpath (3)

3-14: LGTM: Updated JRE container and source path configuration

The changes to the JRE container and source path configuration align with the updates in other modules, providing flexibility for Java version compatibility and ensuring proper Maven integration.


30-31: LGTM: Added JNA libraries

The addition of JNA libraries (version 5.11.0) is appropriate for the serial monitor functionality, providing necessary native access capabilities.


37-37: LGTM: Updated output path

Standardizing the output path to "bin" aligns with the project's build structure conventions.

bundles/com.espressif.idf.branding/.classpath (2)

3-7: JRE container configuration updated for Maven integration

The JRE container path has been generalized and the attribute changed to support Maven integration. This change aligns with the PR's objective to update LSP dependencies and modernize the build configuration.


9-13: Maven classpath container added

Added Maven classpath container with appropriate attributes to support Maven dependency management, which is consistent with the project's modernization efforts.

bundles/com.espressif.idf.wokwi/.classpath (3)

3-7: JRE container configuration updated for Maven integration

The JRE container path has been generalized, removing the specific JavaSE-17 reference, and the attribute has been changed to support Maven integration. This is consistent with the project's dependency updates.


9-14: Source path configuration enhanced with Maven attributes

The source path entry now includes an output directory and Maven-specific attributes, improving build configuration consistency.


15-19: Maven classpath container added

Maven classpath container added with appropriate attributes to support Maven dependency management, which is consistent with other files in this PR.

bundles/com.espressif.idf.launch.serial.core/.classpath (3)

3-7: JRE container configuration updated for Maven integration

The JRE container path has been generalized and the attribute changed to support Maven integration, following the same pattern as other files in this PR.


9-14: Source path configuration enhanced with Maven attributes

The source path entry now includes an output directory and Maven-specific attributes, improving build configuration consistency.


15-19: Maven classpath container added

Maven classpath container added with appropriate attributes to support Maven dependency management, which is consistent with other files in this PR.

bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath (4)

3-7: JRE container configuration updated for Maven integration

The JRE container path has been generalized and the attribute changed to support Maven integration, following the same pattern as other files in this PR.


9-14: Source path configuration enhanced with Maven attributes

The source path now includes an output directory (target/classes) and Maven-specific attributes, improving build configuration.


15-15: SVD library path added as exported

A new exported library path for "svd" has been added, which appears to be a module-specific requirement.


16-20: Maven classpath container added

Maven classpath container added with appropriate attributes to support Maven dependency management, consistent with other files in this PR.

bundles/com.espressif.idf.sdk.config.core/.classpath (4)

9-14: Source path configuration updated for Maven compatibility.

The source path now specifies an output directory and includes Maven-related attributes. This change improves build consistency and Maven integration.


15-19: Maven classpath container properly configured.

The Maven classpath container is correctly configured with the necessary attributes, ensuring proper Maven integration.


20-20: Output path standardized to 'bin'.

The output path has been changed from 'target/classes' to 'bin'. This better aligns with Eclipse plugin conventions and creates consistency across the project.


3-7:

✅ Verification successful

JRE container path has been generalized.

The JRE container path has been changed from a specific Java version to a generic container. This provides more flexibility but ensure that the minimum Java version is still properly specified in the MANIFEST.MF file to prevent compatibility issues.


🏁 Script executed:

#!/bin/bash
# Verify that MANIFEST.MF still contains proper Java version requirements
grep -r "Bundle-RequiredExecutionEnvironment:" bundles/com.espressif.idf.sdk.config.core/META-INF/MANIFEST.MF

Length of output: 156


JRE Container Generalization Verified

The updated classpath entry in bundles/com.espressif.idf.sdk.config.core/.classpath now uses a generalized JRE container path, and we verified that the minimum Java version requirement is still enforced—the MANIFEST.MF correctly specifies Bundle-RequiredExecutionEnvironment: JavaSE-17. This ensures the necessary Java environment is maintained without tying the build to a specific version.

bundles/com.espressif.idf.help/.classpath (3)

3-7: JRE container path has been generalized.

The JRE container path has been simplified from a specific Java version to a generic container. This provides more flexibility but ensure that the minimum Java version is still properly specified in the MANIFEST.MF file.


9-9: Source path output directory updated.

The source path configuration now specifies 'bin' as the output directory, aligning with Eclipse plugin conventions and ensuring consistency with other modules.


20-20: Output path standardized to 'bin'.

The output path has been updated from 'target/classes' to 'bin', which standardizes the build output location across the project.

bundles/com.espressif.idf.launch.serial.ui/.classpath (4)

3-7: JRE container path has been generalized.

The JRE container path has been changed from a specific Java version to a generic container. This change provides more flexibility in development environments but ensure that the minimum Java version is still properly specified in the MANIFEST.MF file.


9-14: Source path configuration updated for Maven compatibility.

The source path now specifies 'bin' as the output directory and includes Maven-related attributes. This improves build consistency and Maven integration.


16-20: Maven classpath container added.

The Maven classpath container has been correctly added with the necessary attributes, ensuring proper Maven integration for dependency management.


21-21: Output path standardized to 'bin'.

The output path has been changed from 'target/classes' to 'bin', aligning with Eclipse plugin conventions and creating consistency across the project.

bundles/com.espressif.idf.ui/.classpath (5)

3-7: JRE container path has been generalized.

The JRE container path has been changed from a specific Java version to a generic container. This provides more flexibility but ensure that the minimum Java version is still properly specified in the MANIFEST.MF file to prevent compatibility issues.


8-14: Source and plugin configuration updated for Maven compatibility.

Both the required plugins container and source path have been configured with appropriate attributes for Maven integration, improving build consistency across the project.


21-21: Commonmark dependency properly configured.

The commonmark library dependency is correctly configured as an exported library, ensuring it's available to dependent plugins.


22-26: Maven classpath container properly added.

The Maven classpath container has been added with the necessary attributes, ensuring proper Maven integration for dependency management.


27-27: Output path standardized to 'bin'.

The output path has been changed from 'target/classes' to 'bin', which standardizes the build output location across the project and aligns with Eclipse plugin conventions.

bundles/com.espressif.idf.core/.classpath (5)

3-7: LGTM: JRE Container Configuration Updated

The JRE container definition has been updated with Maven attributes, which is consistent with the Maven-centric approach being adopted throughout the project.


9-14: Maven integration: Source path output configuration

The source path entry now properly specifies "bin" as the output directory and includes the necessary Maven attributes to ensure proper integration with the build system.


15-30: Reorganized dependency entries with proper attributes

The library entries have been reorganized and updated with proper source and javadoc references where applicable. The addition of commons-lang3-3.12.0.jar likely supports the LSP implementation.


33-37: Maven classpath container integration

Adding the Maven classpath container enables proper Maven dependency resolution, which is essential for the ongoing LSP dependencies update.


38-38: Output path standardization

The output path has been standardized to "bin", consistent with the source path output configuration and Eclipse plugin development best practices.

bundles/com.espressif.idf.terminal.connector/.classpath (4)

3-7: LGTM: Updated JRE container configuration

Removing the specific Java SE 17 version reference in favor of a more generic container improves flexibility and allows for easier migration between Java versions.


9-14: Enhanced source path configuration with Maven attributes

Adding the output attribute and Maven-specific attributes to the source path entry ensures proper integration with the Maven build system.


15-19: Maven classpath container added

This addition supports the Maven-centric approach being implemented across the project and ensures proper dependency resolution.


20-20: Standardized output path

Changing the output path from "target/classes" to "bin" ensures consistency with other projects in the workspace and aligns with the source output configuration.

bundles/com.espressif.idf.sdk.config.ui/.classpath (4)

3-7: LGTM: JRE Container added with Maven attributes

Adding the JRE container with Maven attributes supports the transition to a Maven-integrated build system.


9-14: Enhanced source path with Maven integration

The source path now includes proper output directory specification and Maven integration attributes, consistent with other projects in the workspace.


15-19: Maven classpath container integration

Adding the Maven classpath container ensures proper dependency resolution through Maven, supporting the LSP dependencies update.


20-20: Standardized output path

The output path has been updated to "bin", consistent with other projects and the source path configuration.

bundles/com.espressif.idf.terminal.connector.serial/.classpath (5)

3-7: LGTM: Updated JRE container configuration

The JRE container has been updated from a specific Java SE 17 reference to a more generic one, allowing for greater flexibility in Java version support.


9-14: Enhanced source path with Maven attributes

The source path now includes output directory specification and Maven integration attributes, consistent with the Maven-centric approach.


15-16: Library path maintained

The required libraries for WebSocket functionality are properly maintained in the updated classpath.


17-21: Maven classpath container added

The Maven classpath container has been added to support proper dependency resolution through Maven.


22-22: Standardized output path

The output path has been updated to "bin", consistent with other projects and aligning with Eclipse plugin development best practices.

bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java (5)

52-55: Launch target integration added to build configuration

The code now retrieves the active launch target from ILaunchBarManager, which is a good improvement that enables build configurations to be target-aware. This change supports better integration with Eclipse's launch framework and likely helps with the LSP dependency updates mentioned in the PR objectives.


56-58: Simplified control flow for default configuration

The method now returns null directly for default configurations instead of attempting to process them further. This is a cleaner approach that avoids unnecessary processing.


70-71: Launch target now passed to IDFBuildConfiguration constructor

The IDFBuildConfiguration constructor is now called with the launch target parameter. This ensures that build configurations have access to target-specific information, which is essential for LSP functionality.


119-120: Updated constructor call includes launch target

The IDFBuildConfiguration constructor is now called with the launch target parameter, which is consistent with the updated method signature. This ensures proper initialization of the build configuration with target-specific information.


107-107:

✅ Verification successful

Configuration name constant changed

Changed from using ICBuildConfiguration.DEFAULT_NAME to ICBuildConfiguration.TOOLCHAIN_ID. This could affect how build configurations are identified and managed.


🏁 Script executed:

#!/bin/bash
# Check how TOOLCHAIN_ID is defined and used elsewhere
rg "TOOLCHAIN_ID" --type java

Length of output: 1003


Verified Change: Constant Update is Consistent Across the Codebase

The update replacing ICBuildConfiguration.DEFAULT_NAME with ICBuildConfiguration.TOOLCHAIN_ID has been confirmed across multiple files. The grep output shows that TOOLCHAIN_ID is consistently used in the build configuration provider, configuration utilities, and toolchain manager classes. There appear to be no inconsistencies that could inadvertently affect how build configurations are identified. Please ensure that the runtime behavior aligns with this design change.

  • Confirmed usage in:
    • IDFBuildConfigurationProvider.java
    • RecheckConfigsHelper.java
    • IDFBuildConfiguration.java
    • ESPToolChainManager.java

Comment on lines +80 to +83
public ICBuildConfiguration createCBuildConfiguration(IProject project, IToolChain toolChain, String launchMode,
ILaunchTarget launchTarget, IProgressMonitor monitor) throws CoreException
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

API method signature changed and renamed

The method has been renamed from createBuildConfiguration to createCBuildConfiguration and a new ILaunchTarget parameter has been added. This is a breaking change that might require updates to any code calling this method.


🏁 Script executed:

#!/bin/bash
# Check for any other code that might be calling the old method signature
rg "createBuildConfiguration\(" --type java

Length of output: 231


Action Required: Update API Call to the New Method Signature

The API method in bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java was renamed from createBuildConfiguration to createCBuildConfiguration and now includes an additional ILaunchTarget parameter. However, the following call still uses the old method signature:

  • buildConfig = configManager.createBuildConfiguration(this, project, name, monitor);

Please update this invocation (and any similar references throughout the codebase) to use the new method name and include the required ILaunchTarget argument.

@kolipakakondal
Copy link
Collaborator Author

@AndriiFilippov please check

@kolipakakondal kolipakakondal added this to the v3.4.0 milestone Apr 14, 2025
@AndriiFilippov
Copy link
Collaborator

@sigmaaa @kolipakakondal hi!

Tested under: OS - Windows 11 ESP-IDF: v5.4

open .c file and restart IDE -> after restart, error:

java.lang.IllegalStateException: Unexpected null value present!
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Unexpected null value present!
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)

LOGS3.log

issue still persist.

@AndriiFilippov
Copy link
Collaborator

@sigmaaa

  1. empty project description
    image

fixed ✅

@kolipakakondal
Copy link
Collaborator Author

@sigmaaa @kolipakakondal hi!
Tested under: OS - Windows 11 ESP-IDF: v5.4
open .c file and restart IDE -> after restart, error:

java.lang.IllegalStateException: Unexpected null value present!
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Unexpected null value present!
	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)

LOGS3.log

issue still persist.

this will be fixed once the builds are available for this eclipse-lsp4e/lsp4e#1249

@sigmaaa
Copy link
Collaborator

sigmaaa commented Apr 17, 2025

Hi @kolipakakondal, @AndriiFilippov

Added JustJ dependency to the update site. Now it will be possible to update the Espressif-IDE with the update site using this option:

image

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

46-46: Remove trailing whitespace
YAML lint flags trailing spaces on this blank line, which can cause CI failures.

-    
+
🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 46-46: trailing spaces

(trailing-spaces)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6dbc42b and bcf0eaf.

📒 Files selected for processing (42)
  • .github/workflows/ci.yml (2 hunks)
  • bundles/com.espressif.idf.branding/.classpath (1 hunks)
  • bundles/com.espressif.idf.core/.classpath (1 hunks)
  • bundles/com.espressif.idf.core/META-INF/MANIFEST.MF (2 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java (2 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java (3 hunks)
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.java (2 hunks)
  • bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath (1 hunks)
  • bundles/com.espressif.idf.help/.classpath (2 hunks)
  • bundles/com.espressif.idf.launch.serial.core/.classpath (1 hunks)
  • bundles/com.espressif.idf.launch.serial.ui/.classpath (1 hunks)
  • bundles/com.espressif.idf.launch.serial.ui/src/com/espressif/idf/launch/serial/ui/internal/CMakeMainTab2.java (2 hunks)
  • bundles/com.espressif.idf.lsp/.classpath (1 hunks)
  • bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF (1 hunks)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdConfigurationAccess.xml (0 hunks)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdOptionsDefaults.xml (1 hunks)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFEditorMetadataDefaults.xml (1 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/LspPluginStartup.java (1 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdConfigurationAccess.java (0 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdMetadataDefaults.java (1 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdOptionsDefaults.java (0 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdPreferredOptions.java (0 hunks)
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFEditorMetadataDefaults.java (1 hunks)
  • bundles/com.espressif.idf.sdk.config.core/.classpath (1 hunks)
  • bundles/com.espressif.idf.sdk.config.ui/.classpath (1 hunks)
  • bundles/com.espressif.idf.serial.monitor/.classpath (2 hunks)
  • bundles/com.espressif.idf.terminal.connector.serial/.classpath (1 hunks)
  • bundles/com.espressif.idf.terminal.connector/.classpath (1 hunks)
  • bundles/com.espressif.idf.ui/.classpath (1 hunks)
  • bundles/com.espressif.idf.ui/META-INF/MANIFEST.MF (3 hunks)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/LaunchBarListener.java (1 hunks)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/CMakeBuildTab2.java (7 hunks)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/handlers/FileOpenListener.java (1 hunks)
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/templates/FormBrowser.java (2 hunks)
  • bundles/com.espressif.idf.wokwi/.classpath (1 hunks)
  • bundles/pom.xml (1 hunks)
  • docs/en/prerequisites.rst (1 hunks)
  • releng/com.espressif.idf.configuration/pom.xml (2 hunks)
  • releng/com.espressif.idf.product/idf.product (2 hunks)
  • releng/com.espressif.idf.product/pom.xml (1 hunks)
  • releng/com.espressif.idf.target/com.espressif.idf.target.target (4 hunks)
  • releng/com.espressif.idf.update/category.xml (2 hunks)
💤 Files with no reviewable changes (4)
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdConfigurationAccess.xml
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdPreferredOptions.java
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdConfigurationAccess.java
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdOptionsDefaults.java
✅ Files skipped from review due to trivial changes (7)
  • docs/en/prerequisites.rst
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/LaunchBarListener.java
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/handlers/FileOpenListener.java
  • bundles/com.espressif.idf.launch.serial.ui/.classpath
  • bundles/com.espressif.idf.branding/.classpath
  • releng/com.espressif.idf.update/category.xml
  • bundles/com.espressif.idf.wokwi/.classpath
🚧 Files skipped from review as they are similar to previous changes (28)
  • releng/com.espressif.idf.product/pom.xml
  • bundles/com.espressif.idf.launch.serial.core/.classpath
  • bundles/pom.xml
  • bundles/com.espressif.idf.core/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/LspPluginStartup.java
  • bundles/com.espressif.idf.ui/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/templates/FormBrowser.java
  • bundles/com.espressif.idf.serial.monitor/.classpath
  • bundles/com.espressif.idf.terminal.connector.serial/.classpath
  • bundles/com.espressif.idf.sdk.config.ui/.classpath
  • bundles/com.espressif.idf.help/.classpath
  • bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/dialogs/CMakeBuildTab2.java
  • releng/com.espressif.idf.configuration/pom.xml
  • bundles/com.espressif.idf.lsp/.classpath
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFClangdOptionsDefaults.xml
  • bundles/com.espressif.idf.lsp/OSGI-INF/com.espressif.idf.lsp.preferences.IDFEditorMetadataDefaults.xml
  • releng/com.espressif.idf.product/idf.product
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFEditorMetadataDefaults.java
  • bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/LspService.java
  • bundles/com.espressif.idf.terminal.connector/.classpath
  • bundles/com.espressif.idf.lsp/src/com/espressif/idf/lsp/preferences/IDFClangdMetadataDefaults.java
  • bundles/com.espressif.idf.lsp/META-INF/MANIFEST.MF
  • bundles/com.espressif.idf.sdk.config.core/.classpath
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java
  • bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java
  • bundles/com.espressif.idf.ui/.classpath
  • releng/com.espressif.idf.target/com.espressif.idf.target.target
🧰 Additional context used
🧬 Code Graph Analysis (1)
bundles/com.espressif.idf.launch.serial.ui/src/com/espressif/idf/launch/serial/ui/internal/CMakeMainTab2.java (1)
bundles/com.espressif.idf.core/src/com/espressif/idf/core/util/StringUtil.java (1)
  • StringUtil (11-25)
🪛 YAMLlint (1.35.1)
.github/workflows/ci.yml

[error] 46-46: trailing spaces

(trailing-spaces)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build_macos
🔇 Additional comments (10)
bundles/com.espressif.idf.launch.serial.ui/src/com/espressif/idf/launch/serial/ui/internal/CMakeMainTab2.java (2)

28-28: Good change to use the public interface instead of internal implementation.

Switching from the internal class CMakeBuildConfiguration to the public interface ICMakeBuildConfiguration improves code stability. Public interfaces are more stable than internal implementations, which can change without notice in future Eclipse releases.


488-488: Consistent update to use the interface constant.

This change correctly updates the attribute key to use ICMakeBuildConfiguration.CMAKE_ARGUMENTS constant from the public interface, maintaining consistency with the import change above. This is good practice for maintainability and forward compatibility.

bundles/com.espressif.idf.core/.classpath (6)

3-7: JRE container simplification improves build flexibility.

The JRE container has been simplified by removing the specific Java SE version reference and adding Maven attributes. This change supports the Java 17 to Java 21 upgrade mentioned in the PR summary while allowing Maven to manage the Java version.


8-8: Explicit PDE required plugins container added.

Adding the PDE core required plugins container early in the classpath ensures proper Eclipse plugin dependencies resolution.


9-14: Source path configuration updated for Maven compatibility.

The source path configuration now includes explicit output directory and Maven-specific attributes, improving integration with the Maven build system.


33-37: Maven classpath container added.

Adding the Maven classpath container improves integration with Maven's dependency management system, making the project more maintainable.


38-38: Output path standardized to "bin".

The output path has been changed from what was likely "target/classes" to "bin". While this deviates from Maven conventions, it aligns with traditional Eclipse plugin conventions and is consistent with other bundle updates in this PR.


15-30:

✅ Verification successful

Library entries reorganized and expanded.

The library entries have been reordered and new dependencies added (commons-lang3, snakeyaml, opencsv, etc.). This standardizes dependency management across the plugin.


🏁 Script executed:

#!/bin/bash
# Verify that the new library dependencies are properly included in the build.properties file
cat bundles/com.espressif.idf.core/build.properties | grep -E "commons-lang3|snakeyaml|opencsv|commons-beanutils|commons-text"

Length of output: 347


Confirmed new dependencies in build.properties

The following entries are present in bundles/com.espressif.idf.core/build.properties, matching the added libraries in .classpath:

  • lib/snakeyaml-1.30.jar
  • lib/opencsv-5.7.0.jar
  • lib/commons-lang3-3.12.0.jar
  • lib/commons-beanutils-1.9.4.jar
  • lib/commons-text-1.10.0.jar

Everything looks good—merging these changes.

.github/workflows/ci.yml (2)

41-46: Verify Java 21 compatibility across CI jobs
The JDK version has been bumped to Java 21 in both the Linux and macOS workflows using actions/setup-java@v4 with the temurin distribution. Please ensure:

  • All Maven plugins, project code, and custom scripts support Java 21.
  • Third-party dependencies and Eclipse/IDE plugins used in CI are compatible with JDK 21.
  • Any version checks or tooling (e.g., code-signing, test frameworks) are updated accordingly.

Also applies to: 65-68

🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 46-46: trailing spaces

(trailing-spaces)


47-48: Confirm removal of SpotBugs analysis
The Maven build step now omits the SpotBugs plugin execution and its dedicated GitHub Action. If static analysis is still required, please verify it has been re-integrated elsewhere or confirm this removal was intentional.

@AndriiFilippov
Copy link
Collaborator

@sigmaaa hi !

Tested under:
OS - Windows 11 / Mac arm64 / Linux Ubuntu

update site works ✅
LGTM 👍

@AndriiFilippov AndriiFilippov merged commit 4aec363 into master Apr 25, 2025
3 of 5 checks passed
@kolipakakondal kolipakakondal deleted the lsp3 branch May 7, 2025 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants