Skip to content

Conversation

@revmischa
Copy link
Member

Signs the app bundle and .pkg installer with Developer ID certificates, then notarizes with Apple's notary service so users don't get Gatekeeper warnings.

Uses App Store Connect API key for notarization credentials.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds macOS code signing and notarization capabilities to the build pipeline. The changes enable the application bundle and installer package to be properly signed with Developer ID certificates and notarized through Apple's notary service to prevent Gatekeeper warnings for end users.

Changes:

  • Updated CMake packaging configuration to read code signing identity from environment variable instead of CMake variable
  • Added certificate import step to create and configure a temporary keychain with application and installer signing certificates
  • Implemented application bundle signing with hardened runtime and deep verification
  • Added notarization workflow for both the application bundle and final installer package using App Store Connect API credentials

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 9 comments.

File Description
packaging-macos.cmake Changed code signing identity references from CMake variables to environment variables for runtime configuration
.github/workflows/release-macos.yaml Added complete code signing and notarization workflow including certificate import, application signing, and dual notarization steps for app bundle and installer package

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@revmischa revmischa force-pushed the macos-codesigning branch 2 times, most recently from fc1d510 to 21328bb Compare January 17, 2026 18:16
@revmischa revmischa requested a review from Copilot January 17, 2026 18:27
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@revmischa revmischa force-pushed the macos-codesigning branch 4 times, most recently from a7e49fc to 9565baa Compare January 17, 2026 20:38
@kblaschke
Copy link
Member

kblaschke commented Jan 18, 2026

Thanks, that's a good starting point! I'll move most of the logic into CMake (app signing and notarization) so anyone having the proper keys on the machine can just build and sign it locally. The installer package is a separate thing, but this can be wrapped in a reusable script. I will also try to get rid of the --deep argument in codesign, as this more often doesn't work than it does, as Apple requires dependencies (dylibs, frameworks) to be signed before the dependee. Xcode resolves this magically, but since CMake's install phase strips binaries and changes the RPATH, any code signing done before will be lost. When I was developing for macOS, we've had a lot of trouble with this process and thus I learned many ways to mitigate those issues 😅

@rootnotez
Copy link

I tested this at: b4ca62b

On M1 Macbook Air - MacOS 15.7.2

Installation went fine, I got audio working in projectM-SDL. With Integrated Webcam; and BlackHole (3rd party software). I could not get a USB audio interface working in MacOS at all; including other programs so that may be my configuraiton.

Nitpick: The name of the package file inside the artifact appears mangled: projectM-project(projectMSDL-macOS-universal.pkg

I think this may be in the GHA

revmischa and others added 3 commits January 19, 2026 21:11
Signs the app bundle and .pkg installer with Developer ID certificates,
then notarizes both with Apple's notary service for Gatekeeper approval.

Uses App Store Connect API key for notarization credentials.
Replaces CPack with direct pkgbuild/productbuild for better signing control.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds audio-input entitlement and NSMicrophoneUsageDescription so the app
can request microphone access when running as a signed/notarized bundle.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Sign dylibs in Contents/Frameworks (SDL2, Poco)
- Rename misleading build-deb job to build-pkg
- Add missing newline at end of component plist

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@kblaschke kblaschke force-pushed the macos-codesigning branch 4 times, most recently from 605a01c to 51c2a55 Compare January 19, 2026 22:54
@kblaschke
Copy link
Member

Added DMG and a simple ZIP with the plain, notarized .app bundle. The latest build has all artifacts:
https://github.com/projectM-visualizer/frontend-sdl-cpp/actions/runs/21153599081

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants