You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by Konrad Windszus <ko...@gmx.de> on 2018/04/06 06:32:26 UTC
Bundle version for SNAPSHOTs generated by bnd-maven-plugin
I am just migrating the OSGi Installer HC (https://github.com/apache/sling-org-apache-sling-installer-hc/) to the bnd-maven-plugin and I observed one difference to the maven-bundle-plugin:
The bundle version for SNAPSHOTs by default looks like "1.0.1.<Timestamp>" instead of "1.0.1.SNAPSHOT" (as it was with the maven-bundle-plugin).
The reason for that is this line: https://github.com/bndtools/bnd/blob/d7511968b0ec96f1bec5bd3de59f8010cb3cb9f1/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndMavenPlugin.java#L262 wich
sets the snapshot instruction to the timestamp (http://bnd.bndtools.org/instructions/snapshot.html). This leads to the SNAPSHOT qualifier in the version being replaced by the timestamp in the generated bundle version.
This is IMHO problematic in combination with the OSGi Installer, as that behaves differently when it detects a SNAPSHOT (https://github.com/apache/sling-org-apache-sling-installer-core/blob/1561f5e626bab4859b4c060ef1bec06026018f18/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInfo.java#L109).
Should we configure all our bundles in a way that SNAPSHOT in the version is not being replaced, or can we come up with a more intelligent solution in the OSGi Installer?
I noticed that in the manifest we have in addition still "Implementation-Version: 1.0.1-SNAPSHOT" on which we could maybe base the SNAPSHOT detection of the OSGi Installer.
WDYT?
Konrad
Re: Bundle version for SNAPSHOTs generated by bnd-maven-plugin
Posted by Bertrand Delacretaz <bd...@apache.org>.
Hi,
On Fri, Apr 6, 2018 at 8:32 AM, Konrad Windszus <ko...@gmx.de> wrote:
> ...Should we configure all our bundles in a way that SNAPSHOT in the version is not being replaced...
I think we should keep the -SNAPSHOT version suffix as is, for
backwards compatibility reasons.
-Bertrand
Re: Bundle version for SNAPSHOTs generated by bnd-maven-plugin
Posted by Konrad Windszus <ko...@gmx.de>.
I added this requirement now to the newly created https://issues.apache.org/jira/browse/SLING-7575 <https://issues.apache.org/jira/browse/SLING-7575>. We are blocked though by https://github.com/bndtools/bnd/issues/2265 <https://github.com/bndtools/bnd/issues/2265> (until the release of bnd-maven-plugin 4.0).
Feel free to extend the list of common bnd instructions which should in the future be defined in our parent pom.
Thanks,
Konrad
> On 9. Apr 2018, at 16:30, Justin Edelson <ju...@justinedelson.com> wrote:
>
> Oh yeah, then that's a problem. It really should be epoch-based IMO.
>
> On Mon, Apr 9, 2018 at 10:28 AM Konrad Windszus <ko...@gmx.de> wrote:
>
>> By default the timestamp is having the format "yyyyMMddHHmm" (
>> http://bnd.bndtools.org/macros/tstamp.html <
>> http://bnd.bndtools.org/macros/tstamp.html>), this could be a problem in
>> certain cases where you redeploy two builds within the same minute.
>>
>>
>>> On 9. Apr 2018, at 15:55, Justin Edelson <ju...@justinedelson.com>
>> wrote:
>>>
>>> I'm not sure this is problematic from the perspective of the installer.
>> The
>>> point of the different SNAPSHOT handling is to support the use case of
>>> updating a bundle with the *same* bundle version. However, if the bundle
>>> versions are including a timestamp, it isn't needed since the bundle
>>> versions would be constantly increasing.
>>>
>>> Now there could be a problem if the timestamp somehow not taking
>> timezones
>>> into account, but assuming it is UNIX epoch based, then this won't be an
>>> issue.
>>>
>>> Regards,
>>> Justin
>>>
>>> On Fri, Apr 6, 2018 at 2:32 AM Konrad Windszus <ko...@gmx.de> wrote:
>>>
>>>> I am just migrating the OSGi Installer HC (
>>>> https://github.com/apache/sling-org-apache-sling-installer-hc/) to the
>>>> bnd-maven-plugin and I observed one difference to the
>> maven-bundle-plugin:
>>>>
>>>> The bundle version for SNAPSHOTs by default looks like
>> "1.0.1.<Timestamp>"
>>>> instead of "1.0.1.SNAPSHOT" (as it was with the maven-bundle-plugin).
>>>> The reason for that is this line:
>>>>
>> https://github.com/bndtools/bnd/blob/d7511968b0ec96f1bec5bd3de59f8010cb3cb9f1/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndMavenPlugin.java#L262
>>>> wich
>>>> sets the snapshot instruction to the timestamp (
>>>> http://bnd.bndtools.org/instructions/snapshot.html). This leads to the
>>>> SNAPSHOT qualifier in the version being replaced by the timestamp in the
>>>> generated bundle version.
>>>>
>>>> This is IMHO problematic in combination with the OSGi Installer, as that
>>>> behaves differently when it detects a SNAPSHOT (
>>>>
>> https://github.com/apache/sling-org-apache-sling-installer-core/blob/1561f5e626bab4859b4c060ef1bec06026018f18/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInfo.java#L109
>>>> ).
>>>>
>>>> Should we configure all our bundles in a way that SNAPSHOT in the
>> version
>>>> is not being replaced, or can we come up with a more intelligent
>> solution
>>>> in the OSGi Installer?
>>>> I noticed that in the manifest we have in addition still
>>>> "Implementation-Version: 1.0.1-SNAPSHOT" on which we could maybe base
>> the
>>>> SNAPSHOT detection of the OSGi Installer.
>>>>
>>>> WDYT?
>>>> Konrad
>>>>
>>>>
>>>>
>>
>>
Re: Bundle version for SNAPSHOTs generated by bnd-maven-plugin
Posted by Justin Edelson <ju...@justinedelson.com>.
Oh yeah, then that's a problem. It really should be epoch-based IMO.
On Mon, Apr 9, 2018 at 10:28 AM Konrad Windszus <ko...@gmx.de> wrote:
> By default the timestamp is having the format "yyyyMMddHHmm" (
> http://bnd.bndtools.org/macros/tstamp.html <
> http://bnd.bndtools.org/macros/tstamp.html>), this could be a problem in
> certain cases where you redeploy two builds within the same minute.
>
>
> > On 9. Apr 2018, at 15:55, Justin Edelson <ju...@justinedelson.com>
> wrote:
> >
> > I'm not sure this is problematic from the perspective of the installer.
> The
> > point of the different SNAPSHOT handling is to support the use case of
> > updating a bundle with the *same* bundle version. However, if the bundle
> > versions are including a timestamp, it isn't needed since the bundle
> > versions would be constantly increasing.
> >
> > Now there could be a problem if the timestamp somehow not taking
> timezones
> > into account, but assuming it is UNIX epoch based, then this won't be an
> > issue.
> >
> > Regards,
> > Justin
> >
> > On Fri, Apr 6, 2018 at 2:32 AM Konrad Windszus <ko...@gmx.de> wrote:
> >
> >> I am just migrating the OSGi Installer HC (
> >> https://github.com/apache/sling-org-apache-sling-installer-hc/) to the
> >> bnd-maven-plugin and I observed one difference to the
> maven-bundle-plugin:
> >>
> >> The bundle version for SNAPSHOTs by default looks like
> "1.0.1.<Timestamp>"
> >> instead of "1.0.1.SNAPSHOT" (as it was with the maven-bundle-plugin).
> >> The reason for that is this line:
> >>
> https://github.com/bndtools/bnd/blob/d7511968b0ec96f1bec5bd3de59f8010cb3cb9f1/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndMavenPlugin.java#L262
> >> wich
> >> sets the snapshot instruction to the timestamp (
> >> http://bnd.bndtools.org/instructions/snapshot.html). This leads to the
> >> SNAPSHOT qualifier in the version being replaced by the timestamp in the
> >> generated bundle version.
> >>
> >> This is IMHO problematic in combination with the OSGi Installer, as that
> >> behaves differently when it detects a SNAPSHOT (
> >>
> https://github.com/apache/sling-org-apache-sling-installer-core/blob/1561f5e626bab4859b4c060ef1bec06026018f18/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInfo.java#L109
> >> ).
> >>
> >> Should we configure all our bundles in a way that SNAPSHOT in the
> version
> >> is not being replaced, or can we come up with a more intelligent
> solution
> >> in the OSGi Installer?
> >> I noticed that in the manifest we have in addition still
> >> "Implementation-Version: 1.0.1-SNAPSHOT" on which we could maybe base
> the
> >> SNAPSHOT detection of the OSGi Installer.
> >>
> >> WDYT?
> >> Konrad
> >>
> >>
> >>
>
>
Re: Bundle version for SNAPSHOTs generated by bnd-maven-plugin
Posted by Konrad Windszus <ko...@gmx.de>.
By default the timestamp is having the format "yyyyMMddHHmm" (http://bnd.bndtools.org/macros/tstamp.html <http://bnd.bndtools.org/macros/tstamp.html>), this could be a problem in certain cases where you redeploy two builds within the same minute.
> On 9. Apr 2018, at 15:55, Justin Edelson <ju...@justinedelson.com> wrote:
>
> I'm not sure this is problematic from the perspective of the installer. The
> point of the different SNAPSHOT handling is to support the use case of
> updating a bundle with the *same* bundle version. However, if the bundle
> versions are including a timestamp, it isn't needed since the bundle
> versions would be constantly increasing.
>
> Now there could be a problem if the timestamp somehow not taking timezones
> into account, but assuming it is UNIX epoch based, then this won't be an
> issue.
>
> Regards,
> Justin
>
> On Fri, Apr 6, 2018 at 2:32 AM Konrad Windszus <ko...@gmx.de> wrote:
>
>> I am just migrating the OSGi Installer HC (
>> https://github.com/apache/sling-org-apache-sling-installer-hc/) to the
>> bnd-maven-plugin and I observed one difference to the maven-bundle-plugin:
>>
>> The bundle version for SNAPSHOTs by default looks like "1.0.1.<Timestamp>"
>> instead of "1.0.1.SNAPSHOT" (as it was with the maven-bundle-plugin).
>> The reason for that is this line:
>> https://github.com/bndtools/bnd/blob/d7511968b0ec96f1bec5bd3de59f8010cb3cb9f1/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndMavenPlugin.java#L262
>> wich
>> sets the snapshot instruction to the timestamp (
>> http://bnd.bndtools.org/instructions/snapshot.html). This leads to the
>> SNAPSHOT qualifier in the version being replaced by the timestamp in the
>> generated bundle version.
>>
>> This is IMHO problematic in combination with the OSGi Installer, as that
>> behaves differently when it detects a SNAPSHOT (
>> https://github.com/apache/sling-org-apache-sling-installer-core/blob/1561f5e626bab4859b4c060ef1bec06026018f18/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInfo.java#L109
>> ).
>>
>> Should we configure all our bundles in a way that SNAPSHOT in the version
>> is not being replaced, or can we come up with a more intelligent solution
>> in the OSGi Installer?
>> I noticed that in the manifest we have in addition still
>> "Implementation-Version: 1.0.1-SNAPSHOT" on which we could maybe base the
>> SNAPSHOT detection of the OSGi Installer.
>>
>> WDYT?
>> Konrad
>>
>>
>>
Re: Bundle version for SNAPSHOTs generated by bnd-maven-plugin
Posted by Justin Edelson <ju...@justinedelson.com>.
I'm not sure this is problematic from the perspective of the installer. The
point of the different SNAPSHOT handling is to support the use case of
updating a bundle with the *same* bundle version. However, if the bundle
versions are including a timestamp, it isn't needed since the bundle
versions would be constantly increasing.
Now there could be a problem if the timestamp somehow not taking timezones
into account, but assuming it is UNIX epoch based, then this won't be an
issue.
Regards,
Justin
On Fri, Apr 6, 2018 at 2:32 AM Konrad Windszus <ko...@gmx.de> wrote:
> I am just migrating the OSGi Installer HC (
> https://github.com/apache/sling-org-apache-sling-installer-hc/) to the
> bnd-maven-plugin and I observed one difference to the maven-bundle-plugin:
>
> The bundle version for SNAPSHOTs by default looks like "1.0.1.<Timestamp>"
> instead of "1.0.1.SNAPSHOT" (as it was with the maven-bundle-plugin).
> The reason for that is this line:
> https://github.com/bndtools/bnd/blob/d7511968b0ec96f1bec5bd3de59f8010cb3cb9f1/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndMavenPlugin.java#L262
> wich
> sets the snapshot instruction to the timestamp (
> http://bnd.bndtools.org/instructions/snapshot.html). This leads to the
> SNAPSHOT qualifier in the version being replaced by the timestamp in the
> generated bundle version.
>
> This is IMHO problematic in combination with the OSGi Installer, as that
> behaves differently when it detects a SNAPSHOT (
> https://github.com/apache/sling-org-apache-sling-installer-core/blob/1561f5e626bab4859b4c060ef1bec06026018f18/src/main/java/org/apache/sling/installer/core/impl/tasks/BundleInfo.java#L109
> ).
>
> Should we configure all our bundles in a way that SNAPSHOT in the version
> is not being replaced, or can we come up with a more intelligent solution
> in the OSGi Installer?
> I noticed that in the manifest we have in addition still
> "Implementation-Version: 1.0.1-SNAPSHOT" on which we could maybe base the
> SNAPSHOT detection of the OSGi Installer.
>
> WDYT?
> Konrad
>
>
>