-
Notifications
You must be signed in to change notification settings - Fork 194
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
All statisfied requirements map to dependencies in InstallableUnitSlicer.computeDirectDependencies #3197
Comments
@merks can you explain what context are needed? ws/os and maybe system properties? |
@merks I now have analyzed the problem and it is actually a bit more complex as initially thought:
There is a project (look for example at p2Inf.hostRequireFragment, where there is a host a fragment and the host requires the fragment with a p2.inf but disable the filter with a property. The consumer requires the host and therefore should require the fragment, and do not disable this by a property. Because we compute the dependencies only once for a project, it is not included! Instead one needs to recompute the dependencies to be used based on the profile properties of the requesting project! |
While your testcase will be good to verify case (1) I think one needs a similar construct like this: to reproduce case (2) fully, where there is a bundle that wants to require another bundle (not fragment!) with p2.inf but only for one platform on a multi-platform build. Such a testcase can be quite tricky to build i fear. |
Currently all matching units are considered even if there are only a lower number to use. This adds a filtering after the initial collection phase to limit the dependencies to the max of the requirement and also adds the infrastructure to support filtering based on the profile properties. relates to eclipse-tycho#3197
Currently all matching units are considered even if there are only a lower number to use. This adds a filtering after the initial collection phase to limit the dependencies to the max of the requirement and also adds the infrastructure to support filtering based on the profile properties. relates to #3197
Currently all matching units are considered even if there are only a lower number to use. This adds a filtering after the initial collection phase to limit the dependencies to the max of the requirement and also adds the infrastructure to support filtering based on the profile properties. relates to #3197 (cherry picked from commit a350281)
Currently all matching units are considered even if there are only a lower number to use. This adds a filtering after the initial collection phase to limit the dependencies to the max of the requirement and also adds the infrastructure to support filtering based on the profile properties. relates to #3197 (cherry picked from commit a350281)
Currently the context IUs are not used to filter project requirements, this can result in dependencies that are actually disabled to be included in the project dependencies. This now removes the previous special handling of fragments by fully depend on only the context IUs and maximum requirements, for this purpose the filtering has to be made on project specific contextIUs and can't just store one collection of filtered items for all callers. Fix eclipse-tycho#3197
Currently the context IUs are not used to filter project requirements, this can result in dependencies that are actually disabled to be included in the project dependencies. This now removes the previous special handling of fragments by fully depend on only the context IUs and maximum requirements, for this purpose the filtering has to be made on project specific contextIUs and can't just store one collection of filtered items for all callers. Fix eclipse-tycho#3197
Currently the context IUs are not used to filter project requirements, this can result in dependencies that are actually disabled to be included in the project dependencies. This now removes the previous special handling of fragments by fully depend on only the context IUs and maximum requirements, for this purpose the filtering has to be made on project specific contextIUs and can't just store one collection of filtered items for all callers. Fix eclipse-tycho#3197
Currently the context IUs are not used to filter project requirements, this can result in dependencies that are actually disabled to be included in the project dependencies. This now removes the previous special handling of fragments by fully depend on only the context IUs and maximum requirements, for this purpose the filtering has to be made on project specific contextIUs and can't just store one collection of filtered items for all callers. Fix eclipse-tycho#3197
You're awesome. 🎖️ |
Currently the context IUs are not used to filter project requirements, this can result in dependencies that are actually disabled to be included in the project dependencies. This now removes the previous special handling of fragments by fully depend on only the context IUs and maximum requirements, for this purpose the filtering has to be made on project specific contextIUs and can't just store one collection of filtered items for all callers. Fix #3197
There are two cases where a requirement should not map to a dependency.
Requirement.getMax() == 0
, i.e., for so-called negative requirements.IRequirement.getFilter() != null
and the filter is no applicable.Mapping those two cases inappropriately can and does result in dependency cycles that break a build (for builds that worked for Tycho 2.x and 3.x).
Currently
org.eclipse.tycho.p2maven.InstallableUnitSlicer.computeDirectDependencies(Collection<IInstallableUnit>, IQueryable<IInstallableUnit>)
does not have enough context to determine if a filter is applicable or not, so the best we can do in the absence of such information is to assume the filter isn't applicable.The text was updated successfully, but these errors were encountered: