summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorPhilip McGrath <philip@philipmcgrath.com>2022-01-08 03:42:22 -0500
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2022-01-09 02:07:17 +0100
commitd85b3b59a692a21b60f94691a5af985aaf71ec74 (patch)
treea706819a6f7ccd4c7f24c63013d42ea54b6a3313 /gnu
parentb5ffff233a2a73758f0febe0ff5d51f360b74f14 (diff)
downloadguix-d85b3b59a692a21b60f94691a5af985aaf71ec74.tar.gz
gnu: Add node-serialport-bindings.
* gnu/packages/node-xyz.scm (node-serialport-bindings): New variable.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/node-xyz.scm54
1 files changed, 54 insertions, 0 deletions
diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm
index 206f163bfc..b66aab7c0c 100644
--- a/gnu/packages/node-xyz.scm
+++ b/gnu/packages/node-xyz.scm
@@ -1076,3 +1076,57 @@ recommended high-level interface.
 Parsers are used to take raw binary data and transform them into usable
 messages.  This package provides @code{Readline}, a parser that emits data
 after a (configurable) newline delimiter is received.")))
+
+(define-public node-serialport-bindings
+  (package
+    (inherit node-serialport-binding-abstract)
+    (name "node-serialport-bindings")
+    (version "9.2.7")
+    (native-inputs
+     (list python))
+    (inputs
+     (list node-nan node-bindings node-serialport-binding-abstract
+           node-serialport-parser-readline node-debug))
+    (arguments
+     `(#:modules
+       ((guix build node-build-system)
+        (srfi srfi-1)
+        (ice-9 match)
+        (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda args
+             (chdir "packages/bindings")))
+         (add-after 'patch-dependencies 'delete-dependencies
+           (lambda args
+             (delete-dependencies `("prebuild-install"
+                                    ;; devDependencies
+                                    "@serialport/binding-mock"
+                                    "node-abi"))))
+         (add-after 'chdir 'avoid-prebuild-install
+           (lambda args
+             (with-atomic-json-file-replacement "package.json"
+               (match-lambda
+                 (('@ . pkg-meta-alist)
+                  (cons '@ (map (match-lambda
+                                  (("scripts" @ . scripts-alist)
+                                   `("scripts" @ ,@(filter (match-lambda
+                                                             (("install" . _)
+                                                              #f)
+                                                             (_
+                                                              #t))
+                                                           scripts-alist)))
+                                  (other
+                                   other))
+                                pkg-meta-alist))))))))
+       #:tests? #f))
+    (synopsis "Abstract base class for Node SerialPort bindings")
+    (description "Node SerialPort is a modular suite of Node.js packages for
+accessing serial ports.  The Guix package @code{node-serialport} provides the
+recommended high-level interface.
+
+This package provides the @code{Binding} class, which uses a native addon to
+talk to the underlying system.  You never have to use @code{Binding} objects
+directly.  There is also a @code{MockBinding} available (but not yet packaged
+for Guix) to assist with testing.")))