Arrgh!! Even with .ompi_ignore, everything is broken on OS X and Linux (perhaps this is what Ralph was referring to -- not a compile time problem?):

-----
$ mpicc -g -Isrc   -c -o libmpitest.o libmpitest.c
Cannot open configuration file ${datadir}/openmpi/mpicc-wrapper-data.txt
Error parsing data file mpicc: Not found
-----

$#%@#$%@#$%@#$%#$!!!!!

Given that it's happening on 2 different OS's, this is enough to convince me that r21723 is unfortunately borked. I'm going to back it out.



On Jul 21, 2009, at 7:13 PM, Iain Bason wrote:


On Jul 21, 2009, at 6:34 PM, Jeff Squyres wrote:

> I'm quite confused about what this component did to the base
> functions.  I haven't had a chance to digest it properly, but it
> "feels wrong"...  Iain -- can you please explain the workings of
> this component and its interactions with the base?

The autodetect component gets loaded after the environment component,
and before the config component.  So environment variables like
OPAL_PREFIX will override it.

When it loads, it finds the directory containing libopen-pal.so
(assuming that is where the autodetect component actually is) and sets
its install_dirs_data.libdir to that.  The other fields of
install_dirs_data are set to "${infer-libdir}".  So when the base
component loads autodetect, and no environment variables have set any
of the fields, opal_install_dirs.everything_except_libdir is set to "$
{infer-libdir}".

(If the autodetect component is statically linked into an application,
then it will set bindir rather than libdir.)

The base component looks for fields set to "${infer-foo}", and calls
opal_install_dirs_infer to figure out what the field should be.  For
example, if opal_install_dirs.prefix is set to "${infer-libdir}", then
it calls opal_install_dirs_infer("prefix", "libdir}", 6, &component-
 >install_dirs_data).

Opal_install_dirs_infer expands everything in component-
 >install_dirs_data.libdir *except* "${prefix}".  Let's say that ompi
was configured so that libdir is "${prefix}/lib", and the actual path
to libopen-pal.so is /usr/local/lib/libopen-pal.so.  The autodetect
component will have set opal_install_dirs.libdir to "/usr/local/lib".
It matches the tail of "${prefix}/lib" to "/usr/local/lib", and infers
that the remainder must be the prefix, so it sets
opal_install_dirs.prefix to "/usr/local".

Other directories (e.g., pkgdatadir) presumably cannot be inferred
from libdir, and opal_install_dirs_infer will return NULL.  The config
component will then load some value into that field, and things will
work as they did before.

Iain

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



--
Jeff Squyres
jsquy...@cisco.com

Reply via email to