Building PowerShell on macOS can be a straightforward process, but it’s important to follow the right steps and address any potential issues that may arise. This guide will walk you through the process of setting up your development environment, installing the necessary dependencies, and building PowerShell using the provided build module.

Environment Setup

To get started, you’ll need to have either Homebrew or MacPorts installed on your macOS machine. These package managers will help you install the required dependencies for building PowerShell.

Once you have a package manager installed, follow the same instructions as the Linux build instructions to download and install a self-hosted copy of PowerShell on your macOS machine. From the pwsh.exe prompt, run Import-Module ./build.psm1 and use the Start-PSBootstrap function to install the necessary dependencies.

The Start-PSBootstrap function performs the following tasks:

  1. Uses brew or port to install OpenSSL and GNU WGet.
  2. Uninstalls any prior versions of the .NET CLI.
  3. Downloads and installs the .NET Core SDK to ~/.dotnet.

If you want to use the dotnet command outside of the Start-PSBuild context, make sure to add ~/.dotnet to your PATH environment variable.

Addressing the ‘Too Many Open Files’ Error

One potential issue you may encounter during the build process is the ‘Too Many Open Files’ error. This is due to a bug in NuGet, which can cause the dotnet restore command to fail.

To fix this issue, you can run ulimit -n 2048 in your session to increase the number of open files allowed. To make this change permanent, add the ulimit -n 2048 command to your shell’s profile (e.g., .bashrc or .zshrc).

Unfortunately, the build module cannot perform this fix for you due to issue #847, so you’ll need to handle this manually.

Building PowerShell Using the Module

Once you’ve set up your environment and addressed any potential issues, you can start building PowerShell using the provided build module. Open a PowerShell session by running pwsh and then use the Start-PSBuild command from the module.

After the build process is complete, you’ll find the built PowerShell binary at ./src/powershell-unix/bin/Debug/net6.0/osx-x64/publish/pwsh.

Building PowerShell on macOS may require a bit of setup, but with the right steps and a little troubleshooting, you can successfully build the PowerShell runtime on your macOS machine. If you encounter any issues not covered in this guide, be sure to refer to the PowerShell GitHub repository for the latest information and support.

Source: PowerShell GitHub Repository - Building PowerShell on macOS