GNU logs - #10972, boring messages


Message sent to bug-libtool@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#10972: Some troubles with gfortran 4.6 and libtool
Resent-From: Roger Ferrer =?UTF-8?Q?Ib=C3=A1=C3=B1ez?= <rofirrim@HIDDEN>
Original-Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Resent-CC: bug-libtool@HIDDEN
Resent-Date: Thu, 08 Mar 2012 23:33:02 +0000
Resent-Message-ID: <handler.10972.B.133124955031020 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 10972
X-GNU-PR-Package: libtool
X-GNU-PR-Keywords: 
To: 10972 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-libtool@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.133124955031020
          (code B ref -1); Thu, 08 Mar 2012 23:33:02 +0000
Received: (at submit) by debbugs.gnu.org; 8 Mar 2012 23:32:30 +0000
Received: from localhost ([127.0.0.1]:39600 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.72)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1S5moh-00083u-Jb
	for submit <at> debbugs.gnu.org; Thu, 08 Mar 2012 18:32:30 -0500
Received: from eggs.gnu.org ([208.118.235.92]:42716)
	by debbugs.gnu.org with esmtp (Exim 4.72)
	(envelope-from <rofirrim@HIDDEN>) id 1S5m2l-0006vU-6M
	for submit <at> debbugs.gnu.org; Thu, 08 Mar 2012 17:43:04 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <rofirrim@HIDDEN>) id 1S5m1e-0000vc-4d
	for submit <at> debbugs.gnu.org; Thu, 08 Mar 2012 17:41:35 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,
	RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.2
Received: from lists.gnu.org ([208.118.235.17]:40615)
	by eggs.gnu.org with esmtp (Exim 4.71)
	(envelope-from <rofirrim@HIDDEN>) id 1S5m1d-0000vW-VG
	for submit <at> debbugs.gnu.org; Thu, 08 Mar 2012 17:41:34 -0500
Received: from eggs.gnu.org ([208.118.235.92]:38913)
	by lists.gnu.org with esmtp (Exim 4.71)
	(envelope-from <rofirrim@HIDDEN>) id 1S5m1b-000822-WE
	for bug-libtool@HIDDEN; Thu, 08 Mar 2012 17:41:33 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <rofirrim@HIDDEN>) id 1S5m1Z-0000uY-Ly
	for bug-libtool@HIDDEN; Thu, 08 Mar 2012 17:41:31 -0500
Received: from mail-yw0-f41.google.com ([209.85.213.41]:32936)
	by eggs.gnu.org with esmtp (Exim 4.71)
	(envelope-from <rofirrim@HIDDEN>) id 1S5m1Z-0000sf-FA
	for bug-libtool@HIDDEN; Thu, 08 Mar 2012 17:41:29 -0500
Received: by yhr47 with SMTP id 47so697532yhr.0
	for <bug-libtool@HIDDEN>; Thu, 08 Mar 2012 14:41:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:date:message-id:subject:from:to:content-type
	:content-transfer-encoding;
	bh=Ilyoi8MFQfunDY26u4hVQw7TlAHm6eLdyUEnyOuDTiw=;
	b=MkHKf+LTddbQMrPcG+BqveJJhIdd1DGkbjO2oQrt4dq77S9vYQBhU52WG0gdA38gx+
	hsxRomSAThR5wUpaYXZpl5m/BxDmDwiZ2jkoHPH8tiosgVuxv2jREF+Hs4UWfUbCN0OO
	AqoDjVH5qD3LW6tJ9WCn6mOsIkx0Hw/pPLNM5dd7OZm/qDfXpRG66Th3p4HbeOdinOih
	vvbtVKtBQOkjp8BjMk9WC0fKVWYg68sBDjph90N/wZcs+yjdjqBXmHFvPxOuiAvYTyxN
	OBi0cxUWObJFVICo+EQyRIf/IplFoTEUT2C89wfMKhEOMxKRpQQTTaLU2rN59PS8OwJF
	dWTQ==
MIME-Version: 1.0
Received: by 10.236.153.104 with SMTP id e68mr13083094yhk.74.1331246486655;
	Thu, 08 Mar 2012 14:41:26 -0800 (PST)
Received: by 10.236.165.35 with HTTP; Thu, 8 Mar 2012 14:41:26 -0800 (PST)
Date: Thu, 8 Mar 2012 23:41:26 +0100
Message-ID: <CAGeEQ1h9vZzfG5h1XYbu8bVqmvmCpgR72U6GYWCS0jv9hHQahQ@HIDDEN>
From: Roger Ferrer =?UTF-8?Q?Ib=C3=A1=C3=B1ez?= <rofirrim@HIDDEN>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-detected-operating-system: by eggs.gnu.org: Genre and OS details not
	recognized.
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3)
X-Received-From: 208.118.235.17
X-Spam-Score: -1.9 (-)
X-Mailman-Approved-At: Thu, 08 Mar 2012 18:32:04 -0500
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.13
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
X-Spam-Score: -6.1 (------)

Hi,

maybe this has been discussed earlier, if so I apologize in advance.

While looking into some link failures using libtool + gfortran 4.6 I
discovered that as of 4.6, "gfortran -v" emits its own libraries with
a blank between '-l' and the name of the library. As I understood
after skimming libtool source, in most places a form "-lname" is
assumed and no "-l name" is handled (at least in the places relevant
to my problem).

When using autoconf, libtool.m4-injected code, tries to discover
hidden libraries that might be used by the current compiler. There is
a moment where this command is executed

eval '$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'

that expanded to the Fortran compiler (in my case gfortran 4.6) looks like

gfortran -shared -g -O2 -v conftest.o | /bin/grep '\-L'

If we manually check the output of gfortran 4.6 we see many lines but
the one I care is the first one

# This is gfortran 4.6
$ gfortran -shared -g -O2 -v conftest.o
Driving: gfortran -shared -g -O2 -v conftest.o -l gfortran -l m -shared-lib=
gcc
... lots of lines follow ...

Note the blanks in "-l gfortran" and "-l m". Despite that blank, this
line is harmless since it is filtered by "$GREP "\-L"

[Note: In gfortran 4.5 this line appears like this

# This is gfortran 4.5
$ gfortran -shared -v -g -O2 conftest.o
Driving: gfortran -shared -v -g -O2 conftest.o -lgfortran -lm -shared-libgc=
c

Note too that neither gcc nor g++ output such "Driving:" line, this
seems to be a gfortran thing]

So far this is not a problem as that $GREP "\-L" saved us.

Things get messy, though, when using mpif90 (or another similar tool).
mpif90 is the driver/wrapper for easier compilation of MPI Fortran 90
applications. Such wrapper is usually provided by MPI implementations
(like MPICH or OpenMPI). If we tell mpif90 to use gfortran we see that
the above invocation is much more involved

# Tell OpenMPI's mpif90 to use gfortran 4.6
$ export OMPI_FC=3Dgfortran
# Let's assume here we are running configure with FC=3Dmpif90, at some
point the following command is run
$ mpif90 -shared -g -O2 -v conftest.o 2>&1 | grep $GREP "\-L"
Driving: gfortran -shared -g -O2 -v conftest.o -I/path_of_mpi/include
-I/path_of_mpi/lib -L/path_of_mpi/lib -lmpi_f90 -lmpi_f77 -lmpi -ldl
-Wl,--export-dynamic -lnsl -lutil -l gfortran -lm -ldl -l gfortran -l
m -shared-libgcc
... lots of lines follow ...

Note that the wrapper is adding an -Lflag, thus this line (with the
troublesome "-l gfortran" and "-l m") is not filtered by that $GREP
above.

When libtool code analizes "gfortran -v" output it assumes that the
form of a -l option is always "-lname". So it ends assuming it needs a
library named "" (the empty string). This causes that the "postdeps"
variable in the configure-generated libtool ends containing an empty
"-l" (among other legitimate "-lname" libraries). When linking the
application such "-l" flag is added by libtool and link fails.

I came up with several ideas to solve this issue but none seems
totally satisfying to me.

We could ask gfortran guys to revert to pre-4.6 behaviour of emitting
-lname instead of "-l name". Since "gfortran" understands "-l name"
this does not sound too realistic to me :)

Another approach is reducing the "-l name" problem to "-lname".
Replace every occurrence of the variable 'output_verbose_link_cmd' as
follows

 -      output_verbose_link_cmd=3D'$CC -shared $CFLAGS -v
conftest.$objext 2>&1 | $GREP "\-L"'
+      output_verbose_link_cmd=3D'$CC -shared $CFLAGS -v
conftest.$objext 2>&1 | $GREP "\-L" | $SED -e
"s/-l\s\+\(@<:@^-@:>@\S*\)/-l\1/g"'

This seems to work in my Linux machine (GNU sed powered).

I'm not expert in sed so maybe this is too naive, kludgy or plain
wrong. I assume that "-l" alone does not mean anything and must be
followed by a name. Concerning portability, I think that \s (for
whitespace) and \S (for non-whitespace) are GNU extensions. Although
not entirely equivalent they could be replaced by [ ] and [^ ].

Finally, another simpler approach would be filtering that line

+      output_verbose_link_cmd=3D'$CC -shared $CFLAGS -v
conftest.$objext 2>&1 | $GREP -v "Driving:" | $GREP "\-L"

Kind regards,

P.S.: This problem is not a blocker since one can always fix the
configure-generated libtool, for instance using sed.

--
Roger Ferrer Ib=C3=A1=C3=B1ez




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.428 (Entity 5.428)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: Roger Ferrer =?UTF-8?Q?Ib=C3=A1=C3=B1ez?= <rofirrim@HIDDEN>
Subject: bug#10972: Acknowledgement (Some troubles with gfortran 4.6 and
 libtool)
Message-ID: <handler.10972.B.133124955031020.ack <at> debbugs.gnu.org>
References: <CAGeEQ1h9vZzfG5h1XYbu8bVqmvmCpgR72U6GYWCS0jv9hHQahQ@HIDDEN>
X-Gnu-PR-Message: ack 10972
X-Gnu-PR-Package: libtool
Reply-To: 10972 <at> debbugs.gnu.org
Date: Thu, 08 Mar 2012 23:33:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-libtool@HIDDEN

If you wish to submit further information on this problem, please
send it to 10972 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
10972: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D10972
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems



Last modified: Mon, 25 Nov 2019 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.