Disclamer first:
Yes, I am testing a *beta* compiler but this is NOT about a compiler bug.
I leave it to the judgment of others whether my findings warrant any
action.


I am testing the 2.0.0rc2 tarball with the Oracle Solaris Studio 12.5-beta
for Linux.

With Studio 12.4 all is fine on the same system with identical configure
options.
The configure command options in both cases (with different $PATH):

--prefix=[...] --enable-debug --enable-mpi-cxx CC=cc CXX=CC FC=f95


With 12.5-beta (but not 12.4) I see the following failure while building
the fortran bindings:

/bin/sh ../../../../libtool  --tag=FC   --mode=link f95
-I../../../../ompi/include
-I/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u5b/openmpi-2.0.0rc2/ompi/include
-I../../../..
-I/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u5b/openmpi-2.0.0rc2
 -g -version-info 20:0:0   -o libmpi_usempi_ignore_tkr.la -rpath
/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u5b/INST/lib
mpi-ignore-tkr.lo
/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u5b/BLD/opal/
libopen-pal.la -lrt -lm -lutil

libtool: link: f95 -shared   .libs/mpi-ignore-tkr.o    -rpath
/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u5b/BLD/opal/.libs
-rpath
/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u5b/INST/lib
/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u5b/BLD/opal/.libs/libopen-pal.so
-ldl -lnuma -lrt -lm -lutil  -g   -mt -soname
libmpi_usempi_ignore_tkr.so.20 -o .libs/libmpi_usempi_ignore_tkr.so.20.0.0

f90: Warning: Option -shared passed to ld, if ld is invoked, ignored
otherwise
f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise
f90: Warning: Option -path passed to ld, if ld is invoked, ignored otherwise
f90: Warning: Option -soname passed to ld, if ld is invoked, ignored
otherwise
/usr/bin/ld: unrecognized option '-path'
/usr/bin/ld: use the --help option for usage information
make[2]: *** [libmpi_usempi_ignore_tkr.la] Error 2


My first observation is that f95 command line produced by libtool doesn't
look at all like the same step when using the 12.4 compiler:

libtool: link: f95 -G  -KPIC  .libs/mpi-ignore-tkr.o   -Qoption ld -rpath
-Qoption ld
/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u4/BLD/opal/.libs
-Qoption ld -rpath -Qoption ld
/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u4/INST/lib
/scratch/phargrov/OMPI/openmpi-2.0.0rc2-linux-x86_64-ss12u4/BLD/opal/.libs/libopen-pal.so
-ldl -lnuma -lrt -lm -lutil  -g   -mt -Qoption ld -soname -Qoption ld
libmpi_usempi_ignore_tkr.so.20 -o .libs/libmpi_usempi_ignore_tkr.so.20.0.0


So, my initial diagnosis was that this is most likely a libtool bug.
BUT, I also know that autogen.pl contains logic for "Patching configure for
Sun Studio Fortran version strings".
So, I recognized that Open MPI's autogen.pl might be where the fix belongs.

Continuing on that line of though I discovered that the version strings for
the Fortran compiler have changed between 12.4 and 12.5-beta:

$ /opt/oracle/solarisstudio12.4/bin/f95 -V
f90: Sun Fortran 95 8.7 Linux_i386 2014/10/20
$ /opt/oracle/solarisstudio12.5-beta/bin/f95 -V
f90: Studio 12.5 Fortran 95 8.8 Linux_i386 Beta 2015/11/17


Notice that "Sun" is gone, and thus the patterns used by libtool no longer
match!
So, this *is* a libtool "issue", but can hardly be blamed on libtool.

FWIW: the C and C++ compiler still say "Sun" and match the patterns used by
libtool:

$ /opt/oracle/solarisstudio12.5-beta/bin/cc -V
cc: Studio 12.5 Sun C 5.14 Linux_i386 Beta 2015/11/17
$ /opt/oracle/solarisstudio12.5-beta/bin/CC -V
CC: Studio 12.5 Sun C++ 5.14 Linux_i386 Beta 2015/11/17


I checked the libtool git repo, and there is no upstream fix for this (Ralf
W., are you still on this list?)
So, for all that wind-up this posting comes down to a small addition to
autogen.sh:

--- a/autogen.pl
+++ b/autogen.pl
@@ -977,6 +977,12 @@ sub patch_autotools_output {
         $c =~ s/$search_string/$replace_string/;
     }

+    # Oracle has apparently begun (as of 12.5-beta) removing the "Sun"
branding.
+    # So this patch (cumulative over the previous one) is required.
+    push(@verbose_out, $indent_str . "Patching configure for Oracle Studio
Fortran version strings\n");
+    $c =~ s/\*Sun\*Fortran\*\)/*Sun*Fortran* | *Studio*Fortran*)/g;
+    $c =~ s/\*Sun\\ F\*\)(.*\n\s+tmp_sharedflag=)/*Sun\\ F* |
*Studio*Fortran*)$1/g;
+
     # See
http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=v2.2.6-201-g519bf91
for details
     # Note that this issue was fixed in LT 2.2.8, however most distros are
still using 2.2.6b


-Paul

-- 
Paul H. Hargrove                          phhargr...@lbl.gov
Computer Languages & Systems Software (CLaSS) Group
Computer Science Department               Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900

Reply via email to