-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clean-up, simplify and modernize Slicer, PermissiveSlicer ans SimplePlanner #349
Conversation
this.possibilites = possibilites; | ||
this.selectionContext = selectionContext; | ||
this.considerMetaRequirements = considerMetaRequirements; | ||
slice = new HashMap<>(); | ||
result = new MultiStatus(DirectorActivator.PI_DIRECTOR, IStatus.OK, Messages.Planner_Problems_resolving_plan, null); | ||
} | ||
|
||
public IQueryable<IInstallableUnit> slice(IInstallableUnit[] ius, IProgressMonitor monitor) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is an internal class but I know that for example Tycho is using it.
Tycho can be adapted (and would actually benefit from less to-array conversion), but I wonder if there are any know other external user?
Should we keep this method or just delete it and only provide the replacement with an Collection argument?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if Oomph is not using it (@merks ?) I think it can be removed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the benefit over deleting it / replacing it with a collection type method? Beside for me it has shown that sharing such code with P2 has litte to no benefit so one maybe probably better copy that over to Tycho as it is much more flexible and there are no discussions about changes here and then...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oomph doesn't use the Slicer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if Oomph is not using it (@merks ?) I think it can be removed.
Removed it now.
What is the benefit over deleting it / replacing it with a collection type method?
Less toArray()
conversion which make the code more readable and a bit faster (but probably not measurable).
Beside for me it has shown that sharing such code with P2 has litte to no benefit so one maybe probably better copy that over to Tycho as it is much more flexible and there are no discussions about changes here and then...
I understand and agree that discussing things in multiple repos can be annoying and slowing down development, but eventually the changes should be done up-stream (which is P2 in this case). Because otherwise one probably borrows the saved time only from the future if duplicated maintenance is necessary when new features/fixes arrive or just another developers wonders why there is a copy of an up-stream class and trys merge it again. And in worst case bug-fixes got missed.
For example this is in preparation to contribute the changes made in Tycho's eclipse-tycho/tycho#2852 to P2.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That a lot "maybe" and "if" that never happened in the past, instead all kind of fruitless discussions and "but what if this breaks any consumer we don't know" has arises, see also:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could be, but I don't really see it in this case.
So is everybody fine with this change or are there objections? If not, I would like to submit this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems okay.
3cf64ba
to
149315f
Compare
fbb8c10
to
571da71
Compare
571da71
to
012d53e
Compare
} | ||
|
||
public IQueryable<IInstallableUnit> slice(IInstallableUnit[] ius, IProgressMonitor monitor) { | ||
public IQueryable<IInstallableUnit> slice(Collection<IInstallableUnit> ius, IProgressMonitor monitor) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seem to have broken the i-build:
https://ci.eclipse.org/releng/job/Builds/job/I-build-4.30/78/console
00:16:41 [ERROR] Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:4.0.4-SNAPSHOT:compile (default-compile) on project org.eclipse.pde.core: Compilation failure: Compilation failure:
00:16:41 [ERROR] /home/jenkins/agent/workspace/Builds/I-build-4.30/eclipse.platform.releng.aggregator/eclipse.platform.releng.aggregator/cje-production/gitCache/eclipse.platform.releng.aggregator/eclipse.pde/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/IUBundleContainer.java:[321]
00:16:41 [ERROR] IQueryable slice = slicer.slice(fUnits, new NullProgressMonitor());
00:16:41 [ERROR] ^^^^^
00:16:41 [ERROR] The method slice(Collection, IProgressMonitor) in the type Slicer is not applicable for the arguments (IInstallableUnit[], NullProgressMonitor)
00:16:41 [ERROR] /home/jenkins/agent/workspace/Builds/I-build-4.30/eclipse.platform.releng.aggregator/eclipse.platform.releng.aggregator/cje-production/gitCache/eclipse.platform.releng.aggregator/eclipse.pde/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/target/P2TargetUtils.java:[1364]
00:16:41 [ERROR] IQueryable slice = slicer.slice(units, subMonitor.split(50));
00:16:41 [ERROR] ^^^^^
00:16:41 [ERROR] The method slice(Collection, IProgressMonitor) in the type Slicer is not applicable for the arguments (IInstallableUnit[], SubMonitor)
00:16:41 [ERROR] 2 problems (2 errors)
00:16:41 [ERROR] -> [Help 1]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is probably unrelated to this PR but I think changing the signature of the slice
method also broke the installation process (Oomph) so I'm commenting here anyway (if you know a better place, please let me know):
I just installed a new Eclipse with the Oomph-Installer (I'm using Mac) and when it got to the point of executing manual tasks after Eclipse opened for the first time, I got this error when computing the step Modular Target:
Performing Targlets Modular Target (eclipse-sdk-prereqs + ECF Dependency + EMF Dependency + Eclipse Platform + Platform + Platform Build Tools + Platform Images + Platform Releng Aggregator + Platform Root + Platform UI + Platform Website + SWT + SWT Binaries + SWT Website), activate
...
Committing the provisioning operation.
ERROR: org.eclipse.pde.core code=0 Problems occurred while resolving the target contents
at org.eclipse.oomph.util.OomphPlugin.coreException(OomphPlugin.java:296)
at org.eclipse.oomph.util.pde.TargetPlatformUtil.activateTargetDefinition(TargetPlatformUtil.java:151)
at org.eclipse.oomph.targlets.internal.core.TargletContainer.forceUpdate(TargletContainer.java:905)
at org.eclipse.oomph.setup.targlets.impl.TargletTaskImpl$4.run(TargletTaskImpl.java:1232)
at org.eclipse.oomph.util.pde.TargetPlatformUtil.runWithTargetPlatformService(TargetPlatformUtil.java:120)
at org.eclipse.oomph.setup.targlets.impl.TargletTaskImpl.perform(TargletTaskImpl.java:1092)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer.doPerformNeededSetupTasks(SetupTaskPerformer.java:3864)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer$WorkspaceUtil$1.run(SetupTaskPerformer.java:5200)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2453)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2478)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer$WorkspaceUtil.performNeededSetupTasks(SetupTaskPerformer.java:5193)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer.performNeededSetupTasks(SetupTaskPerformer.java:3798)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer.performTriggeredSetupTasks(SetupTaskPerformer.java:3773)
at org.eclipse.oomph.setup.internal.core.SetupTaskPerformer.perform(SetupTaskPerformer.java:3651)
at org.eclipse.oomph.setup.ui.wizards.ProgressPage$9.run(ProgressPage.java:592)
at org.eclipse.oomph.setup.ui.wizards.ProgressPage$11$1.run(ProgressPage.java:721)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
ERROR: org.eclipse.oomph.targlets.core code=0 Resolution problems
ERROR: org.eclipse.oomph.targlets.core code=0 Problems resolving composed target 'eclipse-sdk-prereqs'
ERROR: org.eclipse.pde.core code=0 Problems occurred while resolving the target contents
ERROR: org.eclipse.pde.core code=0 Problems loading repositories
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit com.jcraft.jsch 0.1.55.v20230916-1400
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit com.jcraft.jsch.source 0.1.55.v20230916-1400
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.ant 1.10.14.v20230922-1200
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.ant.source 1.10.14.v20230922-1200
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.batik.css 1.17.0.v20231009-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.batik.util 1.17.0.v20231009-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.batik.i18n 1.17.0.v20231009-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.batik.constants 1.17.0.v20231009-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.batik.css.source 1.17.0.v20231009-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.batik.util.source 1.17.0.v20231009-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.batik.i18n.source 1.17.0.v20231009-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.batik.constants.source 1.17.0.v20231009-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.xmlgraphics 2.9.0.v20230916-1600
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.xmlgraphics.source 2.9.0.v20230916-1600
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.junit 4.13.2.v20230809-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.junit.source 4.13.2.v20230809-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.lucene.core 9.8.0.v20230929-1030
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.lucene.analysis-smartcn 9.8.0.v20230929-1030
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.lucene.analysis-common 9.8.0.v20230929-1030
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.lucene.core.source 9.8.0.v20230929-1030
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.lucene.analysis-smartcn.source 9.8.0.v20230929-1030
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.apache.lucene.analysis-common.source 9.8.0.v20230929-1030
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.hamcrest.core 2.2.0.v20230809-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.hamcrest.core.source 2.2.0.v20230809-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.jdom 1.1.3.v20230812-1600
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.jdom.source 1.1.3.v20230812-1600
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit com.sun.jna 5.13.0.v20230812-1000
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.eclipse.orbit.xml-apis-ext 1.0.0.v20230923-0644
ERROR: org.eclipse.pde.core code=0 Unable to locate installable unit org.eclipse.orbit.xml-apis-ext.source 1.0.0.v20230923-0644
So I opened the file eclipse-sdk-prereqs.target
present in my WS and got this error instead:
Looking closer, this is the stack trace from the event in the Error Log
java.lang.NoSuchMethodError: 'org.eclipse.equinox.p2.query.IQueryable org.eclipse.equinox.internal.p2.director.PermissiveSlicer.slice(java.util.Collection, org.eclipse.core.runtime.IProgressMonitor)'
at org.eclipse.pde.internal.core.target.P2TargetUtils.slice(P2TargetUtils.java:1364)
at org.eclipse.pde.internal.core.target.P2TargetUtils.resolveWithSlicer(P2TargetUtils.java:1284)
at org.eclipse.pde.internal.core.target.P2TargetUtils.synchronize(P2TargetUtils.java:831)
at org.eclipse.pde.internal.core.target.TargetDefinition.resolve(TargetDefinition.java:404)
at org.eclipse.pde.internal.ui.editor.targetdefinition.TargetEditor$TargetChangedListener$1.run(TargetEditor.java:651)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
I noticed that the missing method is actually the new version of slice
i.e. the one with the Collection
in the parameters, which is odd.
Any idea how to fix this?
About the Oomph Installer
- Version: 1.26.0 Build 5632
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The missing new methods does looks odd indeed. At this point it looks like you would have to run the p2 task to update the installation. Another workaround is to delete this part of the task (the one that composed the actual *.target file) temporarily:
I've lost count of how many times the resolution of the Platform's real *.target causes problem. It's certainly very good that one can get any target platform updates immediately rather than wait for the next I-Build, but very frustrating how often PDE fails to resolve it. Perhaps I need to do something in Oomph to be able to ignore failures...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just for the record PDE was fixed with eclipse-pde/eclipse.pde#808.
Any idea how to fix this?
From the exception and the screenshot of the installed product I assume your installation has not the latest (I-Build) version of the org.eclipse.equinox.p2.director
installed but somehow has the latest (I-build) version of o.e.pde.core
?
Can you provide the exact version (including qualifier) of both bundles from the 'About' dialog?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've lost count of how many times the resolution of the Platform's real *.target causes problem. It's certainly very good that one can get any target platform updates immediately rather than wait for the next I-Build, but very frustrating how often PDE fails to resolve it. Perhaps I need to do something in Oomph to be able to ignore failures...
Sadly I noticed that as well.
I could solve the resolution errors if I manually opended the prerequ-sdk target in the editor and after the resolution completed run the Oomph-Setup again.
Maybe the equivalent can be done in Oomph automatically? I can look-up the code or create a PR for Oomph if you like.
In general I already started to look into making the target-platform resolution more stable in PDE and preventing the quirks of unncessary re-resolved profiles, I already found a few things that are very likely causing problems but I'm currently busy with other things (i.e. the Windows-Defender auto-fix) so it might take a bit until I can complete these fixes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The problem persist even after a 2nd and a 3rd attempt today, This is what I tried:
2nd attempt: I ran Help > Perform setup tasks today --> only the version of the o.e.pde.core
got upgraded to 3.17.200.v20231023-0618 (o.e.equinox...
remained the same)
3rd attempt: I downloaded the newest Oomph installer (1.31.0 Build 213
) and installed from scratch --> same result: o.e.pde.core
got upgraded to 3.17.200.v20231023-0618 and o.e.equinox...
remained the same.
How inconvenient, this effectively keeps me from contributing from my Mac :-\
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I ran the p2 director task yesterday and see this version installed:
The director task is installing from these sites:
There is definitely a new version of the p2 director bundle in that repository. Moreover, I have no idea which of those repositories could (does) provide an older version...
Can you show a screen grab of the p2 director task details?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also see https://download.eclipse.org/eclipse/updates/4.30-I-builds in the P2 Director task when performing the setup tasks.
And here is the full log after I perform the setup tasks: fullLog.txt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now it's clear what the problem is!
You did not really use the configuration:
So you did not install the Eclipse SDK product as specified in the configuration:
Instead you installed the Eclipse Committers product. So you have a combination of content that's installed from the EPP/SimRel M1 along with content installed from the 4.30 I-Builds. That's because the products have some very specific ranges on things that are intended never to be uninstalled from such a product:
If you're going to do things a bit more manually, be sure to use the Eclipse SDK product:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No description provided.