Last active
December 30, 2025 12:41
-
-
Save mlaves/85f96a6d65864eaa58033c089b3bc5e7 to your computer and use it in GitHub Desktop.
Build and notarize a relocatable Mumble.app on macOS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # ------------------------------------------------------------ | |
| # 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