From 4aa793a6515f30fbb92090e2431dc7132c5cb971 Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Tue, 21 Nov 2023 13:57:24 -0500 Subject: [PATCH] Use the bundle providing javax.activation package in simrel (#626) Because javax.activation 1.2.2.v20221203-1659 is in SimRel (for now) it gets picked by p2 over jakarta.activation-api 1.2.2 which provides the same packages. As and when we update to Jave EE 9 (IIUC) we should be able to solve this in a cleaner way and not rely on the old orbit bundles. Also, if and when all projects contributing to simrel remove 1.2.2.v20221203-1659 then we can change too. The other option is to try to force the jakarta.activation-api 1.2.2 into simrel and the EPP packages, but if we accidentally end up with both in a product then other things don't work, e.g. like this error:
frame work error details ```java !ENTRY org.eclipse.cdt.debug.application 4 0 2023-11-20 15:06:47.456 !MESSAGE FrameworkEvent ERROR !STACK 0 org.osgi.framework.BundleException: Could not resolve module: org.eclipse.cdt.debug.application [101] Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf; bundle-version="2.4.0" -> Bundle-SymbolicName: org.eclipse.cdt.dsf; bundle-version="2.12.0.202211062329"; singleton:="true" org.eclipse.cdt.dsf [116] No resolution report for the bundle. Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf.ui; bundle-version="2.4.0" -> Bundle-SymbolicName: org.eclipse.cdt.dsf.ui; bundle-version="2.7.200.202311031553"; singleton:="true" org.eclipse.cdt.dsf.ui [119] Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf; bundle-version="2.0.0" -> Bundle-SymbolicName: org.eclipse.cdt.dsf; bundle-version="2.12.0.202211062329"; singleton:="true" Unresolved requirement: Require-Bundle: org.eclipse.cdt.gdb; bundle-version="7.0.0" -> Bundle-SymbolicName: org.eclipse.cdt.gdb; bundle-version="7.2.100.202303140100"; singleton:="true" org.eclipse.cdt.gdb [121] No resolution report for the bundle. Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf.gdb.ui; bundle-version="2.4.0" -> Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb.ui; bundle-version="2.8.300.202309151124"; singleton:="true" org.eclipse.cdt.dsf.gdb.ui [118] Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf.ui -> Bundle-SymbolicName: org.eclipse.cdt.dsf.ui; bundle-version="2.7.200.202311031553"; singleton:="true" Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf.gdb; bundle-version="[7.0.0,8.0.0)" -> Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb; bundle-version="7.1.200.202309151124"; singleton:="true" org.eclipse.cdt.dsf.gdb [117] Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf -> Bundle-SymbolicName: org.eclipse.cdt.dsf; bundle-version="2.12.0.202211062329"; singleton:="true" Unresolved requirement: Require-Bundle: org.eclipse.cdt.native.serial; bundle-version="1.1.100" -> Bundle-SymbolicName: org.eclipse.cdt.native.serial; bundle-version="11.4.0.202311201859" org.eclipse.cdt.native.serial [141] No resolution report for the bundle. Unresolved requirement: Require-Bundle: org.eclipse.cdt.gdb; bundle-version="7.0.0" -> Bundle-SymbolicName: org.eclipse.cdt.gdb; bundle-version="7.2.100.202303140100"; singleton:="true" Unresolved requirement: Require-Bundle: org.eclipse.cdt.native.serial; bundle-version="1.1.100" -> Bundle-SymbolicName: org.eclipse.cdt.native.serial; bundle-version="11.4.0.202311201859" Unresolved requirement: Require-Bundle: org.eclipse.tm.terminal.control; bundle-version="4.0.0" -> Bundle-SymbolicName: org.eclipse.tm.terminal.control; bundle-version="5.5.100.202311142253"; singleton:="true" org.eclipse.tm.terminal.control [506] No resolution report for the bundle. Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf -> Bundle-SymbolicName: org.eclipse.cdt.dsf; bundle-version="2.12.0.202211062329"; singleton:="true" Unresolved requirement: Require-Bundle: jakarta.activation-api; bundle-version="[1.2.2,2.0.0)" -> Bundle-SymbolicName: jakarta.activation-api; bundle-version="1.2.2" jakarta.activation-api [30] No resolution report for the bundle. Unresolved requirement: Require-Bundle: org.eclipse.cdt.dsf.gdb; bundle-version="4.2.0" -> Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb; bundle-version="7.1.200.202309151124"; singleton:="true" Unresolved requirement: Require-Bundle: org.eclipse.cdt.gdb.ui; bundle-version="7.0.0" -> Bundle-SymbolicName: org.eclipse.cdt.gdb.ui; bundle-version="7.2.0.202211062329"; singleton:="true" org.eclipse.cdt.gdb.ui [122] No resolution report for the bundle. Bundle was not resolved because of a uses constraint violation. org.apache.felix.resolver.reason.ReasonException: Uses constraint violation. Unable to resolve resource org.eclipse.cdt.debug.application [osgi.identity; osgi.identity="org.eclipse.cdt.debug.application"; type="osgi.bundle"; version:Version="11.4.0.202311201855"; singleton:="true"] because it is exposed to package 'javax.activation' from resources jakarta.activation-api [osgi.identity; osgi.identity="jakarta.activation-api"; type="osgi.bundle"; version:Version="1.2.2"] and javax.activation [osgi.identity; osgi.identity="javax.activation"; type="osgi.bundle"; version:Version="1.2.2.v20221203-1659"] via two dependency chains. Chain 1: org.eclipse.cdt.debug.application [osgi.identity; osgi.identity="org.eclipse.cdt.debug.application"; type="osgi.bundle"; version:Version="11.4.0.202311201855"; singleton:="true"] require: (&(osgi.wiring.bundle=jakarta.activation-api)(&(bundle-version>=1.2.2)(!(bundle-version>=2.0.0)))) | provide: osgi.wiring.bundle: jakarta.activation-api jakarta.activation-api [osgi.identity; osgi.identity="jakarta.activation-api"; type="osgi.bundle"; version:Version="1.2.2"] Chain 2: org.eclipse.cdt.debug.application [osgi.identity; osgi.identity="org.eclipse.cdt.debug.application"; type="osgi.bundle"; version:Version="11.4.0.202311201855"; singleton:="true"] require: (&(osgi.wiring.bundle=jakarta.xml.bind-api)(&(bundle-version>=2.3.3)(!(bundle-version>=3.0.0)))) | provide: osgi.wiring.bundle; bundle-version:Version="2.3.3"; osgi.wiring.bundle="jakarta.xml.bind-api" jakarta.xml.bind-api [osgi.identity; osgi.identity="jakarta.xml.bind-api"; type="osgi.bundle"; version:Version="2.3.3"] import: (osgi.wiring.package=javax.activation) | export: osgi.wiring.package: javax.activation javax.activation [osgi.identity; osgi.identity="javax.activation"; type="osgi.bundle"; version:Version="1.2.2.v20221203-1659"] at org.eclipse.osgi.container.Module.start(Module.java:463) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1852) at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1845) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1786) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1750) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1672) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) ```
The underlying problem here is that the debug application's "product" that gets converted to a config.ini at CDT build time doesn't expose its dependencies fully to p2, so we end up with a built product in EPP that doesn't have everything listed in config.ini. There is significant maintenance overhead and it is growing to keeping standalone as it is now working. Other options should probably be considered, such as using the config of the full product when launching. Fixes #591 --- .../debug.product | 2 +- .../META-INF/MANIFEST.MF | 5 +---- releng/org.eclipse.cdt.repo/category.xml | 2 +- releng/org.eclipse.cdt.target/cdt.target | 9 ++++++++- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.application.product/debug.product b/debug/org.eclipse.cdt.debug.application.product/debug.product index f9e1b7a9094..be6577b8992 100644 --- a/debug/org.eclipse.cdt.debug.application.product/debug.product +++ b/debug/org.eclipse.cdt.debug.application.product/debug.product @@ -190,10 +190,10 @@ Java and all Java-based trademarks are trademarks of Oracle Corporation in the U - + diff --git a/debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF index e5dee32c617..463018d5074 100644 --- a/debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF +++ b/debug/org.eclipse.cdt.debug.application/META-INF/MANIFEST.MF @@ -20,10 +20,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.cdt.managedbuilder.core;bundle-version="8.2.1", org.eclipse.cdt.managedbuilder.gnu.ui;bundle-version="8.2.0", org.eclipse.cdt.debug.core, - org.eclipse.ui.workbench, - org.eclipse.orbit.xml-apis-ext, - jakarta.activation-api;bundle-version="[1.2.2,2.0.0)", - jakarta.xml.bind-api;bundle-version="[2.3.3,3.0.0)" + org.eclipse.ui.workbench Bundle-RequiredExecutionEnvironment: JavaSE-17 Bundle-Localization: plugin Bundle-ActivationPolicy: lazy diff --git a/releng/org.eclipse.cdt.repo/category.xml b/releng/org.eclipse.cdt.repo/category.xml index 9695f878a2e..08481d8d226 100644 --- a/releng/org.eclipse.cdt.repo/category.xml +++ b/releng/org.eclipse.cdt.repo/category.xml @@ -186,7 +186,7 @@ - + diff --git a/releng/org.eclipse.cdt.target/cdt.target b/releng/org.eclipse.cdt.target/cdt.target index dcc513992ff..4aa6d4109b3 100644 --- a/releng/org.eclipse.cdt.target/cdt.target +++ b/releng/org.eclipse.cdt.target/cdt.target @@ -1,6 +1,6 @@ - + @@ -204,6 +204,13 @@ + + + + + + +