You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@daffodil.apache.org by Mike Beckerle <mb...@apache.org> on 2024/10/25 18:41:11 UTC
plugins - do different daffodil versions require different version numbers?
I want to have a daffodil 3.8.0 and a daffodil 3.9.0 version of an
extendedCharsets plugin.
This is true of all our plugins, layers, UDFs, etc.
But the jar file created when compiling them is not named differently for
different versions of daffodil.
That suggests that I need to have different versions for different versions
of daffodil, e.g.,
version 1.1.380 for daffodil 3.8.0, and version 1.1.390 for daffodil 3.9.0
Or am I missing something about how to do this?
Mike Beckerle
Apache Daffodil PMC | daffodil.apache.org
OGF DFDL Workgroup Co-Chair | www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
Owl Cyber Defense | www.owlcyberdefense.com
Re: plugins - do different daffodil versions require different version numbers?
Posted by Mike Beckerle <mb...@apache.org>.
Ok, I'l proceed and if I run into trouble, I'll reawaken this thread.
We seemed to be getting "this is a bug" exceptions thrown from
deserialization logic because the extendedCharsets was compiled with
daffodil 3.8.0.
Trying to create the DAFFODIL_CLASSPATH in an assembly project was showing
the daffodil-udf 3.8.0 library in the DAFFODIL_CLASSPATH, and trying to run
CLI 'daffodil parse --parser ...savedBinParser dataFile' was giving the
"this is a bug" uncaught exception in deserialization.
At this point we've rebuilt all of these locally end-to-end with daffodil
3.9.0 and are unable to reproduce the issue now, but are no longer blocked
in our work.
On Fri, Oct 25, 2024 at 3:10 PM Steve Lawrence <sl...@apache.org> wrote:
> You actually shouldn't really have to do anything. The Daffodil CLI orders
> the
> classpath so it its own jars go before anything provided in
> DAFFODIL_CLASSPATH,
> and thus have precedence.
>
> So, for example, if you add daffodil-lib-3.8.0.jar to DAFFODIL_CLASSPATH
> but you
> are running with Daffodil CLI 3.9.0, that 3.8.0 jar will just be ignored
> and the
> daffodil-lib-3.9.0.jar will be used.
>
>
> On 2024-10-25 03:03 PM, Mike Beckerle wrote:
> > Thanks for this. However, right now plugins seem to drag in dependencies
> on
> > the version of daffodil they were compiled with.
> >
> > This is fixed in the next (as yet unreleased) sbt-daffidil, but how do I
> > cope with this in the short term?
> >
> > If I do 'sbt "export fullClassPath"' I will get a mixture of different
> > daffodil jars, or entirely wrong ones it seems.
> >
> > Do I just edit this classpath by hand so I can set DAFFODIL_CLASSPATH
> > properly, or is there a better workaround?
> >
> >
> > On Fri, Oct 25, 2024 at 2:55 PM Steve Lawrence <sl...@apache.org>
> wrote:
> >
> >> I just responded to the other thread related to this, but more
> succinctly:
> >>
> >> For modern versions of Daffodil you shouldn't need different plugin
> >> versions for
> >> different Daffodil versions.
> >>
> >> A charset plugin will work with all version of Daffodil 3.4.0 or newer
> >>
> >> A layer plugin will work with all versions of Daffodil 3.8.0 or newer
> >>
> >> A UDF plugin will work with all versions of Daffodil 3.0.0 or newer
> >>
> >> I suggest only including a daffodil version in the name or version of a
> >> plugin
> >> if you are maintaining a plugin for use with an older version of
> Daffodil
> >> than
> >> listed above. It should not be needed for newer versions of Daffodil as
> >> long as
> >> we continue to maintain backwards compatibility. And I think our APIs
> are
> >> stable
> >> enough that this shouldn't be a problem.
> >>
> >> So if you want a charset plugin to work with 3.8 and 3.9, you can built
> it
> >> with
> >> an modern version of Daffodil and the jar should work with all of them.
> >> Note
> >> that if this isn't the case, it means we probably have a bug somewhere,
> or
> >> maybe
> >> I have the version numbers off.
> >>
> >> On 2024-10-25 02:41 PM, Mike Beckerle wrote:
> >>> I want to have a daffodil 3.8.0 and a daffodil 3.9.0 version of an
> >>> extendedCharsets plugin.
> >>>
> >>> This is true of all our plugins, layers, UDFs, etc.
> >>>
> >>> But the jar file created when compiling them is not named differently
> for
> >>> different versions of daffodil.
> >>>
> >>> That suggests that I need to have different versions for different
> >> versions
> >>> of daffodil, e.g.,
> >>>
> >>> version 1.1.380 for daffodil 3.8.0, and version 1.1.390 for daffodil
> >> 3.9.0
> >>>
> >>> Or am I missing something about how to do this?
> >>>
> >>> Mike Beckerle
> >>> Apache Daffodil PMC | daffodil.apache.org
> >>> OGF DFDL Workgroup Co-Chair |
> >> www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
> >>> Owl Cyber Defense | www.owlcyberdefense.com
> >>>
> >>
> >>
> >
>
>
Re: plugins - do different daffodil versions require different version numbers?
Posted by Steve Lawrence <sl...@apache.org>.
You actually shouldn't really have to do anything. The Daffodil CLI orders the
classpath so it its own jars go before anything provided in DAFFODIL_CLASSPATH,
and thus have precedence.
So, for example, if you add daffodil-lib-3.8.0.jar to DAFFODIL_CLASSPATH but you
are running with Daffodil CLI 3.9.0, that 3.8.0 jar will just be ignored and the
daffodil-lib-3.9.0.jar will be used.
On 2024-10-25 03:03 PM, Mike Beckerle wrote:
> Thanks for this. However, right now plugins seem to drag in dependencies on
> the version of daffodil they were compiled with.
>
> This is fixed in the next (as yet unreleased) sbt-daffidil, but how do I
> cope with this in the short term?
>
> If I do 'sbt "export fullClassPath"' I will get a mixture of different
> daffodil jars, or entirely wrong ones it seems.
>
> Do I just edit this classpath by hand so I can set DAFFODIL_CLASSPATH
> properly, or is there a better workaround?
>
>
> On Fri, Oct 25, 2024 at 2:55 PM Steve Lawrence <sl...@apache.org> wrote:
>
>> I just responded to the other thread related to this, but more succinctly:
>>
>> For modern versions of Daffodil you shouldn't need different plugin
>> versions for
>> different Daffodil versions.
>>
>> A charset plugin will work with all version of Daffodil 3.4.0 or newer
>>
>> A layer plugin will work with all versions of Daffodil 3.8.0 or newer
>>
>> A UDF plugin will work with all versions of Daffodil 3.0.0 or newer
>>
>> I suggest only including a daffodil version in the name or version of a
>> plugin
>> if you are maintaining a plugin for use with an older version of Daffodil
>> than
>> listed above. It should not be needed for newer versions of Daffodil as
>> long as
>> we continue to maintain backwards compatibility. And I think our APIs are
>> stable
>> enough that this shouldn't be a problem.
>>
>> So if you want a charset plugin to work with 3.8 and 3.9, you can built it
>> with
>> an modern version of Daffodil and the jar should work with all of them.
>> Note
>> that if this isn't the case, it means we probably have a bug somewhere, or
>> maybe
>> I have the version numbers off.
>>
>> On 2024-10-25 02:41 PM, Mike Beckerle wrote:
>>> I want to have a daffodil 3.8.0 and a daffodil 3.9.0 version of an
>>> extendedCharsets plugin.
>>>
>>> This is true of all our plugins, layers, UDFs, etc.
>>>
>>> But the jar file created when compiling them is not named differently for
>>> different versions of daffodil.
>>>
>>> That suggests that I need to have different versions for different
>> versions
>>> of daffodil, e.g.,
>>>
>>> version 1.1.380 for daffodil 3.8.0, and version 1.1.390 for daffodil
>> 3.9.0
>>>
>>> Or am I missing something about how to do this?
>>>
>>> Mike Beckerle
>>> Apache Daffodil PMC | daffodil.apache.org
>>> OGF DFDL Workgroup Co-Chair |
>> www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
>>> Owl Cyber Defense | www.owlcyberdefense.com
>>>
>>
>>
>
Re: plugins - do different daffodil versions require different version numbers?
Posted by Mike Beckerle <mb...@apache.org>.
Thanks for this. However, right now plugins seem to drag in dependencies on
the version of daffodil they were compiled with.
This is fixed in the next (as yet unreleased) sbt-daffidil, but how do I
cope with this in the short term?
If I do 'sbt "export fullClassPath"' I will get a mixture of different
daffodil jars, or entirely wrong ones it seems.
Do I just edit this classpath by hand so I can set DAFFODIL_CLASSPATH
properly, or is there a better workaround?
On Fri, Oct 25, 2024 at 2:55 PM Steve Lawrence <sl...@apache.org> wrote:
> I just responded to the other thread related to this, but more succinctly:
>
> For modern versions of Daffodil you shouldn't need different plugin
> versions for
> different Daffodil versions.
>
> A charset plugin will work with all version of Daffodil 3.4.0 or newer
>
> A layer plugin will work with all versions of Daffodil 3.8.0 or newer
>
> A UDF plugin will work with all versions of Daffodil 3.0.0 or newer
>
> I suggest only including a daffodil version in the name or version of a
> plugin
> if you are maintaining a plugin for use with an older version of Daffodil
> than
> listed above. It should not be needed for newer versions of Daffodil as
> long as
> we continue to maintain backwards compatibility. And I think our APIs are
> stable
> enough that this shouldn't be a problem.
>
> So if you want a charset plugin to work with 3.8 and 3.9, you can built it
> with
> an modern version of Daffodil and the jar should work with all of them.
> Note
> that if this isn't the case, it means we probably have a bug somewhere, or
> maybe
> I have the version numbers off.
>
> On 2024-10-25 02:41 PM, Mike Beckerle wrote:
> > I want to have a daffodil 3.8.0 and a daffodil 3.9.0 version of an
> > extendedCharsets plugin.
> >
> > This is true of all our plugins, layers, UDFs, etc.
> >
> > But the jar file created when compiling them is not named differently for
> > different versions of daffodil.
> >
> > That suggests that I need to have different versions for different
> versions
> > of daffodil, e.g.,
> >
> > version 1.1.380 for daffodil 3.8.0, and version 1.1.390 for daffodil
> 3.9.0
> >
> > Or am I missing something about how to do this?
> >
> > Mike Beckerle
> > Apache Daffodil PMC | daffodil.apache.org
> > OGF DFDL Workgroup Co-Chair |
> www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
> > Owl Cyber Defense | www.owlcyberdefense.com
> >
>
>
Re: plugins - do different daffodil versions require different version numbers?
Posted by Steve Lawrence <sl...@apache.org>.
I just responded to the other thread related to this, but more succinctly:
For modern versions of Daffodil you shouldn't need different plugin versions for
different Daffodil versions.
A charset plugin will work with all version of Daffodil 3.4.0 or newer
A layer plugin will work with all versions of Daffodil 3.8.0 or newer
A UDF plugin will work with all versions of Daffodil 3.0.0 or newer
I suggest only including a daffodil version in the name or version of a plugin
if you are maintaining a plugin for use with an older version of Daffodil than
listed above. It should not be needed for newer versions of Daffodil as long as
we continue to maintain backwards compatibility. And I think our APIs are stable
enough that this shouldn't be a problem.
So if you want a charset plugin to work with 3.8 and 3.9, you can built it with
an modern version of Daffodil and the jar should work with all of them. Note
that if this isn't the case, it means we probably have a bug somewhere, or maybe
I have the version numbers off.
On 2024-10-25 02:41 PM, Mike Beckerle wrote:
> I want to have a daffodil 3.8.0 and a daffodil 3.9.0 version of an
> extendedCharsets plugin.
>
> This is true of all our plugins, layers, UDFs, etc.
>
> But the jar file created when compiling them is not named differently for
> different versions of daffodil.
>
> That suggests that I need to have different versions for different versions
> of daffodil, e.g.,
>
> version 1.1.380 for daffodil 3.8.0, and version 1.1.390 for daffodil 3.9.0
>
> Or am I missing something about how to do this?
>
> Mike Beckerle
> Apache Daffodil PMC | daffodil.apache.org
> OGF DFDL Workgroup Co-Chair | www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
> Owl Cyber Defense | www.owlcyberdefense.com
>