Skip to content

Commit

Permalink
Add 'uses' information to OSGI metadata in MANIFEST.MF
Browse files Browse the repository at this point in the history
When multiple versions of JNA are present in a single OSGI environment,
it can happen that OSGI computes an incorrect dependency chain, which
can lead to exceptions like the following:

This can be addressed by enriching the Export-Package metadata with
;uses="..." information [1].

Fixes #1487.

[1] https://spring.io/blog/2008/10/20/understanding-the-osgi-uses-directive/
  • Loading branch information
sratz committed Dec 22, 2022
1 parent 780facd commit b3984aa
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
6 changes: 5 additions & 1 deletion build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,11 @@
<attribute name="Bundle-RequiredExecutionEnvironment" value="JavaSE-1.6"/>
<attribute name="Bundle-Vendor" value="${vendor}"/>
<attribute name="Bundle-ActivationPolicy" value="lazy"/>
<attribute name="Export-Package" value="com.sun.jna;version=${jna.major}.${jna.minor}.${jna.revision}, com.sun.jna.ptr;version=${jna.major}.${jna.minor}.${jna.revision}, com.sun.jna.win32;version=${jna.major}.${jna.minor}.${jna.revision}"/>
<attribute name="Export-Package" value="
com.sun.jna;version=&quot;${osgi.version}&quot;,
com.sun.jna.ptr;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna&quot;,
com.sun.jna.win32;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna&quot;
"/>
<!-- Note that no terminal "*" is included in this list,
which will force failure on unsupported platforms.
-->
Expand Down
28 changes: 14 additions & 14 deletions contrib/platform/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,20 +147,20 @@
<attribute name="Require-Bundle" value="com.sun.jna;bundle-version=&quot;${osgi.version}&quot;"/>
<attribute name="Export-Package"
value="
com.sun.jna.platform;version=${osgi.version},
com.sun.jna.platform.dnd;version=${osgi.version},
com.sun.jna.platform.linux;version=${osgi.version},
com.sun.jna.platform.mac;version=${osgi.version},
com.sun.jna.platform.unix;version=${osgi.version},
com.sun.jna.platform.unix.aix;version=${osgi.version},
com.sun.jna.platform.unix.solaris;version=${osgi.version},
com.sun.jna.platform.win32;version=${osgi.version},
com.sun.jna.platform.win32.COM;version=${osgi.version},
com.sun.jna.platform.win32.COM.tlb;version=${osgi.version},
com.sun.jna.platform.win32.COM.tlb.imp;version=${osgi.version},
com.sun.jna.platform.win32.COM.util;version=${osgi.version},
com.sun.jna.platform.win32.COM.util.annotation;version=${osgi.version},
com.sun.jna.platform.wince;version=${osgi.version}
com.sun.jna.platform;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.platform.win32&quot;,
com.sun.jna.platform.dnd;version=&quot;${osgi.version}&quot;,
com.sun.jna.platform.linux;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.platform.unix&quot;,
com.sun.jna.platform.mac;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.platform,com.sun.jna.platform.unix,com.sun.jna.ptr&quot;,
com.sun.jna.platform.unix;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.ptr&quot;,
com.sun.jna.platform.unix.aix;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna&quot;,
com.sun.jna.platform.unix.solaris;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.ptr&quot;,
com.sun.jna.platform.win32;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.platform,com.sun.jna.platform.win32.COM,com.sun.jna.ptr,com.sun.jna.win32&quot;,
com.sun.jna.platform.win32.COM;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.platform.win32,com.sun.jna.platform.win32.COM.util,com.sun.jna.ptr,com.sun.jna.win32&quot;,
com.sun.jna.platform.win32.COM.tlb;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna.platform.win32.COM.tlb.imp&quot;,
com.sun.jna.platform.win32.COM.tlb.imp;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna.platform.win32,com.sun.jna.platform.win32.COM&quot;,
com.sun.jna.platform.win32.COM.util;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.platform.win32,com.sun.jna.platform.win32.COM,com.sun.jna.platform.win32.COM.util.annotation,com.sun.jna.ptr&quot;,
com.sun.jna.platform.win32.COM.util.annotation;version=&quot;${osgi.version}&quot;,
com.sun.jna.platform.wince;version=&quot;${osgi.version}&quot;;uses:=&quot;com.sun.jna,com.sun.jna.platform.win32&quot;
"/>
</manifest>
<manifest file="@{target}" mode="update" if:true="@{module-info}">
Expand Down

0 comments on commit b3984aa

Please sign in to comment.