On May 7, 2013, at 11:34 AM, Thomas Naughton <naught...@ornl.gov> wrote:

> 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)

Welcome!

> 
> 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.
> 

No issues from anyone that I heard.

> 
> 
> 
>> 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.

That is new - I would suggest not doing that as it behaves differently than you 
might expect. The .ompi_ignore in a component prevents that component from 
building at all, so it won't ever be opened etc. However, the framework *must* 
build the base code no matter what - and that means the framework will be 
opened, selected, and closed at the minimum.

I would prefer we keep ompi_ignore cleanly defined. You can ignore all 
components by simply putting --enable-mca-no-build=<framework> on your 
configure line.

> 
> 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.
> 
> 

Actually, I disagree. As stated above, the framework will *always* build the 
base code and be opened, selected, and closed - so you at least need access to 
the verbosity parameter so you can verify those operations. Keeping it in 
ompi_info is of value.

> 
> 
>> 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.

No objections

> 
> 
> 
>> 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.
> 

No objections - I only flagged it because it made the patch appear to be 
derived from an old version of the trunk.

> 
> 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.
> 

Appreciated the details!
Ralph


> 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
>> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel


Reply via email to