-
Notifications
You must be signed in to change notification settings - Fork 10
Update versions of dependencies #161
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
Conversation
| <import plugin="org.eclipse.collections.api"/> | ||
| <import plugin="org.eclipse.collections.impl"/> |
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.
| <import plugin="org.eclipse.collections.api"/> | |
| <import plugin="org.eclipse.collections.impl"/> | |
| <import plugin="org.eclipse.collections.impl"/> |
I assume the API is already referenced somehow and does not needs to be listed explicitly?
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.
Yes, I think one doesn't generally need to specify such things in the feature.xml if some bundle already has such a dependency anyway and if both these things are needed then the bundle should require both...
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.
Typically the impl bundle is not referenced directly but only the api bundle. In the older versions of Eclipse Collections the factory.primitive bundle was not available in the api bundle, which is why there is such a dependency to impl in NatTable. But it seems that was fixed with 11.1.0 already. So I will change that now too.
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.
Typically the impl bundle is not referenced directly but only the api bundle
From OSGi point of view it would be good to have a require capability and corresponding provided capability then, e.g. like we did for SWT here:
- https://github.com/eclipse-platform/eclipse.platform.swt/blob/a413b4b7a52571c311aa333e4d7394b66f6b9a76/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF#L15
- https://github.com/eclipse-platform/eclipse.platform.ui/blob/f7d94e22f91c78aaec56663452d49199cfdd5cc8/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF#L43
then if someone uses the API it will get at least one implementation.
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.
They have pretty extensive capability headers.
Require-Capability: osgi.extender;filter:="(&(osgi.extender=osgi.service
loader.processor)(version>=1.0.0)(!(version>=2.0.0)))",osgi.serviceload
er;filter:="(osgi.serviceloader=org.eclipse.collections.api.factory.bag
.ImmutableBagFactory)";...
Provide-Capability: osgi.service;objectClass:List<String>="org.eclipse.c
ollections.api.factory.bag.ImmutableBagFactory";effective:=active,...
That was actually my main contribution to Eclipse Collections. Using bndtools to generate the manifest files for correct SPI headers.
Does that mean I can also remove the IMPL dependency?
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.
It seems to be the case ...
| <requires> | ||
| <import plugin="ca.odell.glazedlists"/> | ||
| <import plugin="org.apache.commons.commons-codec"/> | ||
| </requires> |
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.
| <requires> | |
| <import plugin="ca.odell.glazedlists"/> | |
| <import plugin="org.apache.commons.commons-codec"/> | |
| </requires> | |
| <requires> | |
| <import plugin="ca.odell.glazedlists"/> | |
| <import plugin="org.apache.commons.commons-codec"/> | |
| </requires> |
I would assume both are anyways required by some import-package/require bundle so no need to list them here.
| <requires> | ||
| <import plugin="org.apache.commons.lang3"/> | ||
| <import plugin="org.apache.commons.text"/> | ||
| <import plugin="org.eclipse.nebula.cwt"/> | ||
| <import plugin="org.eclipse.nebula.widgets.cdatetime"/> | ||
| <import plugin="org.eclipse.nebula.widgets.richtext"/> | ||
| </requires> |
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.
| <requires> | |
| <import plugin="org.apache.commons.lang3"/> | |
| <import plugin="org.apache.commons.text"/> | |
| <import plugin="org.eclipse.nebula.cwt"/> | |
| <import plugin="org.eclipse.nebula.widgets.cdatetime"/> | |
| <import plugin="org.eclipse.nebula.widgets.richtext"/> | |
| </requires> |
These are also likely not independently required?
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.
Yes, less is more.
| <requires> | ||
| <import plugin="org.apache.commons.commons-collections4"/> | ||
| <import plugin="org.apache.commons.commons-compress"/> | ||
| <import plugin="org.apache.commons.commons-io"/> | ||
| <import plugin="org.apache.logging.log4j.api"/> | ||
| <import plugin="org.apache.commons.math3"/> | ||
| <import plugin="org.apache.xmlbeans"/> | ||
| <import plugin="org.apache.poi"/> | ||
| <import plugin="org.apache.poi.ooxml"/> | ||
| <import plugin="org.apache.poi.ooxml.schemas"/> | ||
| <import plugin="com.zaxxer.sparsebits"/> | ||
| </requires> |
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.
At least some here seem not needed as they are already transitively required.
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.
Move all such 3rd party things to a feature not consumed by end users.
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.
Does it need to be a feature, or can those dependencies also be added as bundles in a new category?
| <unit id="org.eclipse.collections.api" version="12.0.0"/> | ||
| <unit id="org.eclipse.collections.impl" version="12.0.0"/> | ||
| <unit id="org.apache.aries.spifly.dynamic.bundle" version="0.0.0"/> |
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.
Should these really be consumed from nat table or are these more dependencies of this project and can be added e.g. as maven coordinates or consumed from the original update sites directly?
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.
For the 12.0.0 version there is no original update site. Seems that was missed and is only available for the 13.0.0. But of course I can use the maven coordinates.
merks
left a comment
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 see no changes to the category.xml so I doubt very much your repository will contain all the necessary 3rd party (non-project) dependencies that are needed by nattable. It's of course fine not to include things from the Platform, but you really need to ensure that folks can install or create a target platform from nattable and all the transitive dependencies.
d3206ff to
7d3d85f
Compare
|
@laeubi @merks Is the state of this PR now fine, or should I modify something? In the past I would have added something like "third-party-dependency-features", but if I understand correctly, this is not really necessary anymore, right? |
|
@fipro78 just in case instead of adding a handcrafted set of dependencies to a
That way you will end up with a minimal update site where user can install whatever is required transitively (if not already there) optionally including the sources. |
|
If I change the packaging to p2-maven-repository and add this plugin configuration in the update-site pom.xml I get an almost empty update site. I only see the DataSet category and there are only the artifacts.xml and the content.xml file. So probably I am doing things wrong. Any hints? |
This mostly is to be used for plain maven builds (well it should also work for Tycho builds ...), just keep everything as before (e.g. |
7d3d85f to
298b515
Compare
|
@laeubi @merks |
With this PR the following changes are intended:
@merks and @laeubi
Are these the changes we discussed in the Eclipse Collections PR? Or should I change something to make NatTable better consumeable and integrateable?