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.

@PatTheMav PatTheMav force-pushed the macos-dsym-support branch 6 times, most recently from 864c1ca to dc40710 Compare May 5, 2023 16:41
@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.

@PatTheMav PatTheMav force-pushed the macos-dsym-support branch 2 times, most recently from 2c51dd2 to 1f8c1f5 Compare June 15, 2023 21:48
@PatTheMav PatTheMav force-pushed the macos-dsym-support branch from 1f8c1f5 to 8d1d5cd Compare June 21, 2023 22:32
.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
@PatTheMav PatTheMav force-pushed the macos-dsym-support branch from 8d1d5cd to eb95c4c Compare June 22, 2023 17:34
@PatTheMav PatTheMav force-pushed the macos-dsym-support branch from eb95c4c to 3decb5b Compare June 23, 2023 14:13
@RytoEX RytoEX merged commit ba195a1 into obsproject:master Jul 7, 2023
@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