From 9275f62fc545999cf9697f40bcaf18cda896d2fb Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Sun, 5 May 2024 15:22:34 -0500 Subject: [PATCH] Fix ci? --- ci/test-all-configs.py | 4 ++++ cmake/OptionVariables.cmake | 2 ++ test/CMakeLists.txt | 29 ++++++++++++++++------------- test/unittest.cpp | 16 ++++++++-------- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/ci/test-all-configs.py b/ci/test-all-configs.py index 057d7aa..af5de80 100644 --- a/ci/test-all-configs.py +++ b/ci/test-all-configs.py @@ -177,6 +177,7 @@ def build(matrix): f"-D{matrix['demangle']}=On", "-DCPPTRACE_BACKTRACE_PATH=/usr/lib/gcc/x86_64-linux-gnu/10/include/backtrace.h", "-DCPPTRACE_BUILD_TESTING=On", + "-DCPPTRACE_IS_GH_ACTIONS=On", f"-DBUILD_SHARED_LIBS={matrix['shared']}" ] if matrix['symbols'] == "CPPTRACE_GET_SYMBOLS_WITH_LIBDL": @@ -199,6 +200,7 @@ def build(matrix): f"-D{matrix['symbols']}=On", f"-D{matrix['demangle']}=On", "-DCPPTRACE_BUILD_TESTING=On", + "-DCPPTRACE_IS_GH_ACTIONS=On", f"-DBUILD_SHARED_LIBS={matrix['shared']}" ] if matrix["compiler"] == "g++": @@ -225,6 +227,7 @@ def build_full_or_auto(matrix): f"-DCPPTRACE_WERROR_BUILD=On", f"-DCPPTRACE_BACKTRACE_PATH=/usr/lib/gcc/x86_64-linux-gnu/10/include/backtrace.h", "-DCPPTRACE_BUILD_TESTING=On", + "-DCPPTRACE_IS_GH_ACTIONS=On", f"-DBUILD_SHARED_LIBS={matrix['shared']}" ] if matrix["config"] != "": @@ -244,6 +247,7 @@ def build_full_or_auto(matrix): f"-DCPPTRACE_USE_EXTERNAL_ZSTD=On", f"-DCPPTRACE_WERROR_BUILD=On", "-DCPPTRACE_BUILD_TESTING=On", + "-DCPPTRACE_IS_GH_ACTIONS=On", f"-DBUILD_SHARED_LIBS={matrix['shared']}" ] if matrix["config"] != "": diff --git a/cmake/OptionVariables.cmake b/cmake/OptionVariables.cmake index d432a3c..f65ac4f 100644 --- a/cmake/OptionVariables.cmake +++ b/cmake/OptionVariables.cmake @@ -167,6 +167,7 @@ option(CPPTRACE_CONDA_LIBDWARF_WEIRDNESS "" OFF) option(CPPTRACE_SANITIZER_BUILD "" OFF) option(CPPTRACE_WERROR_BUILD "" OFF) option(CPPTRACE_POSITION_INDEPENDENT_CODE "" ON) +option(CPPTRACE_IS_GH_ACTIONS "" OFF) mark_as_advanced( CPPTRACE_BACKTRACE_PATH @@ -177,4 +178,5 @@ mark_as_advanced( CPPTRACE_CONAN CPPTRACE_VCPKG CPPTRACE_CONDA_LIBDWARF_WEIRDNESS + CPPTRACE_IS_GH_ACTIONS ) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 2a2f3a5..bbb47e7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -35,17 +35,20 @@ if(UNIX) target_link_libraries(signal_tracer PRIVATE ${target_name}) endif() -include(FetchContent) -FetchContent_Declare( - googletest - GIT_REPOSITORY "https://github.com/google/googletest.git" - GIT_TAG f8d7d77c06936315286eb55f8de22cd23c188571 # v1.14.0 -) -# For Windows: Prevent overriding the parent project's compiler/linker settings -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) -FetchContent_MakeAvailable(googletest) +# primarily a workaround for github actions issue https://github.com/actions/runner-images/issues/8659 +if(NOT CPPTRACE_IS_GH_ACTIONS) + include(FetchContent) + FetchContent_Declare( + googletest + GIT_REPOSITORY "https://github.com/google/googletest.git" + GIT_TAG f8d7d77c06936315286eb55f8de22cd23c188571 # v1.14.0 + ) + # For Windows: Prevent overriding the parent project's compiler/linker settings + set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + FetchContent_MakeAvailable(googletest) -add_executable(unittest unittest.cpp) -target_compile_features(unittest PRIVATE cxx_std_20) -target_link_libraries(unittest PRIVATE ${target_name} GTest::gtest_main GTest::gmock_main) -add_test(NAME unittest COMMAND unittest) + add_executable(unittest unittest.cpp) + target_compile_features(unittest PRIVATE cxx_std_20) + target_link_libraries(unittest PRIVATE ${target_name} GTest::gtest_main GTest::gmock_main) + add_test(NAME unittest COMMAND unittest) +endif() diff --git a/test/unittest.cpp b/test/unittest.cpp index a166582..6a572e8 100644 --- a/test/unittest.cpp +++ b/test/unittest.cpp @@ -16,7 +16,7 @@ using namespace std::literals; // This is fickle, however, it's the only way to do it really. It's a reliable test in practice. -[[gnu::noinline]] void raw_trace_basic() { +CPPTRACE_FORCE_NO_INLINE void raw_trace_basic() { auto raw_trace = cpptrace::generate_raw_trace(); // look for within 90 bytes of the start of the function EXPECT_GE(raw_trace.frames[0], reinterpret_cast(raw_trace_basic)); @@ -24,7 +24,7 @@ using namespace std::literals; } #ifndef _MSC_VER -[[gnu::noinline]] void raw_trace_basic_precise() { +CPPTRACE_FORCE_NO_INLINE void raw_trace_basic_precise() { a: auto raw_trace = cpptrace::generate_raw_trace(); b: @@ -39,7 +39,7 @@ TEST(RawTrace, Basic) { raw_trace_basic_precise(); } -[[gnu::noinline]] void raw_trace_multi_1(std::pair parent) { +CPPTRACE_FORCE_NO_INLINE void raw_trace_multi_1(std::pair parent) { auto raw_trace = cpptrace::generate_raw_trace(); EXPECT_GE(raw_trace.frames[0], reinterpret_cast(raw_trace_multi_1)); EXPECT_LE(raw_trace.frames[0], reinterpret_cast(raw_trace_multi_1) + 90); @@ -47,7 +47,7 @@ TEST(RawTrace, Basic) { EXPECT_LE(raw_trace.frames[1], parent.second); } -[[gnu::noinline]] void raw_trace_multi_top() { +CPPTRACE_FORCE_NO_INLINE void raw_trace_multi_top() { auto raw_trace = cpptrace::generate_raw_trace(); raw_trace_multi_1({reinterpret_cast(raw_trace_multi_top), reinterpret_cast(raw_trace_multi_top) + 300}); EXPECT_GE(raw_trace.frames[0], reinterpret_cast(raw_trace_multi_top)); @@ -55,7 +55,7 @@ TEST(RawTrace, Basic) { } #ifndef _MSC_VER -[[gnu::noinline]] void raw_trace_multi_precise_2(std::vector>& parents) { +CPPTRACE_FORCE_NO_INLINE void raw_trace_multi_precise_2(std::vector>& parents) { a: auto raw_trace = cpptrace::generate_raw_trace(); b: @@ -67,7 +67,7 @@ TEST(RawTrace, Basic) { } } -[[gnu::noinline]] void raw_trace_multi_precise_1(std::vector>& parents) { +CPPTRACE_FORCE_NO_INLINE void raw_trace_multi_precise_1(std::vector>& parents) { a: auto raw_trace = cpptrace::generate_raw_trace(); b: @@ -83,7 +83,7 @@ TEST(RawTrace, Basic) { d:; } -[[gnu::noinline]] void raw_trace_multi_precise_top() { +CPPTRACE_FORCE_NO_INLINE void raw_trace_multi_precise_top() { a: auto raw_trace = cpptrace::generate_raw_trace(); b: @@ -102,7 +102,7 @@ TEST(RawTrace, MultipleCalls) { raw_trace_multi_precise_top(); } -[[gnu::noinline]] void stacktrace_basic() { +CPPTRACE_FORCE_NO_INLINE void stacktrace_basic() { auto line = __LINE__ + 1; auto trace = cpptrace::generate_trace(); EXPECT_THAT(trace.frames[0].filename, testing::EndsWith("unittest.cpp"));