Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add creation of macOS dSYM debug symbols to symbolicate release builds #183

Merged
merged 9 commits into from
Jul 7, 2023

Conversation

PatTheMav
Copy link
Member

Description

Updates all macOS-related build scripts to generate dSYM files in Release configuration.

Also contains a code-cleanup of the zsh-based scripts:

  • Unnecessary quoting removed (zsh does not automatically split strings into fields, making space-separated paths safer to use)
  • Due to the need of dSYM creation binary stripping is now explicitly done by each fixup step
  • Shared library artefacts are automatically removed if a library is rebuilt as a static library (avoids leakage of prior shared library builds)
  • C++ and C standard raised to C++17 and C17 respectively, except where the project is not compatible with the standard
  • Cleaned up some code doing the same thing but having been implemented in separate ways (e.g. the way static library builds were enforced)
  • Refreshed the clean-up steps in the main build scripts to remove more static libraries when a "complete" package is built (necessary because the static libraries are not stripped and thus increased in size)

Motivation and Context

As obs-deps and obs-studio use Release configuration to ship the application, it is necessary to also ship the associated dSYM debug symbols used to build the application.

Debug symbols are identified by UUIDs that are linked to UUIDs of the built binaries, so only a matching pair is able to symbolicate crashes.

How Has This Been Tested?

Debug symbols created for macOS-deps, FFmpeg, and Qt6, universal debug symbols created locally as well.

Types of changes

  • New feature (non-breaking change which adds functionality)

Checklist:

  • My code has been run through clang-format.
  • I have read the contributing document.
  • My code is not on the master branch.
  • The code has been tested.
  • All commit messages are properly formatted and commits squashed where appropriate.
  • I have included updates to all appropriate documentation.

@RytoEX
Copy link
Member

RytoEX commented May 24, 2023

Updates all macOS-related build scripts to generate dSYM files in Release configuration.

Also contains a code-cleanup of the zsh-based scripts:

I kind of wish these were separate PRs so that it was easier to review the "code-cleanup" portions from the more significant changes, but I don't know how difficult it would be to separate them at this point.

@PatTheMav
Copy link
Member Author

Updates all macOS-related build scripts to generate dSYM files in Release configuration.
Also contains a code-cleanup of the zsh-based scripts:

I kind of wish these were separate PRs so that it was easier to review the "code-cleanup" portions from the more significant changes, but I don't know how difficult it would be to separate them at this point.

Most (but not all) are interconnected, as I had to touch all files anyway to add the dSYM creation step, which required adjusting the install steps for all CMake-based dependencies, etc.

@PatTheMav
Copy link
Member Author

Updated this and the other PRs to follow a single dependency trail:

  1. deps.qt: Remove Qt5 and update Qt6 build scripts #188
  2. deps.windows: Update dependencies for CMake 3.0 upgrade #174
  3. Add creation of macOS dSYM debug symbols to symbolicate release builds #183
  4. deps.ffmpeg: Switch Windows builds to native build toolchain #186

Following this order will update each part of obs-deps one by one, such as that almost all parts of it are updated in some way at the end of the process.

.github/workflows/main.yaml Show resolved Hide resolved
deps.macos/80-pcre2.zsh Show resolved Hide resolved
.github/actions/build-deps/action.yml Outdated Show resolved Hide resolved
.github/actions/build-deps/action.yml Outdated Show resolved Hide resolved
deps.ffmpeg/20-libpng.zsh Show resolved Hide resolved
deps.ffmpeg/50-libtheora.zsh Outdated Show resolved Hide resolved
deps.ffmpeg/60-mbedtls.zsh Show resolved Hide resolved
@RytoEX RytoEX merged commit ba195a1 into obsproject:master Jul 7, 2023
22 checks passed
@PatTheMav PatTheMav deleted the macos-dsym-support branch July 7, 2023 16:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants