On 08/05/13 08:10, Anatol Pomozov wrote: > Hi, Allan > > > On Mon, May 6, 2013 at 3:34 PM, Allan McRae <allan@xxxxxxxxxxxxx> wrote: > >> On 07/05/13 06:20, Leonid Isaev wrote: >>> On Mon, 6 May 2013 16:01:30 -0400 >>> Eric Bélanger <snowmaniscool@xxxxxxxxx> wrote: >>> >>>> On Mon, May 6, 2013 at 3:45 PM, Leonid Isaev <lisaev@xxxxxxxxxxxx> >> 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. Note that not all software that uses autoconf is affected. Some do not pass CPPFLAGS when testing for headers. Allan