bugGNU Astronomy Utilities - Bugs: bug #49007, Gnulib C headers not allowing C++...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #49007: Gnulib C headers not allowing C++ compilation in tests

Submitted by:  Mohammad Akhlaghi <makhlaghi>
Submitted on:  Mon 05 Sep 2016 09:14:16 AM UTC  
 
Category:  Installation Severity:  4 - Important
Item Group:  Crash Status:  Fixed
Privacy:  Public Assigned to:  Mohammad Akhlaghi <makhlaghi>
Open/Closed:  Closed

Sun 11 Sep 2016 02:06:11 PM UTC, comment #2: 

A better solution was found and has been pushed to the main repository.

In short, the inclusion of the `bootstrapped/lib' directory was mandated to all Makefiles from `configure.ac'. So to fix the problem, this directory is now only included when building the libraries and utilities (with `AM_CPPFLAGS' in the separate `Makefile.am's), not when building the tests.

As a sidenote: due to a bootstrapping update, the library development branch was merged with master before this commit. However, the library development will again continue on that separate branch.

Mohammad Akhlaghi <makhlaghi>
Project AdministratorIn charge of this item.
Mon 05 Sep 2016 09:43:32 AM UTC, comment #1: 

I have pushed the change below to my development fork of Gnuastro for futher testing.

Mohammad Akhlaghi <makhlaghi>
Project AdministratorIn charge of this item.
Mon 05 Sep 2016 09:14:16 AM UTC, original submission:  

As part of task #13786, a test was written to compile a simple C++ program, it worked on my GNU/Linux system, but a friend of mine who tested it on a Mac came up with the following errors when running `make check'.


g++ -DHAVE_CONFIG_H -I. -I..   -DSYSCONFIG_DIR=\"/usr/local/etc\" -I../lib
-I../bootstrapped/lib -I/usr/local/include  -g -O2 -MT lib/versioncpp.o -MD
-MP -MF $depbase.Tpo -c -o lib/versioncpp.o lib/versioncpp.cpp &&\

mv -f $depbase.Tpo $depbase.Po

In file included from lib/versioncpp.cpp:24:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:436:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:61:

*../bootstrapped/lib/string.h:498:35: **error: **expected ')'*

                  (void *restrict __dest, void const *restrict __src,

*                                  ^*

*../bootstrapped/lib/string.h:498:19: note: *to match this '('

                  (void *restrict __dest, void const *restrict __src,

*                  ^*

*../bootstrapped/lib/string.h:500:19: **error: **'__nonnull__' attribute
parameter 2*

*      is out of bounds*

                  _GL_ARG_NONNULL ((1, 2)));

*                  ^                    ~*

*../bootstrapped/lib/stdlib.h:382:51: note: *expanded from macro
'_GL_ARG_NONNULL'

#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))

*                                                  ^           ~~~~~~*

*../bootstrapped/lib/stdlib.h:210:29: note: *expanded from macro

      '_GL_FUNCDECL_SYS'

  _GL_EXTERN_C rettype func parameters_and_attributes

*                            ^~~~~~~~~~~~~~~~~~~~~~~~~*

In file included from lib/versioncpp.cpp:24:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:438:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar:107:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwctype:55:

*../bootstrapped/lib/wctype.h:66:3: **error: **"Please include config.h
first."*

#error "Please include config.h first."

*  ^*

*../bootstrapped/lib/wctype.h:68:1: **error: **unknown type name*

*      '_GL_INLINE_HEADER_BEGIN'*

_GL_INLINE_HEADER_BEGIN

*^*

*../bootstrapped/lib/wctype.h:692:1: **error: **expected unqualified-id*

_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc));

*^*

*../bootstrapped/lib/stdlib.h:272:5: note: *expanded from macro
'_GL_CXXALIAS_SYS'

    _GL_EXTERN_C int _gl_cxxalias_dummy

*    ^*

*../bootstrapped/lib/stdlib.h:185:23: note: *expanded from macro
'_GL_EXTERN_C'

# define _GL_EXTERN_C extern "C"

*                      ^*

In file included from lib/versioncpp.cpp:24:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:438:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar:107:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwctype:55:

*../bootstrapped/lib/wctype.h:813:1: **error: **unknown type name*

*      '_GL_INLINE_HEADER_END'*

_GL_INLINE_HEADER_END

*^*

In file included from lib/versioncpp.cpp:24:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:438:

In file included from
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar:107:

*/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwctype:61:1:
**error: *

*      expected unqualified-id*

_LIBCPP_BEGIN_NAMESPACE_STD

*^*

*/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config:385:37:
note: *

      expanded from macro '_LIBCPP_BEGIN_NAMESPACE_STD'

#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIB...

*                                    ^*

7 errors generated.

make[3]: *** [lib/versioncpp.o] Error 1

The error is apparently due to the fact that his system is looking into the bootstrapped Gnulib C headers (for example `../bootstrapped/lib/string.h' in the first case), when it is compiling the C++ `versioncpp.cpp' code.

When building actual Gnuastro code, we need to include the Gnulib libraries before the system libraries, so we have the `../bootstrapped/lib' directories in `CPPFLAGS'. However, this is not the case for tests, we want the tests to completely use the system's resources (since we won't be installing Gnulib).

By explicitly setting `CPPFLAGS' in `tests/Makefile.am' as shown below, the problem on his system was solved and it successfully built `versioncpp'.

CPPFLAGS = -I$(top_srcdir)/lib

But this can't be a permanent solution, since we are practically over-writing this important user-defined variable.

Mohammad Akhlaghi <makhlaghi>
Project AdministratorIn charge of this item.

 

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by makhlaghi (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

     

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2016-09-11 makhlaghi StatusConfirmed => Fixed
        Assigned toNone => makhlaghi
        Open/ClosedOpen => Closed

    Back to the top


    Powered by Savane 3.5