Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] RFC: enable the use of source in platform files
From: Nathan Hjelm (hjelmn_at_[hidden])
Date: 2012-07-12 15:30:36


I wouln't consider sourced variables being overritten by the sourcing platform file a problem. I can update the platform file documentation to make sure this behavior is clear. Can you point me at the right faq page?

-Nathan

On Mon, Jul 09, 2012 at 08:36:41PM -0700, Ralph Castain wrote:
> Okay, it took me awhile to grok thru all this, and I now understand how it is working. You do have a question, though, with duplicated entries. At the moment, we ignore any entry that is duplicated on the configure cmd line - i.e., if you set something in a platform file, and then attempt to also set it on the cmd line, we ignore the cmd line (without warning). In this case, an entry in the first file that is duplicated in the second file gets overwritten, also without warning.
>
> Dunno if that's an issue or not, but something to be aware of.
>
>
> On Jul 9, 2012, at 4:52 PM, Ralph Castain wrote:
>
> > I keep scratching my head over this, and I just cannot figure out how this is going to do what you think. We "source" the platform file solely to execute any envar settings that are in it - i.e., to capture the CFLAGS=... and other such directives. We then read/parse the platform file to get all the configure directives - e.g., enable_debug=yes. Sourcing the platform file will set the envars, but won't capture the rest of the directives.
> >
> > Am I missing something here? It doesn't sound like you've really even tried this yet - sure, chaining "source" commands will work, but do you actually get the desired configuration??
> >
> > Hence my comment about needing to modify the parser so it ALSO follows the "source" directive.
> >
> > On Jul 9, 2012, at 3:58 PM, Nathan Hjelm wrote:
> >
> >> On Mon, Jul 09, 2012 at 03:31:33PM -0700, Ralph Castain wrote:
> >>> So if I understand this right, you would have multiple platform files, each "sourcing" a common one that contains the base directives? It sounds to me like you need more than the change below to make that work - you would need to interpret the platform file itself to read and execute a "source" directive inside it, wouldn't you?
> >>
> >> That is exactly what I want to do. The change in the RFC is the only one needed as platform files are sourced by ompi_load_platform.m4. This means platforms can contain arbitrary m4/shell code (including the source directive)! I tried my patch with a one line platform file that sourced an existing platform file and it worked as expected.
> >>
> >>> It would really help if your change (either comments or the RFC) actually explained what the heck you are doing so I wouldn't have to waste hours trying to figure out the impact of this patch :-/
> >>>
> >>
> >> The RFC does explain what the patch does but I guess I could have elaborated on the implications.
> >>
> >> Before the patch we source the platform file then cd into the platform directory to find the mca parameters file. If a platform file were to have a source directive then it would have to be relative to the build directory (or absolute). By cding into the platform file's directory before sourcing the platform file and source directives are relative to the platform file's directory (or absolute). There is no impact outside of m4/shell commands within the platform file that read/write/stat files.
> >>
> >> I will add some additional comments before the commit (if there are no objects of course) elaborating on the change.
> >>
> >> -Nathan
> >> _______________________________________________
> >> devel mailing list
> >> devel_at_[hidden]
> >> http://www.open-mpi.org/mailman/listinfo.cgi/devel
> >
>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel