open-telemetry / opentelemetry-cpp-contrib

https://opentelemetry.io/
Apache License 2.0
121 stars 128 forks source link

[CI] Add CI for instrumentation/boost_log #424

Closed marcalff closed 2 months ago

marcalff commented 2 months ago

Fixes #420

Fixed CMakeLists:

Relevant links:

marcalff commented 2 months ago

Now getting a build break in the boost_log unit test.

-- Build files have been written to: /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/boost_log/build
[1/4] Building CXX object CMakeFiles/opentelemetry_boost_log_sink.dir/src/sink.cc.o
[2/4] Linking CXX static library libopentelemetry_boost_log_sink.a
[3/4] Building CXX object CMakeFiles/sink_test.dir/test/sink_test.cc.o
FAILED: CMakeFiles/sink_test.dir/test/sink_test.cc.o 
/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_CHRONO_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_LOG_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_THREAD_DYN_LINK -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/include -isystem /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include -Wall -Wextra -Werror -Wpedantic -fPIC -MD -MT CMakeFiles/sink_test.dir/test/sink_test.cc.o -MF CMakeFiles/sink_test.dir/test/sink_test.cc.o.d -o CMakeFiles/sink_test.dir/test/sink_test.cc.o -c /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc
In file included from /usr/include/gmock/gmock.h:59,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:24:
/usr/include/gmock/gmock-actions.h: In instantiation of ‘testing::internal::ReturnAction<R>::Impl<R_, F>::Impl(const std::shared_ptr<_Tp>&) [with R_ = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; F = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>(); R = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>]’:
/usr/include/gmock/gmock-actions.h:662:22:   required from ‘testing::internal::ReturnAction<R>::operator testing::Action<Func>() const [with F = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>(); R = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>]’
/home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:135:56:   required from here
/usr/include/gmock/gmock-actions.h:682:39: error: use of deleted function ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’
  682 |           value_(ImplicitCast_<Result>(value_before_cast_)) {}
      |                  ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include/opentelemetry/logs/event_id.h:9,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include/opentelemetry/logs/logger_type_traits.h:12,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include/opentelemetry/logs/logger.h:6,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:8:
/home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include/opentelemetry/nostd/unique_ptr.h:45:7: note: ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’ is implicitly declared as deleted because ‘opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>’ declares a move constructor or move assignment operator
   45 | class unique_ptr
      |       ^~~~~~~~~~
In file included from /usr/include/gmock/internal/gmock-port.h:56,
                 from /usr/include/gmock/internal/gmock-internal-utils.h:46,
                 from /usr/include/gmock/gmock-actions.h:145,
                 from /usr/include/gmock/gmock.h:59,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:24:
/usr/include/gtest/internal/gtest-port.h:1070:28: note:   initializing argument 1 of ‘To testing::internal::ImplicitCast_(To) [with To = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>]’
 1070 | inline To ImplicitCast_(To x) { return x; }
      |                         ~~~^
In file included from /usr/include/gmock/gmock.h:59,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:24:
/usr/include/gmock/gmock-actions.h:681:11: error: use of deleted function ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’
  681 |         : value_before_cast_(*value),
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gmock/gmock-actions.h: In instantiation of ‘testing::internal::ReturnAction<R>::Impl<R_, F>::Result testing::internal::ReturnAction<R>::Impl<R_, F>::Perform(const ArgumentTuple&) [with R_ = std::nullptr_t; F = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>(); R = std::nullptr_t; testing::internal::ReturnAction<R>::Impl<R_, F>::Result = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; testing::internal::ReturnAction<R>::Impl<R_, F>::ArgumentTuple = std::tuple<>]’:
/usr/include/gmock/gmock-actions.h:684:12:   required from here
/usr/include/gmock/gmock-actions.h:684:60: error: use of deleted function ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’
  684 |     Result Perform(const ArgumentTuple&) override { return value_; }
      |                                                            ^~~~~~
/usr/include/gmock/gmock-actions.h: In instantiation of ‘testing::internal::ReturnAction<R>::Impl<R_, F>::Result testing::internal::ReturnAction<R>::Impl<R_, F>::Perform(const ArgumentTuple&) [with R_ = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; F = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>(); R = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; testing::internal::ReturnAction<R>::Impl<R_, F>::Result = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; testing::internal::ReturnAction<R>::Impl<R_, F>::ArgumentTuple = std::tuple<>]’:
/usr/include/gmock/gmock-actions.h:684:12:   required from here
/usr/include/gmock/gmock-actions.h:684:60: error: use of deleted function ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’
ninja: build stopped: subcommand failed.
Error: Process completed with exit code 1.

@chusitoo Any idea ?

marcalff commented 2 months ago

Unit test build broken, due to:

GTest 1.12.0 is required, the runner uses Gtest 1.11.0-3 which is broken

Setting up googletest (1.11.0-3) ...
marcalff commented 2 months ago

@chusitoo @owent @lalitb @ThomsonTan @esigo Please review

chusitoo commented 2 months ago

Now getting a build break in the boost_log unit test.

-- Build files have been written to: /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/boost_log/build
[1/4] Building CXX object CMakeFiles/opentelemetry_boost_log_sink.dir/src/sink.cc.o
[2/4] Linking CXX static library libopentelemetry_boost_log_sink.a
[3/4] Building CXX object CMakeFiles/sink_test.dir/test/sink_test.cc.o
FAILED: CMakeFiles/sink_test.dir/test/sink_test.cc.o 
/usr/bin/c++ -DBOOST_ALL_NO_LIB -DBOOST_ATOMIC_DYN_LINK -DBOOST_CHRONO_DYN_LINK -DBOOST_FILESYSTEM_DYN_LINK -DBOOST_LOG_DYN_LINK -DBOOST_REGEX_DYN_LINK -DBOOST_THREAD_DYN_LINK -DOPENTELEMETRY_ABI_VERSION_NO=1 -I/home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/include -isystem /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include -Wall -Wextra -Werror -Wpedantic -fPIC -MD -MT CMakeFiles/sink_test.dir/test/sink_test.cc.o -MF CMakeFiles/sink_test.dir/test/sink_test.cc.o.d -o CMakeFiles/sink_test.dir/test/sink_test.cc.o -c /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc
In file included from /usr/include/gmock/gmock.h:59,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:24:
/usr/include/gmock/gmock-actions.h: In instantiation of ‘testing::internal::ReturnAction<R>::Impl<R_, F>::Impl(const std::shared_ptr<_Tp>&) [with R_ = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; F = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>(); R = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>]’:
/usr/include/gmock/gmock-actions.h:662:22:   required from ‘testing::internal::ReturnAction<R>::operator testing::Action<Func>() const [with F = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>(); R = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>]’
/home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:135:56:   required from here
/usr/include/gmock/gmock-actions.h:682:39: error: use of deleted function ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’
  682 |           value_(ImplicitCast_<Result>(value_before_cast_)) {}
      |                  ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include/opentelemetry/logs/event_id.h:9,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include/opentelemetry/logs/logger_type_traits.h:12,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include/opentelemetry/logs/logger.h:6,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:8:
/home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/sandbox/include/opentelemetry/nostd/unique_ptr.h:45:7: note: ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’ is implicitly declared as deleted because ‘opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>’ declares a move constructor or move assignment operator
   45 | class unique_ptr
      |       ^~~~~~~~~~
In file included from /usr/include/gmock/internal/gmock-port.h:56,
                 from /usr/include/gmock/internal/gmock-internal-utils.h:46,
                 from /usr/include/gmock/gmock-actions.h:145,
                 from /usr/include/gmock/gmock.h:59,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:24:
/usr/include/gtest/internal/gtest-port.h:1070:28: note:   initializing argument 1 of ‘To testing::internal::ImplicitCast_(To) [with To = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>]’
 1070 | inline To ImplicitCast_(To x) { return x; }
      |                         ~~~^
In file included from /usr/include/gmock/gmock.h:59,
                 from /home/runner/work/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/opentelemetry-cpp-contrib/instrumentation/boost_log/test/sink_test.cc:24:
/usr/include/gmock/gmock-actions.h:681:11: error: use of deleted function ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’
  681 |         : value_before_cast_(*value),
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gmock/gmock-actions.h: In instantiation of ‘testing::internal::ReturnAction<R>::Impl<R_, F>::Result testing::internal::ReturnAction<R>::Impl<R_, F>::Perform(const ArgumentTuple&) [with R_ = std::nullptr_t; F = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>(); R = std::nullptr_t; testing::internal::ReturnAction<R>::Impl<R_, F>::Result = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; testing::internal::ReturnAction<R>::Impl<R_, F>::ArgumentTuple = std::tuple<>]’:
/usr/include/gmock/gmock-actions.h:684:12:   required from here
/usr/include/gmock/gmock-actions.h:684:60: error: use of deleted function ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’
  684 |     Result Perform(const ArgumentTuple&) override { return value_; }
      |                                                            ^~~~~~
/usr/include/gmock/gmock-actions.h: In instantiation of ‘testing::internal::ReturnAction<R>::Impl<R_, F>::Result testing::internal::ReturnAction<R>::Impl<R_, F>::Perform(const ArgumentTuple&) [with R_ = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; F = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>(); R = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; testing::internal::ReturnAction<R>::Impl<R_, F>::Result = opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>; testing::internal::ReturnAction<R>::Impl<R_, F>::ArgumentTuple = std::tuple<>]’:
/usr/include/gmock/gmock-actions.h:684:12:   required from here
/usr/include/gmock/gmock-actions.h:684:60: error: use of deleted function ‘constexpr opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>::unique_ptr(const opentelemetry::v1::nostd::unique_ptr<opentelemetry::v1::logs::LogRecord>&)’
ninja: build stopped: subcommand failed.
Error: Process completed with exit code 1.

@chusitoo Any idea ?

Guess I'm too late to reply but I'll add my two cents, anyways.

I had been able to repro this following the exact setup steps from this PR's yaml but didn't have time to dig deeper. It does make sense, though, as I've always set up the environment using opentelemetry-cpp/ci/setup_cmake.sh which installs a more recent version of gtest compared to system package.

marcalff commented 2 months ago

Guess I'm too late to reply but I'll add my two cents, anyways.

I had been able to repro this following the exact setup steps from this PR's yaml but didn't have time to dig deeper. It does make sense, though, as I've always set up the environment using opentelemetry-cpp/ci/setup_cmake.sh which installs a more recent version of gtest compared to system package.

Thanks for investigating.

I think this is due to https://github.com/open-telemetry/opentelemetry-cpp-contrib/pull/424#issuecomment-2039300584

I changed the makefiles to require gtest 1.12, and it now works.

chusitoo commented 2 months ago

LGTM!