Skip to main content

Forking grpc-tools


grpc-tools does NOT provides an official prebuilt binary for darwin_arm64, which breaks our bazel workspace on Apple Silicon. See grpc-node #1405 for further details.

Current Workaround

As a workaround, we're hosting a mirror for grpc-tools. Here's a link hosting the mirror:

You can use the mirror as follows:

npm_config_grpc_tools_binary_host_mirror="" \
yarn install

Steps to host a binary for a latest version

NOTE: the following steps require Apple Silicon at hand.

  1. Merge the upstream to the hosting repository (lmt-swallow/grpc-node).
  2. On pushing to master of the mirror, a workflow generates binaries for x86_x64 and ia32 and uploads the artifacts like this. Run the workflow somehow, download the combined artifacts, and extract it.
  3. Build a binary for Apple Silicon on your machine with Apple Silicon as follows. Then you'll see a generate file like artifacts/grpc-tools/vX.XX.X/darwin-arm64.tar.gz.
cd packages/grpc-tools && \
git submodule update --init --recursive && \
  1. In your local machine, copy all {os}-{arch}.tar.gz in the downloaded artifacts into artifacts/grpc-tools/{version} under the cloned repository. The repository structure may be as follows:
└── v1.11.2
├── darwin-arm64.tar.gz
├── darwin-x64.tar.gz
├── linux-x64.tar.gz
├── win32-ia32.tar.gz
└── win32-x64.tar.gz
  1. In your local machine, commit all tar.gz under artifacts and push the commit like this
  2. All set! Now you can use{commit hash}/artifacts/ as a valid value for npm_config_grpc_tools_binary_host_mirror.