[kudu-CR] make shared: fix build for newer libc++
Todd Lipcon has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/9847 ) Change subject: make_shared: fix build for newer libc++ .. make_shared: fix build for newer libc++ Previously, we used friendship with various internal classes in the 'std' namespace to allow make_shared to work against classes with private constructors. With the version of libc++ that comes with LLVM 6, these tricks no longer work and I was unable to find a suitable friend definition. This patch switches to using a different approach based on constructing a locally-scoped subclass of the target class. I also noticed that TypeEncodingInfo and TypeInfo were only using shared_ptr due to the pre-C++11 prohibition of scoped_ptrs in containers, so switched them to unique_ptr. Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 Reviewed-on: http://gerrit.cloudera.org:8080/9847 Tested-by: Kudu Jenkins Reviewed-by: Adar Dembo--- M src/kudu/cfile/type_encodings.cc M src/kudu/cfile/type_encodings.h M src/kudu/common/types.cc M src/kudu/common/types.h M src/kudu/consensus/log_reader.cc M src/kudu/consensus/log_reader.h M src/kudu/consensus/raft_consensus.cc M src/kudu/consensus/raft_consensus.h M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/rpc/periodic.cc M src/kudu/rpc/periodic.h M src/kudu/util/make_shared.h 13 files changed, 80 insertions(+), 84 deletions(-) Approvals: Kudu Jenkins: Verified Adar Dembo: Looks good to me, approved -- To view, visit http://gerrit.cloudera.org:8080/9847 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 Gerrit-Change-Number: 9847 Gerrit-PatchSet: 4 Gerrit-Owner: Todd Lipcon Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Reviewer: Todd Lipcon
[kudu-CR] make shared: fix build for newer libc++
Adar Dembo has posted comments on this change. ( http://gerrit.cloudera.org:8080/9847 ) Change subject: make_shared: fix build for newer libc++ .. Patch Set 3: Code-Review+2 -- To view, visit http://gerrit.cloudera.org:8080/9847 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 Gerrit-Change-Number: 9847 Gerrit-PatchSet: 3 Gerrit-Owner: Todd LipconGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Comment-Date: Thu, 29 Mar 2018 02:08:39 + Gerrit-HasComments: No
[kudu-CR] make shared: fix build for newer libc++
Hello Tidy Bot, Kudu Jenkins, Adar Dembo, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/9847 to look at the new patch set (#3). Change subject: make_shared: fix build for newer libc++ .. make_shared: fix build for newer libc++ Previously, we used friendship with various internal classes in the 'std' namespace to allow make_shared to work against classes with private constructors. With the version of libc++ that comes with LLVM 6, these tricks no longer work and I was unable to find a suitable friend definition. This patch switches to using a different approach based on constructing a locally-scoped subclass of the target class. I also noticed that TypeEncodingInfo and TypeInfo were only using shared_ptr due to the pre-C++11 prohibition of scoped_ptrs in containers, so switched them to unique_ptr. Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 --- M src/kudu/cfile/type_encodings.cc M src/kudu/cfile/type_encodings.h M src/kudu/common/types.cc M src/kudu/common/types.h M src/kudu/consensus/log_reader.cc M src/kudu/consensus/log_reader.h M src/kudu/consensus/raft_consensus.cc M src/kudu/consensus/raft_consensus.h M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/rpc/periodic.cc M src/kudu/rpc/periodic.h M src/kudu/util/make_shared.h 13 files changed, 80 insertions(+), 84 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/47/9847/3 -- To view, visit http://gerrit.cloudera.org:8080/9847 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 Gerrit-Change-Number: 9847 Gerrit-PatchSet: 3 Gerrit-Owner: Todd LipconGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot
[kudu-CR] make shared: fix build for newer libc++
Hello Tidy Bot, Kudu Jenkins, Adar Dembo, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/9847 to look at the new patch set (#2). Change subject: make_shared: fix build for newer libc++ .. make_shared: fix build for newer libc++ Previously, we used friendship with various internal classes in the 'std' namespace to allow make_shared to work against classes with private constructors. With the version of libc++ that comes with LLVM 6, these tricks no longer work and I was unable to find a suitable friend definition. This patch switches to using a different approach based on constructing a locally-scoped subclass of the target class. I also noticed that TypeEncodingInfo and TypeInfo were only using shared_ptr due to the pre-C++11 prohibition of scoped_ptrs in containers, so switched them to unique_ptr. Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 --- M src/kudu/cfile/type_encodings.cc M src/kudu/cfile/type_encodings.h M src/kudu/common/types.cc M src/kudu/common/types.h M src/kudu/consensus/log_reader.cc M src/kudu/consensus/log_reader.h M src/kudu/consensus/raft_consensus.cc M src/kudu/consensus/raft_consensus.h M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/rpc/periodic.cc M src/kudu/rpc/periodic.h M src/kudu/util/make_shared.h 13 files changed, 80 insertions(+), 84 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/47/9847/2 -- To view, visit http://gerrit.cloudera.org:8080/9847 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 Gerrit-Change-Number: 9847 Gerrit-PatchSet: 2 Gerrit-Owner: Todd LipconGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot
[kudu-CR] make shared: fix build for newer libc++
Adar Dembo has posted comments on this change. ( http://gerrit.cloudera.org:8080/9847 ) Change subject: make_shared: fix build for newer libc++ .. Patch Set 1: Code-Review+2 -- To view, visit http://gerrit.cloudera.org:8080/9847 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 Gerrit-Change-Number: 9847 Gerrit-PatchSet: 1 Gerrit-Owner: Todd LipconGerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Kudu Jenkins Gerrit-Reviewer: Tidy Bot Gerrit-Comment-Date: Wed, 28 Mar 2018 23:15:37 + Gerrit-HasComments: No
[kudu-CR] make shared: fix build for newer libc++
Todd Lipcon has uploaded this change for review. ( http://gerrit.cloudera.org:8080/9847 Change subject: make_shared: fix build for newer libc++ .. make_shared: fix build for newer libc++ Previously, we used friendship with various internal classes in the 'std' namespace to allow make_shared to work against classes with private constructors. With the version of libc++ that comes with LLVM 6, these tricks no longer work and I was unable to find a suitable friend definition. This patch switches to using a different approach based on constructing a locally-scoped subclass of the target class. I also noticed that TypeEncodingInfo and TypeInfo were only using shared_ptr due to the pre-C++11 prohibition of scoped_ptrs in containers, so switched them to unique_ptr. Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 --- M src/kudu/cfile/type_encodings.cc M src/kudu/cfile/type_encodings.h M src/kudu/common/types.cc M src/kudu/common/types.h M src/kudu/consensus/log_reader.cc M src/kudu/consensus/log_reader.h M src/kudu/consensus/raft_consensus.cc M src/kudu/consensus/raft_consensus.h M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/rpc/periodic.cc M src/kudu/rpc/periodic.h M src/kudu/util/make_shared.h 13 files changed, 80 insertions(+), 83 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/47/9847/1 -- To view, visit http://gerrit.cloudera.org:8080/9847 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Ib0dd0338ee531ab3578ba7291637860b56ba6230 Gerrit-Change-Number: 9847 Gerrit-PatchSet: 1 Gerrit-Owner: Todd Lipcon