[ 
https://issues.apache.org/jira/browse/THRIFT-3043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14363495#comment-14363495
 ] 

Randy Abernethy commented on THRIFT-3043:
-----------------------------------------

Hey Guys,

For me 1d1bca2  would not build on Ubuntu 14.04, Centos 6.6 or Centos 7 with 
autotools or cmake. I tried the Vagrant box in contrib, both Dockerfiles in 
build/docker and a bare metal Ubuntu 14.04 system that builds recent commits up 
to 1d1bca2 then ran out of time. The Jenkins Thrift-Compiler-Windows job also 
failed here.

It would be great if we had a reference system everyone could use to test 
patches/builds. I'm sure 1d1bca2  builds for others in other setups. The last 
thing I want to do is break someone else's work but without a baseline I don't 
know if I'm making things better or worse. Can we use the Ubuntu 14.04 
contrib/Vagrantfile or the build/docker/Vagrantfile using the ubuntu:latest 
Dockerfile as a reference platform going forward? 

On the IDL compiler front, g++ 4.4 (the version provided with Centos 6) does 
not support the 03 switch. The choices are essentially {noformat}c++98 or 
gnu++0x{noformat} and 0x is deprecated. Should we stick with Cpp98 or not? As I 
see it breaking Cpp98 compatibility in the IDL Compiler source adds nothing, 
but does create a big reduction in build compatibility.  If we're going to do 
Cpp11 let's build a Cpp11 generator and library. That would be a huge user 
benefit. My vote is to leave the compiler source C++98 compatible. I would 
change my vote in a heartbeat if there was a material user benefit to changing.
{noformat}
[root@31ac9c18acc0 /]# g++ --version
g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-11)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[root@31ac9c18acc0 /]# g++ -std=c++98 test.cpp
[root@31ac9c18acc0 /]# g++ -std=c++03 test.cpp
cc1plus: error: unrecognized command line option "-std=c++03"
[root@31ac9c18acc0 /]# g++ -std=gnu++03 test.cpp
cc1plus: error: unrecognized command line option "-std=gnu++03"
[root@31ac9c18acc0 /]# g++ -std=gnu++0x test.cpp
[root@31ac9c18acc0 /]# 
{noformat}

Best,
Randy


> go compiler generator uses non C++98 code
> -----------------------------------------
>
>                 Key: THRIFT-3043
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3043
>             Project: Thrift
>          Issue Type: Bug
>          Components: Go - Compiler
>    Affects Versions: 0.9.3
>            Reporter: Randy Abernethy
>            Priority: Blocker
>
> go compiler generator uses non C++98 code causing builds to fail in Centos 6 
> and other environments. 
> ==> default: src/generate/t_go_generator.cc:415: error: in C++98 
> ���commonInitialisms��� must be initialized by constructor, not by ���{...}���
> ==> default: src/generate/t_go_generator.cc:415: error: deducing from 
> brace-enclosed initializer list requires #include <initializer_list>
> ==> default: src/generate/t_go_generator.cc:415: error: deducing from 
> brace-enclosed initializer list requires #include <initializer_list>
> ==> default: src/generate/t_go_generator.cc:415: warning: extended 
> initializer lists only available with -std=c++0x or -std=gnu++0x
> ==> default: src/generate/t_go_generator.cc:415: error: no matching function 
> for call to ���std::set<std::basic_string<char, std::char_traits<char>, s
> td::allocator<char> >, std::less<std::basic_string<char, 
> std::char_traits<char>, std::allocator<char> > >, 
> std::allocator<std::basic_string<char, std:
> :char_traits<char>, std::allocator<char> > > >::set(<brace-enclosed 
> initializer list>)���
> ==> default: 
> /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_set.h:188:
>  note: candidates are: std::set<_Key, _Compare, _
> Alloc>::set(const std::set<_Key, _Compare, _Alloc>&) [with _Key = 
> std::basic_string<char, std::char_traits<char>, std::allocator<char> >, 
> _Compare = s
> td::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> 
> > >, _Alloc = std::allocator<std::basic_string<char, std::char_traits<ch
> ar>, std::allocator<char> > >]
> ==> default: 
> /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_set.h:136:
>  note:                 std::set<_Key, _Compare, _
> Alloc>::set() [with _Key = std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> >, _Compare = std::less<std::basic_string<char, std::c
> har_traits<char>, std::allocator<char> > >, _Alloc = 
> std::allocator<std::basic_string<char, std::char_traits<char>, 
> std::allocator<char> > >]
> ==> default: make[3]: *** [thrift-t_go_generator.o] Error 1
> ==> default: make[3]: Leaving directory `/thrift/compiler/cpp'
> ==> default: make[2]: *** [all] Error 2



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to