Well, that’s unfortunate! I have declared the platform like this (for the example of MacOS):
<Bundle-NativeCode> vtk/libCosmo.jnilib; […] vtk/libvtkzlib.jnilib; osname=MacOSX; processor=x86_64, * </Bundle-NativeCode> But when I deploy the bundle, it loads the Linux 32 bits one (I guess the first one in the list)… Welcome to Apache Felix Gogo g! obr:repos add file:/Users/ben/.m2/repository/repository.xml g! obr:deploy org-example-myapp g! Target resource(s): ------------------- My App (2.5.7.SNAPSHOT) Required resource(s): --------------------- VTK service API (2.0.3.SNAPSHOT) Optional resource(s): --------------------- Linux 32 bits VTK bundle (2.0.3.SNAPSHOT) Deploying... done. g! Le 31 mars 2014 à 17:56, Neil Bartlett <[email protected]> a écrit : > Okay so here's the thing... if you run this on any pre-R6 framework, then > nothing provides this capability. And since R6 is not released, that means > all of them. > > But you shouldn't have to explicitly require the osgi.ee capability. Even > on R5 and earlier, the Bundle-NativeCode header creates an implicit > requirement for the correct platform -- assuming you did not use a wildcard > entry and got the format of this header correct (it is tricky). > > Regards, > Neil > > > On Mon, Mar 31, 2014 at 10:38 AM, Benoît Thiébault > <[email protected]>wrote: > >> Hi again, >> >> What bundle provides the osgi.native capability? When running Felix, I >> have the following error: >> >> g! org.osgi.framework.BundleException: Unresolved constraint in bundle >> org-myapp [42]: Unable to resolve 42.0: missing requirement [42.0] >> org.myapp.native; (library=vtk) [caused by: Unable to resolve 43.0: missing >> requirement [43.0] osgi.native; >> (&(osgi.native.osname=MacOS)(os.native.processor=x86_64))] >> >> I’m using Felix 4.2.1 and I’m pretty sure I’m on a 64 bits Mac (Mavericks >> 10.9.2) >> >> Kind regards >> Ben >> >> Le 29 mars 2014 à 11:21, Neil Bartlett <[email protected]> a écrit : >> >>> You cannot do this with OBR. If you can use the R5 repository format, >> along >>> with the repoindex tool, then you can use Provide- and Require-Capability >>> headers to ensure the set of libraries you need is resolved. For example >>> the fragment "org.example.nativelib.osx64" would provide something custom >>> like this: >>> >>> Provide-Capability: myapp.native; library=com.example.nativelib >>> >>> and it would require the osgi.native capability to ensure it can only >>> resolve on a single platform: >>> >>> Require-Capability: osgi.native; >>> filter:="(&(osgi.native.osname=MacOS)(os.native.processor=x86_64))" >>> >>> Now your core bundle just requires the myapp.native capability and the >>> resolver will pick the right fragment for your runtime platform. >>> >>> >>> On Sat, Mar 29, 2014 at 7:47 AM, Benoît Thiébault <[email protected] >>> wrote: >>> >>>> Hi everyone, >>>> >>>> I’m willing to simplify my application deployment and plan to use an >> OBR. >>>> On this OBR, I have deployed several bundles, including some containing >>>> native code. >>>> >>>> I have a cross-platform bundle, say org.example.nativelib and one >> fragment >>>> for each platform: >>>> - org.example.nativelib.linux64b >>>> - org.example.nativelib.linux32b >>>> - org.example.nativelib.win7-64b >>>> - org.example.nativelib.osx64b >>>> - etc. >>>> >>>> How can I be sure that when deploying org.example.nativelib from the >> OBR, >>>> the native fragment of the correct platform will be deployed? >>>> >>>> Thanks for your help >>>> >>>> Benoît >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>>> >> >> -- >> Dr Benoît Thiébault >> Project Manager >> >> Artenum Toulouse - Science & Groupware >> http://www.artenum.com >> >> Bâtiment Calfocenter >> 10, rue Marguerite-Long >> 31320 Castanet-Tolosan >> France >> Phone: +33 (0)5 82 95 19 00 >> >> >> -- Dr Benoît Thiébault Project Manager Artenum Toulouse - Science & Groupware http://www.artenum.com Bâtiment Calfocenter 10, rue Marguerite-Long 31320 Castanet-Tolosan France Phone: +33 (0)5 82 95 19 00

