diff --git a/.github/actions/conan-install/action.yml b/.github/actions/conan-install/action.yml index d4e7597e4e3..283f5e3a1f5 100644 --- a/.github/actions/conan-install/action.yml +++ b/.github/actions/conan-install/action.yml @@ -23,5 +23,5 @@ runs: run: | # Run twice to work around OpenSSL not being found. See: https://github.com/overte-org/overte-conan-recipes/issues/1 # `--format=json > build.json` creates a graph of dependencies, which can later be used to check for cache misses. - conan install . -s compiler.cppstd=${{ inputs.cppstd }} -s build_type=${{ inputs.build_type }} -o 'Overte/*:qt_source='${{ inputs.qt_source }} -b missing -pr=${{ inputs.conan_profile }} -of build --format=json > build.json + conan install . -s compiler.cppstd=${{ inputs.cppstd }} -s build_type=${{ inputs.build_type }} -o 'Overte/*:qt_source='${{ inputs.qt_source }} -b missing -pr=${{ inputs.conan_profile }} -of build --format=json > build.json || echo "Command failed. Retrying in case this is https://github.com/overte-org/overte-conan-recipes/issues/1" conan install . -s compiler.cppstd=${{ inputs.cppstd }} -s build_type=${{ inputs.build_type }} -o 'Overte/*:qt_source='${{ inputs.qt_source }} -b missing -pr=${{ inputs.conan_profile }} -of build diff --git a/.github/actions/sentry-debugging-symbols/action.yml b/.github/actions/sentry-debugging-symbols/action.yml new file mode 100644 index 00000000000..e9273146855 --- /dev/null +++ b/.github/actions/sentry-debugging-symbols/action.yml @@ -0,0 +1,14 @@ +name: "Upload debugging symbols to Sentry" +description: | + Uses Sentry-cli to upload debugging symbols to Sentry. +inputs: + SENTRY_DEBUG_TOKEN: + required: true + description: "Access token for uploading debugging symbols to Sentry." +runs: + using: "composite" + steps: + - name: Upload debugging symbols to Sentry + shell: bash + run: | + sentry-cli debug-files upload -o overte -p overte --include-sources --wait-for 120 --auth-token ${{ inputs.SENTRY_DEBUG_TOKEN }} build/ diff --git a/.github/actions/setup-macos/action.yml b/.github/actions/setup-macos/action.yml index cb47192b890..854f4b3ad3a 100644 --- a/.github/actions/setup-macos/action.yml +++ b/.github/actions/setup-macos/action.yml @@ -22,3 +22,7 @@ runs: shell: bash run: | python3 -m pip install boto3 PyGithub conan html5lib setuptools + + - name: Install Sentry-cli + shell: bash + run: curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION="3.6.0" sh diff --git a/.github/actions/setup-windows/action.yml b/.github/actions/setup-windows/action.yml index 4a78138ce83..537d3dc09d4 100644 --- a/.github/actions/setup-windows/action.yml +++ b/.github/actions/setup-windows/action.yml @@ -7,7 +7,7 @@ runs: shell: bash run: | if [[ "${{ matrix.os }}" = "Windows 2022" ]]; then - echo "CONAN_PROFILE='./tools/conan-profiles/vs-22-release'" >> $GITHUB_ENV + echo "CONAN_PROFILE='./tools/conan-profiles/vs-22-relwithdebinfo'" >> $GITHUB_ENV else echo "Not sure which Conan profile to use. Exiting." && exit 1 fi @@ -66,3 +66,7 @@ runs: echo "Printing Conan global.conf…" && cat ${CONAN_HOME}/global.conf echo "Printing Conan remotes.json…" && cat ${CONAN_HOME}/remotes.json echo "Printing Conan source_credentials.json…" && cat ${CONAN_HOME}/source_credentials.json + + - name: Install Sentry-cli + shell: bash + run: curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION="3.6.0" sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7802c54e580..df12d877f37 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,46 +66,47 @@ jobs: - id: windows os: Windows 2022 # We use a third-party runner hosted by depot.dev to avoid timing out in case Qt has to be built from source. - runner: depot-windows-2022-16 # Which GitHub Actions Runner to use. When using `image` this just needs to run the build container. + # depot-windows-2022-1 runs out of disk space when building RelWithDebInfo Qt. + runner: depot-windows-2022-32 # Which GitHub Actions Runner to use. When using `image` this just needs to run the build container. arch: x86_64 - cmake_build_type: Release + cmake_build_type: RelWithDebInfo qt_source: source # Which Qt Conan package to use. `system`, `source`, or `aqt`. rendering_backend: OpenGL # Which OVERTE_RENDERING_BACKEND to build. - id: ubuntu-opengl-amd64 os: Ubuntu 22.04 - image: docker.io/overte/overte-full-build:2026-06-21-ubuntu-22.04-amd64 # Container image used for building. Built from /tools/ci-script/linux-ci/Dockerfile_x + image: docker.io/overte/overte-full-build:2026-07-17-ubuntu-22.04-amd64 # Container image used for building. Built from /tools/ci-script/linux-ci/Dockerfile_x runner: depot-ubuntu-24.04-16 arch: amd64 - cmake_build_type: Release + cmake_build_type: RelWithDebInfo qt_source: source rendering_backend: OpenGL - id: ubuntu-vulkan-amd64 os: Ubuntu 22.04 - image: docker.io/overte/overte-full-build:2026-06-21-ubuntu-22.04-amd64 + image: docker.io/overte/overte-full-build:2026-07-17-ubuntu-22.04-amd64 runner: depot-ubuntu-24.04-16 arch: amd64 - cmake_build_type: Release + cmake_build_type: RelWithDebInfo qt_source: source rendering_backend: Vulkan - id: ubuntu-opengl-aarch64 os: Ubuntu 22.04 - image: docker.io/overte/overte-full-build:2026-06-21-ubuntu-22.04-aarch64 + image: docker.io/overte/overte-full-build:2026-07-17-ubuntu-22.04-aarch64 runner: depot-ubuntu-24.04-arm-16 arch: aarch64 - cmake_build_type: Release + cmake_build_type: RelWithDebInfo qt_source: source rendering_backend: OpenGL - id: ubuntu-vulkan-aarch64 os: Ubuntu 22.04 - image: docker.io/overte/overte-full-build:2026-06-21-ubuntu-22.04-aarch64 + image: docker.io/overte/overte-full-build:2026-07-17-ubuntu-22.04-aarch64 runner: depot-ubuntu-24.04-arm-16 arch: aarch64 - cmake_build_type: Release + cmake_build_type: RelWithDebInfo qt_source: source rendering_backend: Vulkan - id: codechecker os: Ubuntu 22.04 - image: docker.io/overte/overte-full-build:2026-06-21-ubuntu-22.04-amd64 + image: docker.io/overte/overte-full-build:2026-07-17-ubuntu-22.04-amd64 # depot-ubuntu-24.04-16 runs out of disk space when building debug Qt. runner: depot-ubuntu-24.04-32 arch: amd64 @@ -152,10 +153,15 @@ jobs: echo "OVERTE_RELEASE_TYPE=PR" >> $GITHUB_ENV echo "OVERTE_RELEASE_NUMBER=${{ github.event.number }}" >> $GITHUB_ENV echo "GIT_COMMIT_SHORT=${PULL_REQUEST_SHA::7}" >> $GITHUB_ENV + echo "OVERTE_BACKTRACE_URL=https://o4504831972343808.ingest.sentry.io/api/4504832427950080/minidump/?sentry_key=f511de295975461b8f92a36f4a4a4f32" >> $GITHUB_ENV + echo "OVERTE_BACKTRACE_TOKEN=PR_${{ github.event.number }}_${PULL_REQUEST_SHA::7}" >> $GITHUB_ENV + elif [ "${{github.event_name}}" = "push" ] && [ "${{github.event.action}}" == "tag" ]; then echo "OVERTE_RELEASE_TYPE=RELEASE" >> $GITHUB_ENV echo "OVERTE_RELEASE_NUMBER=${{ github.ref_name }}" >> $GITHUB_ENV echo "GIT_COMMIT_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV + echo "OVERTE_BACKTRACE_URL=${{ secrets.SENTRY_MINIDUMP_ENDPOINT }}" >> $GITHUB_ENV + echo "OVERTE_BACKTRACE_TOKEN=${{ github.ref_name }}_${GITHUB_SHA::7}" >> $GITHUB_ENV if [[ "${{ github.ref_name }}" == *"rc"* ]]; then # release candidate # The uploader already creates a subfolder for each RELEASE_NUMBER. echo "UPLOAD_PREFIX=build/overte/release-candidate/" >> $GITHUB_ENV @@ -167,6 +173,8 @@ jobs: # Nightlies ignore OVERTE_RELEASE_NUMBER and instead use the build date. echo "OVERTE_RELEASE_NUMBER=''" >> $GITHUB_ENV echo "GIT_COMMIT_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV + echo "OVERTE_BACKTRACE_URL=${{ secrets.SENTRY_MINIDUMP_ENDPOINT }}" >> $GITHUB_ENV + echo "OVERTE_BACKTRACE_TOKEN=Nightly-$(date +%Y-%m-%d)_${GITHUB_SHA::7}" >> $GITHUB_ENV else echo "Unexpected Action event! Failing…" exit 1; @@ -243,9 +251,9 @@ jobs: shell: bash run: | if [[ "${{ matrix.os }}" =~ "Windows" ]]; then - cmake --preset conan-default -DOVERTE_RENDERING_BACKEND=${{ matrix.rendering_backend }} -DOVERTE_RELEASE_NUMBER=$OVERTE_RELEASE_NUMBER -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT -DOVERTE_RELEASE_TYPE=$OVERTE_RELEASE_TYPE $CMAKE_EXTRA + cmake --preset conan-default -DOVERTE_RENDERING_BACKEND=${{ matrix.rendering_backend }} -DOVERTE_RELEASE_NUMBER=$OVERTE_RELEASE_NUMBER -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT -DOVERTE_RELEASE_TYPE=$OVERTE_RELEASE_TYPE -DOVERTE_BACKTRACE_URL=$OVERTE_BACKTRACE_URL -DOVERTE_BACKTRACE_TOKEN=$OVERTE_BACKTRACE_TOKEN $CMAKE_EXTRA else - cmake --preset conan-${CMAKE_BUILD_TYPE,,} -DOVERTE_RENDERING_BACKEND=${{ matrix.rendering_backend }} -DOVERTE_RELEASE_NUMBER=$OVERTE_RELEASE_NUMBER -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT -DOVERTE_RELEASE_TYPE=$OVERTE_RELEASE_TYPE $CMAKE_EXTRA + cmake --preset conan-${CMAKE_BUILD_TYPE,,} -DOVERTE_RENDERING_BACKEND=${{ matrix.rendering_backend }} -DOVERTE_RELEASE_NUMBER=$OVERTE_RELEASE_NUMBER -DOVERTE_GIT_COMMIT_SHORT=$GIT_COMMIT_SHORT -DOVERTE_RELEASE_TYPE=$OVERTE_RELEASE_TYPE -DOVERTE_BACKTRACE_URL=$OVERTE_BACKTRACE_URL -DOVERTE_BACKTRACE_TOKEN=$OVERTE_BACKTRACE_TOKEN $CMAKE_EXTRA fi - name: Run CodeChecker static analysis @@ -318,6 +326,14 @@ jobs: shell: bash run: cmake --build --target packaged-server-console --preset conan-${CMAKE_BUILD_TYPE,,} + - name: Upload debugging symbols to Sentry + # We don't have access to the access token on Pull Request builds. + if: github.event_name != 'pull_request' + continue-on-error: true + uses: ./.github/actions/sentry-debugging-symbols + with: + SENTRY_DEBUG_TOKEN: ${{ secrets.SENTRY_DEBUG_UPLOAD_TOKEN }} + - name: Build installer shell: bash run: | diff --git a/.idea/cmake.xml b/.idea/cmake.xml index 28ac684d530..7ef1b58b772 100644 --- a/.idea/cmake.xml +++ b/.idea/cmake.xml @@ -3,21 +3,21 @@ - + - + - + - + - + diff --git a/BUILD.md b/BUILD.md index c6ff29c10bc..cf98adc3857 100644 --- a/BUILD.md +++ b/BUILD.md @@ -1,13 +1,13 @@ # General Build Information -*Last Updated on 2025-03-17* +*Last Updated on 2026-07-29* ## OS Specific Build Guides @@ -78,6 +78,8 @@ BUILD_GLOBAL_SERVICES=STABLE #### Possible CMake Variables ```text +// Build with crash reporting. +OVERTE_USE_SENTRY // The URL to post the dump to. OVERTE_BACKTRACE_URL // The identifying tag of the release. diff --git a/BUILD_LINUX.md b/BUILD_LINUX.md index 772fdf2ee9e..b2dc61609b5 100644 --- a/BUILD_LINUX.md +++ b/BUILD_LINUX.md @@ -7,7 +7,7 @@ SPDX-License-Identifier: Apache-2.0 # Build Linux -*Last Updated on 2026-04-16* +*Last Updated on 2026-07-17* Please read the [general build guide](BUILD.md) for information on dependencies required for all platforms. Only Linux specific instructions are found in this file. @@ -119,10 +119,10 @@ If you don't do this, Conan will still complain if it notices system packages be Install the dependencies with conan ```bash cd overte -conan install . -s build_type=Release -b missing -pr:a=tools/conan-profiles/linux -of build -c tools.cmake.cmaketoolchain:generator="Ninja Multi-Config" +conan install . -s build_type=RelWithDebInfo -b missing -pr:a=tools/conan-profiles/linux -of build -c tools.cmake.cmaketoolchain:generator="Ninja Multi-Config" ``` -If you want to build Debug or RelWithDebInfo versions, change the `build_type` to `Debug` or `RelWithDebInfo` and run the command again. E.g.: +If you want to build Debug or Release versions, change the `build_type` to `Debug` or `Release` and run the command again. E.g.: ```bash conan install . -s build_type=Debug -b missing -pr:a=tools/conan-profiles/linux -of build -c tools.cmake.cmaketoolchain:generator="Ninja Multi-Config" ``` @@ -136,7 +136,7 @@ cmake --preset conan-default To compile the Domain server: ```bash -cmake --build --preset conan-release --target domain-server assignment-client +cmake --build --preset conan-relwithdebinfo --target domain-server assignment-client ``` *Note: For a server, it is not necessary to compile the Interface.* diff --git a/BUILD_WIN.md b/BUILD_WIN.md index e4d00d2f522..99fd96b8b75 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -7,7 +7,7 @@ SPDX-License-Identifier: Apache-2.0 # Build Windows -*Last Updated on 2025-08-01* +*Last Updated on 2026-07-15* This is a stand-alone guide for creating your first Overte build for Windows 64-bit. @@ -97,7 +97,7 @@ Run the Command Prompt from Start and run the following commands: ```bash cd "%OVERTE_DIR%" -conan install . -b missing -pr=tools/conan-profiles/vs-22-release -of build +conan install . -b missing -pr=tools/conan-profiles/vs-22-relwithdebinfo -of build conan install . -b missing -pr=tools/conan-profiles/vs-22-debug -of build cmake --preset conan-default ``` @@ -188,4 +188,4 @@ To fix this, install "C++ vXX.XX (...) ATL (...)" replacing XX.XX with the first ### `warning : cannot resolve item 'api-ms-win-(...)-l1-1-0.dll'` You may be able to ignore this warning. My assumption is that the MSVC version used is incompatible with the currently installed Windows SDK, -and Overte will just use the newer SDK during runtime. \ No newline at end of file +and Overte will just use the newer SDK during runtime. diff --git a/CMakeLists.txt b/CMakeLists.txt index 968f8a0826b..6686e47cd62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -96,7 +96,7 @@ set(OVERTE_USE_OPTIMIZED_IK OFF CACHE BOOL "Use optimized IK.") set(OVERTE_DISABLE_KTX_CACHE OFF CACHE BOOL "Disable KTX Cache.") set(OVERTE_USE_KHR_ROBUSTNESS OFF CACHE BOOL "Use KHR_robustness.") set(OVERTE_USE_SYSTEM_LIBS OFF CACHE BOOL "Build with system dependencies.") - +set(OVERTE_USE_SENTRY OFF CACHE BOOL "Build with Sentry crash reporting.") set(OVERTE_BACKTRACE_URL "" CACHE STRING "URL to an endpoint for uploading crash-dumps. For example Sentry.") set(OVERTE_BACKTRACE_TOKEN "" CACHE STRING "Token used to identify this build, for use in uploading crash-dumps.") diff --git a/assignment-client/CMakeLists.txt b/assignment-client/CMakeLists.txt index f8656670b62..e08b4a79839 100644 --- a/assignment-client/CMakeLists.txt +++ b/assignment-client/CMakeLists.txt @@ -24,8 +24,7 @@ link_hifi_libraries( include_hifi_library_headers(procedural) include_hifi_library_headers(entities) -add_crashpad() -target_breakpad() +add_sentry() if (OVERTE_BUILD_TOOLS) add_dependencies(${TARGET_NAME} oven) diff --git a/cmake/macros/AddCrashpad.cmake b/cmake/macros/AddCrashpad.cmake deleted file mode 100644 index 2543c0b507c..00000000000 --- a/cmake/macros/AddCrashpad.cmake +++ /dev/null @@ -1,62 +0,0 @@ -# -# AddCrashpad.cmake -# cmake/macros -# -# Created by Clement Brisset on 01/19/18. -# Copyright 2018 High Fidelity, Inc. -# Copyright 2025 Overte e.V. -# -# Distributed under the Apache License, Version 2.0. -# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html -# - -macro(add_crashpad) - set (USE_CRASHPAD TRUE) - message(STATUS "Checking crashpad config") - - if (OVERTE_BACKTRACE_URL STREQUAL "") - message(STATUS "Checking crashpad config - -DOVERTE_BACKTRACE_URL is empty, disabled.") - set(USE_CRASHPAD FALSE) - endif() - - if (OVERTE_BACKTRACE_TOKEN STREQUAL "") - message(STATUS "Checking crashpad config - -DOVERTE_BACKTRACE_TOKEN is empty, disabled.") - set(USE_CRASHPAD FALSE) - endif() - - if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") - message(STATUS "Checking crashpad config - Linux aarch64 is not supported by crashpad, disabled.") - set(USE_CRASHPAD FALSE) - endif() - - if (USE_CRASHPAD) - message(STATUS "Checking crashpad config - enabled.") - get_property(CRASHPAD_CHECKED GLOBAL PROPERTY CHECKED_FOR_CRASHPAD_ONCE) - if (NOT CRASHPAD_CHECKED) - find_package(Crashpad REQUIRED) - - set_property(GLOBAL PROPERTY CHECKED_FOR_CRASHPAD_ONCE TRUE) - endif() - - add_definitions(-DHAS_CRASHPAD) - add_definitions(-DOVERTE_BACKTRACE_URL=\"${OVERTE_BACKTRACE_URL}\") - add_definitions(-DOVERTE_BACKTRACE_TOKEN=\"${OVERTE_BACKTRACE_TOKEN}\") - - target_include_directories(${TARGET_NAME} PRIVATE ${CRASHPAD_INCLUDE_DIRS}) - target_link_libraries(${TARGET_NAME} ${CRASHPAD_LIBRARY} ${CRASHPAD_UTIL_LIBRARY} ${CRASHPAD_BASE_LIBRARY}) - - if (WIN32) - set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "/ignore:4099") - elseif (APPLE) - find_library(Security Security) - target_link_libraries(${TARGET_NAME} ${Security}) - target_link_libraries(${TARGET_NAME} "-lbsm") - endif() - - add_custom_command( - TARGET ${TARGET_NAME} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CRASHPAD_HANDLER_EXE_PATH} "$/" - ) - endif () -endmacro() diff --git a/cmake/macros/AddSentry.cmake b/cmake/macros/AddSentry.cmake new file mode 100644 index 00000000000..4c1c05a6aff --- /dev/null +++ b/cmake/macros/AddSentry.cmake @@ -0,0 +1,54 @@ +# +# AddSentry.cmake +# cmake/macros +# +# Created by Clement Brisset on 01/19/18. +# Copyright 2018 High Fidelity, Inc. +# Copyright 2025-2026 Overte e.V. +# +# Distributed under the Apache License, Version 2.0. +# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html +# + +macro(add_sentry) + if (OVERTE_USE_SENTRY) + if (OVERTE_BACKTRACE_URL STREQUAL "") + message(FATAL_ERROR "Crashpad is enabled, but -DOVERTE_BACKTRACE_URL is empty!") + endif() + if (OVERTE_BACKTRACE_TOKEN STREQUAL "") + message(FATAL_ERROR "Crashpad is enabled, but -DOVERTE_BACKTRACE_TOKEN is empty!") + endif() + + find_package(Sentry QUIET REQUIRED) + + add_definitions(-DHAS_SENTRY) + add_definitions(-DOVERTE_BACKTRACE_URL=\"${OVERTE_BACKTRACE_URL}\") + add_definitions(-DOVERTE_BACKTRACE_TOKEN=\"${OVERTE_BACKTRACE_TOKEN}\") + + target_link_libraries(${TARGET_NAME} sentry-native::sentry-native) + + + # if (WIN32) + # set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS "/ignore:4099") + # elseif (APPLE) + # find_library(Security Security) + # target_link_libraries(${TARGET_NAME} ${Security}) + # target_link_libraries(${TARGET_NAME} "-lbsm") + # endif() + + + # Find and pass crashpad_hander to CPack for packaging. crashpad_handler is used for sending crash reports to Sentry. + find_program(CRASHPAD_HANDLER_EXECUTABLE crashpad_handler PATHS "${sentry_INCLUDE_DIR}/../bin/" NO_DEFAULT_PATH) + if (NOT CRASHPAD_HANDLER_EXECUTABLE) + message(FATAL_ERROR "Could not find Crashpad-handler at ${sentry_INCLUDE_DIR}/../bin/. Crashpad-handler is required for submitting crash reports to Sentry.") + endif () + # TODO: Make sure we are packaging crashpad_handler into our AppImages/installers. + set(CPACK_CRASHPAD_HANDLER_EXECUTABLE ${CRASHPAD_HANDLER_EXECUTABLE}) + + add_custom_command( + TARGET ${TARGET_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CRASHPAD_HANDLER_EXECUTABLE} "$/" + ) + endif () +endmacro() diff --git a/cmake/macros/TargetBreakpad.cmake b/cmake/macros/TargetBreakpad.cmake deleted file mode 100644 index 58626ad17be..00000000000 --- a/cmake/macros/TargetBreakpad.cmake +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright 2018 High Fidelity, Inc. -# Created by Gabriel Calero & Cristian Duarte on 2018/03/13 -# -# Distributed under the Apache License, Version 2.0. -# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -# -macro(TARGET_BREAKPAD) - if (ANDROID) - set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/breakpad) - set(BREAKPAD_INCLUDE_DIRS "${INSTALL_DIR}/include" CACHE STRING INTERNAL) - set(LIB_DIR ${INSTALL_DIR}/lib) - list(APPEND BREAKPAD_LIBRARIES ${LIB_DIR}/libbreakpad_client.a) - target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BREAKPAD_INCLUDE_DIRS}) - if (USE_BREAKPAD) - add_definitions(-DHAS_BREAKPAD) - endif() - endif() - target_link_libraries(${TARGET_NAME} ${BREAKPAD_LIBRARIES}) -endmacro() - - diff --git a/conanfile.py b/conanfile.py index 46d5eecb627..ebb9d12227b 100644 --- a/conanfile.py +++ b/conanfile.py @@ -56,7 +56,6 @@ def requirements(self): self.requires("artery-font-format/1.0.1") # FIXME: update to 1.1 self.requires("bullet3/3.25") self.requires("cgltf/1.14@overte/stable") - # self.requires("crashpad/cci.20220219" ) # Broken self.requires("discord-rpc/3.4.0@overte/stable") self.requires("draco/1.3.5") # FIXME: update to newer version self.requires("etc2comp/cci.20170424") # NOTE: archived upstream @@ -65,7 +64,7 @@ def requirements(self): self.requires("gli/cci.20210515") # NOTE: not maintained for 4 years self.requires("glslang/1.4.350.0") self.requires("liblo/0.35@overte/stable") # For hifiOSC - self.requires("libnode/22.22.3@overte/stable#12c9d377b2df64060e312a93bf14592f") + self.requires("libnode/22.23.1@overte/stable#d73b93ec99eae5b0c1d85296e0453d8e") self.requires("nlohmann_json/3.11.2") self.requires("nvidia-texture-tools/2023.01@overte/stable#bb4a28e5438f69332299cc23b770fc07") self.requires("onetbb/2021.10.0") @@ -76,6 +75,7 @@ def requirements(self): self.requires("quazip/1.4") self.requires("scribe/2019.02@overte/stable") self.requires("sdl/2.32.10") + self.requires("sentry-native/0.14.2") # Crash reporting self.requires("spirv-cross/1.4.350.0") self.requires("spirv-tools/1.4.350.0") self.requires("steamworks/158a@overte/prebuild") @@ -90,13 +90,13 @@ def requirements(self): if self.options.qt_source == "system": self.requires("qt/5.15.2@overte/system", force=True) if self.settings.os == "Linux": - openssl = "openssl/system@overte/stable#24c4df65c52791c4955f7d47d9faef0d" + openssl = "openssl/system@overte/system#74cd53974fe6a60b21693f2c9653b15f" elif self.options.qt_source == "aqt": self.requires("qt/5.15.2@overte/aqt", force=True) else: if self.settings.os == "Linux": # Use system OpenSSL to work around OpenSSL being missing from libnode's rpath and this cascading down to Interface. - openssl = "openssl/system@overte/stable#24c4df65c52791c4955f7d47d9faef0d" + openssl = "openssl/system@overte/system#74cd53974fe6a60b21693f2c9653b15f" self.requires("fcitx5-qt/5.1.13@overte/stable#41b7ae9082f32e1ad83fd8a43a2c8460") self.requires("qt/5.15.18@overte/experimental#3a9079f3023351a7319be352cc6f4665", force=True) # Replace Conan Center's glib package with our own duplicate to avoid their outdated binary cache. https://github.com/conan-io/conan-center-index/issues/17876 diff --git a/domain-server/CMakeLists.txt b/domain-server/CMakeLists.txt index 011fd115bd3..f42208f411e 100644 --- a/domain-server/CMakeLists.txt +++ b/domain-server/CMakeLists.txt @@ -36,8 +36,7 @@ target_zlib() target_quazip() target_openssl() -add_crashpad() -target_breakpad() +add_sentry() # libcrypto uses dlopen in libdl if (UNIX) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index b61ea38306f..913cc86887b 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -242,8 +242,7 @@ target_bullet() set(OpenGL_GL_PREFERENCE "GLVND") target_opengl() -add_crashpad() -target_breakpad() +add_sentry() target_json() target_glm() target_discord_rpc() diff --git a/libraries/gpu/src/gpu/Texture_ktx.cpp b/libraries/gpu/src/gpu/Texture_ktx.cpp index 9ddf41e26e7..1032df719a7 100644 --- a/libraries/gpu/src/gpu/Texture_ktx.cpp +++ b/libraries/gpu/src/gpu/Texture_ktx.cpp @@ -594,7 +594,7 @@ std::pair Texture::build(const ktx::KTXDescriptor& d // Assing the mips availables texture->setStoredMipFormat(mipFormat); - IrradianceKTXPayload irradianceKtxKeyValue; + IrradianceKTXPayload irradianceKtxKeyValue{}; if (IrradianceKTXPayload::findInKeyValues(descriptor.keyValues, irradianceKtxKeyValue)) { texture->overrideIrradiance(std::make_shared(irradianceKtxKeyValue._irradianceSH)); } diff --git a/libraries/networking/CMakeLists.txt b/libraries/networking/CMakeLists.txt index 3550cf424e7..8acad8e911d 100644 --- a/libraries/networking/CMakeLists.txt +++ b/libraries/networking/CMakeLists.txt @@ -4,8 +4,7 @@ link_hifi_libraries(shared platform) target_openssl() target_tbb() -add_crashpad() -target_breakpad() +add_sentry() if (WIN32 OR (UNIX AND NOT APPLE)) if (NOT DISABLE_WEBRTC ) diff --git a/libraries/networking/src/crash-handler/CrashHandlerBackend_Crashpad.cpp b/libraries/networking/src/crash-handler/CrashHandlerBackend_Crashpad.cpp index cf893f267b4..1f45eb3346b 100644 --- a/libraries/networking/src/crash-handler/CrashHandlerBackend_Crashpad.cpp +++ b/libraries/networking/src/crash-handler/CrashHandlerBackend_Crashpad.cpp @@ -10,7 +10,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#if HAS_CRASHPAD +#if HAS_SENTRY #include "CrashHandler.h" @@ -519,4 +519,4 @@ void startCrashHookMonitor(QCoreApplication* app) { #endif // Q_OS_WIN } -#endif // HAS_CRASHPAD +#endif // HAS_SENTRY diff --git a/libraries/networking/src/crash-handler/CrashHandlerBackend_None.cpp b/libraries/networking/src/crash-handler/CrashHandlerBackend_None.cpp index 59441255756..cdf015f2c65 100644 --- a/libraries/networking/src/crash-handler/CrashHandlerBackend_None.cpp +++ b/libraries/networking/src/crash-handler/CrashHandlerBackend_None.cpp @@ -4,12 +4,13 @@ // // Created by Clement Brisset on 01/19/18. // Copyright 2018 High Fidelity, Inc. +// Copyright 2026 Overte e.V. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#if !defined(HAS_CRASHPAD) && !defined(HAS_BREAKPAD) +#if !defined(HAS_SENTRY) && !defined(HAS_CRASHPAD) && !defined(HAS_BREAKPAD) #include "CrashHandler.h" diff --git a/tools/ci-scripts/linux-ci/Dockerfile_build_ubuntu-22.04 b/tools/ci-scripts/linux-ci/Dockerfile_build_ubuntu-22.04 index 760759ba5c9..1d2c186d45a 100644 --- a/tools/ci-scripts/linux-ci/Dockerfile_build_ubuntu-22.04 +++ b/tools/ci-scripts/linux-ci/Dockerfile_build_ubuntu-22.04 @@ -4,7 +4,7 @@ # SPDX-License-Identifier: Apache-2.0 # Docker file for building Overte -# Example build: docker build --no-cache --progress=plain -t overte/overte-full-build:2026-06-21-ubuntu-22.04-amd64 -f Dockerfile_build_ubuntu-22.04 . +# Example build: docker build --no-cache --progress=plain -t overte/overte-full-build:2026-07-17-ubuntu-22.04-amd64 -f Dockerfile_build_ubuntu-22.04 . FROM ubuntu:22.04 LABEL maintainer="Julian Groß (julian.gro@overte.org)" LABEL description="Development image for full Overte builds" @@ -152,7 +152,7 @@ if [ $(uname -m) = "x86_64" ]; then # ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/tmp/tmpz4phh0l0/output.json' pip3 install --upgrade pip # The CodeChecker versions needs to be the same as requested by the CodeChecker-Action. - pip3 install codechecker==6.28.0 + pip3 install codechecker==6.28.2 # Get new CppCheck, instead of Ubuntu's outdated version. wget -O cppcheck.tar.gz https://github.com/cppcheck-opensource/cppcheck/archive/refs/tags/2.21.0.tar.gz @@ -178,6 +178,12 @@ else fi EOF +# +# Sentry +# +# Install Sentry-cli for uploading debugging symbols. +RUN curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION="3.6.0" sh + # # Platform specific build variables # diff --git a/tools/conan-profiles/vs-19-debug b/tools/conan-profiles/vs-19-debug deleted file mode 100644 index 7e2a340e70e..00000000000 --- a/tools/conan-profiles/vs-19-debug +++ /dev/null @@ -1,14 +0,0 @@ -[settings] -os=Windows -arch=x86_64 -compiler=msvc -# Both libnode and webrtc-audio-processing require C++20 -compiler.cppstd=20 -compiler.version=192 -compiler.runtime=dynamic -compiler.runtime_type=Debug -build_type=Debug -[options] -Overte/*:qt_source=source -# Required for building oneTBB. -hwloc/*:shared=True diff --git a/tools/conan-profiles/vs-19-debug-ninja b/tools/conan-profiles/vs-19-debug-ninja deleted file mode 100644 index 46df1bcc1e7..00000000000 --- a/tools/conan-profiles/vs-19-debug-ninja +++ /dev/null @@ -1,16 +0,0 @@ -[settings] -os=Windows -arch=x86_64 -compiler=msvc -# Both libnode and webrtc-audio-processing require C++20 -compiler.cppstd=20 -compiler.version=192 -compiler.runtime=dynamic -compiler.runtime_type=Debug -build_type=Debug -[conf] -tools.cmake.cmaketoolchain:generator=Ninja -[options] -Overte/*:qt_source=source -# Required for building oneTBB. -hwloc/*:shared=True diff --git a/tools/conan-profiles/vs-19-release b/tools/conan-profiles/vs-19-release deleted file mode 100644 index a7bce7c6cc8..00000000000 --- a/tools/conan-profiles/vs-19-release +++ /dev/null @@ -1,14 +0,0 @@ -[settings] -os=Windows -arch=x86_64 -compiler=msvc -# Both libnode and webrtc-audio-processing require C++20 -compiler.cppstd=20 -compiler.version=192 -compiler.runtime=dynamic -compiler.runtime_type=Release -build_type=Release -[options] -Overte/*:qt_source=source -# Required for building oneTBB. -hwloc/*:shared=True diff --git a/tools/conan-profiles/vs-19-release-ninja b/tools/conan-profiles/vs-19-release-ninja deleted file mode 100644 index da6a90bda23..00000000000 --- a/tools/conan-profiles/vs-19-release-ninja +++ /dev/null @@ -1,16 +0,0 @@ -[settings] -os=Windows -arch=x86_64 -compiler=msvc -# Both libnode and webrtc-audio-processing require C++20 -compiler.cppstd=20 -compiler.version=192 -compiler.runtime=dynamic -compiler.runtime_type=Release -build_type=Release -[conf] -tools.cmake.cmaketoolchain:generator=Ninja -[options] -Overte/*:qt_source=source -# Required for building oneTBB. -hwloc/*:shared=True diff --git a/tools/conan-profiles/vs-19-relwithdebinfo b/tools/conan-profiles/vs-19-relwithdebinfo deleted file mode 100644 index c89fd597d52..00000000000 --- a/tools/conan-profiles/vs-19-relwithdebinfo +++ /dev/null @@ -1,16 +0,0 @@ -[settings] -os=Windows -os_build=Windows -arch=x86_64 -arch_build=x86_64 -compiler=Visual Studio -# Both libnode and webrtc-audio-processing require C++20 -compiler.cppstd=20 -compiler.version=16 -build_type=Release -# libnode's build system seems to only support Release and Debug on Windows. RelWithDebInfo is not a valid option. -libnode/*:build_type=Release -[options] -Overte/*:qt_source=source -# Required for building oneTBB. -hwloc/*:shared=True diff --git a/tools/oven/CMakeLists.txt b/tools/oven/CMakeLists.txt index 3cf954b2139..fa610890b29 100644 --- a/tools/oven/CMakeLists.txt +++ b/tools/oven/CMakeLists.txt @@ -11,8 +11,7 @@ include_hifi_library_headers(script-engine) setup_memory_debugger() setup_thread_debugger() -add_crashpad() -target_breakpad() +add_sentry() if (WIN32) diff --git a/winprepareVS19.bat b/winprepareVS19.bat deleted file mode 100644 index d0c68112933..00000000000 --- a/winprepareVS19.bat +++ /dev/null @@ -1,8 +0,0 @@ -ECHO Running conan -conan install . -b missing -pr=tools/conan-profiles/vs-19-release -of build -conan install . -b missing -pr=tools/conan-profiles/vs-19-debug -of build -conan cache clean "*" -sbd -ECHO Running cmake -cmake --preset conan-default -ECHO CMake has finished -pause diff --git a/winprepareVS22.bat b/winprepareVS22.bat index 69d31e58004..b0eea5c8437 100644 --- a/winprepareVS22.bat +++ b/winprepareVS22.bat @@ -1,7 +1,7 @@ ECHO Running conan -conan install . -b missing -pr=tools/conan-profiles/vs-22-release -of build +conan install . -b missing -pr=tools/conan-profiles/vs-22-relwithdebinfo -of build conan install . -b missing -pr=tools/conan-profiles/vs-22-debug -of build -conan cache clean "*" -sbd +conan cache clean "*" -sbdt ECHO Running cmake cmake --preset conan-default ECHO CMake has finished