Hello, The command --with-radosgw helped in building the code. The compile error and the solution to solve the problem (adding the aforementioned option) is very unintuitive to user. Should this option be there by default? Shall I report a bug? An ideal fix will add --with-radosgw as default config file, unless --without-radosgw is a switch given by the user. Also, I had to install the following other packages on Ubuntu 15.04, for successful compilation. I think these should also be checked by configure script: python-setuptools python-pip python-dev build-essential virtualenv Please let me know if it would be appropriate to report bug and commit fix for the same. Thanks, Shehbaz On Fri, Mar 4, 2016 at 1:45 PM, Orit Wasserman <owasserm@xxxxxxxxxx> wrote: > What configure command did you use? > can you try adding --with-radosgw? > > Orit > > On Fri, 2016-03-04 at 09:41 -0500, Shehbaz Jaffer wrote: >> Hi, >> >> I have cloned ceph from git master branch. I am getting the following >> errors while build: >> >> ENVIRONMENT >> ---------------------- >> >> $ uname -a >> Linux donjaffer 4.3.0-dev #1 SMP Sun Dec 6 13:56:49 EST 2015 x86_64 >> x86_64 x86_64 GNU/Linux >> >> $ g++ -v >> Using built-in specs. >> COLLECT_GCC=g++ >> COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper >> Target: x86_64-linux-gnu >> Configured with: ../src/configure -v --with-pkgversion='Ubuntu >> 4.9.2-10ubuntu13' >> --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs >> --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr >> --program-suffix=-4.9 --enable-shared --enable-linker-build-id >> --libexecdir=/usr/lib --without-included-gettext >> --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 >> --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu >> --enable-libstdcxx-debug --enable-libstdcxx-time=yes >> --enable-gnu-unique-object --disable-vtable-verify --enable-plugin >> --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk >> --enable-gtk-cairo >> --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre >> --enable-java-home >> --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 >> --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 >> --with-arch-directory=amd64 >> --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc >> --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 >> --with-multilib-list=m32,m64,mx32 --enable-multilib >> --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu >> --host=x86_64-linux-gnu --target=x86_64-linux-gnu >> Thread model: posix >> gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13) >> >> BUILD ERROR >> --------------------- >> >> $make >> ... >> CXXLD ceph-dencoder >> rgw/ceph_dencoder-rgw_dencoder.o: In function >> `RGWZoneGroup::generate_test_instances(std::list<RGWZoneGroup*, >> std::allocator<RGWZoneGroup*> >&)': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1095: undefined >> reference to `vtable for RGWZoneGroup' >> rgw/ceph_dencoder-rgw_dencoder.o: In function >> `RGWZoneParams::generate_test_instances(std::list<RGWZoneParams*, >> std::allocator<RGWZoneParams*> >&)': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:870: undefined >> reference to `vtable for RGWZoneParams' >> rgw/ceph_dencoder-rgw_json_enc.o: In function >> `decode_zonegroups(std::map<std::string, RGWZoneGroup, >> std::less<std::string>, std::allocator<std::pair<std::string const, >> RGWZoneGroup> > >&, JSONObj*)': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1095: undefined >> reference to `vtable for RGWZoneGroup' >> rgw/ceph_dencoder-rgw_json_enc.o: In function >> `RGWSystemMetaObj::~RGWSystemMetaObj()': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:763: undefined >> reference to `vtable for RGWSystemMetaObj' >> rgw/ceph_dencoder-rgw_json_enc.o: In function >> `RGWSystemMetaObj::~RGWSystemMetaObj()': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:763: undefined >> reference to `vtable for RGWSystemMetaObj' >> rgw/ceph_dencoder-rgw_json_enc.o: In function `RGWZoneGroup::~RGWZoneGroup()': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1096: undefined >> reference to `vtable for RGWZoneGroup' >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:763: undefined >> reference to `vtable for RGWSystemMetaObj' >> rgw/ceph_dencoder-rgw_json_enc.o: In function `RGWZoneGroup::~RGWZoneGroup()': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1096: undefined >> reference to `vtable for RGWZoneGroup' >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:763: undefined >> reference to `vtable for RGWSystemMetaObj' >> rgw/ceph_dencoder-rgw_json_enc.o: In function >> `std::_Rb_tree<std::string, std::pair<std::string const, >> RGWZoneGroup>, std::_Select1st<std::pair<std::string const, >> RGWZoneGroup> >, std::less<std::string>, >> std::allocator<std::pair<std::string const, RGWZoneGroup> > >> >::_M_erase(std::_Rb_tree_node<std::pair<std::string const, >> RGWZoneGroup> >*)': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1096: undefined >> reference to `vtable for RGWZoneGroup' >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:763: undefined >> reference to `vtable for RGWSystemMetaObj' >> rgw/ceph_dencoder-rgw_json_enc.o: In function >> `std::_Rb_tree_iterator<std::pair<std::string const, RGWZoneGroup> > >> std::_Rb_tree<std::string, std::pair<std::string const, RGWZoneGroup>, >> std::_Select1st<std::pair<std::string const, RGWZoneGroup> >, >> std::less<std::string>, std::allocator<std::pair<std::string const, >> RGWZoneGroup> > >::_M_emplace_hint_unique<std::piecewise_construct_t >> const&, std::tuple<std::string const&>, std::tuple<> >> >(std::_Rb_tree_const_iterator<std::pair<std::string const, >> RGWZoneGroup> >, std::piecewise_construct_t const&, >> std::tuple<std::string const&>&&, std::tuple<>&&)': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1095: undefined >> reference to `vtable for RGWZoneGroup' >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:763: undefined >> reference to `vtable for RGWSystemMetaObj' >> rgw/ceph_dencoder-rgw_json_enc.o: In function `bool >> JSONDecoder::decode_json<RGWZoneGroup>(char const*, RGWZoneGroup&, >> JSONObj*, bool)': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1095: undefined >> reference to `vtable for RGWZoneGroup' >> rgw/ceph_dencoder-rgw_json_enc.o: In function `void >> decode_json_obj<std::string, RGWZoneGroup>(std::map<std::string, >> RGWZoneGroup, std::less<std::string>, >> std::allocator<std::pair<std::string const, RGWZoneGroup> > >&, >> JSONObj*)': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1095: undefined >> reference to `vtable for RGWZoneGroup' >> rgw/ceph_dencoder-rgw_json_enc.o: In function >> `std::_Rb_tree_iterator<std::pair<std::string const, RGWZoneGroup> > >> std::_Rb_tree<std::string, std::pair<std::string const, RGWZoneGroup>, >> std::_Select1st<std::pair<std::string const, RGWZoneGroup> >, >> std::less<std::string>, std::allocator<std::pair<std::string const, >> RGWZoneGroup> > >::_M_insert_<std::pair<std::string const, >> RGWZoneGroup>&>(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, >> std::pair<std::string const, RGWZoneGroup>&)': >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:733: undefined >> reference to `vtable for RGWSystemMetaObj' >> /home/shehbaz/gsoc/ceph/ceph/src/rgw/rgw_rados.h:1063: undefined >> reference to `vtable for RGWZoneGroup' >> collect2: error: ld returned 1 exit status >> Makefile:15392: recipe for target 'ceph-dencoder' failed >> make[3]: *** [ceph-dencoder] Error 1 >> make[3]: Leaving directory '/home/shehbaz/gsoc/ceph/ceph/src' >> Makefile:29913: recipe for target 'all-recursive' failed >> make[2]: *** [all-recursive] Error 1 >> make[2]: Leaving directory '/home/shehbaz/gsoc/ceph/ceph/src' >> Makefile:12277: recipe for target 'all' failed >> make[1]: *** [all] Error 2 >> make[1]: Leaving directory '/home/shehbaz/gsoc/ceph/ceph/src' >> Makefile:689: recipe for target 'all-recursive' failed >> make: *** [all-recursive] Error 1 >> shehbaz@donjaffer:~/gsoc/ceph/ceph$ >> >> >> INITIAL DIAGNOSTICS >> ------------------------------- >> >> In src/rgw/rgw_rados.h >> >> struct RGWZoneGroup : public RGWSystemMetaObj >> >> all pure virtual functions in base class should be overriden in derived class. >> >> In RGWSystemMetaObj, the following functions are defined pure virtual: >> >> virtual const string& get_pool_name(CephContext *cct) = 0; >> virtual const string get_default_oid(bool old_format = false) = 0; >> virtual const string& get_names_oid_prefix() = 0; >> virtual const string& get_info_oid_prefix(bool old_format = false) = 0; >> virtual const string& get_predefined_name(CephContext *cct) = 0; >> >> All these functions have been declared and overridden in struct RGWZoneGroup: >> >> const string& get_pool_name(CephContext *cct); >> const string get_default_oid(bool old_region_format = false); >> const string& get_info_oid_prefix(bool old_region_format = false); >> const string& get_names_oid_prefix(); >> const string& get_predefined_name(CephContext *cct); >> >> I also found a similar report here: >> >> http://ceph.predictor.org.pl/rgw_vtable.txt >> >> But a solution to the problem is not provided. >> >> Any help is much appreciated. >> > > -- Shehbaz Jaffer First Year Graduate Student Sir Edward S Rogers Sr Department of Electrical and Computer Engineering University of Toronto -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html