Skip to content

Latest commit

 

History

History
90 lines (59 loc) · 2.52 KB

File metadata and controls

90 lines (59 loc) · 2.52 KB

Distribution

PureMP3 should feel like a normal Mac app: download, open, drop files, convert. Users should not need to install FFmpeg.

Bundle Layout

The app expects bundled tools here:

PureMP3.app/Contents/Resources/FFmpeg/bin/ffmpeg
PureMP3.app/Contents/Resources/FFmpeg/bin/ffprobe
PureMP3.app/Contents/Resources/FFmpeg/lib/

ShellFFmpegClient searches that location first. PUREMP3_FFMPEG_DIR, Homebrew, and system paths are only development fallbacks.

Local Release Prep

  1. Download the configured macOS arm64 FFmpeg release:
script/download_ffmpeg_macos_arm64.sh
  1. Verify the FFmpeg build license and codec configuration.
  2. Build the app bundle:
script/build_and_run.sh --verify
  1. Confirm the tools are inside the app:
test -x dist/PureMP3.app/Contents/Resources/FFmpeg/bin/ffmpeg
test -x dist/PureMP3.app/Contents/Resources/FFmpeg/bin/ffprobe

To use another self-contained FFmpeg build instead:

script/vendor_ffmpeg_from_path.sh /path/to/ffmpeg/bin

For a local zipped archive with ad-hoc signing:

script/package_release.sh

The archive is written to:

dist/PureMP3-macos-arm64.zip

Portability Check

Run:

otool -L dist/PureMP3.app/Contents/Resources/FFmpeg/bin/ffmpeg
otool -L dist/PureMP3.app/Contents/Resources/FFmpeg/bin/ffprobe

If the output references /opt/homebrew, /usr/local, or unresolved @rpath libraries, the build is not plug and play yet. Bundle and sign those libraries too, or use a self-contained FFmpeg build.

The app can launch FFmpeg with Contents/Resources/FFmpeg/lib on DYLD_LIBRARY_PATH, but absolute Homebrew library references still need a self-contained build or install-name rewriting before release.

Signing

Public macOS distribution still needs Developer ID signing and notarization. Treat the bundled FFmpeg tools as nested executable code:

  • sign ffmpeg and ffprobe
  • sign the app bundle after nested tools are present
  • notarize the final archive
  • staple the notarization ticket before release

script/package_release.sh uses ad-hoc signing for local validation. That proves the bundle shape is coherent, but it is not a substitute for Developer ID signing and notarization for public downloads.

Release Notes

Every binary release that bundles FFmpeg should include:

  • FFmpeg version
  • FFmpeg license mode, LGPL or GPL
  • source link or source offer required by that build
  • the PureMP3 version and commit SHA

See ../ThirdParty/FFmpeg-NOTICES.md.