[release/v7.6] Replace fpm with native macOS packaging tools (pkgbuild/productbuild) #26501
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport of #26268 to release/v7.6
Triggered by @TravisEz13 on behalf of @app/copilot-swe-agent
Original CL Label: CL-BuildPackaging
/cc @PowerShell/powershell-maintainers
Impact
REQUIRED: Choose either Tooling Impact or Customer Impact (or both). At least one checkbox must be selected.
Tooling Impact
Replaces Ruby gem fpm with native macOS packaging tools (pkgbuild/productbuild) from Xcode Command Line Tools. Eliminates Ruby dependency for macOS packaging, uses Apple's official tools, and adds comprehensive CI validation with Pester tests. Required for maintaining macOS package builds without external Ruby dependencies.
Customer Impact
Regression
REQUIRED: Check exactly one box.
This is not a regression.
Testing
Original PR added comprehensive Pester tests in tools/packaging/releaseTests/macOSPackage.tests.ps1. macOS CI workflow validates package creation and contents. Tests verify package structure, required files, permissions, and launcher app. Package creation tested in CI with proper NuGet feed configuration.
Risk
REQUIRED: Check exactly one box.
High risk as it fundamentally changes the macOS packaging approach from fpm to native tools. However, necessary to eliminate Ruby dependency and use Apple-maintained tools. Changes have been validated in master for several weeks with comprehensive CI testing. Not taking this change creates technical debt for macOS releases.