Subject: [bug#51838] [PATCH 00/11] guix: node-build-system: Support compiling add-ons with node-gyp.

From: Philip McGrath <[email-masked]>
Date: Sun, 14 Nov 2021 07:41:51 -0500

This patch series adds support to `node-build-system` for building native
add-ons using `node-gyp`. To confirm that the changes to the build system
work, the patch series also adds two packages (plus a few dependencies)
representing two major ways of writing Node.js native add-ons:

 1. `node-openzwave-shared` uses `node-nan`: “Native Abstractions for Node.js”.

 2. `node-sqlite3` uses the Node-API via `node-addon-api`.

The patches are adapted from part of a series by Pierre Langlois
at <https://issues.guix.gnu.org/49946>: you can find discussion of an earlier
version of this spun-off series from <https://issues.guix.gnu.org/49946#71>
to <https://issues.guix.gnu.org/49946#83>.
They are also available in a Git repository
at <https://gitlab.com/philip1/guix-patches/-/tree/wip-node-npm-gyp-hist-9>.

In the earlier discussion, Pierre and I both thought it was quite confusing
that the Scheme variable `node` refers to the bootstrap Node.js, while
`node-lts` refers to the newer Node.js that a package specification of
`"node"` would resolve to. My analysis is
at <https://issues.guix.gnu.org/49946#75> (tl;dr it seems like an unintentional
mistake), and Pierre suggested a solution
in <https://issues.guix.gnu.org/49946#81>. I haven't taken that on in this patch
series, but I do think its worth considering.

Philip McGrath (11):
  gnu: node: Avoid duplicating build phases.
  gnu: node: Update to 10.24.1 for bootstrapping.
  guix: node-build-system: Support compiling add-ons with node-gyp.
  gnu: Add node-inherits.
  gnu: Add node-safe-buffer.
  gnu: Add node-string-decoder.
  gnu: Add node-readable-stream.
  gnu: Add node-nan.
  gnu: Add node-openzwave-shared.
  gnu: Add node-addon-api.
  gnu: Add node-sqlite3.

 gnu/packages/node-xyz.scm        | 335 +++++++++++++++++++++++++++++++
 gnu/packages/node.scm            | 143 +++++--------
 gnu/packages/zwave.scm           |  55 +++++
 guix/build-system/node.scm       |  11 +-
 guix/build/node-build-system.scm |  23 +++
 5 files changed, 473 insertions(+), 94 deletions(-)

-- 
2.32.0