gnu: Add node-addon-api.
* gnu/packages/node-xyz.scm (node-addon-api): New variable. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
		
							parent
							
								
									602586f985
								
							
						
					
					
						commit
						03cd921d86
					
				
					 1 changed files with 85 additions and 0 deletions
				
			
		| 
						 | 
					@ -22,6 +22,9 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-module (gnu packages node-xyz)
 | 
					(define-module (gnu packages node-xyz)
 | 
				
			||||||
  #:use-module ((guix licenses) #:prefix license:)
 | 
					  #:use-module ((guix licenses) #:prefix license:)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages sqlite)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages python)
 | 
				
			||||||
 | 
					  #:use-module (guix gexp)
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix git-download)
 | 
					  #:use-module (guix git-download)
 | 
				
			||||||
  #:use-module (guix build-system node))
 | 
					  #:use-module (guix build-system node))
 | 
				
			||||||
| 
						 | 
					@ -599,3 +602,85 @@ file filled with macros and utilities for making add-on development for Node.js
 | 
				
			||||||
easier across versions.  The goal is to provide all logic necessary to develop
 | 
					easier across versions.  The goal is to provide all logic necessary to develop
 | 
				
			||||||
native Node.js addons without having to inspect @code{NODE_MODULE_VERSION}.")
 | 
					native Node.js addons without having to inspect @code{NODE_MODULE_VERSION}.")
 | 
				
			||||||
    (license license:expat)))
 | 
					    (license license:expat)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public node-addon-api
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (name "node-addon-api")
 | 
				
			||||||
 | 
					    (version "4.2.0")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					     (origin
 | 
				
			||||||
 | 
					       (method git-fetch)
 | 
				
			||||||
 | 
					       (uri (git-reference
 | 
				
			||||||
 | 
					             (url "https://github.com/nodejs/node-addon-api")
 | 
				
			||||||
 | 
					             (commit (string-append "v" version))))
 | 
				
			||||||
 | 
					       (file-name (git-file-name name version))
 | 
				
			||||||
 | 
					       (sha256
 | 
				
			||||||
 | 
					        (base32 "1bhvfi2m9nxfz418s619914vmidcnrzbjv6l9nid476c3zlpazch"))))
 | 
				
			||||||
 | 
					    (inputs
 | 
				
			||||||
 | 
					     (list python node-safe-buffer))
 | 
				
			||||||
 | 
					    (build-system node-build-system)
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     `(#:modules
 | 
				
			||||||
 | 
					       ((guix build node-build-system)
 | 
				
			||||||
 | 
					        (srfi srfi-1)
 | 
				
			||||||
 | 
					        (ice-9 match)
 | 
				
			||||||
 | 
					        (guix build utils))
 | 
				
			||||||
 | 
					       #:phases
 | 
				
			||||||
 | 
					       (modify-phases %standard-phases
 | 
				
			||||||
 | 
					         (add-after 'patch-dependencies 'delete-dependencies
 | 
				
			||||||
 | 
					           (lambda args
 | 
				
			||||||
 | 
					             (delete-dependencies
 | 
				
			||||||
 | 
					              `("benchmark"
 | 
				
			||||||
 | 
					                "bindings"
 | 
				
			||||||
 | 
					                "clang-format"
 | 
				
			||||||
 | 
					                "eslint"
 | 
				
			||||||
 | 
					                "eslint-config-semistandard"
 | 
				
			||||||
 | 
					                "eslint-config-standard"
 | 
				
			||||||
 | 
					                "eslint-plugin-import"
 | 
				
			||||||
 | 
					                "eslint-plugin-node"
 | 
				
			||||||
 | 
					                "eslint-plugin-promise"
 | 
				
			||||||
 | 
					                "fs-extra"
 | 
				
			||||||
 | 
					                "path"
 | 
				
			||||||
 | 
					                "pre-commit"))))
 | 
				
			||||||
 | 
					         (add-after 'unpack 'skip-js-tests
 | 
				
			||||||
 | 
					           ;; We can't run the js-based tests,
 | 
				
			||||||
 | 
					           ;; but we can still do the C++ parts
 | 
				
			||||||
 | 
					           (lambda args
 | 
				
			||||||
 | 
					             (define new-test-script
 | 
				
			||||||
 | 
					               "echo stopping after pretest on Guix")
 | 
				
			||||||
 | 
					             (with-atomic-json-file-replacement "package.json"
 | 
				
			||||||
 | 
					               (match-lambda
 | 
				
			||||||
 | 
					                 (('@ . pkg-meta-alist)
 | 
				
			||||||
 | 
					                  (cons
 | 
				
			||||||
 | 
					                   '@
 | 
				
			||||||
 | 
					                   (map (match-lambda
 | 
				
			||||||
 | 
					                          (("scripts" '@ . scripts-alist)
 | 
				
			||||||
 | 
					                           `("scripts" @ ,@(map (match-lambda
 | 
				
			||||||
 | 
					                                                  (("test" . _)
 | 
				
			||||||
 | 
					                                                   (cons "test"
 | 
				
			||||||
 | 
					                                                         new-test-script))
 | 
				
			||||||
 | 
					                                                  (other
 | 
				
			||||||
 | 
					                                                   other))
 | 
				
			||||||
 | 
					                                                scripts-alist)))
 | 
				
			||||||
 | 
					                          (other
 | 
				
			||||||
 | 
					                           other))
 | 
				
			||||||
 | 
					                        pkg-meta-alist))))))))))
 | 
				
			||||||
 | 
					    (home-page "https://github.com/nodejs/node-addon-api")
 | 
				
			||||||
 | 
					    (synopsis "Node.js API (Node-API) header-only C++ wrappers")
 | 
				
			||||||
 | 
					    (description "This module contains header-only C++ wrapper classes which
 | 
				
			||||||
 | 
					simplify the use of the C based Node-API provided by Node.js when using C++.
 | 
				
			||||||
 | 
					It provides a C++ object model and exception handling semantics with low
 | 
				
			||||||
 | 
					overhead.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Node-API is an ABI stable C interface provided by Node.js for building native
 | 
				
			||||||
 | 
					addons.  It is intended to insulate native addons from changes in the
 | 
				
			||||||
 | 
					underlying JavaScript engine and allow modules compiled for one version to run
 | 
				
			||||||
 | 
					on later versions of Node.js without recompilation.  The @code{node-addon-api}
 | 
				
			||||||
 | 
					module, which is not part of Node.js, preserves the benefits of the Node-API
 | 
				
			||||||
 | 
					as it consists only of inline code that depends only on the stable API
 | 
				
			||||||
 | 
					provided by Node-API.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It is important to remember that @emph{other} Node.js interfaces such as
 | 
				
			||||||
 | 
					@code{libuv} (included in a project via @code{#include <uv.h>}) are not
 | 
				
			||||||
 | 
					ABI-stable across Node.js major versions.")
 | 
				
			||||||
 | 
					    (license license:expat)))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue