[arch-general] Current "CPPFLAGS=-D_FORTIFY_SOURCE=2" break some builds
Anatol Pomozov
anatol.pomozov at gmail.com
Tue May 7 18:59:38 EDT 2013
Hi
On Tue, May 7, 2013 at 3:43 PM, Allan McRae <allan at archlinux.org> wrote:
> On 08/05/13 08:10, Anatol Pomozov wrote:
> > Hi, Allan
> >
> >
> > On Mon, May 6, 2013 at 3:34 PM, Allan McRae <allan at archlinux.org> wrote:
> >
> >> On 07/05/13 06:20, Leonid Isaev wrote:
> >>> On Mon, 6 May 2013 16:01:30 -0400
> >>> Eric Bélanger <snowmaniscool at gmail.com> wrote:
> >>>
> >>>> On Mon, May 6, 2013 at 3:45 PM, Leonid Isaev <lisaev at umail.iu.edu>
> >> wrote:
> >>>>
> >>>>> Hi,
> >>>>>
> >>>>> With gcc 4.8.0-4 I can no longer build core/links package
> from
> >> ABS,
> >>>>> with SSL support. The issue is _not_related to makepkg (as I
> originally
> >>>>> thought), even plain ./configure fails if I export
> >>>>> CPPFLAGS=-D_FORTIFY_SOURCE=2, regardless of the content of
> >> {C,CXX,LD}FLAGS.
> >>>>> Here is the error:
> >>>>> --------------------
> >>>>> $ ./configure --with-ssl
> >>>>> [ ... ]
> >>>>> checking for openssl... yes
> >>>>> checking OPENSSL_CFLAGS...
> >>>>> checking OPENSSL_LIBS... -lssl -lcrypto
> >>>>> checking for OpenSSL... no
> >>>>> checking for OpenSSL... no
> >>>>> configure: error: OpenSSL not found
> >>>>> $ cat config.log
> >>>>> [ ... ]
> >>>>> configure:8095: checking for openssl
> >>>>> configure:8102: checking OPENSSL_CFLAGS
> >>>>> configure:8107: checking OPENSSL_LIBS
> >>>>> configure:8139: checking for OpenSSL
> >>>>> configure:8150: gcc -o conftest -g -O2 -D_FORTIFY_SOURCE=2
> conftest.c
> >>>>> -lssl
> >>>>> -lcrypto -lm 1>&5
> >>>>> In file included from configure:8143:0:
> >>>>> confdefs.h:8:16: error: duplicate 'unsigned'
> >>>>> #define size_t unsigned
> >>>>> ^
> >>>>> configure: failed program was:
> >>>>> #line 8143 "configure"
> >>>>> #include "confdefs.h"
> >>>>> #include <openssl/ssl.h>
> >>>>> int main() {
> >>>>> SSLeay_add_ssl_algorithms()
> >>>>> ; return 0; }
> >>>>> --------------------
> >>>>>
> >>>>> With gcc 4.7.2 all builds fine with Arch's default makepkg.conf, i.e.
> >> no
> >>>>> "duplicate unsigned error". Also, unsetting CPPFLAGS allows a
> >> successfull
> >>>>> build.
> >>>>>
> >>>>> Since core/links has been successfully rebuilt, what was the gcc
> >> version?
> >>>>> ANd
> >>>>> can anyone else confirm the above issue?
> >>>>>
> >>>>> TIA,
> >>>>> L.
> >>>>>
> >>>>>
> >>>> Aready fixed in links in testing. Just add a prepare function with:
> >>>> sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" configure
> >>>>
> >>>
> >>> I see, thank you. Alternatively one could simply do CPPFLAGS+=" -O2" in
> >>> PKGBUILD...
> >>>
> >>> I'm still confused though: are we supposed to pass -On flags to cpp now
> >> (this
> >>> is even mentioned against in the configure script)? Or is it still a
> >>> gcc/glibc problem?
> >>>
> >>
> >> The reason we do the sed is so -O2 is not passed with CPPFLAGS during
> >> the actual built. This is just working around an autoconf limitation.
> >>
> >
> > Could you please share more info about autoconf limitation? It is not
> clear
> > for me why autoconf does not pass -O2. And why it is needed when
> > -D_FORTIFY_SOURCE=2 is enabled. Is it a bug that reported to autoconf
> > project? Or maybe it is some fundamental issue that Arch packages will
> live
> > forever?
> >
>
> In short, autoconf is making broken assumptions about warnings given of
> by gcc. Autoconf checks for headers by looking for a warning from gcc
> when it is missing - but not a specific warning, any warning...
> -D_FORTIFY_SOURCE=2 gives a warning when is it not used with
> optimization so the header check fails incorrectly. Autoconf should
> not pass -O2 with CPPFLAGS because it is not a preprocessor flag.
>
Was this issue reported upstream?
> Note that not all software that uses autoconf is affected. Some do not
> pass CPPFLAGS when testing for headers.
More information about the arch-general
mailing list