[ 
https://issues.apache.org/jira/browse/FELIX-412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard S. Hall resolved FELIX-412.
-----------------------------------

    Resolution: Fixed
      Assignee: Richard S. Hall

Actually, Rob I think this is an area of difference between Oscar and the R4 
spec. Either there was a grey area in the spec before or Oscar just implemented 
this incorrectly, but now you need to add a "*" to the end of your native 
library clause to indicate that there is a default match or optional match if 
none of the other clauses matched. Check out page 59 of the R4.1 spec and see 
if this will solve your issue.

> Possible problem with Manifest parser if Native libs for running platform not 
> declared
> --------------------------------------------------------------------------------------
>
>                 Key: FELIX-412
>                 URL: https://issues.apache.org/jira/browse/FELIX-412
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>         Environment: Solaris / Sunos execution of Felx app version lifted 
> from Windows
>            Reporter: Rob Walker
>            Assignee: Richard S. Hall
>
> We have a bundle that includes native code. The native code is only 
> needed/used on some platforms, and hence the manifest doesn't list every 
> platform used e.g.
>    Bundle-NativeCode: /platlib.dll; osname=Windows NT; osname=Windows
>    2000; osname=Windows 2003; osname=Windows XP; processor=x86,
>    /libplatlib.so; osname=Linux; processor=x86; osname=NONSTOP_KERNEL;
>    processor=IA64N
> Previous versions of Felix/Oscar were fine with this - you only got an error 
> thrown when you tried to actually use native classes on a platform that was 
> not declared in the Manifest.
> It seems now that this breaks during Manifest parsing, meaning our app won't 
> load on say Solaris, even though we don't actually need the native libs on 
> that platform:
> org.osgi.framework.BundleException: Unable to select a native library clause.
>        at 
> org.apache.felix.framework.util.manifestparser.ManifestParser.getSelectedLibraryClause(ManifestParser.java:349)
>        at 
> org.apache.felix.framework.util.manifestparser.ManifestParser.getLibraries(ManifestParser.java:306)
>        at org.apache.felix.framework.Felix.createModule(Felix.java:3337)
>        at org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3263)
>        at org.apache.felix.framework.Felix.installBundle(Felix.java:2224)
>        at org.apache.felix.framework.Felix.installBundle(Felix.java:2138)
>        at 
> org.apache.felix.framework.Felix.processAutoProperties(Felix.java:3606)
>        at org.apache.felix.framework.Felix.start(Felix.java:803)
>        at com.ascert.vt.launch.VtLauncher.a(VtLauncher.java:142)
>        at com.ascert.vt.launch.VtLauncher.a(VtLauncher.java:102)
>        at com.ascert.vt.launch.VtLauncher.a(VtLauncher.java:224)
>        at com.ascert.vt.launch.VtLauncher.main(VtLauncher.java:210)
> It doesn't seem right that Manifest parser should object to this and throw a 
> fatal error - just because a native lib is not provided for the current 
> platform does not mean it will be actually needed, and surely the parser's 
> job isn't to make such decisions. At the point a missing native lib is needed 
> and missing would seem to be the more valid place to throw an error, which I 
> think is how it used to work.
> One workaround would be to split out Winx86 libs into separate bundles, but 
> that sort of defeats the elegant way OSGi handles platform dependencies. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to