Project

General

Profile

Bug #18938

Unable to build 11.2.0 under i686

Added by Sebastien Luttringer 10 months ago. Updated 4 days ago.

Status:
New
Priority:
Normal
Assignee:
Target version:
-
Start date:
02/15/2017
Due date:
% Done:

0%

Source:
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Release:
Needs Doc:
No

Description

Hello,

The ceph 11.2.0 tarball fail to build under i686 architecture when it succeeds under x86_64.

Here is my build commands, run from an i686 Arch Linux.

  mkdir build
  cd build
  cmake \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_SYSCONFDIR=/etc \
    -DCMAKE_INSTALL_SBINDIR=/usr/bin \
    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
    -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib \
    -DSPHINX_BUILD=/usr/bin/sphinx-build2 \
    -DWITH_SYSTEM_BOOST=ON \
    -DWITH_SYSTEMD=ON \
    -DWITH_EMBEDDED=OFF \
    -DWITH_OPENLDAP=OFF \
    -DWITH_LTTNG=OFF \
    -DHAVE_BABELTRACE=OFF \
    -DWITH_TESTS=OFF \
    ..
  make

Here is the make output.

[  1%] Building CXX object src/CMakeFiles/common.dir/crush/CrushWrapper.cc.o
In file included from /build/ceph/src/ceph-11.2.0/src/include/encoding.h:25:0,
                 from /build/ceph/src/ceph-11.2.0/src/include/uuid.h:8,
                 from /build/ceph/src/ceph-11.2.0/src/include/types.h:21,
                 from /build/ceph/src/ceph-11.2.0/src/msg/msg_types.h:21,
                 from /build/ceph/src/ceph-11.2.0/src/osd/osd_types.h:31,
                 from /build/ceph/src/ceph-11.2.0/src/crush/CrushWrapper.cc:4:
/build/ceph/src/ceph-11.2.0/src/include/denc.h: In instantiation of 'typename std::enable_if<((traits:: supported == 1) && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::__cxx11::basic_string<char>; traits = denc_traits<std::__cxx11::basic_string<char> >; typename std::enable_if<((traits:: supported == 1) && (! traits:: featured))>::type = void; size_t = unsigned int]':
/build/ceph/src/ceph-11.2.0/src/crush/CrushWrapper.cc:1239:40:   required from here
/build/ceph/src/ceph-11.2.0/src/include/denc.h:1337:24: error: 'decode_nohead' is not a member of 'denc_traits<std::__cxx11::basic_string<char> >'
   traits::decode_nohead(num, o, cp);
   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/common.dir/build.make:520: src/CMakeFiles/common.dir/crush/CrushWrapper.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:449: src/CMakeFiles/common.dir/all] Error 2
make: *** [Makefile:139: all] Error 2

History

#1 Updated by Romain Gobinet 10 months ago

Hello,

I almost have the same problem but on an ARM platform.

dpkg-buildpackage -j8
[...]
[  3%] Building CXX object src/cls/CMakeFiles/cls_rgw_client.dir/rgw/cls_rgw_types.cc.o
/usr/bin/ranlib ../../lib/libcls_statelog_client.a
cd /mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf/src/cls && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph/src -isystem /mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -fPIC   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/cls_rgw_client.dir/rgw/cls_rgw_types.cc.o -c /mnt/sda1/ceph-build/ceph/src/cls/rgw/cls_rgw_types.cc
make[4]: Leaving directory '/mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf'
In file included from /mnt/sda1/ceph-build/ceph/src/include/encoding.h:25:0,
                 from /mnt/sda1/ceph-build/ceph/src/include/uuid.h:8,
                 from /mnt/sda1/ceph-build/ceph/src/include/types.h:21,
                 from /mnt/sda1/ceph-build/ceph/src/msg/Message.h:26,
                 from /mnt/sda1/ceph-build/ceph/src/msg/Messenger.h:23,
                 from /mnt/sda1/ceph-build/ceph/src/osdc/ObjectCacher.cc:6:
/mnt/sda1/ceph-build/ceph/src/include/denc.h: In instantiation of ‘typename std::enable_if<((traits:: supported == 1) && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::__cxx11::basic_string<char>; traits = denc_traits<std::__cxx11::basic_string<char> >; typename std::enable_if<((traits:: supported == 1) && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/mnt/sda1/ceph-build/ceph/src/messages/MOSDOp.h:397:41:   required from here
/mnt/sda1/ceph-build/ceph/src/include/denc.h:1337:24: error: ‘decode_nohead’ is not a member of ‘denc_traits<std::__cxx11::basic_string<char> >’
   traits::decode_nohead(num, o, cp);
                        ^
[...]
[  3%] Linking CXX static library ../../lib/libcls_rgw_client.a
cd /mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf/src/cls && /usr/bin/cmake -P CMakeFiles/cls_rgw_client.dir/cmake_clean_target.cmake
cd /mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf/src/cls && /usr/bin/cmake -E cmake_link_script CMakeFiles/cls_rgw_client.dir/link.txt --verbose=1
/usr/bin/ar qc ../../lib/libcls_rgw_client.a  CMakeFiles/cls_rgw_client.dir/rgw/cls_rgw_client.cc.o CMakeFiles/cls_rgw_client.dir/rgw/cls_rgw_types.cc.o CMakeFiles/cls_rgw_client.dir/rgw/cls_rgw_ops.cc.o
/usr/bin/ranlib ../../lib/libcls_rgw_client.a
make[4]: Leaving directory '/mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf'
[  3%] Built target cls_rgw_client
make[3]: Leaving directory '/mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf'
Makefile:141: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/mnt/sda1/ceph-build/ceph/obj-arm-linux-gnueabihf'
        cd /mnt/sda1/ceph-build/ceph
dh_auto_build: make -j8 returned exit code 2
debian/rules:29: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory '/mnt/sda1/ceph-build/ceph'
debian/rules:22: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

Romain

#2 Updated by Kefu Chai 9 months ago

Sebastien and Romain, have you tried with the latest master? the denc part of the source have change a considerably since then.

#3 Updated by Romain Gobinet 9 months ago

Hello Kefu,

Just to be accurate, here are some details :

- arch: armv7l
- bitness: 32bits

I failed to compile with this :

git branch -v
* kraken 98a87fa Merge pull request #13501 from shinobu-x/wip-18371-kraken

And with this too:

https://download.ceph.com/tarballs/ceph_11.2.0.orig.tar.gz

Everytime it is related with "denc" part.

In my case i want to compile Kraken because i can't find any version of Ceph for ARM 32bits, only Jewel and arm64.

I will try with the "master" branch, just in case, but i think that the "denc" refactoring appends before the actual state of the branch "kraken".

Romain

#4 Updated by Romain Gobinet 9 months ago

With the "master" branch (wich compile Luminous and not Kraken by the way) i ended with the same error :

[  4%] Building CXX object src/global/CMakeFiles/libglobal_objs.dir/signal_handler.cc.o
cd /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/global && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph-master/src -isystem /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph-master/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fPIC   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/libglobal_objs.dir/signal_handler.cc.o -c /mnt/sda1/ceph-build/ceph-master/src/global/signal_handler.cc
-- Performing Test WARNING_UNDEF_ALLOWED - Success
Compiler flag -Wundef allowed
-- Performing Test WARNING_SHADOW_ALLOWED
-- Performing Test WARNING_SHADOW_ALLOWED - Success
Compiler flag -Wshadow allowed
-- Performing Test WARNING_CAST_ALIGN_ALLOWED
In file included from /mnt/sda1/ceph-build/ceph-master/src/include/encoding.h:25:0,
                 from /mnt/sda1/ceph-build/ceph-master/src/include/uuid.h:8,
                 from /mnt/sda1/ceph-build/ceph-master/src/include/types.h:21,
                 from /mnt/sda1/ceph-build/ceph-master/src/msg/msg_types.h:21,
                 from /mnt/sda1/ceph-build/ceph-master/src/osd/osd_types.h:31,
                 from /mnt/sda1/ceph-build/ceph-master/src/crush/CrushWrapper.cc:4:
/mnt/sda1/ceph-build/ceph-master/src/include/denc.h: In instantiation of ‘typename std::enable_if<(traits:: supported && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::__cxx11::basic_string<char>; traits = denc_traits<std::__cxx11::basic_string<char>, void>; typename std::enable_if<(traits:: supported && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/mnt/sda1/ceph-build/ceph-master/src/crush/CrushWrapper.cc:1410:40:   required from here
/mnt/sda1/ceph-build/ceph-master/src/include/denc.h:1385:24: error: ‘decode_nohead’ is not a member of ‘denc_traits<std::__cxx11::basic_string<char>, void>’
   traits::decode_nohead(num, o, cp);

So i think there is a compiling issue on armhf/armv7l whether for Kraken or Luminous.

Romain

#5 Updated by Sebastien Luttringer 9 months ago

I have tried with the 12.0.0 release (not the latest master) with the same error.

The issue seems to be triggered by the call of decode_nohead function in CrushWrapper.cc. The git blame of the line give a commit back to 2012.

Sage Weil, is the developer who commited the decode_nohead function in denc.h and also in previous definition in encoding_btree.h in 10.2.x.
Maybe he could help to understand what's happening if he's arround.

#6 Updated by Kefu Chai 9 months ago

#7 Updated by Romain Gobinet 9 months ago

[  4%] Building CXX object src/CMakeFiles/crush.dir/crush/CrushWrapper.cc.o
cd /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph-master/src -isystem /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph-master/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fPIC   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/crush.dir/crush/CrushWrapper.cc.o -c /mnt/sda1/ceph-build/ceph-master/src/crush/CrushWrapper.cc
[...]
arm-linux-gnueabihf-g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.
src/CMakeFiles/crush.dir/build.make:161: recipe for target 'src/CMakeFiles/crush.dir/crush/CrushWrapper.cc.o' failed
make[4]: *** [src/CMakeFiles/crush.dir/crush/CrushWrapper.cc.o] Error 4

The pull request 14099 doesn't solve the issue. (I try with the master branch)

#8 Updated by Romain Gobinet 9 months ago

Anyway, depending on the compilations ("dpkg-buildpackage -j8" or "dpkg-buildpackage") we reach differents errors linked with encoding and "decode_nohead". And not only in CrushWrapper.cc.

[  4%] Building CXX object src/CMakeFiles/common-objs.dir/msg/Message.cc.o
cd /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph-master/src -isystem /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph-master/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fPIC   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/common-objs.dir/msg/Message.cc.o -c /mnt/sda1/ceph-build/ceph-master/src/msg/Message.cc
In file included from /mnt/sda1/ceph-build/ceph-master/src/include/encoding.h:25:0,
                 from /mnt/sda1/ceph-build/ceph-master/src/include/uuid.h:8,
                 from /mnt/sda1/ceph-build/ceph-master/src/include/types.h:21,
                 from /mnt/sda1/ceph-build/ceph-master/src/msg/Message.cc:12:
/mnt/sda1/ceph-build/ceph-master/src/include/denc.h: In instantiation of ‘typename std::enable_if<(traits:: supported && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::__cxx11::basic_string<char>; traits = denc_traits<std::__cxx11::basic_string<char>, void>; typename std::enable_if<(traits:: supported && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/mnt/sda1/ceph-build/ceph-master/src/messages/MOSDOp.h:435:46:   required from here
/mnt/sda1/ceph-build/ceph-master/src/include/denc.h:1385:24: error: ‘decode_nohead’ is not a member of ‘denc_traits<std::__cxx11::basic_string<char>, void>’
   traits::decode_nohead(num, o, cp);
                        ^
/mnt/sda1/ceph-build/ceph-master/src/include/denc.h: In instantiation of ‘typename std::enable_if<(traits:: supported && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = ceph::buffer::list; traits = denc_traits<ceph::buffer::list>; typename std::enable_if<(traits:: supported && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/mnt/sda1/ceph-build/ceph-master/src/messages/MClientCaps.h:240:51:   required from here
/mnt/sda1/ceph-build/ceph-master/src/include/denc.h:1385:24: error: ‘decode_nohead’ is not a member of ‘denc_traits<ceph::buffer::list>’
src/CMakeFiles/common-objs.dir/build.make:1530: recipe for target 'src/CMakeFiles/common-objs.dir/msg/Message.cc.o' failed
make[4]: *** [src/CMakeFiles/common-objs.dir/msg/Message.cc.o] Error 1

#9 Updated by Kefu Chai 9 months ago

Romain,

arm-linux-gnueabihf-g++: internal compiler error: Killed (program cc1plus)

hmm, this is an issue of GCC. but i updated https://github.com/ceph/ceph/pull/14099 to address #18938-8

could you give it another shot? thanks!

#10 Updated by Kefu Chai 9 months ago

  • Status changed from New to Need Review
  • Assignee set to Kefu Chai

#11 Updated by Romain Gobinet 9 months ago

Sorry, it doesn't work :

[  4%] Building CXX object src/CMakeFiles/common-objs.dir/msg/Message.cc.o
cd /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph-master/src -isystem /mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph-master/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fPIC   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/common-objs.dir/msg/Message.cc.o -c /mnt/sda1/ceph-build/ceph-master/src/msg/Message.cc
In file included from /mnt/sda1/ceph-build/ceph-master/src/include/encoding.h:25:0,
                 from /mnt/sda1/ceph-build/ceph-master/src/include/uuid.h:8,
                 from /mnt/sda1/ceph-build/ceph-master/src/include/types.h:21,
                 from /mnt/sda1/ceph-build/ceph-master/src/msg/Message.cc:12:
/mnt/sda1/ceph-build/ceph-master/src/include/denc.h: In instantiation of ‘typename std::enable_if<(traits:: supported && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = ceph::buffer::list; traits = denc_traits<ceph::buffer::list>; typename std::enable_if<(traits:: supported && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/mnt/sda1/ceph-build/ceph-master/src/messages/MClientCaps.h:240:51:   required from here
/mnt/sda1/ceph-build/ceph-master/src/include/denc.h:1396:24: error: ‘decode_nohead’ is not a member of ‘denc_traits<ceph::buffer::list>’
   traits::decode_nohead(num, o, cp);
                        ^
src/CMakeFiles/common-objs.dir/build.make:1530: recipe for target 'src/CMakeFiles/common-objs.dir/msg/Message.cc.o' failed

#12 Updated by Sebastien Luttringer 9 months ago

Hi, is it possible to get a patch for the 11.2.0?

#13 Updated by Kefu Chai 9 months ago

Sorry, it doesn't work :

no, it does not. but if we look at the error messages closer. we have progress! i updated https://github.com/ceph/ceph/pull/14099 to address the new errors.

Romain, could you try it again? thanks!

Hi, is it possible to get a patch for the 11.2.0?

it's possible and we are working on it.

#14 Updated by Romain Gobinet 9 months ago

It seems good for the "encoding" issues ! But ...

Scanning dependencies of target build_version
make[8]: Leaving directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/rocksdb'
make[8]: Entering directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/rocksdb'
[  0%] Building CXX object CMakeFiles/build_version.dir/build_version.cc.o
arm-linux-gnueabihf-g++: error: unrecognized command line option ‘-momit-leaf-frame-pointer’
CMakeFiles/build_version.dir/build.make:62: recipe for target 'CMakeFiles/build_version.dir/build_version.cc.o' failed
make[8]: *** [CMakeFiles/build_version.dir/build_version.cc.o] Error 1
make[8]: Leaving directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/rocksdb'
CMakeFiles/Makefile2:1818: recipe for target 'CMakeFiles/build_version.dir/all' failed
make[7]: *** [CMakeFiles/build_version.dir/all] Error 2
make[7]: Leaving directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/rocksdb'
CMakeFiles/Makefile2:2424: recipe for target 'CMakeFiles/rocksdb.dir/rule' failed
make[6]: *** [CMakeFiles/rocksdb.dir/rule] Error 2
make[6]: Leaving directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/rocksdb'
Makefile:896: recipe for target 'rocksdb' failed
make[5]: *** [rocksdb] Error 2
make[5]: Leaving directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf/src/rocksdb'
src/CMakeFiles/rocksdb_ext.dir/build.make:115: recipe for target 'src/rocksdb_ext-prefix/src/rocksdb_ext-stamp/rocksdb_ext-build' failed
make[4]: *** [src/rocksdb_ext-prefix/src/rocksdb_ext-stamp/rocksdb_ext-build] Error 2
make[4]: Leaving directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf'
CMakeFiles/Makefile2:1544: recipe for target 'src/CMakeFiles/rocksdb_ext.dir/all' failed
make[3]: *** [src/CMakeFiles/rocksdb_ext.dir/all] Error 2
make[3]: Leaving directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf'
Makefile:141: recipe for target 'all' failed  
make[2]: *** [all] Error 2
make[2]: Leaving directory '/mnt/sda1/ceph-build/ceph-master/obj-arm-linux-gnueabihf'
        cd /mnt/sda1/ceph-build/ceph-master
dh_auto_build: make -j1 returned exit code 2
debian/rules:29: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory '/mnt/sda1/ceph-build/ceph-master'
debian/rules:22: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

Another GCC issue probably :(

#15 Updated by Kefu Chai 9 months ago

arm-linux-gnueabihf-g++: error: unrecognized command line option ‘-momit-leaf-frame-pointer’

not it's not, this option is not supported on all architectures, let me fix it. hold on!

#16 Updated by Kefu Chai 9 months ago

Romain, have you updated the rocksdb submodule?
could you post the output of following command?

cd src/rocksdb
git describe

in my source tree, it's

$ git describe
v4.9-728-g3b4ac807

and could you run this command under your ceph source tree?

git submodule update --init --recursive --force

it will sync up the submodules.

because we do check the availability of "-momit-leaf-frame-pointer" before using it.

#17 Updated by Romain Gobinet 9 months ago

It's a little bit weird :

# cd src/rocksdb/
# git describe
2.7.fb-4804-g3b4ac80
# cd -
# git submodule update --init --recursive --force
[...]
Submodule path 'src/rocksdb': checked out '3b4ac8076bff9fd6a8b4ccbc37a1995d08981840'
[...]
# cd src/rocksdb
# git describe
2.7.fb-4804-g3b4ac80

I've already synced the submodules when i switched from "kraken" to "master" branch. (since #2 you asked me to test with "master")

# git describe
v12.0.0-1660-g72097c7
# git branch -v
  kraken 98a87fa Merge pull request #13501 from shinobu-x/wip-18371-kraken
* master 72097c7 Merge pull request #14004 from liewegas/wip-osd-full-failsafe

#18 Updated by Kefu Chai 9 months ago

if the rocksdb is at 3b4ac8076bff9fd6a8b4ccbc37a1995d08981840, then we are good. could you try again after you ran "git submodule update --init --recursive --force"?

if it does not work, could you nuke your build directory and try again? i believe the commit of rocksdb referenced by ceph's master does contain https://github.com/facebook/rocksdb/commit/4e35ffdfab1c86487cdad33d8eebf29ee3ceee04, which addresses the issue you run into.

#19 Updated by gyorgy kiss 9 months ago

Hi,

I'm happy that found this bug thread :) not I'm the only crazy to try build on arm.

$ git branch -v
  • kraken 98a87fa Merge pull request #13501 from shinobu-x/wip-18371-kraken
    $ git describe
    v11.2.0-67-g98a87fa
    /src/rocksdb $ git describe
    2.7.fb-4607-ga0deec9

But I have a little different error message on end:

I gave a ./run-make-check.sh from copied git. This is a correct way?

[ 4%] Building CXX object src/librados/CMakeFiles/librados_objs.dir/IoCtxImpl.cc.o
In file included from /home/pi/ceph_kraken/ceph/src/include/encoding.h:25:0,
from /home/pi/ceph_kraken/ceph/src/include/uuid.h:8,
from /home/pi/ceph_kraken/ceph/src/include/types.h:21,
from /home/pi/ceph_kraken/ceph/src/msg/Message.h:26,
from /home/pi/ceph_kraken/ceph/src/msg/Messenger.h:23,
from /home/pi/ceph_kraken/ceph/src/osdc/ObjectCacher.cc:6:
/home/pi/ceph_kraken/ceph/src/include/denc.h: In instantiation of ‘typename std::enable_if<((traits:: supported 1) && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::basic_string&lt;char&gt;; traits = denc_traits&lt;std::basic_string&lt;char&gt; >; typename std::enable_if<((traits:: supported 1) && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/home/pi/ceph_kraken/ceph/src/messages/MOSDOp.h:397:41: required from here
/home/pi/ceph_kraken/ceph/src/include/denc.h:1337:35: error: ‘decode_nohead’ is not a member of ‘denc_traits<std::basic_string<char> >’
traits::decode_nohead(num, o, cp);
^
In file included from /home/pi/ceph_kraken/ceph/src/include/encoding.h:25:0,
from /home/pi/ceph_kraken/ceph/src/common/entity_name.h:22,
from /home/pi/ceph_kraken/ceph/src/common/config.h:26,
from /home/pi/ceph_kraken/ceph/src/common/dout.h:20,
from /home/pi/ceph_kraken/ceph/src/include/Context.h:19,
from /home/pi/ceph_kraken/ceph/src/common/Cond.h:22,
from /home/pi/ceph_kraken/ceph/src/librados/IoCtxImpl.h:18,
from /home/pi/ceph_kraken/ceph/src/librados/IoCtxImpl.cc:17:
/home/pi/ceph_kraken/ceph/src/include/denc.h: In instantiation of ‘typename std::enable_if<((traits:: supported 1) && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::basic_string&lt;char&gt;; traits = denc_traits&lt;std::basic_string&lt;char&gt; >; typename std::enable_if<((traits:: supported 1) && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/home/pi/ceph_kraken/ceph/src/messages/MOSDOp.h:397:41: required from here
/home/pi/ceph_kraken/ceph/src/include/denc.h:1337:35: error: ‘decode_nohead’ is not a member of ‘denc_traits<std::basic_string<char> >’
traits::decode_nohead(num, o, cp);
^
src/osdc/CMakeFiles/osdc_rbd_objs.dir/build.make:62: recipe for target 'src/osdc/CMakeFiles/osdc_rbd_objs.dir/ObjectCacher.cc.o' failed
make3: * [src/osdc/CMakeFiles/osdc_rbd_objs.dir/ObjectCacher.cc.o] Error 1
CMakeFiles/Makefile2:3471: recipe for target 'src/osdc/CMakeFiles/osdc_rbd_objs.dir/all' failed
make2:
[src/osdc/CMakeFiles/osdc_rbd_objs.dir/all] Error 2
make2:
Waiting for unfinished jobs....
[ 4%] Building CXX object src/librados/CMakeFiles/librados_objs.dir/RadosXattrIter.cc.o
[ 4%] Building CXX object src/librados/CMakeFiles/librados_objs.dir/RadosClient.cc.o
src/librados/CMakeFiles/librados_objs.dir/build.make:62: recipe for target 'src/librados/CMakeFiles/librados_objs.dir/IoCtxImpl.cc.o' failed
make3:
[src/librados/CMakeFiles/librados_objs.dir/IoCtxImpl.cc.o] Error 1
make3:
Waiting for unfinished jobs....
In file included from /home/pi/ceph_kraken/ceph/src/include/encoding.h:25:0,
from /home/pi/ceph_kraken/ceph/src/common/entity_name.h:22,
from /home/pi/ceph_kraken/ceph/src/common/config.h:26,
from /home/pi/ceph_kraken/ceph/src/librados/RadosClient.cc:26:
/home/pi/ceph_kraken/ceph/src/include/denc.h: In instantiation of ‘typename std::enable_if<((traits:: supported 1) && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::basic_string&lt;char&gt;; traits = denc_traits&lt;std::basic_string&lt;char&gt; >; typename std::enable_if<((traits:: supported 1) && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/home/pi/ceph_kraken/ceph/src/messages/MOSDOp.h:397:41: required from here
/home/pi/ceph_kraken/ceph/src/include/denc.h:1337:35: error: ‘decode_nohead’ is not a member of ‘denc_traits<std::basic_string<char> >’
traits::decode_nohead(num, o, cp);
^
src/librados/CMakeFiles/librados_objs.dir/build.make:110: recipe for target 'src/librados/CMakeFiles/librados_objs.dir/RadosClient.cc.o' failed
make3:
[src/librados/CMakeFiles/librados_objs.dir/RadosClient.cc.o] Error 1
CMakeFiles/Makefile2:3552: recipe for target 'src/librados/CMakeFiles/librados_objs.dir/all' failed
make2:
[src/librados/CMakeFiles/librados_objs.dir/all] Error 2
CMakeFiles/Makefile2:243: recipe for target 'CMakeFiles/tests.dir/rule' failed
make1:
[CMakeFiles/tests.dir/rule] Error 2
Makefile:186: recipe for target 'tests' failed
make: *
* [tests] Error 2

#20 Updated by gyorgy kiss 9 months ago

Oh sorry, I'm not formatted correctly my last message. Shame on me.

#21 Updated by Romain Gobinet 9 months ago

Kefu,

There was an issue with my source tree, so i create a fresh one (with https://github.com/ceph/ceph/pull/14099 applied). I confirm that the commit of rocksdb referenced by ceph's master does contain https://github.com/facebook/rocksdb/commit/4e35ffdfab1c86487cdad33d8eebf29ee3ceee04 .

But i can't explain why a "git submodule ... --force" doesn't to the trick.

By the way there is another issue with ARM compilation ;)

Here are the output :

[ 20%] Building CXX object src/osd/CMakeFiles/osd.dir/OSD.cc.o
cd /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/osd && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src -isystem /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fPIC   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/osd.dir/OSD.cc.o -c /mnt/sda1/ceph-build/ceph-master-reloaded/src/osd/OSD.cc
arm-linux-gnueabihf-g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.
src/osd/CMakeFiles/osd.dir/build.make:65: recipe for target 'src/osd/CMakeFiles/osd.dir/OSD.cc.o' failed

It seems to be a GCC problem :(

#22 Updated by Romain Gobinet 9 months ago

Ok ... shame on me, after reading the kernel log :

Out of memory: Kill process 15983 (cc1plus) score 671 or sacrifice child

I try to compile on a small SBC and i forgot to setup a swap ...

I will do what is necessary and keep you informed.

#23 Updated by Romain Gobinet 9 months ago

It's better with swap :) It takes a very long time to compile on such a small device.

And it failed again (sig) but in a diferent way this time and further than before (39% !!) :

[ 39%] Building CXX object src/librbd/CMakeFiles/rbd_internal.dir/io/ImageRequest.cc.o
cd /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/librbd && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src -isystem /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fPIC   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/rbd_internal.dir/io/ImageRequest.cc.o -c /mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/io/ImageRequest.cc
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/io/ImageRequest.cc: In instantiation of ‘int librbd::io::ImageRequest<ImageCtxT>::clip_request() [with ImageCtxT = librbd::ImageCtx]’:
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/io/ImageRequest.cc:832:28:   required from here
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/io/ImageRequest.cc:184:20: error: cannot convert ‘size_t* {aka unsigned int*}’ to ‘uint64_t* {aka long long unsigned int*}’ for argument ‘3’ to ‘int librbd::clip_io(librbd::ImageCtx*, uint64_t, uint64_t*)’
     int r = clip_io(get_image_ctx(&m_image_ctx), image_extent.first, &clip_len);
                    ^
src/librbd/CMakeFiles/rbd_internal.dir/build.make:1025: recipe for target 'src/librbd/CMakeFiles/rbd_internal.dir/io/ImageRequest.cc.o' failed
make[4]: *** [src/librbd/CMakeFiles/rbd_internal.dir/io/ImageRequest.cc.o] Error 1
make[4]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf'
CMakeFiles/Makefile2:19974: recipe for target 'src/librbd/CMakeFiles/rbd_internal.dir/all' failed
make[3]: *** [src/librbd/CMakeFiles/rbd_internal.dir/all] Error 2

#24 Updated by gyorgy kiss 9 months ago

Hi Romain, Kefu,

I have made a total new local source:

 git clone git://github.com/ceph/ceph
 git submodule update --init --recursive --force
 git apply --stat {path}/14099.patch

but as far I see, something different on end:

ceph $ git describe
v12.0.0-1788-gb894dc6

ceph/src/rocksdb $ git describe
2.7.fb-4804-g3b4ac80

Can you help me, what have I made wrong?

Thanks

#25 Updated by Romain Gobinet 9 months ago

Nothing wrong, i've almost the same here !

v12.0.0-1739-g9de1f1a and 2.7.fb-4804-g3b4ac80, that's great but it failed to compile.

#26 Updated by gyorgy kiss 9 months ago

Thanks Romain,

The only difference yet I see, my compile process fails at 4%... (encoding, nohead. etc.) My git apply for 14099 is correct so? (that changed some files as far I see :) )..

#27 Updated by gyorgy kiss 9 months ago

Hi,

An interesting status:
on brand new hdd, new source taken.
 git clone https://github.com/ceph/ceph
git apply {path}/14099.patch

and now check what we have:
ceph $ git describe 
v12.0.0-1788-gb894dc6
ceph/src/rocksdb $ git describe 
v12.0.0-1788-gb894dc

That should be without submodule update?
now I gave out easy: dpkg-buildpackage -j8

let see :)

#28 Updated by Kefu Chai 9 months ago

good news, everyone! we are close.

@Romain, since https://github.com/ceph/ceph/pull/14099 is pulled by Sage into his testing branch for testing, and the new issue resides in RBD, i am posting another fix at https://github.com/ceph/ceph/pull/14159.

you need to apply both fixes to try to compile Ceph on ARM32.

@gyorgy, i agree with Romain, you did nothing wrong at #18938-24. the reason that the compilation error'ed out earlier than Romain is probably the uncertainness caused by parallelism, where one of the compilation jobs reached the decode_nohead issue earlier. just you were not lucky in that run. and in #18938-27, you didn't update the submodule, which will lead to a build failure earlier =(

#29 Updated by gyorgy kiss 9 months ago

Hi Kefu, Hi Romain

I gave a try:

pi@node1:~/dev/ceph_kraken $  git clone git://github.com/ceph/ceph
Cloning into 'ceph'...
remote: Counting objects: 484034, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 484034 (delta 5), reused 0 (delta 0), pack-reused 484024
Receiving objects: 100% (484034/484034), 193.98 MiB | 1.34 MiB/s, done.
Resolving deltas: 100% (381406/381406), done.
Checking connectivity... done.
pi@node1:~/dev/ceph_kraken $  git submodule update --init --recursive --force
...
pi@node1:~/dev/ceph_kraken/ceph $ git apply --stat ../../../14099.patch
 src/include/denc.h   |   13 ++++++++-----
 src/include/denc.h   |   19 +++++++++++++++++++
 src/test/encoding.cc |   34 ++++++++++++++++++++++++++++++++++
 3 files changed, 61 insertions(+), 5 deletions(-)

pi@node1:~/dev/ceph_kraken/ceph $ git apply --stat ../../../14159.patch
 src/librbd/io/ImageRequest.cc |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

pi@node1:~/dev/ceph_kraken/ceph $ git describe 
v12.0.0-1803-g52468ae

pi@node1:~/dev/ceph_kraken/ceph/src/rocksdb $ git describe 
2.7.fb-4804-g3b4ac80

pi@node1:~/dev/ceph_kraken/ceph $ vi install-deps.sh 
(insert raspbian as known os)

pi@node1:~/dev/ceph_kraken/ceph $ ./run-make-check.sh 
Checking hostname sanity... OK

 [ 2%] Building CXX object src/osdc/CMakeFiles/osdc_rbd_objs.dir/Striper.cc.o
In file included from /home/pi/dev/ceph_kraken/ceph/src/include/encoding.h:25:0
... fail ...

ok something was wrong. I nuked everything again...
next shoot, lets see without parallism, and on the good-old way:

pi@node1:~/dev/ceph_kraken $  git clone git://github.com/ceph/ceph
pi@node1:~/dev/ceph_kraken $  git submodule update --init --recursive --force
pi@node1:~/dev/ceph_kraken/ceph $ git apply --stat ../../../14099.patch
pi@node1:~/dev/ceph_kraken/ceph $ git apply --stat ../../../14159.patch
pi@node1:~/dev/ceph_kraken/ceph $ dpkg-buildpackage

it runs now, :) I will send the result.

#30 Updated by gyorgy kiss 9 months ago

Hello,

here is my result...
what should I check now?

[  1%] Building CXX object src/CMakeFiles/common-objs.dir/crush/CrushWrapper.cc.o
cd /home/pi/dev/ceph_kraken/ceph/obj-arm-linux-gnueabihf/src && /usr/bin/c++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /home/pi/dev/ceph_kraken/ceph/obj-arm-linux-gnueabihf/boost/include -I/home/pi/dev/ceph_kraken/ceph/obj-arm-linux-gnueabihf/src/include -I/home/pi/dev/ceph_kraken/ceph/src -isystem /home/pi/dev/ceph_kraken/ceph/obj-arm-linux-gnueabihf/include -I/home/pi/dev/ceph_kraken/ceph/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -fPIC   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/common-objs.dir/crush/CrushWrapper.cc.o -c /home/pi/dev/ceph_kraken/ceph/src/crush/CrushWrapper.cc
In file included from /home/pi/dev/ceph_kraken/ceph/src/include/encoding.h:25:0,
                 from /home/pi/dev/ceph_kraken/ceph/src/include/uuid.h:8,
                 from /home/pi/dev/ceph_kraken/ceph/src/include/types.h:21,
                 from /home/pi/dev/ceph_kraken/ceph/src/msg/msg_types.h:21,
                 from /home/pi/dev/ceph_kraken/ceph/src/osd/osd_types.h:31,
                 from /home/pi/dev/ceph_kraken/ceph/src/crush/CrushWrapper.cc:4:
/home/pi/dev/ceph_kraken/ceph/src/include/denc.h: In instantiation of ‘typename std::enable_if<(traits:: supported && (! traits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::basic_string<char>; traits = denc_traits<std::basic_string<char>, void>; typename std::enable_if<(traits:: supported && (! traits:: featured))>::type = void; size_t = unsigned int]’:
/home/pi/dev/ceph_kraken/ceph/src/crush/CrushWrapper.cc:1412:40:   required from here
/home/pi/dev/ceph_kraken/ceph/src/include/denc.h:1398:35: error: ‘decode_nohead’ is not a member of ‘denc_traits<std::basic_string<char>, void>’
   traits::decode_nohead(num, o, cp);
                                   ^
src/CMakeFiles/common-objs.dir/build.make:546: recipe for target 'src/CMakeFiles/common-objs.dir/crush/CrushWrapper.cc.o' failed
make[4]: *** [src/CMakeFiles/common-objs.dir/crush/CrushWrapper.cc.o] Error 1
make[4]: Leaving directory '/home/pi/dev/ceph_kraken/ceph/obj-arm-linux-gnueabihf'
CMakeFiles/Makefile2:764: recipe for target 'src/CMakeFiles/common-objs.dir/all' failed
make[3]: *** [src/CMakeFiles/common-objs.dir/all] Error 2
make[3]: Leaving directory '/home/pi/dev/ceph_kraken/ceph/obj-arm-linux-gnueabihf'
Makefile:141: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/pi/dev/ceph_kraken/ceph/obj-arm-linux-gnueabihf'
    cd /home/pi/dev/ceph_kraken/ceph
dh_auto_build: make -j1 returned exit code 2
debian/rules:33: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory '/home/pi/dev/ceph_kraken/ceph'
debian/rules:26: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
pi@node1:~/dev/ceph_kraken/ceph $ 

#31 Updated by Romain Gobinet 9 months ago

Hi Kefu,

The pull request 14159do the job but the compilation failed another way, hare are some traces.

The first compilation thread gave this :

[ 69%] Building CXX object src/test/rbd_mirror/CMakeFiles/unittest_rbd_mirror.dir/test_mock_PoolWatcher.cc.o
cd /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/test/rbd_mirror && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src -isystem /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src/xxHash -I/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fPIE   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -I/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/googletest/googlemock/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/googletest/googletest/include -fno-strict-aliasing -std=c++11 -o CMakeFiles/unittest_rbd_mirror.dir/test_mock_PoolWatcher.cc.o -c /mnt/sda1/ceph-build/ceph-master-reloaded/src/test/rbd_mirror/test_mock_PoolWatcher.cc
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o:(.rodata+0x3e98): multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::ReplayHandler'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:(.rodata+0x65a4): first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage_small':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:303: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::ReplayHandler'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/type_index/stl_type_index.hpp:203: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `testing::internal::scoped_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~scoped_ptr()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-port.h:1120: multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::MetadataListener'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/usr/include/c++/5/bits/basic_ios.h:282: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage_small':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:303: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::MetadataListener'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:303: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `Cond::~Cond()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/common/Cond.h:44: multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::C_OpEventSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/test_mock_Journal.cc:56: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:399: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::C_OpEventSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:303: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `testing::AssertionResult::message() const':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/gtest.h:298: multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::C_IOEventSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/journal/mock/MockJournaler.h:83: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage_small':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:307: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::C_IOEventSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:401: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `testing::AssertionResult testing::internal::EqHelper<true>::Compare<int, int>(char const*, char const*, int const&, int const&, testing::internal::EnableIf<!testing::internal::is_pointer<int>::value>::type*)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/gtest.h:1459: multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::C_ReplayProcessSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/journal/mock/MockJournaler.h:58: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage_small':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:286: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::C_ReplayProcessSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:307: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o:(.rodata+0x3418): multiple definition of `typeinfo name for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:(.rodata+0x1b7c): first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~C_StateCallbackAdapter':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:59: multiple definition of `typeinfo for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `rados_state_callback<librbd::operation::DisableFeaturesRequest<librbd::(anonymous namespace)::MockOperationImageCtx>, &librbd::operation::DisableFeaturesRequest<librbd::(anonymous namespace)::MockOperationImageCtx>::handle_set_features, true>':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:38: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:339: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~C_StateCallbackAdapter':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:59: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `rados_state_callback<librbd::operation::DisableFeaturesRequest<librbd::(anonymous namespace)::MockOperationImageCtx>, &librbd::operation::DisableFeaturesRequest<librbd::(anonymous namespace)::MockOperationImageCtx>::handle_set_features, true>':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:43: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:172: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~C_CallbackAdapter':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:46: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `send_close_journal':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/operation/DisableFeaturesRequest.cc:351: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:93: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~MonomorphicImpl':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-actions.h:438: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `C_StateCallbackAdapter':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:62: multiple definition of `typeinfo name for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:252: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~gmock_Impl':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/test_mock_fixture.h:41: multiple definition of `typeinfo for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o:(.rodata+0x3020): multiple definition of `typeinfo name for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `~gmock_Impl':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/test_mock_fixture.h:41: multiple definition of `typeinfo for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `expect_block_requests':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/operation/test_mock_EnableFeaturesRequest.cc:232: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:339: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `~gmock_Impl':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/test_mock_fixture.h:41: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `testing::internal::MatcherBase<int>::~MatcherBase()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:294: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:172: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)':
/usr/include/c++/5/bits/basic_string.tcc:210: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `testing::Matcher<int>::Matcher(int)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:294: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:93: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)':
/usr/include/c++/5/bits/basic_string.tcc:215: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `librbd::AsyncRequest<librbd::MockImageCtx>::finish(int)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/AsyncRequest.h:59: multiple definition of `typeinfo name for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:252: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)':
/usr/include/c++/5/bits/basic_string.tcc:221: multiple definition of `typeinfo for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
[...many pages of this...]
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `manage':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:404: multiple definition of `typeinfo for librbd::operation::Request<librbd::MockImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:328: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `expect_get_object_name':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/operation/test_mock_SnapshotRollbackRequest.cc:124: multiple definition of `typeinfo name for librbd::operation::Request<librbd::MockImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h:296: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `manager':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:360: multiple definition of `typeinfo for librbd::operation::Request<librbd::MockImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:859: first defined here
collect2: error: ld returned 1 exit status
src/test/librbd/CMakeFiles/unittest_librbd.dir/build.make:1208: recipe for target 'bin/unittest_librbd' failed
make[4]: *** [bin/unittest_librbd] Error 1
make[4]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf'
CMakeFiles/Makefile2:15017: recipe for target 'src/test/librbd/CMakeFiles/unittest_librbd.dir/all' failed
make[3]: *** [src/test/librbd/CMakeFiles/unittest_librbd.dir/all] Error 2

The second one :

[...]
CMakeFiles/unittest_rbd_mirror.dir/test_mock_ImageReplayer.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd_mirror/ImageReplayer.cc:96: first defined here
CMakeFiles/unittest_rbd_mirror.dir/test_mock_ImageSyncThrottler.cc.o: In function `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)':
/usr/include/c++/5/ostream:561: multiple definition of `typeinfo name for rbd::mirror::ImageSyncThrottler<librbd::ImageCtx>::C_SyncHolder'
CMakeFiles/unittest_rbd_mirror.dir/test_mock_ImageReplayer.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd_mirror/ImageReplayer.cc:1536: first defined here
CMakeFiles/unittest_rbd_mirror.dir/test_mock_ImageSyncThrottler.cc.o: In function `operator()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/rbd_mirror/test_mock_ImageSyncThrottler.cc:73: multiple definition of `typeinfo for rbd::mirror::ImageSyncThrottler<librbd::ImageCtx>::C_SyncHolder'
CMakeFiles/unittest_rbd_mirror.dir/test_mock_ImageReplayer.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd_mirror/ImageReplayer.cc:110: first defined here
collect2: error: ld returned 1 exit status
src/test/rbd_mirror/CMakeFiles/unittest_rbd_mirror.dir/build.make:581: recipe for target 'bin/unittest_rbd_mirror' failed
make[4]: *** [bin/unittest_rbd_mirror] Error 1
make[4]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf'
CMakeFiles/Makefile2:18078: recipe for target 'src/test/rbd_mirror/CMakeFiles/unittest_rbd_mirror.dir/all' failed
make[3]: *** [src/test/rbd_mirror/CMakeFiles/unittest_rbd_mirror.dir/all] Error 2

RG

#32 Updated by Kefu Chai 9 months ago

@gyorgy, i think https://github.com/ceph/ceph/pull/14099 should address your issue. could you double check it?

@Romain, looks like a bug in GCC, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=608029. what is the GCC version you are using?

#33 Updated by Romain Gobinet 9 months ago

Hi !

I've done a mono threaded retry (just in case ...) :

[ 53%] Building CXX object src/tools/rbd/CMakeFiles/rbd.dir/action/Import.cc.o
cd /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/tools/rbd && /usr/bin/arm-linux-gnueabihf-g++   -DCEPH_LIBDIR=\"/usr/lib\" -DCEPH_PKGLIBDIR=\"/usr/lib/ceph\" -D__linux__ -isystem /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src -isystem /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/include -I/mnt/sda1/ceph-build/ceph-master-reloaded/src/xxHash  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include -fPIE   -DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -std=c++11 -o CMakeFiles/rbd.dir/action/Import.cc.o -c /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc: In function ‘int rbd::action::import::skip_tag(int, uint64_t)’:
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:262:43: error: no matching function for call to ‘min(uint64_t&, unsigned int)’
     uint64_t len = min(length, sizeof(buf));
                                           ^
In file included from /usr/include/c++/5/bits/stl_tree.h:63:0,
                 from /usr/include/c++/5/set:60,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/ArgumentTypes.h:8,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:4:
/usr/include/c++/5/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/5/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:262:43: note:   deduced conflicting types for parameter ‘const _Tp’ (‘long long unsigned int’ and ‘unsigned int’)
     uint64_t len = min(length, sizeof(buf));
[...]
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc: In function ‘int rbd::action::import::do_import_v1(int, librbd::Image&, uint64_t, size_t, rbd::utils::ProgressContext&)’:
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:609:28: error: no matching function for call to ‘min(size_t&, uint64_t&)’
   reqlen = min(reqlen, size);
                            ^
In file included from /usr/include/c++/5/bits/stl_tree.h:63:0,
                 from /usr/include/c++/5/set:60,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/ArgumentTypes.h:8,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:4:
/usr/include/c++/5/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/5/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:609:28: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘uint64_t {aka long long unsigned int}’)
   reqlen = min(reqlen, size);
                            ^
In file included from /usr/include/c++/5/bits/stl_tree.h:63:0,
                 from /usr/include/c++/5/set:60,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/ArgumentTypes.h:8,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:4:
/usr/include/c++/5/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^
/usr/include/c++/5/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:609:28: note:   deduced conflicting types for parameter ‘const _Tp’ (‘unsigned int’ and ‘uint64_t {aka long long unsigned int}’)
   reqlen = min(reqlen, size);
                            ^
In file included from /usr/include/c++/5/algorithm:62:0,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/any.hpp:17,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/ArgumentTypes.h:11,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:4:
/usr/include/c++/5/bits/stl_algo.h:3445:5: note: candidate: template<class _Tp> _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^
/usr/include/c++/5/bits/stl_algo.h:3445:5: note:   template argument deduction/substitution failed:
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:609:28: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
   reqlen = min(reqlen, size);
                            ^
In file included from /usr/include/c++/5/algorithm:62:0,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/any.hpp:17,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/ArgumentTypes.h:11,
                 from /mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:4:
/usr/include/c++/5/bits/stl_algo.h:3451:5: note: candidate: template<class _Tp, class _Compare> _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)   
     ^
/usr/include/c++/5/bits/stl_algo.h:3451:5: note:   template argument deduction/substitution failed:
/mnt/sda1/ceph-build/ceph-master-reloaded/src/tools/rbd/action/Import.cc:609:28: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘unsigned int’
   reqlen = min(reqlen, size);
                            ^
src/tools/rbd/CMakeFiles/rbd.dir/build.make:497: recipe for target 'src/tools/rbd/CMakeFiles/rbd.dir/action/Import.cc.o' failed
make[4]: *** [src/tools/rbd/CMakeFiles/rbd.dir/action/Import.cc.o] Error 1
make[4]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf'
CMakeFiles/Makefile2:19538: recipe for target 'src/tools/rbd/CMakeFiles/rbd.dir/all' failed
make[3]: *** [src/tools/rbd/CMakeFiles/rbd.dir/all] Error 2
make[3]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf'
Makefile:141: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf'
        cd /mnt/sda1/ceph-build/ceph-master-reloaded   
dh_auto_build: make -j1 returned exit code 2
debian/rules:33: recipe for target 'override_dh_auto_build' failed
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded'
debian/rules:26: recipe for target 'build' failed
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2

Here is my gcc/lib's/utils version :

ii  gcc                4:5.3.1-1ubuntu1       armhf        GNU C compiler
ii  gcc-5              5.4.0-6ubuntu1~16.04.4 armhf        GNU C compiler
ii  gcc-5-base:armhf   5.4.0-6ubuntu1~16.04.4 armhf        GCC, the GNU Compiler Collection (base package)
ii  gcc-6-base:armhf   6.0.1-0ubuntu1         armhf        GCC, the GNU Compiler Collection (base package)
ii  libgcc-5-dev:armhf 5.4.0-6ubuntu1~16.04.4 armhf        GCC support library (development files)
ii  libgcc1:armhf      1:6.0.1-0ubuntu1       armhf        GCC support library
ii  g++            4:5.3.1-1ubuntu1       armhf        GNU C++ compiler
ii  g++-5          5.4.0-6ubuntu1~16.04.4 armhf        GNU C++ compiler
ii  libstdc++-5-dev:armhf     5.4.0-6ubuntu1~16.04.4 armhf        GNU Standard C++ Library v3 (development files)
ii  libstdc++6:armhf          5.4.0-6ubuntu1~16.04.4 armhf        GNU Standard C++ Library v3
ii  libc-bin                       2.23-0ubuntu7           armhf        GNU C Library: Binaries
ii  libc-dev-bin                   2.23-0ubuntu7           armhf        GNU C Library: Development binaries
ii  libc6:armhf                    2.23-0ubuntu7           armhf        GNU C Library: Shared libraries
ii  libc6-dbg:armhf                2.23-0ubuntu7           armhf        GNU C Library: detached debugging symbols
ii  libc6-dev:armhf                2.23-0ubuntu7           armhf        GNU C Library: Development Libraries and Header Files
ii  cmake                          3.5.1-1ubuntu3        armhf        cross-platform, open-source make system
ii  cmake-data                     3.5.1-1ubuntu3        all          CMake data files (modules, templates and documentation)
ii  make                           4.1-6                 armhf        utility for directing compilation

#34 Updated by Kefu Chai 9 months ago

https://github.com/ceph/ceph/pull/14202 is posted to address the above building .

#35 Updated by gyorgy kiss 9 months ago

Hi,

I double checked the source. It should be applied as far I see in source files.
I think there is the main difference for me: I am on raspbian base. I have cmake newer(?) but everthing other is much lower than Romain. Than my plan now change to ubuntu too (at least for a test, I dont want to update all dependencies for raspbian, I will play with ceph :) )

there the gcc and others:

ii  gcc                                    4:4.9.2-2                       armhf        GNU C compiler
ii  gcc-4.6-base:armhf                     4.6.4-5+rpi1                    armhf        GCC, the GNU Compiler Collection (base package)
ii  gcc-4.7-base:armhf                     4.7.3-11+rpi1                   armhf        GCC, the GNU Compiler Collection (base package)
ii  gcc-4.8-base:armhf                     4.8.4-1                         armhf        GCC, the GNU Compiler Collection (base package)
ii  gcc-4.9                                4.9.2-10                        armhf        GNU C compiler
ii  gcc-4.9-base:armhf                     4.9.2-10                        armhf        GCC, the GNU Compiler Collection (base package)
ii  libgcc-4.9-dev:armhf                   4.9.2-10                        armhf        GCC support library (development files)
ii  libgcc1:armhf                          1:4.9.2-10                      armhf        GCC support library
ii  gcc                                    4:4.9.2-2                       armhf        GNU C compiler
ii  gcc-4.6-base:armhf                     4.6.4-5+rpi1                    armhf        GCC, the GNU Compiler Collection (base package)
ii  gcc-4.7-base:armhf                     4.7.3-11+rpi1                   armhf        GCC, the GNU Compiler Collection (base package)
ii  gcc-4.8-base:armhf                     4.8.4-1                         armhf        GCC, the GNU Compiler Collection (base package)
ii  gcc-4.9                                4.9.2-10                        armhf        GNU C compiler
ii  gcc-4.9-base:armhf                     4.9.2-10                        armhf        GCC, the GNU Compiler Collection (base package)
ii  libgcc-4.9-dev:armhf                   4.9.2-10                        armhf        GCC support library (development files)
ii  libgcc1:armhf                          1:4.9.2-10                      armhf        GCC support library
ii  libc-bin                               2.19-18+deb8u7                  armhf        GNU C Library: Binaries
ii  libc-dev-bin                           2.19-18+deb8u7                  armhf        GNU C Library: Development binaries
ii  libc6:armhf                            2.19-18+deb8u7                  armhf        GNU C Library: Shared libraries
ii  libc6-dbg:armhf                        2.19-18+deb8u7                  armhf        GNU C Library: detached debugging symbols
ii  libc6-dev:armhf                        2.19-18+deb8u7                  armhf        GNU C Library: Development Libraries and Header Files
ii  make                                   4.0-8.1                         armhf        utility for directing compilation
i  libstdc++-4.9-dev:armhf                4.9.2-10                        armhf        GNU Standard C++ Library v3 (development files)
ii  libstdc++6:armhf                       4.9.2-10                        armhf       
ii  g++                                    4:4.9.2-2                       armhf        GNU C++ compiler
ii  g++-4.9                                4.9.2-10                        armhf        GNU C++ compiler
ii  cmake                                  3.6.2-2~bpo8+1                  armhf        cross-platform, open-source make system
ii  cmake-data                             3.6.2-2~bpo8+1                  all         

#36 Updated by Sebastien Luttringer 9 months ago

Hi Kefu,

Did you progress on patch for 11.2.0?
I see the bug status was moved to Need Review, but I can't review nothing about the original BR (intel x86 / 11.2.0) or I missing something?

Cheers,

#37 Updated by Kefu Chai 9 months ago

@Sebastien, two PRs mentioned above

have been merged into master.

and https://github.com/ceph/ceph/pull/14202 is pending on review.

normally, we want to fix bugs on master and backport the fixes to stable branch later.

#38 Updated by Kefu Chai 9 months ago

@gyorgy i am not sure why your building env failed to build the ceph source. and BTW, as #18938-37 put, the first two fixes have been merged.

i have cmake 3.7.2 in my linux box. and i think gcc 4.9 is good enough for building the ceph master branch at the moment. as i don't have a arm32 machine around, i need to prepare a cross building env to reproduce your issue. i will give it a try later on, but it's not the first priority at this moment, so you might need to wait if the master just does not build for you.

#39 Updated by Romain Gobinet 9 months ago

The result of PR 14202:

[ 80%] Linking CXX executable ../../../bin/unittest_librbd
cd /mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/src/test/librbd && /usr/bin/cmake -E cmake_link_script CMakeFiles/unittest_librbd.dir/link.txt --verbose=1
/usr/bin/arm-linux-gnueabihf-g++   -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -Wtype-limits -Wignored-qualifiers -Winit-self -Wpointer-arith -Werror=format-security -fno-strict-aliasing -fsigned-char -rdynamic -Wno-unknown-pragmas -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=2 -fstack-protector-strong -fdiagnostics-color=auto -I/usr/include/nss -I/usr/include/nspr -I/usr/include   -Wl,-Bsymbolic-functions -Wl,-z,relro -pie CMakeFiles/unittest_librbd.dir/test_BlockGuard.cc.o CMakeFiles/unittest_librbd.dir/test_Groups.cc.o CMakeFiles/unittest_librbd.dir/test_main.cc.o CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o CMakeFiles/unittest_librbd.dir/test_mock_ExclusiveLock.cc.o CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o CMakeFiles/unittest_librbd.dir/test_mock_ManagedLock.cc.o CMakeFiles/unittest_librbd.dir/test_mock_ObjectMap.cc.o CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PreAcquireRequest.cc.o CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PreReleaseRequest.cc.o CMakeFiles/unittest_librbd.dir/image/test_mock_RefreshRequest.cc.o CMakeFiles/unittest_librbd.dir/image/test_mock_RemoveRequest.cc.o CMakeFiles/unittest_librbd.dir/io/test_mock_ImageRequest.cc.o CMakeFiles/unittest_librbd.dir/journal/test_mock_OpenRequest.cc.o CMakeFiles/unittest_librbd.dir/journal/test_mock_PromoteRequest.cc.o CMakeFiles/unittest_librbd.dir/journal/test_mock_Replay.cc.o CMakeFiles/unittest_librbd.dir/managed_lock/test_mock_AcquireRequest.cc.o CMakeFiles/unittest_librbd.dir/managed_lock/test_mock_BreakRequest.cc.o CMakeFiles/unittest_librbd.dir/managed_lock/test_mock_GetLockerRequest.cc.o CMakeFiles/unittest_librbd.dir/managed_lock/test_mock_ReacquireRequest.cc.o CMakeFiles/unittest_librbd.dir/managed_lock/test_mock_ReleaseRequest.cc.o CMakeFiles/unittest_librbd.dir/mirror/test_mock_DisableRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_InvalidateRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_LockRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_RefreshRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_ResizeRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_SnapshotCreateRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_SnapshotRemoveRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_SnapshotRollbackRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_UnlockRequest.cc.o CMakeFiles/unittest_librbd.dir/object_map/test_mock_UpdateRequest.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_Request.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_ResizeRequest.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotCreateRequest.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotProtectRequest.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRemoveRequest.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotUnprotectRequest.cc.o CMakeFiles/unittest_librbd.dir/watcher/test_mock_RewatchRequest.cc.o ../../CMakeFiles/common_texttable_obj.dir/common/TextTable.cc.o  -o ../../../bin/unittest_librbd ../../../lib/libcls_rbd.so.1.0.0 ../../../lib/libcls_rbd_client.a ../../../lib/libcls_lock.so.1.0.0 ../../../lib/libcls_lock_client.a ../../../lib/libjournal.a ../../../lib/libjournal_test_mock.a ../../../lib/libcls_journal.so.1.0.0 ../../../lib/libcls_journal_client.a ../../../lib/librados_test_stub.a ../../../lib/librados.so.2.0.0 ../../../lib/librbd_test.a ../../../lib/librbd_test_mock.a ../../../lib/librbd_api.a ../../../lib/librbd_internal.a ../../../lib/librbd_types.a ../../../lib/libosdc.a ../../../lib/libglobal.a ../../../lib/libgmock_main.a ../../../lib/libgmock.a ../../../lib/libgtest.a -lpthread -ldl ../../../lib/libradostest.a ../../../lib/libceph-common.so.0 ../../../lib/liberasure_code.a ../../../boost/lib/libboost_thread.a ../../../boost/lib/libboost_system.a ../../../boost/lib/libboost_regex.a ../../../boost/lib/libboost_random.a ../../../boost/lib/libboost_program_options.a ../../../boost/lib/libboost_date_time.a ../../../boost/lib/libboost_iostreams.a -lblkid -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -lz -Wl,-Bstatic -latomic_ops -Wl,-Bdynamic -lpthread -lrt -ldl -lresolv -libverbs ../../../lib/libjson_spirit.a ../../../lib/libcommon_utf8.a -Wl,-rpath,/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/lib
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o:(.rodata+0x3e98): multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::ReplayHandler'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:(.rodata+0x65a4): first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage_small':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:303: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::ReplayHandler'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/type_index/stl_type_index.hpp:203: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `testing::internal::scoped_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~scoped_ptr()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-port.h:1120: multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::MetadataListener'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/usr/include/c++/5/bits/basic_ios.h:282: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage_small':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:303: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::MetadataListener'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:303: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `Cond::~Cond()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/common/Cond.h:44: multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::C_OpEventSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/test_mock_Journal.cc:56: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:399: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::C_OpEventSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:303: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `testing::AssertionResult::message() const':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/gtest.h:298: multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::C_IOEventSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/journal/mock/MockJournaler.h:83: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage_small':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:307: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::C_IOEventSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:401: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `testing::AssertionResult testing::internal::EqHelper<true>::Compare<int, int>(char const*, char const*, int const&, int const&, testing::internal::EnableIf<!testing::internal::is_pointer<int>::value>::type*)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/gtest.h:1459: multiple definition of `typeinfo name for librbd::Journal<librbd::ImageCtx>::C_ReplayProcessSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/journal/mock/MockJournaler.h:58: first defined here
CMakeFiles/unittest_librbd.dir/exclusive_lock/test_mock_PostAcquireRequest.cc.o: In function `manage_small':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:286: multiple definition of `typeinfo for librbd::Journal<librbd::ImageCtx>::C_ReplayProcessSafe'
CMakeFiles/unittest_librbd.dir/test_mock_Journal.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:307: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o:(.rodata+0x3418): multiple definition of `typeinfo name for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:(.rodata+0x1b7c): first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~C_StateCallbackAdapter':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:59: multiple definition of `typeinfo for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `rados_state_callback<librbd::operation::DisableFeaturesRequest<librbd::(anonymous namespace)::MockOperationImageCtx>, &librbd::operation::DisableFeaturesRequest<librbd::(anonymous namespace)::MockOperationImageCtx>::handle_set_features, true>':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:38: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:339: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~C_StateCallbackAdapter':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:59: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `rados_state_callback<librbd::operation::DisableFeaturesRequest<librbd::(anonymous namespace)::MockOperationImageCtx>, &librbd::operation::DisableFeaturesRequest<librbd::(anonymous namespace)::MockOperationImageCtx>::handle_set_features, true>':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:43: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:172: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~C_CallbackAdapter':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:46: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `send_close_journal':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/operation/DisableFeaturesRequest.cc:351: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:93: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~MonomorphicImpl':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-actions.h:438: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `C_StateCallbackAdapter':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/Utils.h:62: multiple definition of `typeinfo name for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:252: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_DisableFeaturesRequest.cc.o: In function `~gmock_Impl':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/test_mock_fixture.h:41: multiple definition of `typeinfo for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o:(.rodata+0x3020): multiple definition of `typeinfo name for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `~gmock_Impl':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/test_mock_fixture.h:41: multiple definition of `typeinfo for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `expect_block_requests':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/operation/test_mock_EnableFeaturesRequest.cc:232: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:339: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `~gmock_Impl':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/test_mock_fixture.h:41: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `testing::internal::MatcherBase<int>::~MatcherBase()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:294: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:172: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)':
/usr/include/c++/5/bits/basic_string.tcc:210: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `testing::Matcher<int>::Matcher(int)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:294: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:93: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)':
/usr/include/c++/5/bits/basic_string.tcc:215: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `librbd::AsyncRequest<librbd::MockImageCtx>::finish(int)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/librbd/AsyncRequest.h:59: multiple definition of `typeinfo name for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:252: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_EnableFeaturesRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)':
/usr/include/c++/5/bits/basic_string.tcc:221: multiple definition of `typeinfo for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_Request.cc.o:(.rodata+0x18e4): multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:339: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_Request.cc.o: In function `finish':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h:85: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_Request.cc.o: In function `librbd::operation::TestMockOperationRequest::expect_send_op(librbd::operation::MockRequest&, int)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h:85: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:172: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_Request.cc.o: In function `~AsyncRequest':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h:85: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_Request.cc.o: In function `testing::internal::linked_ptr<testing::ActionInterface<void ()> >::~linked_ptr()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h:85: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:93: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_Request.cc.o: In function `~C_CommitOpEvent':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:324: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o:(.rodata+0x3518): multiple definition of `typeinfo name for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)':
/usr/include/c++/5/bits/basic_string.tcc:223: multiple definition of `typeinfo for librbd::AsyncRequest<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `testing::internal::linked_ptr<testing::CardinalityInterface const>::~linked_ptr()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:153: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:339: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data(char*)':
/usr/include/c++/5/bits/basic_string.h:127: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:155: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `testing::internal::TypedExpectation<void ()>::WillOnce(testing::Action<void ()> const&)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-spec-builders.h:1000: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librados_test_stub/MockTestMemIoCtxImpl.h:172: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `std::char_traits<char>::copy(char*, char const*, unsigned int)':
/usr/include/c++/5/bits/char_traits.h:290: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `testing::internal::TypedExpectation<void ()>::Times(int)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-spec-builders.h:932: multiple definition of `typeinfo name for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:93: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)':
/usr/include/c++/5/bits/basic_string.tcc:237: multiple definition of `typeinfo for librbd::operation::Request<librbd::ImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:345: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `expect_get_current_size':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/operation/test_mock_SnapshotRollbackRequest.cc:129: multiple definition of `typeinfo name for librbd::AsyncRequest<librbd::MockImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h:296: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_local_data()':
/usr/include/c++/5/bits/basic_string.h:141: multiple definition of `typeinfo for librbd::AsyncRequest<librbd::MockImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `testing::internal::Expect(bool, char const*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h:296: multiple definition of `typeinfo name for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:252: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct_aux<char const*>(char const*, char const*, std::__false_type)':
/usr/include/c++/5/bits/basic_string.h:195: multiple definition of `typeinfo for librbd::AsyncObjectThrottle<librbd::ImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `testing::internal::linked_ptr<testing::ActionInterface<unsigned long long ()> >::linked_ptr(testing::internal::linked_ptr<testing::ActionInterface<unsigned long long ()> > const&)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:158: multiple definition of `typeinfo name for librbd::AsyncObjectThrottle<librbd::MockImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h:296: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `manage':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:399: multiple definition of `typeinfo for librbd::AsyncObjectThrottle<librbd::MockImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:93: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `testing::internal::linked_ptr<testing::ActionInterface<unsigned long long ()> >::depart()':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googletest/include/gtest/internal/gtest-linked_ptr.h:205: multiple definition of `typeinfo name for librbd::operation::Request<librbd::MockImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h:296: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `manage':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:401: multiple definition of `typeinfo for librbd::operation::Request<librbd::MockImageCtx>'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:3732: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `testing::internal::MatcherBase<unsigned long long>::MatcherBase(testing::internal::MatcherBase<unsigned long long> const&)':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:252: multiple definition of `typeinfo name for librbd::operation::Request<librbd::MockImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h:296: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `manage':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:404: multiple definition of `typeinfo for librbd::operation::Request<librbd::MockImageCtx>::C_CommitOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:328: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `expect_get_object_name':
/mnt/sda1/ceph-build/ceph-master-reloaded/src/test/librbd/operation/test_mock_SnapshotRollbackRequest.cc:124: multiple definition of `typeinfo name for librbd::operation::Request<librbd::MockImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h:296: first defined here
CMakeFiles/unittest_librbd.dir/operation/test_mock_SnapshotRollbackRequest.cc.o: In function `manager':
/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf/boost/include/boost/function/function_base.hpp:360: multiple definition of `typeinfo for librbd::operation::Request<librbd::MockImageCtx>::C_AppendOpEvent'
CMakeFiles/unittest_librbd.dir/test_mock_fixture.cc.o:/mnt/sda1/ceph-build/ceph-master-reloaded/src/googletest/googlemock/include/gmock/gmock-matchers.h:859: first defined here
collect2: error: ld returned 1 exit status
src/test/librbd/CMakeFiles/unittest_librbd.dir/build.make:1208: recipe for target 'bin/unittest_librbd' failed
make[4]: *** [bin/unittest_librbd] Error 1
make[4]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf'
CMakeFiles/Makefile2:15017: recipe for target 'src/test/librbd/CMakeFiles/unittest_librbd.dir/all' failed
make[3]: *** [src/test/librbd/CMakeFiles/unittest_librbd.dir/all] Error 2
make[3]: Leaving directory '/mnt/sda1/ceph-build/ceph-master-reloaded/obj-arm-linux-gnueabihf'
Makefile:141: recipe for target 'all' failed
make[2]: *** [all] Error 2

#40 Updated by Kefu Chai 9 months ago

i think we violate the ODR in the librbd's tests, and the some of the template classes are instantiated multiple times with the same template parameters. the instantiated template classes are included by different compilation units. when we try to link them, the linker gave up at seeing multiple definitions of the same symbol.

the GCC on ARM with the default settings follows the C++ standard, and hence fails.

as the fix is not obvious to me at this moment, will take a look later on.

#41 Updated by Kefu Chai 9 months ago

  • Project changed from Ceph to rbd
  • Status changed from Need Review to New
  • Assignee deleted (Kefu Chai)

#42 Updated by Kefu Chai 8 months ago

i am able to reproduce this issue with gcc-6.3

$ /usr/bin/arm-linux-gnueabihf-gcc --version
arm-linux-gnueabihf-gcc (Debian 6.3.0-12) 6.3.0 20170406

#43 Updated by Kefu Chai 8 months ago

https://github.com/ceph/ceph/pull/14881 : the side-product of my adventure.

#44 Updated by Kefu Chai 8 months ago

i think the reason of the link failure is that some compilation units of unittest_librbd are including the ".cc" files which have explicit template instantiation.

src/test/librbd/operation/test_mock_DisableFeaturesRequest.cc:#include "librbd/AsyncObjectThrottle.cc" 
src/test/librbd/operation/test_mock_EnableFeaturesRequest.cc:#include "librbd/AsyncObjectThrottle.cc" 
src/test/librbd/operation/test_mock_SnapshotRollbackRequest.cc:#include "librbd/AsyncObjectThrottle.cc" 
src/test/librbd/test_mock_fixture.cc:#include "librbd/AsyncObjectThrottle.cc" 

that's why we have errors like

multiple definition of `typeinfo name for librbd::AsyncObjectThrottle<librbd::ImageCtx>'

so we need to

  1. move the explicit template instantiations out of .cc file, or
  2. move the template implementation code out of the .cc file, and let the tests include the file which implements the template class.

#45 Updated by Kefu Chai 8 months ago

  • Status changed from New to Need Review
  • Assignee set to Kefu Chai

#46 Updated by Kefu Chai 7 months ago

the reason why we only need to guard

 template class librbd::AsyncObjectThrottle<librbd::ImageCtx>;
 template class librbd::Journal<librbd::ImageCtx>;
 template class librbd::operation::DisableFeaturesRequest<librbd::ImageCtx>;
 template class librbd::operation::Request<librbd::ImageCtx>;

is that all the template classes above have "key function"[1,2], and it is required3 to emit type_info as a strong symbol with key function to comply to ARM's C++ ABI spec2.

quote from ARM's ABI spec2:

These std::type_info functions should not be inline by default, as doing so makes the relocatable file platform- specific. A C++ system must provide an option or default (Q-o-I) to force them out of line.

this practically requires that we need to enforce ODR when it comes to type_info on ARM and platforms4 that does not have week symbols. but this is not required on all other C++ ABIs. take Itanium for example, it's allowed to be put into COMDAT5. clang's source code6 is a good references.

And we are not alone, see [7].


[1] https://itanium-cxx-abi.github.io/cxx-abi/abi.html#vague-vtable
[2] http://infocenter.arm.com/help/topic/com.arm.doc.ihi0041e/IHI0041E_cppabi.pdf
[3] https://libcxxabi.llvm.org, search for "Frequently asked questions"
[4] https://gcc.gnu.org/ml/gcc/2001-01/msg01487.html
[5] https://itanium-cxx-abi.github.io/cxx-abi/abi.html#vague-rtti
[6] https://github.com/llvm-mirror/clang/blob/master/include/clang/Basic/TargetCXXABI.h#L255
[7] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=608029

#47 Updated by Kefu Chai 7 months ago

  • Status changed from Need Review to Resolved

#48 Updated by Sebastien Luttringer 7 months ago

Hello Kefu,

I applied https://github.com/ceph/ceph/pull/14891.patch to ceph 11.2.0 tarball and that doesn't fix building on i686.

[  5%] Building CXX object src/CMakeFiles/common_util_obj.dir/common/util.cc.o
In file included from /build/ceph/src/ceph-11.2.0/src/include/encoding.h:25:0,
                 from /build/ceph/src/ceph-11.2.0/src/include/uuid.h:8,
                 from /build/ceph/src/ceph-11.2.0/src/include/types.h:21,
                 from /build/ceph/src/ceph-11.2.0/src/msg/Message.h:26,
                 from /build/ceph/src/ceph-11.2.0/src/msg/Messenger.h:23,
                 from /build/ceph/src/ceph-11.2.0/src/osdc/ObjectCacher.cc:6:
/build/ceph/src/ceph-11.2.0/src/include/denc.h: In instantiation of ‘typename std::enable_if<((traits:: supported == 1) && (! t
raits:: featured))>::type decode_nohead(size_t, T&, ceph::buffer::list::iterator&) [with T = std::__cxx11::basic_string<char>; 
traits = denc_traits<std::__cxx11::basic_string<char> >; typename std::enable_if<((traits:: supported == 1) && (! traits:: feat
ured))>::type = void; size_t = unsigned int]’:
/build/ceph/src/ceph-11.2.0/src/messages/MOSDOp.h:397:41:   required from here
/build/ceph/src/ceph-11.2.0/src/include/denc.h:1337:24: error: ‘decode_nohead’ is not a member of ‘denc_traits<std::__cxx11::ba
sic_string<char> >’
   traits::decode_nohead(num, o, cp);
   ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
make[2]: *** [src/osdc/CMakeFiles/osdc_rbd_objs.dir/build.make:63: src/osdc/CMakeFiles/osdc_rbd_objs.dir/ObjectCacher.cc.o] Err
or 1
make[1]: *** [CMakeFiles/Makefile2:2805: src/osdc/CMakeFiles/osdc_rbd_objs.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[  5%] Building CXX object src/CMakeFiles/mon_common_objs.dir/auth/cephx/CephxSessionHandler.cc.o
[  5%] Building CXX object src/CMakeFiles/mon_common_objs.dir/erasure-code/ErasureCodePlugin.cc.o
[  5%] Built target common_util_obj
[  5%] Building CXX object src/json_spirit/CMakeFiles/json_spirit.dir/json_spirit_writer.cpp.o
[  5%] Built target mon_common_objs
[  5%] Linking CXX static library ../../lib/libjson_spirit.a
[  5%] Built target json_spirit
make: *** [Makefile:141: all] Error 2

#49 Updated by Kefu Chai 4 days ago

  • Status changed from Resolved to New

Sorry, Sebastien ! i missed your latest comment. seems i fixed the issue reported by Romain, but not yours. i am reopening this ticket.

Also available in: Atom PDF