Replace fpm with native macOS packaging tools (pkgbuild/productbuild)#26268
Merged
TravisEz13 merged 22 commits intomasterfrom Oct 28, 2025
Merged
Replace fpm with native macOS packaging tools (pkgbuild/productbuild)#26268TravisEz13 merged 22 commits intomasterfrom
TravisEz13 merged 22 commits intomasterfrom
Conversation
Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com>
Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com>
Member
|
@copilot Add a test to actually package and test the contents of the package in the packaging job in .github/workflows/macos-ci.yml |
Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Update macOS packaging to use Xcode command line tools
Replace fpm with native macOS packaging tools (pkgbuild/productbuild)
Oct 21, 2025
Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com>
Contributor
Author
Added comprehensive package creation and validation to the
The validation ensures the new native macOS packaging implementation creates packages with the correct structure and contents. |
TravisEz13
reviewed
Oct 21, 2025
TravisEz13
reviewed
Oct 21, 2025
Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com>
Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com>
TravisEz13
reviewed
Oct 21, 2025
TravisEz13
reviewed
Oct 21, 2025
Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com>
TravisEz13
approved these changes
Oct 28, 2025
daxian-dbw
approved these changes
Oct 28, 2025
adityapatwardhan
approved these changes
Oct 28, 2025
Contributor
|
📣 Hey @@Copilot, how did we do? We would love to hear your feedback with the link below! 🗣️ 🔗 https://aka.ms/PSRepoFeedback |
pwshBot
pushed a commit
to pwshBot/PowerShell
that referenced
this pull request
Oct 29, 2025
9 tasks
TravisEz13
added a commit
to TravisEz13/PowerShell
that referenced
this pull request
Nov 20, 2025
…PowerShell#26268) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com> Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
9 tasks
TravisEz13
added a commit
to TravisEz13/PowerShell
that referenced
this pull request
Nov 20, 2025
…PowerShell#26268) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com> Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
9 tasks
SIRMARGIN
pushed a commit
to SIRMARGIN/PowerShell
that referenced
this pull request
Dec 12, 2025
…PowerShell#26268) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com> Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
kilasuit
pushed a commit
to kilasuit/PowerShell
that referenced
this pull request
Jan 2, 2026
…PowerShell#26268) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com> Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
9 tasks
9 tasks
daxian-dbw
pushed a commit
to daxian-dbw/PowerShell
that referenced
this pull request
Feb 12, 2026
…PowerShell#26268) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: TravisEz13 <10873629+TravisEz13@users.noreply.github.com> Co-authored-by: Travis Plunk <travis.plunk@microsoft.com>
9 tasks
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Update macOS packaging to use Xcode command line tools instead of fpm
Summary
This PR replaces the Ruby gem
fpm(Effing Package Management) with native macOS packaging tools (pkgbuildandproductbuild) from Xcode Command Line Tools for creating macOS PowerShell packages.Plan
Changes Made
New Function:
New-MacOSPackage(tools/packaging/packaging.psm1)Created a comprehensive function that uses native macOS packaging tools:
pkgbuildviaStart-NativeExecutionto create a component package from the staged filesNew-MacOsDistributionPackageto create the final distribution package with proper metadataStart-NativeExecutionfor all native commands (chmod, pkgbuild)Refactored
New-MacOsDistributionPackageFunctionModernized and generalized this function to work with component packages from the native tools:
productbuildviaStart-NativeExecutionwith proper distribution XMLNew-MacOSPackageto avoid code duplicationUpdated Packaging Module Initialization
startNativeExecution.ps1to makeStart-NativeExecutionavailableStart-NativeExecutionwith proper error handlingStart-NativeExecutionfor chmod, pkgbuild, productbuild, and pkgutil commandsUpdated
New-UnixPackageFunctionNew-MacOSPackagefor osxpkg type packagesNew-MacOsDistributionPackagesince the new implementation creates distribution packages directlyUpdated
Test-DependenciesFunctionpkgbuildandproductbuildon macOSUpdated Documentation
docs/maintainers/releasing.md: Clarified that different packaging tools are used for different platforms.github/instructions/start-native-execution.instructions.md: Comprehensive guide on usingStart-NativeExecutionfor native command execution in packaging scripts.github/instructions/build-configuration-guide.instructions.md: Added comprehensive documentation aboutSwitch-PSNugetConfigusage, including when and why to use public feeds in CI/CD environmentsEnhanced macOS CI Workflow (.github/workflows/macos-ci.yml)
Switch-PSNugetConfig -Source Publicto use public NuGet feeds (required for CI environments)-SkipReleaseChecksflag toStart-PSPackageto bypass repo path validation in CI.github/actions/test/process-pester-resultsaction for proper test result publishing and aggregationNew Pester Test (tools/packaging/releaseTests/macOSPackage.tests.ps1)
Created comprehensive Pester-based validation test:
Start-NativeExecutionfor pkgutil command to ensure proper error handlingKey Benefits
process-pester-resultsaction for consistent test result publishing across the repositoryNew-MacOsDistributionPackageto be reusable by both legacy and new packaging approachesStart-NativeExecutionfor all native command execution with proper error handling and diagnosticsTesting
The macOS CI workflow now includes comprehensive testing that:
Switch-PSNugetConfig -Source Public)-SkipReleaseChecksto bypass repo path validation (CI repos are not at /PowerShell)tools/packaging/releaseTests/macOSPackage.tests.ps1) using TestDrive for temporary directories${{ runner.workspace }}/testResults.github/actions/test/process-pester-resultsaction to aggregate, summarize, and upload test resultsOriginal prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.