Date: Sat, 20 Feb 2016 16:09:05 +0100 From: Willem Jan Withagen <wjw@digiware.nl> To: FreeBSD Toolchain <freebsd-toolchain@freebsd.org> Subject: Ceph compilation on inclusion of /usr/include/c++/v1/deque Message-ID: <56C88191.7030801@digiware.nl>
next in thread | raw e-mail | index | archive | help
I'm trying to build a port of Ceph for FreeBSD, which is sort of trying to shoot at a tank with a watergun.... :) There are 2 things to porting burdens: Linux <> FreeBSD GCC <> Clang So I'm not sure whether to error below is due a GCC-ism that is not suppoted by the 3.7.1 Clang we are running on CURRENT. I you want to reproduce it is rather labourious, but not all that complex: git clone https://github.com/wjwithagen/ceph.git cd ceph git checkout wip-wjw-freebsd-tests ./do_freebsd.sh And wait for the error to appear. --WjW libtool: compile: clang++ -DHAVE_CONFIG_H -I. -D__CEPH__ -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -DCEPH_LIBDIR=\"/usr/local/lib\" -DCEPH_PKGLIBDIR=\"/usr/local/lib/ceph\" -DGTEST_USE_OWN_TR1_TUPLE=0 -D_REENTRANT -Woverloaded-virtual -fPIC -I./xxHash -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -ftemplate-depth-1024 -Wnon-virtual-dtor -Wno-invalid-offsetof -g -DGTEST_USE_OWN_TR1_TUPLE=1 -I/usr/local/include -Wno-unused-local-typedef -Wno-mismatched-tags -Wno-macro-redefined -Wno-unused-function -Wno-unused-label -Wno-undefined-bool-conversion -Wno-unused-private-field -Wno-unused-local-typedef -Wno-uninitialized -Wno-gnu-designator -Wno-inconsistent-missing-override -Wno-deprecated-declarations -std=gnu++11 -MT rgw/librgw_la-rgw_basic_types.lo -MD -MP -MF rgw/.deps/librgw_la-rgw_basic_types.Tpo -c rgw/rgw_basic_types.cc -o rgw/librgw_la-rgw_basic_types.o >/dev/null 2>&1 In file included from rgw/rgw_client_io.cc:8: In file included from rgw/rgw_client_io.h:13: In file included from rgw/rgw_common.h:37: In file included from rgw/rgw_website.h:18: rgw/rgw_xml.h:168:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses] while (o = iter.get_next()) { ~~^~~~~~~~~~~~~~~~~ rgw/rgw_xml.h:168:12: note: place parentheses around the assignment to silence this warning while (o = iter.get_next()) { ^ ( ) rgw/rgw_xml.h:168:12: note: use '==' to turn this assignment into an equality comparison while (o = iter.get_next()) { ^ == In file included from rgw/rgw_cache.cc:4: In file included from rgw/rgw_cache.h:7: In file included from rgw/rgw_rados.h:11: In file included from rgw/rgw_common.h:37: In file included from rgw/rgw_website.h:18: rgw/rgw_xml.h:168:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses] while (o = iter.get_next()) { ~~^~~~~~~~~~~~~~~~~ rgw/rgw_xml.h:168:12: note: place parentheses around the assignment to silence this warning while (o = iter.get_next()) { ^ ( ) rgw/rgw_xml.h:168:12: note: use '==' to turn this assignment into an equality comparison while (o = iter.get_next()) { ^ == In file included from rgw/rgw_cr_rados.cc:1: In file included from rgw/rgw_rados.h:11: In file included from rgw/rgw_common.h:37: In file included from rgw/rgw_website.h:18: rgw/rgw_xml.h:168:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses] while (o = iter.get_next()) { ~~^~~~~~~~~~~~~~~~~ rgw/rgw_xml.h:168:12: note: place parentheses around the assignment to silence this warning while (o = iter.get_next()) { ^ ( ) rgw/rgw_xml.h:168:12: note: use '==' to turn this assignment into an equality comparison while (o = iter.get_next()) { ^ == In file included from rgw/rgw_tools.cc:11: In file included from rgw/rgw_common.h:37: In file included from rgw/rgw_website.h:18: rgw/rgw_xml.h:168:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses] while (o = iter.get_next()) { ~~^~~~~~~~~~~~~~~~~ rgw/rgw_xml.h:168:12: note: place parentheses around the assignment to silence this warning while (o = iter.get_next()) { ^ ( ) rgw/rgw_xml.h:168:12: note: use '==' to turn this assignment into an equality comparison while (o = iter.get_next()) { ^ == In file included from rgw/rgw_bucket.cc:11: In file included from rgw/rgw_rados.h:11: In file included from rgw/rgw_common.h:37: In file included from rgw/rgw_website.h:18: rgw/rgw_xml.h:168:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses] while (o = iter.get_next()) { ~~^~~~~~~~~~~~~~~~~ rgw/rgw_xml.h:168:12: note: place parentheses around the assignment to silence this warning while (o = iter.get_next()) { ^ ( ) rgw/rgw_xml.h:168:12: note: use '==' to turn this assignment into an equality comparison while (o = iter.get_next()) { ^ == In file included from rgw/rgw_cache.cc:4: In file included from rgw/rgw_cache.h:7: In file included from rgw/rgw_rados.h:8: In file included from ./include/Context.h:19: In file included from ./common/dout.h:19: In file included from ./global/global_context.h:18: In file included from ./common/ceph_context.h:26: In file included from ./common/cmdparse.h:12: In file included from ./common/Formatter.h:8: /usr/include/c++/v1/deque:912:49: error: invalid application of 'sizeof' to an incomplete type 'value_type' (aka 'RGWPeriod') static const difference_type __block_size = sizeof(value_type) < 256 ? 4096 / sizeof(value_type) : 16; ^~~~~~~~~~~~~~~~~~ /usr/include/c++/v1/deque:1159:15: note: in instantiation of template class 'std::__1::__deque_base<RGWPeriod, std::__1::allocator<RGWPeriod> >' requested here : private __deque_base<_Tp, _Allocator> ^ rgw/rgw_period_history.h:26:27: note: in instantiation of template class 'std::__1::deque<RGWPeriod, std::__1::allocator<RGWPeriod> >' requested here std::deque<RGWPeriod> periods; ^ rgw/rgw_period_history.h:16:7: note: forward declaration of 'RGWPeriod' class RGWPeriod; ^
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56C88191.7030801>