>> Considering this, lowering a lower bound of an Import-Package >> statement when resolving should be acknowledged as a bug. >> > I beg to differ ... > > As said, you can set the consumer/provider policy to your desired > strategy. > So having default settings in the tool that cause a behavior that does not comply with the specification should not be considered a bug?
- Michael > > Kind regards, > > Peter Kriens > >> On 18 Jun 2019, at 10:33, Michael Lipp <m...@mnl.de >> <mailto:m...@mnl.de>> wrote: >> >> >>> >>> I expect there are two things at play. First, OSGi specifies things >>> as you indicate. An import of [1.2.3.qualifier,2) must not select >>> anything lower than 1.2.3.qualifier. Second, bnd does have >>> heuristics that do drop the qualifier and micro part in calculating >>> the import ranges from the exports on the class path. >> >> Thanks for the clarification, I think this explains things. >> >>> [...] >>> >>> Conclusion, the spec is perfect but the implementations apply >>> heuristics and may have bugs. >> >> The specification says (or defines, if you like): "|micro| - A change >> that does not affect the API, for example, a typo in a comment or a >> bug fix in an implementation." It explicitly invites the developer to >> indicate a bug fix by incrementing the micro part. There's no hint or >> requirement that he should increment the minor part to reflect a bug >> fix. I do not find your statement "The definition of the micro >> version is that it should not make a difference in runtime" to be >> supported by the spec or the Semantic Versioning Whitepaper. >> Actually, this interpretation would restrict the usage of the micro >> part to documentation changes because every bug fix changes the >> runtime behavior. This is, after all, what it is intended to do. >> >> Considering this, lowering a lower bound of an Import-Package >> statement when resolving should be acknowledged as a bug. >> >> - Michael >> >> >>> >>> Kind regards, >>> >>> Peter Kriens >>> >>>> On 17 Jun 2019, at 12:14, Michael Lipp via osgi-dev >>>> <osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>> wrote: >>>> >>>> Hi, >>>> >>>> I have in my repository a bundle A-2.0.1 that exports packages with >>>> version 2.0.1 and a bundle A-2.0.3 that exports these packages with >>>> version 2.0.3. Version A-2.0.3 fixes a bug. >>>> >>>> I have a bundle B that imports the packages from A with import >>>> statements "... version=[2.0.3,3)" because the bug fix is crucial for >>>> the proper working of B. >>>> >>>> Clicking on "Resolve" in bndtools, I get a resolution with bundle >>>> A-2.0.1. I understand that this complies with the specification ("It is >>>> recommended to ignore the micro part of the version because systems >>>> tend >>>> to become very rigid if they require the latest bug fix to be deployed >>>> all the time."). >>>> >>>> What I don't understand is the rationale. I don't see any drawbacks in >>>> deploying the latest bug fix. Of course, there's always the risk of >>>> introducing a new bug with a new version, even if it is supposed to >>>> only >>>> fix a bug in the previous version. But if you're afraid of this, >>>> you may >>>> also not allow imports with version ranges such as "[1.0,2)" (for >>>> consumers). >>>> >>>> In my case, I now have to distribute bundle B with a release note to >>>> configure the resolution in such a way that only A 2.0.3 and up is >>>> used. >>>> Something that you would expect to happen automatically looking at the >>>> import statement. And if I want to make sure that the release note is >>>> not overlooked, the only way seems to be to check the version of "A" at >>>> run-time in the activation of "B". This is downright ugly. >>>> >>>> - Michael >>>> >>>> >>>> _______________________________________________ >>>> OSGi Developer Mail List >>>> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org> >>>> https://mail.osgi.org/mailman/listinfo/osgi-dev >>> >> >
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev