On MacOS X, the current v1.1.5 and v1.2.2 sources for openmpi
create shared libraries with undefined environ symbols. This
problem on MacOS X and the available workarounds are discussed
on the fink wiki section on Porting Notes...
http://wiki.finkproject.org/index.php/Fink:Porting_Notes
There
I have been told that Paraview is one package that
exhibits this problem with undefined environ symbols.
This will occur in any package which creates its own
shared libraries that link in any openmpi shared library
that contains the undefined environ symbol. I think it
is unreasonably
The following patch, against openmpi v1.1.5, prevents undefined environ symbols
in the openmpi shared libraries
on MacOS X. This approach avoids the need to modifiy the configure scripts.
Jack
diff -uNr openmpi-1.1.5/ompi/communicator/comm_dyn.c
The following patch, against openmpi v1.2.2, prevents undefined environ symbols
in the openmpi shared libraries
on MacOS X. This approach avoids the need to modifiy the configure scripts.
Jack
diff -uNr openmpi-1.2.2/ompi/communicator/comm_dyn.c
This is the previous patch for 1.2.2 again with a minor typo fixed.
One of the ifdef's was missing an underscore.
Jack
diff -uNr openmpi-1.2.2/ompi/communicator/comm_dyn.c
openmpi-1.2.2.environ/ompi/communicator/comm_dyn.c
--- openmpi-1.2.2/ompi/communicator/comm_dyn.c
Brian,
If you Google "crt_externs.h darwin", you will see that this approach
is very widely used for many packages include wine, 4Suite, ruby, etc.
We can take this over to the darwin developer mailing list but they
will tell you the same thing I am. It is bad form to create shared
libraries
Brian,
Below is the response I got from the fink developer
who was trying to package paraview and ran into this
problem with the undefined environ symbol in openmpi.
I have also emailed on darwin-dev to get a clarification
on this issue. However your argument against target
specific chances is
Ralph,
I don't know why such patches should be harder to
maintain in Windows than on Darwin. All you do is
the equivalent to...
cd /sw/lib/openmpi/lib
nm * | grep environ
and if you see environ undefined, identify which library
it is in and which object file it came from. I would also
note