Hi,

Briefly, I'm Thomas.  I work at ORNL.  I changed autogen.pl on my
first commit to OMPI trunk. (Insert rookie joke here.  :-D)

The changes in r28456 for autogen.pl were pretty basic/minor.  I
apologize for not sending a follow-up email to devel mailing list
outlining the changes -- poor netiquette on my part. :-/

There were four changes included in the patch.  They related
mainly to the recent changes for MCA frameworks.  I'll give a little
more description below.

Ralph, I also included your feedback and a response for #2.  Let me
know if this makes sense as I think it provides the "right" behavior
but want to double check.  Thanks.


 1) Add ifdef guard to project's autogenerated "frameworks.h" header
    file, e.g., "opal/inlude/opal/frameworks.h" would have
    "OPAL_FRAMEWORKS_H".

This one simply adds and ifdef to top of auto-generated file, so if code
includes the "framework.h" file you avoid multiple includes of same file.
This is generic to the given project so the "opal/" project would generate
something like:

  $ cat opal/include/opal/frameworks.h
  /*
   * This file is autogenerated by autogen.pl. Do not edit this file by hand.
   */
  #ifndef OPAL_FRAMEWORKS_H
  #define OPAL_FRAMEWORKS_H

  #include <opal/mca/base/mca_base_framework.h>

  extern mca_base_framework_t opal_backtrace_base_framework;

     ...<snip>...

  #endif /* OPAL_FRAMEWORKS_H */

This would also be done for "ompi/" and "orte/" project directories.




 2) Avoid adding "ignored" frameworks to the autogenerated "frameworks.h"
    header file.

This simply applies the same ignored() function that is used elsewhere in
the autogen.pl script for omitting "ignored" MCA directories from the
processing. This just picks up the ".ompi_ignore" (and/or ".ompi_unignore) files. The intent being that if you ignore a component (subdir) that will
be removed from the list, but you could also remove an entire framework if
you put the ignore file in the top-level of the framework.

The intent being that if for whatever reason you ignore a framework in the
"${project}/mca/" space, you will not have it automatically show up in the
project's "frameworks.h" file.

On Tue, 7 May 2013, Ralph Castain wrote:

We use the frameworks.h file to "discover" the frameworks in
ompi_info.  Even if no components are built for that framework,
there still are MCA params relating to the base of that framework.
Sounds silly, I know - but there may be reasons to access those
params - e.g., to set verbosity to verify that no components are
being selected.

I think we need those frameworks to be listed...


Ok, I didn't realize the 'ompi_info' aspect.  Good to know.
However, I think honouring the ignore behavior is good in this case
b/c if you drop an ignore file in a framework, you won't get any
other autogen touches (i.e., no Makefile's are autogenerated).  So
it seems that having no Makefiles but including the framework in the
"framework.h" would break regardless.  Again, this is more of a
safety guard.




3) Avoid adding non-MCA projects to the autogenerated
'mca_project_list', which maintains existing support for "projects" with new MCA framework enhancements. Moves this down to mca_run_global().


This was just a bit of shifting code and didn't sound like there was
any discussion on this point.  This is a "do no harm" factor to
support pre-existing functionality.  The gist is that if you have a
"project" in the build directory that doesn't have an MCA directory structure, just avoid adding it to the list of MCA projects.



4) Add small loop at end to add projects with a "config/" subdir
   to the list of includes for 'autoreconf'.


This again is a "do no harm" factor to support pre-exising
functionality.  If you have a "${project}/config/" directory.  This
appends  the "-I ${project}/config/" to the autoreconf list.
If you do not have a "${project}/config/" dir, there is no change.


Again, I hope that gives more context/description to the changes
included in the autogen.pl patch.  In the future, I'll try to do
a better job of sending a heads up to the devel list.

Thanks,
--tjn

 _________________________________________________________________________
  Thomas Naughton                                      naught...@ornl.gov
  Research Associate                                   (865) 576-4184


On Tue, 7 May 2013, Ralph Castain wrote:

Crud - it just struck me that you don't want to do one thing in that patch.

+ Avoid adding "ignored" frameworks to the autogenerated "frameworks.h"
 header file.


We use the frameworks.h file to "discover" the frameworks in ompi_info. Even if 
no components are built for that framework, there still are MCA params relating to the 
base of that framework. Sounds silly, I know - but there may be reasons to access those 
params - e.g., to set verbosity to verify that no components are being selected.

I think we need those frameworks to be listed...


On May 7, 2013, at 6:49 AM, Ralph Castain <r...@open-mpi.org> wrote:


On May 7, 2013, at 6:19 AM, Jeff Squyres (jsquyres) <jsquy...@cisco.com> wrote:

On May 6, 2013, at 10:39 PM, Ralph Castain <r...@open-mpi.org> wrote:

Could someone help me out a bit here:

* I'm unaware of any mechanism for "ignoring" an entire framework. Was 
something added for that purpose?

It's been in autogen.pl for a while -- check out the end of 
mca_process_framework() in autogen.pl.

I see - you didn't mean "ignore the framework", you meant "ignore all components in 
this framework". The two are not the same thing. Ignoring the framework would mean that we 
were somehow going to skip the base as well, which couldn't possibly work. We've talked about that 
before and never could figure out how to null-out all the framework level functions.


* What "non-MCA" projects are in our repository? Everything appears to be based 
on MCA plugins.

* Looking at Trac, we eliminated all project/config directories when we did the 
OMPI-RTE abstraction. So what are we looping across at the end of autogen?

Yes, we did.  ORNL specifically asked me/Nathan off-list if they could add this 
loop in, because they have some off-trunk repos (e.g., STCI) that both still 
use the config/ directory stuff and have non-MCA projects.  I didn't see any 
harm in these things; e.g., the loop only adds -I if the directory exists.  
I.e., I saw it as being an attempt to be friendly to those who are trying to 
use our lower laters (ORTE and/or OPAL) with non-OMPI projects.  I thought this 
fit in well with the move-the-BTLs-down-to-OPAL philosophy.

That being said, if others disagree -- e.g., Ralph has a valid point: this is 
to help projects that are outside of our trunk -- let's discuss.  This will 
probably be a useful topic to discuss today on the teleconf.

I don't object to it being there as it is a "no-op" for us - there was just no 
explanation given as to why this was being done. So it looked like a patch based on an 
old version of the trunk.



--
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel



_______________________________________________
devel mailing list
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel

Reply via email to