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

Previous Next

Package: guix-patches;

Reported by: Philip McGrath <philip <at> philipmcgrath.com>

Date: Sun, 14 Nov 2021 12:43:01 UTC

Severity: normal

Tags: patch

Done: Liliana Marie Prikler <liliana.prikler <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #1307 received at 51838 <at> debbugs.gnu.org (full text, mbox):

From: Philip McGrath <philip <at> philipmcgrath.com>
To: 51838 <at> debbugs.gnu.org
Cc: Timothy Sample <samplet <at> ngyro.com>,
 Philip McGrath <philip <at> philipmcgrath.com>,
 Pierre Langlois <pierre.langlois <at> gmx.com>,
 Liliana Marie Prikler <liliana.prikler <at> gmail.com>,
 Leo Famulari <leo <at> famulari.name>, Jelle Licht <jlicht <at> fsfe.org>
Subject: [PATCH v9 05/41] guix: node-build-system: Add 'delete-dependencies'
 helper function.
Date: Sat,  8 Jan 2022 03:41:53 -0500
Many node packages currently skip the configure phase, because they lack
both dependencies and a convenient way to build without all of them, e.g.
for the purposes of bootstrapping.  This patch adds a big hammer to flatten
these nails.

* guix/build/node-build-system.scm (delete-dependencies): New variable.

Co-authored-by: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
---
 guix/build/node-build-system.scm | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-system.scm
index ee3442e9e4..e37a0f7b44 100644
--- a/guix/build/node-build-system.scm
+++ b/guix/build/node-build-system.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015 David Thompson <davet <at> gnu.org>
 ;;; Copyright © 2016, 2020 Jelle Licht <jlicht <at> fsfe.org>
 ;;; Copyright © 2019, 2021 Timothy Sample <samplet <at> ngyro.com>
-;;; Copyright © 2021 Philip McGrath <philip <at> philipmcgrath.com>
+;;; Copyright © 2021, 2022 Philip McGrath <philip <at> philipmcgrath.com>
 ;;; Copyright © 2021 Liliana Marie Prikler <liliana.prikler <at> gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -25,11 +25,13 @@ (define-module (guix build node-build-system)
   #:use-module (guix build utils)
   #:use-module (guix build json)
   #:use-module (ice-9 ftw)
+  #:use-module (ice-9 regex)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-71)
   #:export (%standard-phases
             with-atomic-json-file-replacement
+            delete-dependencies
             node-build))
 
 (define (with-atomic-json-file-replacement file proc)
@@ -187,6 +189,27 @@ (define resolve-dependencies
          (@)))))
   #t)
 
+(define (delete-dependencies absent)
+  "Rewrite 'package.json' to allow the build to proceed without packages
+listed in ABSENT, a list of strings naming npm packages.
+
+To prevent the deleted dependencies from being reintroduced, use this function
+only after the 'patch-dependencies' phase."
+  (define delete-from-jsobject
+    (match-lambda
+      (('@ . alist)
+       (cons '@ (filter (match-lambda
+                          ((k . _)
+                           (not (member k absent))))
+                        alist)))))
+
+  (with-atomic-json-file-replacement "package.json"
+    (lambda (pkg-meta)
+      (jsobject-update*
+       pkg-meta
+       `("devDependencies" ,delete-from-jsobject (@))
+       `("dependencies" ,delete-from-jsobject (@))))))
+
 (define* (delete-lockfiles #:key inputs #:allow-other-keys)
   "Delete 'package-lock.json', 'yarn.lock', and 'npm-shrinkwrap.json', if they
 exist."
-- 
2.32.0





This bug report was last modified 3 years and 195 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.