On Fri, Sep 6, 2019 at 4:19 PM Amit Ghadge <amitg.b14(a)gmail.com> wrote:
On Fri, Sep 6, 2019 at 11:35 AM Brad Hubbard <bhubbard(a)redhat.com> wrote:
On Thu, Sep 5, 2019 at 10:29 PM Amit Ghadge <amitg.b14(a)gmail.com> wrote:
>
> Hi,
>
> I try to build Ceph v13.2.6 locally and I was clone and checkout with v13.2.6 tag.
> I run ./run-make-check.sh but it's failed. It's shows below error
>
> [100%] Building CXX object CMakeFiles/rocksdb.dir/env/env_posix.cc.o
> [100%] Building CXX object CMakeFiles/rocksdb.dir/env/io_posix.cc.o
> Linking CXX static library librocksdb.a
> [100%] Built target rocksdb
> [ 8%] Performing install step for 'rocksdb_ext'
> [ 8%] Completed 'rocksdb_ext'
> [ 8%] Built target rocksdb_ext
> make[1]: *** [CMakeFiles/tests.dir/rule] Error 2
> make: *** [tests] Error 2
>
> While I try,
> $ sudo ./install-deps.sh
> $ ./do_cmake.sh
> $ cd build
> $ make
>
> It raised below exception,
>
> In file included from /home/user/my/ceph/ceph/src/common/config.h:24:0,
> from /home/user/my/ceph/ceph/src/common/dout.h:22,
> from /home/user/my/ceph/ceph/src/kv/LevelDBStore.h:25,
> from /home/user/my/ceph/ceph/src/kv/KeyValueDB.cc:6:
> /home/user/my/ceph/ceph/src/log/SubsystemMap.h:65:25: error: enclosing class of
constexpr non-static member function 'const char*
ceph::logging::SubsystemMap::get_name(unsigned int) const' is not a literal type
> constexpr const char* get_name(unsigned subsys) const {
> ^~~~~~~~
> /home/user/my/ceph/ceph/src/log/SubsystemMap.h:19:7: note:
'ceph::logging::SubsystemMap' is not literal because:
> class SubsystemMap {
> ^~~~~~~~~~~~
> /home/user/my/ceph/ceph/src/log/SubsystemMap.h:19:7: note:
'ceph::logging::SubsystemMap' has a non-trivial destructor
> make[3]: *** [src/kv/CMakeFiles/kv_objs.dir/KeyValueDB.cc.o] Error 1
> make[2]: *** [src/kv/CMakeFiles/kv_objs.dir/all] Error 2
>
> Please help me here to suggest any better way to build ceph.
What OS and what compiler are you using?
I'm using gcc compiler and running on CentOS7.6,
[user@cetos7 ~]$ gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-7.1.0/configure --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 7.1.0 (GCC)
[user@cetos7 ~]$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
# scl enable devtoolset-7 bash
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
# gcc --version|head -1
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
# git describe
v13.2.6
# ./install-deps.sh
# ./do_cmake.sh
# cd build
# make -j8 all
...
Scanning dependencies of target radosgw
[100%] Building CXX object src/rgw/CMakeFiles/radosgw.dir/rgw_main.cc.o
Linking CXX executable ../../bin/radosgw
[100%] Built target radosgw
Linking CXX executable ../bin/ceph-dencoder
[100%] Built target ceph-dencoder
So working fine here on a new container with a freshly cloned repo.
What you can try is cloning another copy of the ceph repo and see if
that builds properly. If it does you can go back to your original
clone (the one you are having problems with) and try running the
following commands. you can also try the newer compiler that comes
with devtoolset-7.
$ scl enable devtoolset-7 bash
$ git submodule update --init --recursive
$ git clean -fdx
$ git submodule foreach git clean -fdx
$ ./install-deps.sh
$ ./do_cmake.sh
$ cd build
$ make