Ralph,

The goal here is to allow vendor to distribute binary orte frameworks
(on top of binary components they can already distribute) that can be used
by a user compiled "stock" openmpi library).

Did I get it right so far ?


I gave it some thoughts and found that could be simplified.

My understanding is that such frameworks can only be used by 3rd party
component(s) from an existing framework, am I right ?

In this case, what about creating libopen-rte-ext.so with all the 3rd party
frameworks (one library in case two frameworks need each other, and avoid
circular dependencies). libopen-rte-ext.so does depend on libopen-rte.so,
and 3rd party components depend on both rte libs.
Build order is important :
- libopen-rte.so
- libopen-rte-ext.so
- components
But there is no circular build dependencies (e.g. libopen-rte.so does not
depend on libopen-rte-ext.so), and there is no need to create an other
project.
The only restriction I can think of is it is impossible that 3rd
party frameworks from vendor A and vendor B depend on each other. There
could be frameworks from different vendors as long as they use distinct lib
names for their extended orte lib.


Any thoughts ?

Gilles

On Saturday, February 27, 2016, Ralph Castain <r...@open-mpi.org> wrote:

> There was some confusion yesterday at the developer’s meeting over a topic
> regarding framework dependencies. I apologize - I should have looked over
> the agenda more closely in advance to ensure I recalled everything. Instead
> of the topic I had wanted to discuss, we wound up discussing embedding
> dependency arguments in component definitions.
>
> What I really wanted to raise was the issue of statically including all
> base framework definitions in the core library. In other words, if you want
> to define a new framework for ORTE, you _must_ put the framework header and
> the base directory in libopen-rte. This makes it impossible for a 3rd party
> to add an ORTE framework - they have to get the OMPI community to add it
> upstream first.
>
> Note that you _can_ add components dynamically - you just can’t add a
> framework.
>
> The only solution a 3rd party has today is to create another project layer
> in the code, and put the framework there. However, this may be somewhat
> limiting due to circular build dependencies if, for example, an ORTE
> component needed to reference the new framework, and the new
> project/framework has an explicit link to libopen-rte.
>
> Resolving this would require that we dynamically load the frameworks
> themselves, and not just the components. This point is what led to Jeff’s
> proposal about dependencies - however, the dependency definitions are not
> _required_ in order to make this change.
>
> So the question to the community is: does anyone see an issue with making
> frameworks into dll’s? Obviously, this approach won’t work for static
> builds, but that is a separate issue.
>
> Thanks
> Ralph
>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org <javascript:;>
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post:
> http://www.open-mpi.org/community/lists/devel/2016/02/18634.php

Reply via email to