-
Notifications
You must be signed in to change notification settings - Fork 75
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
The eclipse-sdk-prereqs.target contains content with requirements that can't be resolved #775
Comments
My opinion - if not used, should be removed. At the very least we shouldn't make licensecheck verify more libraries than actually needed. |
Nothing from the target is analyzed by the license check as far as I know.
Beside that I'm not sure what the goal of this is, managing all dependencies "by hand" will just increase maintenance efforts and blow up the target, resolving inside an OSGi context is independent from target context so there is no such thing as "missing requirements" from the point of view of maven target locations. |
These will likely will be resolved when #239 lands, which is part of the bigger effort in eclipse-equinox/equinox#18. When the former lands I should also be able to complete the latter, by removing the last sources of the http packages in o.e.osgi.services and deprecating that Plugin.
As you said that is effectively handled by #682. But to make it really usable we should first complete #588. |
At this point, everything resolves if I augment the TP with these (based mostly on helpful hints from @HannesWell)
|
Describe the problem than a preset solution would allow to give more "helpful" hints ... from "others". The target obviously "resolved" before so we are probably talking about different things. Really strange to see how platform is able to even transform the maven-targets thing that was meant to simplify things into something complex that needs management, manual work, additional releng effort and even different tools... |
It seems my compliment to @HannesWell is somehow interpreted as a slight to others. That was not the intent. I think the problem is statement is pretty clearly in the title. But, more long winded, the target platform contains bundles with requirements that cannot be resolved by other things in the target platform nor by other things defined in the Platform source code. Such content cannot actually be used produce something that p2 can install. This is simply a sanity check that the target platform is logically complete. It feels to me somewhat offensive to suggest that the "platform" (whomever or whatever that is) has taken something simple and made it complex, presumably unnecessarily so. In the end, SimRel consists of 60+ project, all of which need to coordinate which versions of which common libraries are being used such that we don't end up with 3 batiks and 3 guavas. The platform is modifying its subset of ~85 directed-from-maven bundles on a semi-daily basis, and new releases of those bundles appear on an ad hoc schedule. Sometimes those new versions need license review. There is no magic wand that makes such a complex problem simple. So I'm really not sure where you are finding fault... |
This is not actually a requirement. A target only offers items that might be used to compile (not required to contain 'everything') or build other items (might or not require complete items)
This can change anytime.
Not everything in the target is meant to be installed by P2... beside that it depends on what is installed together in the EPP what things are satisfied from the current profile already.
As long as you don't modify the target version or those do not include bad version range nothing will change
As mentioned above:
|
This seems argumentative primarily for the sake of hypothetical argument and that strikes me as counter productive. It's likely pointless to point out (again) that the org.osgi.service.http* bundles are meant to be used, eventually, and then their requirements will need to be satisfied. Similarly slf4j-API version 2.0.6 is meant to be used much sooner rather than later, and again its requirements will need to be satisfied. Moreover, slf4j-nop version 1.7.36 is already in the target platform. It might well that no one wants that, but it's there nevertheless and we would not be able to create installations if it wasn't there. So yes, hypothetically not everything in the target platform needs to have requirements that resolve, but in all these specific cases the bundles are 1) not needed at all, so why specify then and why maintain them, or 2) they are actually installed or are intended to be installed by p2, so it is wrong for their requirements not to resolve and it will need to be fixed sooner or later. The flattened set of bundles is what the target platform specifies already. I did not make it that way, so no point in finding fault here in this thread. |
You initial question was
I just answered that. So if the actually question was "what do I need to include so I can install all and every bundle from the target into an empty p2 profile only using maven dependencies" then I clearly didn't understand it and my answer was hypothetical because my hypothesis was wrong from the beginning that the goal was to understand why we have items that are not strictly installable only by the definition of the
Then I also don't get what this in your initial post means:
|
I asked about the "strategy" specifically with respect to what I stated in that paragraph, i.e., "I'm not sure if there are plans to replace what's in org.eclipse.osgi.services but at this point it's rather pointless to include then when it's not possible to use them." That question was answered and addressed by this pending change: Yes, I fully understand what includeDependencyDepth means. This is how it's used by the platform: I could have omitted mentioning it at all, since I'm doing exactly what the platform is doing already. |
That is not pointless, because of how the current sdk build works, it is not really possible to consume this other ways and thus we cannot test it or make progress. Beside as mentioned, this is just API, that means I can compile against that, but at runtime i can bind to either of those and it is the choice of the package what to include, I never want it to be installed it should be provided actually. So the strategy is, we try out how far we can get and probably one time we would install the osgi provided jars instead of |
So you present theories, while the problem is actually getting fixed: |
The only "theory" I see here is that the items are pointless ... while referencing an issue that shows how these items are used to identify issues and making progress.
So can we close this? |
No. |
Thanks for that. :) Without having followed exactly who said what, AFAIK it is possible to have units in the target that actually not resolved, but that is Not noticed because Tycho only resolves whats needed by the projects in the reactor.
Do you plan to create a 'dependencies' p2-repo based on maven-targets that other Projects can consume? |
Should we probably name it orbit? Thats exactly that part I mean about "turning into something more complex"... we are using maven-deps to not needing consume them by orbit to then transform it into something like orbit ... It is and was always valid to have multiple versions of the same dependency, and this works without a problem (I have a product that has different guava + batik versions), the issues only arise because no one literally cares using proper version ranges and instead relies on platform to fixup these for them with extra ordinary burden on the releng process... |
@HannesWell Yes, a dependencies repo is what I'm prototyping; it's already working well locally, automatically composing the target platforms from multiple SimRel projects. I too think it will simplify SimRel and make it easier to coordinate versions across dozens of project. @laeubi "Should we probably name it orbit?" is just kind of offensive as I'm sure you realize when you say it. Please stop doing this. It's simply not nice. I am not asking you nor the platform to do anything for me. Quite to the contrary, I'm doing many things for the platform, among other projects. I'm helping keep versions up-to-date (and automating that), helping things be more consistent (for the benefit of SimRel), and helping improve Maven publishing (for the benefit of Tycho and many others), and so on. It's often a thankless task, but with this you are crossing the thankless line and I really don't appreciate that. It is not always valid to have multiple versions. It's perhaps usually valid, but it sometimes leads to wiring problems, when the dependencies peculate up into the API, particularly for Guava:
I'm told multiple asm versions can be problematic as well, but I don't understand that problem In any case, even when it is valid, and doesn't cause problem, it's just not desirable. So hopefully I'll be forgiven for trying to address this problem for SimRel as a whole and we won't continue to spiral off the deep end here... |
Why is it offensive to speak out the, what effectively is done here? Or how would you describe a "a dependencies repo ... to coordinate versions across dozens of project" otherwise? Why is is more offensive then constantly claiming that my concerns are "theoretical" or not "pragmatic"? That's also not "nice" weather or not it was not meant that way. Its also not "nice" to effectively contradict the efforts of @akurtakov and @mickaelistria to bring in plain-maven-dependencies in contrast to some wherever-else-managed central repro ... Anyways I wish you all the best luck and success to whatever will the outcome be as you obviously don't like to share your ideas beforehand as with the jetty-p2 repo that again was a way to turn back the wheel... you just should not assume everyone is happy with that and every criticism is meant as an offense. |
Is there anything left here or this one should be closed? |
Some of the problems are resolved or have been worked around at my end now. |
I've extracted all the direct-from-maven dependencies in eclipse-sdk-prereqs.target into a separate *.target file and am using
tycho-p2-repository-plugin
withincludeAllDependencies
configured to true to assemble a repository.https://tycho.eclipseprojects.io/doc/latest/tycho-p2/tycho-p2-repository-plugin/assemble-repository-mojo.html#includeAllDependencies
I'm doing this a test that the requirements of all the bundles actually resolve to ensure that nothing important is missing. Also, I've specified includeDependencyDepth="none" to ensure that all the artifacts are explicitly listed with specific versions (that I can analyze for available updates).
This reveal the following anomalies:
Not surprisingly, none of the bundles with these missing requirements actually appear in a 4.27 I-build's p2 update site.
For
org.osgi.service.http
andorg.osgi.service.http.whiteboard
I'm not sure if there are plans to replace what's inorg.eclipse.osgi.services
but at this point it's rather pointless to include then when it's not possible to use them.@HannesWell @laeubi Perhaps you know the strategy here and the reason for the current inclusion of these two things in the target platform?
For
org.objectweb.asm.util
we should either removeasm-util
, given it's not used, or addasm-analysis
because it requires that.@mickaelistria should we remove it or add what it requires?
For
org.slf4j.api
version 2.0.6 there is this ongoing issue:#682
The text was updated successfully, but these errors were encountered: