Skip to content

Instantly share code, notes, and snippets.

@mlaves
Last active December 30, 2025 12:41
Show Gist options
  • Select an option

  • Save mlaves/85f96a6d65864eaa58033c089b3bc5e7 to your computer and use it in GitHub Desktop.

Select an option

Save mlaves/85f96a6d65864eaa58033c089b3bc5e7 to your computer and use it in GitHub Desktop.
Build and notarize a relocatable Mumble.app on macOS
# ------------------------------------------------------------
# Building Mumble from Source
# ------------------------------------------------------------
# Install required build dependencies: CMake, Qt 5, and Ninja
brew install cmake qt@5 ninja pkg-config boost libogg libvorbis flac libsndfile protobuf openssl poco ice
# Clone the official Mumble repository
git clone https://github.com/mumble-voip/mumble.git
cd mumble
# Check out the specific Mumble version to build
git checkout v1.5.857
# Initialize and update all git submodules recursively
git submodule update --init --recursive
# Configure the build using CMake with Ninja, packaging enabled, server disabled, and relaxed warnings
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$(brew --prefix qt@5)" -Dpackaging=ON -DBUILD_NUMBER=1 -Dserver=OFF -Dwarnings-as-errors=OFF -GNinja
# Build Mumble using the generated Ninja build files
cmake --build build
# ------------------------------------------------------------
# Preparing the App Bundle for Relocation and Notarization
# ------------------------------------------------------------
# Change into the build directory
cd build
# Bundle the app and prepare it for notarization using macdeployqt (copies all dependencies into app bundle)
macdeployqt Mumble.app -sign-for-notarization="Developer ID Application: XXX (YYYYYYYYYY)"
# Fix the runtime library path for PocoXML to point to the embedded PocoFoundation
# For some reason, macdeployqt failed at this library
install_name_tool -change @rpath/libPocoFoundation.111.dylib @executable_path/../Frameworks/libPocoFoundation.111.dylib Mumble.app/Contents/Frameworks/libPocoXML.111.dylib
# Re-sign the modified PocoXML framework with the Developer ID
codesign --force --timestamp --sign "Developer ID Application: XXX (YYYYYYYYYY)" Mumble.app/Contents/Frameworks/libPocoXML.111.dylib
# Fix the runtime library path for PocoZip to point to the embedded PocoFoundation
install_name_tool -change @rpath/libPocoFoundation.111.dylib @executable_path/../Frameworks/libPocoFoundation.111.dylib Mumble.app/Contents/Frameworks/libPocoZip.111.dylib
# Re-sign the modified PocoZip framework with the Developer ID
codesign --force --timestamp --sign "Developer ID Application: XXX (YYYYYYYYYY)" Mumble.app/Contents/Frameworks/libPocoZip.111.dylib
# In Finder: right-click Mumble.app -> Compress "Mumble"
# Ensure the resulting Mumble.zip is in this directory (build/)
# Note: zip from command line does not work, use Finder
# ------------------------------------------------------------
# Notarization Tool Setup (if you haven't already)
# ------------------------------------------------------------
# Create an app-specific password for notarization: https://support.apple.com/en-us/102654
# Store Apple notarization credentials in the macOS keychain
# You will be prompted for the app-specific password (not your Apple ID password)
xcrun notarytool store-credentials "MyNotaryProfile" \
--apple-id "YOUR_APPLE_ID_EMAIL" \
--team-id "YYYYYYYYYY"
# ------------------------------------------------------------
# Notarization
# ------------------------------------------------------------
# Submit the ZIP archive to Apple’s notarization service and wait for the result
xcrun notarytool submit Mumble.zip --wait --keychain-profile "MyNotaryProfile"
# If the notarization status is "Accepted", staple the notarization ticket to the app
xcrun stapler staple Mumble.app
# Verify code signing before notarization (optional but recommended)
codesign --verify --deep --strict --verbose=2 Mumble.app
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment