From 815d85c76b5edb150cd12ee33640bd72e4f716fb Mon Sep 17 00:00:00 2001 From: tooomm Date: Sun, 25 Oct 2026 20:36:34 +0100 Subject: [PATCH 1/4] Bump to Sentry v0.17.4 --- cmake/CrashReporting.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CrashReporting.cmake b/cmake/CrashReporting.cmake index 6f9cf4849..696901472 100644 --- a/cmake/CrashReporting.cmake +++ b/cmake/CrashReporting.cmake @@ -17,7 +17,7 @@ set(COCKATRICE_SENTRY_DSN ) # Pinned stable release; tag verified at https://github.com/getsentry/sentry-native/tags. set(COCKATRICE_SENTRY_TAG - "0.17.3" + "0.17.4" CACHE STRING "sentry-native release tag to vendor via FetchContent" ) From 81bf37f9333ec7bf95d390008c1d0a755a890008 Mon Sep 17 00:00:00 2001 From: tooomm Date: Sat, 31 Oct 2026 09:05:57 +0100 Subject: [PATCH 2/4] remove exact sentry version in comment --- cockatrice/src/client/crash/crash_reporter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cockatrice/src/client/crash/crash_reporter.h b/cockatrice/src/client/crash/crash_reporter.h index aecc6ade3..41f46c2d5 100644 --- a/cockatrice/src/client/crash/crash_reporter.h +++ b/cockatrice/src/client/crash/crash_reporter.h @@ -101,7 +101,7 @@ public: * * An envelope is a newline-separated stream of item-header-line + payload * pairs. The retry transport replays cached envelopes byte-for-byte - * (sentry-native 0.17.3 reads them raw and serializes raw envelopes back + * (sentry-native reads them raw and serializes raw envelopes back * verbatim), so appending well-formed items associates them with the event * already in the file; the first line (event id header) is never touched. * From 5a19f50869a1ae0e93b04d5cc94f8c9ea1e6f8e2 Mon Sep 17 00:00:00 2001 From: tooomm Date: Sat, 31 Oct 2026 09:07:30 +0100 Subject: [PATCH 3/4] bump to v0.17.5 --- cmake/CrashReporting.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CrashReporting.cmake b/cmake/CrashReporting.cmake index 696901472..d67009824 100644 --- a/cmake/CrashReporting.cmake +++ b/cmake/CrashReporting.cmake @@ -17,7 +17,7 @@ set(COCKATRICE_SENTRY_DSN ) # Pinned stable release; tag verified at https://github.com/getsentry/sentry-native/tags. set(COCKATRICE_SENTRY_TAG - "0.17.4" + "0.17.5" CACHE STRING "sentry-native release tag to vendor via FetchContent" ) From 5e321d6a5c493b3555f1ddf125bf77b2ede62b37 Mon Sep 17 00:00:00 2001 From: tooomm Date: Sat, 31 Oct 2026 21:49:26 +0100 Subject: [PATCH 4/4] source sentry via vcpkg --- cmake/CrashReporting.cmake | 94 +------------------------------------- vcpkg.json | 1 + 2 files changed, 3 insertions(+), 92 deletions(-) diff --git a/cmake/CrashReporting.cmake b/cmake/CrashReporting.cmake index d67009824..9490cd625 100644 --- a/cmake/CrashReporting.cmake +++ b/cmake/CrashReporting.cmake @@ -6,8 +6,6 @@ # CI passes ON; packagers and from-source builds stay SDK-free until this # ships something real, so offline package builds never fetch the SDK) # COCKATRICE_SENTRY_DSN -- Sentry DSN baked into the build (default empty = SDK init skipped at runtime) -# COCKATRICE_SENTRY_TAG -- sentry-native release tag to vendor via FetchContent -# ENABLE_SANITIZERS -- forces the sentry backend to "none" (crashpad vs ASan conflict) # Defines: cockatrice_target_enable_crash_reporting() option(WITH_CRASH_REPORTING "Build with crash reporting via sentry-native" OFF) @@ -15,11 +13,6 @@ set(COCKATRICE_SENTRY_DSN "" CACHE STRING "Sentry DSN baked into the client; empty disables crash-report upload at runtime" ) -# Pinned stable release; tag verified at https://github.com/getsentry/sentry-native/tags. -set(COCKATRICE_SENTRY_TAG - "0.17.5" - CACHE STRING "sentry-native release tag to vendor via FetchContent" -) # Wire the SDK (or the no-op fallback) into a client target. Always callable: with the # option OFF the compile definitions below make crash_reporter.cpp compile to no-ops. @@ -41,28 +34,6 @@ function(cockatrice_target_enable_crash_reporting _target) endfunction() if(WITH_CRASH_REPORTING AND WITH_CLIENT) - include(FetchContent) - - if(ENABLE_SANITIZERS) - # The crash handler cannot run under ASan/UBSan, so there is no backend to capture with. - set(_sentry_backend "none") - else() - # Breakpad on every OS (increment 3 probe, 2026-10-14): the crashpad sources - # do vendor friction-free (FetchContent inits all submodules recursively by - # default, verified populated in a local build tree), but the crashpad backend - # would need its out-of-process crashpad_handler binary installed next to the - # exe, into the macOS bundle, and through NSIS, plus handler-path wiring and - # notarization care. Breakpad is in-process, needs no extra binary and no - # packaging on any OS sentry-native builds, so simplicity wins. - set(_sentry_backend "breakpad") - endif() - # FORCE so toggling ENABLE_SANITIZERS on a reused build dir cannot leave a stale backend behind. - set(SENTRY_BACKEND - "${_sentry_backend}" - CACHE STRING "Crash handler backend for sentry-native" FORCE - ) - unset(_sentry_backend) - if(NOT MSVC) # Symbol upload needs debug info in Release binaries: the top-level flags build GCC # Release as -s -O2 (stripped, no DWARF) and Clang/Apple Release as plain -O2 (no DWARF), @@ -75,69 +46,8 @@ if(WITH_CRASH_REPORTING AND WITH_CLIENT) endif() endif() - # No Qt integration: it runs find_package(Qt6) inside the vendored build, which - # cannot see our thin/aqt Qt layouts (macOS CI) under foreign toolchains, and its - # breadcrumbs could carry unredacted log lines into native crash events that bypass - # before_send. Our attached redacted log preview already carries the log context. - set(SENTRY_INTEGRATION_QT - OFF - CACHE BOOL "Qt log-message breadcrumbs for sentry-native (off: discovery + secret surface)" FORCE - ) - # The transport stays at the SDK default (curl on Apple/Linux, winhttp on Windows). - set(SENTRY_BUILD_TESTS - OFF - CACHE BOOL "Build sentry-native tests" FORCE - ) - set(SENTRY_BUILD_EXAMPLES - OFF - CACHE BOOL "Build sentry-native examples" FORCE - ) - - fetchcontent_declare( - sentry - GIT_REPOSITORY https://github.com/getsentry/sentry-native.git - GIT_TAG ${COCKATRICE_SENTRY_TAG} - GIT_SHALLOW TRUE - ) - fetchcontent_makeavailable(sentry) - - # Vendored sentry-native (and its breakpad/crashpad trees) warn under our -Wall -Wextra - # (e.g. breakpad's -Wmissing-field-initializers), and WARNING_AS_ERROR would fail the build - # on code we cannot fix. Those findings are not actionable for us, so opt the whole vendored - # tree out of warnings-as-errors while keeping the warnings themselves visible; our own - # targets keep -Werror. Interface libraries compile nothing, so they are skipped outright: - # an INTERFACE -Wno-error would propagate to our consumers and weaken their build. - function(_cockatrice_sentry_opt_out_of_werror _dir) - get_property( - _sentry_targets - DIRECTORY "${_dir}" - PROPERTY BUILDSYSTEM_TARGETS - ) - foreach(_sentry_target IN LISTS _sentry_targets) - get_target_property(_sentry_type ${_sentry_target} TYPE) - if(_sentry_type STREQUAL "INTERFACE_LIBRARY") - continue() - elseif(_sentry_type MATCHES "LIBRARY|EXECUTABLE") - get_target_property(_sentry_imported ${_sentry_target} IMPORTED) - if(NOT _sentry_imported) - target_compile_options(${_sentry_target} PRIVATE -Wno-error) - endif() - endif() - endforeach() - get_property( - _sentry_subdirs - DIRECTORY "${_dir}" - PROPERTY SUBDIRECTORIES - ) - foreach(_sentry_subdir IN LISTS _sentry_subdirs) - _cockatrice_sentry_opt_out_of_werror("${_sentry_subdir}") - endforeach() - endfunction() - if(NOT MSVC) - _cockatrice_sentry_opt_out_of_werror("${sentry_SOURCE_DIR}") - endif() - - message(STATUS "Crash reporting: sentry-native ${COCKATRICE_SENTRY_TAG} (backend: ${SENTRY_BACKEND})") + find_package(sentry CONFIG REQUIRED) + message(STATUS "Crash reporting: sentry-native ${sentry_VERSION}") else() message(STATUS "Crash reporting: SDK not vendored " "(WITH_CRASH_REPORTING=${WITH_CRASH_REPORTING}, WITH_CLIENT=${WITH_CLIENT})" diff --git a/vcpkg.json b/vcpkg.json index f12227024..3476cf9d2 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -7,6 +7,7 @@ "openssl", "protobuf", "pthreads", + "sentry-native", "zlib" ] }