On Wed, Sep 12, 2018 at 12:00 PM kefu chai <tchaikov@xxxxxxxxx> wrote: > > hi guys, > > i just found that librados now depends on boost because of the newly > introduced boost::optional<sha1_digest_t> ceph::buffer::list::sha1() > method in [0]. and it turns out to be an issue when compiling an > librados application [1] in a clean-room environment. > > so we have two options: > > 1. claim that librados's C++ binding is now moving to C++17. and use > std::optional<> instead of boost<> in librados.hpp. > - pros: libboost won't be a dependency of librados-dev / librados-devel. > - cons: our users are forced to use C++17 for compiling their C++ > application with librados since nautilus > 2. make libboost-dev / libboot-devel a dependency of librados-dev. et voilà. > - pros: users can choose to stay with C++11. > - cons: another dependency at build time. user will need to install > libboost-dev or libboost-devel in their CI script or building host. > 3. change the sha1() method to a more complicated form, for example, > it could return an std::pair<bool, sha1_digest_t>. I'd definitely prefer option 3 -- ::optional is not essential enough to justify adding extra dependencies to librados. John > > any thoughts? > > cheers, > > -- > [0] https://github.com/ceph/ceph/pull/22987 > [1] http://pulpito.ceph.com/kchai-2018-09-12_06:54:12-rados-wip-kefu-testing-2018-09-12-1250-distro-basic-smithi/3010589/ > ==== 8< ===== > 2018-09-12T08:18:06.540 > INFO:tasks.workunit.client.0.smithi018.stdout:[100%] Building CXX > object CMakeFiles/rocksdb-shared.dir/utilities/env_librados.cc.o > 2018-09-12T08:18:06.643 > INFO:tasks.workunit.client.0.smithi018.stderr:In file included from > /usr/include/rados/librados.hpp:11:0, > 2018-09-12T08:18:06.644 INFO:tasks.workunit.client.0.smithi018.stderr: > from > /home/ubuntu/cephtest/mnt.0/client.0/tmp/rocksdb/include/rocksdb/utilities/env_librados.h:14, > 2018-09-12T08:18:06.644 INFO:tasks.workunit.client.0.smithi018.stderr: > from > /home/ubuntu/cephtest/mnt.0/client.0/tmp/rocksdb/utilities/env_librados.cc:4: > 2018-09-12T08:18:06.644 > INFO:tasks.workunit.client.0.smithi018.stderr:/usr/include/rados/buffer.h:64:30: > fatal error: boost/optional.hpp: No such file or directory > 2018-09-12T08:18:06.644 INFO:tasks.workunit.client.0.smithi018.stderr: > #include <boost/optional.hpp> > 2018-09-12T08:18:06.644 INFO:tasks.workunit.client.0.smithi018.stderr: > ^ > 2018-09-12T08:18:06.644 > INFO:tasks.workunit.client.0.smithi018.stderr:compilation terminated. > 2018-09-12T08:18:06.918 > INFO:tasks.workunit.client.0.smithi018.stderr:make[3]: *** > [CMakeFiles/rocksdb-shared.dir/utilities/env_librados.cc.o] Error 1 > ==== >8 ===== > > -- > Regards > Kefu Chai