homebridge / node-pty-prebuilt-multiarch

A parallel fork of node-pty providing ia32, amd64, arm, and aarch64 prebuilt packages for macOS, Windows and Linux (glibc and musl libc).
https://www.npmjs.com/package/@homebridge/node-pty-prebuilt-multiarch
Other
31 stars 15 forks source link

node-pty-prebuilt-multiarch

npm npm Prebuild Binaries Discord

This project is a parallel fork of node-pty providing prebuilt packages for certain Node.js and Electron versions.

Inspired by daviwil/node-pty-prebuilt.

Usage

Thanks to the excellent prebuild, prebuild-install modules, and prebuildify using this module is extremely easy. You merely have to change your node-pty dependency to @homebridge/node-pty-prebuilt-multiarch and then change any require statements in your code from require('node-pty') to require('@homebridge/node-pty-prebuilt-multiarch').

NOTE: We started shipping prebuilds as of node-pty version 0.8.1, no prior versions are provided! If you were using an earlier version of node-pty you will need to update your code to account for any API changes that may have occurred.

How It Works

We maintain a parallel fork of the node-pty codebase that will be updated as new releases are shipped. When we merge new updates to the code into the prebuilt-multiarch branch, new prebuilt packages for our supported Node.js and Electron versions are updated to the corresponding GitHub release.

When @homebridge/node-pty-prebuilt-multiarch is installed as a package dependency, the installation script checks to see if there's a prebuilt package on this repo for the OS, ABI version, and architecture of the current process and then downloads it, extracting it into the module path. If a corresponding prebuilt package is not found, node-gyp is invoked to build the package for the current platform.

Prebuilt Versions

OS Architectures
macOS x64, arm64
Linux (glibc) ia32, x64, armv6, aarch64
Linux (musl) x64, armv6, aarch64
Windows ia32, x64

We only provide prebuilt binaries for Node.js 16 and Electron 16.0.0 or higher. Pls note that prebuilds for Electron 28 are not supplied due to build issues.

Build / Package

Please note releasing this package uses GitHub actions.

This flows takes the branch selected from the workflow start drop down, and creates a GitHub and NPM Release containing the prebuild artifacts. The version of the Release comes from the package.json, and in the case of a BETA release automatically appends the beta release version. During processing, it leverages a branch called release-candidate as a holding area for prebuilds.

When running the job, most times a couple of the instances of the sub step Commit & Push Changes within Prebuild NPM and GitHub Release artifacts fails. When this occurs just re-run. This is due to concurrency issues between the steps and GitHub. A typical run has 3-4 steps fail.

  1. Create branch release-candidate if not existing (the script deletes it before starting and will fail if it isn't present)
  2. Ensure version tag within package.json reflects version you want to publish, please note beta tags are added by the action.
  3. Run Action Run prebuild's and Create GitHub and NPM release, and select branch you wish to publish, and if it needs to be BETA tagged and versioned
  4. This will run for about an hour, and create a GitHub release with the prebuild artifacts attached, and a npm release with the prebuild artifacts attached

License