According to the discussion in eclipse-equinox/equinox#1327 (comment), p2 is supposed to run without the fragment "org.eclipse.osgi.compatibility.state", but at least some functions require this fragment to be available.
An example reproducing this can be found in https://github.com/pms1/p2-compatibility-state/tree/main/p2-compatibility-state.
This code calls the p2 directory. It works with the fragment. If run without the fragment, it fails with
FAIL Status ERROR: org.eclipse.equinox.p2.engine code=4 An error occurred while installing the items children=[Status ERROR: org.eclipse.equinox.p2.engine code=0 session context was:(profile=default, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]aQute.libg 7.2.3.202603250810, action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction). Status ERROR: org.eclipse.equinox.p2.engine code=0 Could not acquire the framework manipulator service. java.lang.IllegalStateException: Could not acquire the framework manipulator service.]
FAIL Status ERROR: org.eclipse.equinox.p2.engine code=0 session context was:(profile=default, phase=org.eclipse.equinox.internal.p2.engine.phases.Install, operand=null --> [R]aQute.libg 7.2.3.202603250810, action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction).
FAIL Status ERROR: org.eclipse.equinox.p2.engine code=0 Could not acquire the framework manipulator service. java.lang.IllegalStateException: Could not acquire the framework manipulator service.
java.lang.IllegalStateException: Could not acquire the framework manipulator service.
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.loadDelegate(LazyManipulator.java:51)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.LazyManipulator.getConfigData(LazyManipulator.java:122)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction.installBundle(InstallBundleAction.java:87)
at org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction.execute(InstallBundleAction.java:38)
at org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction.execute(ParameterizedProvisioningAction.java:43)
at org.eclipse.equinox.internal.p2.engine.Phase.mainPerform(Phase.java:196)
at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:102)
at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:65)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:102)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:52)
at org.eclipse.equinox.internal.provisional.p2.director.PlanExecutionHelper.executePlan(PlanExecutionHelper.java:50)
at org.eclipse.equinox.internal.provisional.p2.director.PlanExecutionHelper.executePlan(PlanExecutionHelper.java:28)
at sample.Application1.start(Application1.java:112)
This was tried with 26-06. For 26-03 I have also seen the same effect.
According to the discussion in eclipse-equinox/equinox#1327 (comment), p2 is supposed to run without the fragment "org.eclipse.osgi.compatibility.state", but at least some functions require this fragment to be available.
An example reproducing this can be found in https://github.com/pms1/p2-compatibility-state/tree/main/p2-compatibility-state.
This code calls the p2 directory. It works with the fragment. If run without the fragment, it fails with
This was tried with 26-06. For 26-03 I have also seen the same effect.