From patchwork Mon Mar 24 07:29:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 40766 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 25D2A27BBEA; Mon, 24 Mar 2025 07:30:29 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id ABDA127BBE2 for ; Mon, 24 Mar 2025 07:30:28 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twcG7-0004eZ-Fa; Mon, 24 Mar 2025 03:30:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twcG6-0004dg-1C for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:06 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twcG5-000301-Nv for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:From:To:In-Reply-To:References:Subject; bh=2YVjppRx9v7cYZM9kY+44B8m76IVF7fcQeu/l6/lS0Q=; b=BVGg3sBFM5oZXcPCs8PA6qTkRWRha+ezbmRCUX/QJyRZH7fiWfAKobcxQMkclZ+0DaPXdxGuglE5UAto9lTKD04XisOvkOMj9cxutOB8ccd5W1gR8rg9wY8MW0vmz0ozybtCEWVxK0aEBeMc2ryQvBw5YNm84wHEeQrOPjMSjUYxjD25VD3stk9N4tNKYhVPLZSRFfcpmz51i70agQqABjZMnEKYSqrN8pqRavAwZxS7UND9G/YkLlvG/c2ndPS9OSOMqme2uaXbghHSMbatZhxi1ClGQARE0OFA7kB7K7kEI42Ak8j2G5GHFSu+wxEZfq8KHIr1Oh0U84L45zBxdA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1twcG5-0005VJ-Gp for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:05 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77231] [PATCH 1/6] import: npm-binary: Fix import. References: <20250324071954.16997-1-ngraves@ngraves.fr> In-Reply-To: <20250324071954.16997-1-ngraves@ngraves.fr> Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 24 Mar 2025 07:30:05 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77231 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77231@debbugs.gnu.org Cc: jelle.licht@fsfe.org, Nicolas Graves Received: via spool by 77231-submit@debbugs.gnu.org id=B77231.174280138321048 (code B ref 77231); Mon, 24 Mar 2025 07:30:05 +0000 Received: (at 77231) by debbugs.gnu.org; 24 Mar 2025 07:29:43 +0000 Received: from localhost ([127.0.0.1]:53983 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twcFi-0005TI-Dh for submit@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:42 -0400 Received: from 8.mo563.mail-out.ovh.net ([46.105.60.197]:60811) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twcFX-0005S8-0X for 77231@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:35 -0400 Received: from director1.derp.mail-out.ovh.net (director1.derp.mail-out.ovh.net [51.68.80.175]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl6x2DlQz1WL2; Mon, 24 Mar 2025 07:29:29 +0000 (UTC) Received: from director1.derp.mail-out.ovh.net (director1.derp.mail-out.ovh.net. [127.0.0.1]) by director1.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <77231@debbugs.gnu.org>; Mon, 24 Mar 2025 07:29:29 +0000 (UTC) Received: from mta2.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.178.147]) by director1.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl6w6VrhzHcF1; Mon, 24 Mar 2025 07:29:28 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.3]) by mta2.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id 1192ABA3DFF; Mon, 24 Mar 2025 07:29:28 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-99G0031e78fdb4-0cdc-4943-8452-b910376cf9cb, AEA14DA1325383AAD40887B56448FDDF9DC3A193) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Mon, 24 Mar 2025 08:29:12 +0100 Message-ID: <20250324072925.19588-1-ngraves@ngraves.fr> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 X-Ovh-Tracer-Id: 709598416793166562 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduheeludejucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffoggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepteeffefhfffhjeevleeuvdehgffgveekheeuhfekhfehuefgheffhedugfegleeinecuffhomhgrihhnpehgihhthhhusgdrtghomhenucfkphepuddvjedrtddrtddruddpledtrdelvddruddujedrudeggeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduvdejrddtrddtrddupdhmrghilhhfrhhomhepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdhnsggprhgtphhtthhopeefpdhrtghpthhtohepjeejvdefudesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopehjvghllhgvrdhlihgthhhtsehfshhfvgdrohhrghdprhgtphhtthhopehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpoffvtefjohhsthepmhhoheeifegmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=2YVjppRx9v7cYZM9kY+44B8m76IVF7fcQeu/l6/lS0Q=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1742801369; v=1; b=ffUpdx3k+NvaVHSipBZEEuNURI7R9aboMMUyuDYqqqmZFN7gzv8tpl0Au18ogD+pg801QSpy fwv+N+N/Btdf2VwVVdinrb4voP0wHUqFk+2reR4pRD4bvJetfBDpJu/597KH+X67OEDQKAzN8/c cdAp7KWh8H43SoImsq6dIgqPB8CGYKknIBkfcb+aAHSl2DbiXhSr6rL5cNNVPJxMKeQAFER8XKm w+fAVsDOltgVp6LxLSRTiOuBgs6CGonK3wjV/sH3iR0almU2rSwJLSM2wvzqD6T41VrrY3QtDaJ RQbpLzXb3aWhYKrF3dNyYtFAdUs4EyZ4opzszl6tc/mgA== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches This is a follow-up to b65f5b731c538227b51645d6d81b0cbb731bb6e4. * guix/import/npm-binary.scm (npm-package->package-sexp): Use modify-json. * tests/npm-binary.scm (npm-binary->guix-package test): Use modify-json. --- guix/import/npm-binary.scm | 3 ++- tests/npm-binary.scm | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/guix/import/npm-binary.scm b/guix/import/npm-binary.scm index 92ac7d338e..c43b84f3d5 100644 --- a/guix/import/npm-binary.scm +++ b/guix/import/npm-binary.scm @@ -228,7 +228,8 @@ (define resolve-spec ((dev-names ...) `((add-after 'patch-dependencies 'delete-dev-dependencies (lambda _ - (delete-dependencies '(,@(reverse dev-names)))))))))) + (modify-json + (delete-dependencies '(,@(reverse dev-names))))))))))) (values `(package (name ,name) diff --git a/tests/npm-binary.scm b/tests/npm-binary.scm index cf85e572b3..0cc2864546 100755 --- a/tests/npm-binary.scm +++ b/tests/npm-binary.scm @@ -133,7 +133,8 @@ (define have-guile-semver? (delete 'build) (add-after 'patch-dependencies 'delete-dev-dependencies (lambda _ - (delete-dependencies '("node-megabuilder")))))))) + (modify-json + (delete-dependencies '("node-megabuilder"))))))))) (inputs (list node-bar-0.1.2)) (home-page "https://github.com/quartz/foo") (synopsis "General purpose utilities to foo your bars") From patchwork Mon Mar 24 07:29:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 40765 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 008DA27BBEA; Mon, 24 Mar 2025 07:30:17 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 3192B27BBE2 for ; Mon, 24 Mar 2025 07:30:17 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twcG5-0004de-Rs; Mon, 24 Mar 2025 03:30:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twcG3-0004dE-IN for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:03 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twcG3-0002vN-7C for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=vFUGv3sAq0vmqn92iPSl6PuiSn2Nv9FPxSbl2VpAF0w=; b=LjnZEjqwudZaJdtCiTlwlqxDezdwNtL+X+CUmo/crFdXTz23T/M9bLD//5j1OyjRcksyaHbtd01AyezddhOMX1BpI9/cD/G4Wn/II8B/c+xUnxzkhwj6IP3NW/gsvuBsU0pGJLW/putiL0dx/hZdzV6oXfVaTkV63Yjb/bmDo2UzCWTIF9qQAgAb+Guwu1Oa/puhYM2z+rGROFhvBSJfolxGhDCseU+Z1+uQrlNMYLaYz+caT4RnDydYQHCteCjtnYPUErYMmV5HzpLBKHGEHsms7qi362E0bt/R+wUKXXZuSRFJlgHmbKR7fUgYygDD68pQimOkiqmlvtDYxgI95A==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1twcG2-0005Ul-VG for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77231] [PATCH 2/6] import: npm-binary: Improve npm-package->package-sexp. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 24 Mar 2025 07:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77231 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77231@debbugs.gnu.org Cc: jelle.licht@fsfe.org, Nicolas Graves Received: via spool by 77231-submit@debbugs.gnu.org id=B77231.174280137420987 (code B ref 77231); Mon, 24 Mar 2025 07:30:02 +0000 Received: (at 77231) by debbugs.gnu.org; 24 Mar 2025 07:29:34 +0000 Received: from localhost ([127.0.0.1]:53973 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twcFZ-0005SQ-Pm for submit@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:34 -0400 Received: from 4.mo563.mail-out.ovh.net ([46.105.53.192]:58723) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twcFW-0005S9-Vt for 77231@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:32 -0400 Received: from director4.derp.mail-out.ovh.net (director4.derp.mail-out.ovh.net [79.137.60.37]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl6x3qdgz1XC6; Mon, 24 Mar 2025 07:29:29 +0000 (UTC) Received: from director4.derp.mail-out.ovh.net (director4.derp.mail-out.ovh.net. [127.0.0.1]) by director4.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <77231@debbugs.gnu.org>; Mon, 24 Mar 2025 07:29:29 +0000 (UTC) Received: from mta10.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.113.35]) by director4.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl6x3JqfzyBQ; Mon, 24 Mar 2025 07:29:29 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.7]) by mta10.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id F1FC8DA38ED; Mon, 24 Mar 2025 07:29:28 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-96R00186fccbd0-40d8-47ae-8dfb-8d10acaa968b, AEA14DA1325383AAD40887B56448FDDF9DC3A193) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Mon, 24 Mar 2025 08:29:13 +0100 Message-ID: <20250324072925.19588-2-ngraves@ngraves.fr> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250324072925.19588-1-ngraves@ngraves.fr> References: <20250324072925.19588-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 709598416900842210 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduheeludejucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepfedprhgtphhtthhopeejjedvfeduseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepjhgvlhhlvgdrlhhitghhthesfhhsfhgvrdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehieefmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=vFUGv3sAq0vmqn92iPSl6PuiSn2Nv9FPxSbl2VpAF0w=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1742801369; v=1; b=gq6Cf7xOpvTVmB+ymDYZeJrpqiZZXQdY/jPaUj74UopJXlhi1xB9Q3yyoWVOQefdfGIyRC0w naHNXMSiBYutmGQyg5rZ2EvtUVJMrBAWRwzW2nWVGqp2KX4yWiNmZUG8VOfMq8R9HEtVeSOviRN Q3iZsZCeWgj2yCCiZseWQW2shSM6jaV9A2U/WTLbkIhv1RfBDZw7Pk8Y3vPl6wR3bCnw8puLrU4 iwccFRwKQ78WsyWoCpwQ9Bh28c0IvoTSeesZZ4L5mW3Gt/S4CoBHrKA2bBaD+DlE76bsvqRReH8 YCukPhYt3ajm5Qwd4LDK22UmTODEideIcdkOyrhTcfQtg== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/import/npm-binary.scm (npm-package->package-sexp): Use record matching. --- guix/import/npm-binary.scm | 121 ++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 63 deletions(-) diff --git a/guix/import/npm-binary.scm b/guix/import/npm-binary.scm index c43b84f3d5..f095651c34 100644 --- a/guix/import/npm-binary.scm +++ b/guix/import/npm-binary.scm @@ -196,69 +196,64 @@ (define resolve-spec (($ name version) (resolve-package name (string->semver-range version))))) - (if (package-revision? npm-package) - (let ((name (package-revision-name npm-package)) - (version (package-revision-version npm-package)) - (home-page (package-revision-home-page npm-package)) - (dependencies (package-revision-dependencies npm-package)) - (dev-dependencies (package-revision-dev-dependencies npm-package)) - (peer-dependencies (package-revision-peer-dependencies npm-package)) - (license (package-revision-license npm-package)) - (description (package-revision-description npm-package)) - (dist (package-revision-dist npm-package))) - (let* ((name (npm-name->name name)) - (url (dist-tarball dist)) - (home-page (if (string? home-page) - home-page - (string-append %default-page "/" (uri-encode name)))) - (synopsis description) - (resolved-deps (map resolve-spec - (append dependencies peer-dependencies))) - (peer-names (map versioned-package-name peer-dependencies)) - ;; lset-difference for treating peer-dependencies as dependencies, - ;; which leads to dependency cycles. lset-union for treating them as - ;; (ignored) dev-dependencies, which leads to broken packages. - (dev-names - (lset-union string= - (map versioned-package-name dev-dependencies) - peer-names)) - (extra-phases - (match dev-names - (() '()) - ((dev-names ...) - `((add-after 'patch-dependencies 'delete-dev-dependencies - (lambda _ - (modify-json - (delete-dependencies '(,@(reverse dev-names))))))))))) - (values - `(package - (name ,name) - (version ,(semver->string (package-revision-version npm-package))) - (source (origin - (method url-fetch) - (uri ,url) - (sha256 (base32 ,(hash-url url))))) - (build-system node-build-system) - (arguments - (list - #:tests? #f - #:phases - #~(modify-phases %standard-phases - (delete 'build) - ,@extra-phases))) - ,@(match dependencies - (() '()) - ((dependencies ...) - `((inputs - (list ,@(map package-revision->symbol resolved-deps)))))) - (home-page ,home-page) - (synopsis ,synopsis) - (description ,description) - (license ,license)) - (map (match-lambda (($ name version) - (list name (semver->string version)))) - resolved-deps)))) - (values #f '()))) + (match npm-package + (($ + name version home-page dependencies dev-dependencies + peer-dependencies license description dist) + (let* ((name (npm-name->name name)) + (url (dist-tarball dist)) + (home-page (if (string? home-page) + home-page + (string-append %default-page "/" (uri-encode name)))) + (synopsis description) + (resolved-deps (map resolve-spec + (append dependencies peer-dependencies))) + (peer-names (map versioned-package-name peer-dependencies)) + ;; lset-difference for treating peer-dependencies as dependencies, + ;; which leads to dependency cycles. lset-union for treating them as + ;; (ignored) dev-dependencies, which leads to broken packages. + (dev-names + (lset-union string= + (map versioned-package-name dev-dependencies) + peer-names)) + (extra-phases + (match dev-names + (() '()) + ((dev-names ...) + `((add-after 'patch-dependencies 'delete-dev-dependencies + (lambda _ + (modify-json + (delete-dependencies '(,@(reverse dev-names))))))))))) + (values + `(package + (name ,name) + (version ,(semver->string (package-revision-version npm-package))) + (source (origin + (method url-fetch) + (uri ,url) + (sha256 (base32 ,(hash-url url))))) + (build-system node-build-system) + (arguments + (list + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (delete 'build) + ,@extra-phases))) + ,@(match dependencies + (() '()) + ((dependencies ...) + `((inputs + (list ,@(map package-revision->symbol resolved-deps)))))) + (home-page ,home-page) + (synopsis ,synopsis) + (description ,description) + (license ,license)) + (map (match-lambda (($ name version) + (list name (semver->string version)))) + resolved-deps)))) + (_ + (values #f '())))) ;;; From patchwork Mon Mar 24 07:29:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 40767 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id B84E127BBE2; Mon, 24 Mar 2025 07:30:29 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 56E9727BBE9 for ; Mon, 24 Mar 2025 07:30:29 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twcG6-0004dn-IH; Mon, 24 Mar 2025 03:30:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twcG4-0004dN-Aj for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:04 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twcG4-0002zg-1o for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=ahppLY7wP6vtk4yEKfbzLbM1y1gSH4P8F8gkjF/JFsM=; b=PXdNFg44z7wtUtwGwdk01sfH0H/C85gR3EFLkWxYD+WRBzUtdTKhJmmQkXdOnCTLX97spK7YqkughCtMn/dCkGVS6v+LAJzQB8GD1vjNzYdCiFqh1Rb8SNtFf6w5IHdddfU9N3eJ9krvrr4TRUtHwZZlcUOuZUC+bASBRfd5iDEHueRpGffN+2XaJle515qG8TOcVTwEiHKDj0GAEjoJYyBFf+R6IGiWQeYl97JJA6PAEnsHCeTTHHSnjQomP5C9Qr/qUjjg4xOMBby3u6lx7lCoF6DCCivv2v82I7O0BizF03LCzsX/f5FuQa9V6zQJKOH4OmHAdHiDcnLOajYoSA==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1twcG3-0005V0-Sj for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77231] [PATCH 3/6] import: npm-binary: Improve-style. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 24 Mar 2025 07:30:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77231 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77231@debbugs.gnu.org Cc: jelle.licht@fsfe.org, Nicolas Graves Received: via spool by 77231-submit@debbugs.gnu.org id=B77231.174280138121026 (code B ref 77231); Mon, 24 Mar 2025 07:30:03 +0000 Received: (at 77231) by debbugs.gnu.org; 24 Mar 2025 07:29:41 +0000 Received: from localhost ([127.0.0.1]:53979 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twcFh-0005T3-C2 for submit@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:41 -0400 Received: from 9.mo563.mail-out.ovh.net ([46.105.73.201]:42467) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twcFX-0005SB-Tu for 77231@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:33 -0400 Received: from director2.derp.mail-out.ovh.net (director2.derp.mail-out.ovh.net [79.137.60.36]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl6y2jH9z1XFj; Mon, 24 Mar 2025 07:29:30 +0000 (UTC) Received: from director2.derp.mail-out.ovh.net (director2.derp.mail-out.ovh.net. [127.0.0.1]) by director2.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <77231@debbugs.gnu.org>; Mon, 24 Mar 2025 07:29:30 +0000 (UTC) Received: from mta11.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.108.9.138]) by director2.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl6y2MH1zy6K; Mon, 24 Mar 2025 07:29:30 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.0]) by mta11.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id C57E12638EC; Mon, 24 Mar 2025 07:29:29 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-99G003d64d6f2f-1459-42bc-9a0f-74bc7f221487, AEA14DA1325383AAD40887B56448FDDF9DC3A193) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Mon, 24 Mar 2025 08:29:14 +0100 Message-ID: <20250324072925.19588-3-ngraves@ngraves.fr> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250324072925.19588-1-ngraves@ngraves.fr> References: <20250324072925.19588-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 709879893600035554 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduheeludejucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfgggtgfesthekredtredtjeenucfhrhhomheppfhitgholhgrshcuifhrrghvvghsuceonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqeenucggtffrrghtthgvrhhnpedvleelgeeffeetleekueegvdfhtedvueffiefhkedtleejkeduveelgfdufeduleenucfkphepuddvjedrtddrtddruddpledtrdelvddruddujedrudeggeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeduvdejrddtrddtrddupdhmrghilhhfrhhomhepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdhnsggprhgtphhtthhopeefpdhrtghpthhtohepjeejvdefudesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopehjvghllhgvrdhlihgthhhtsehfshhfvgdrohhrghdprhgtphhtthhopehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpoffvtefjohhsthepmhhoheeifegmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=ahppLY7wP6vtk4yEKfbzLbM1y1gSH4P8F8gkjF/JFsM=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1742801370; v=1; b=mZzn7VuWHTM0MsGW5R7JNki0pqZ+Wl4JeTJm67BBv8EFQ/6dWeEkbCOOWrE1MsUuimu8EUwu 72vfhZE6vKVVQGUnasnm0BBncJUq5NNZBqIfsLC/8WEm/wUvH0I9b0HsHGc1sQ4tQHaKZnWxmXR iNGWMrQvw4qyduSo7incTgOSDIO2rJnlKO7LtTgz44ZombSEQcapzrKTftBDQl/glQ13lLPLaj3 BJeEdkZhTOM6i+ofwirpVwFOUVzSJjRJVJiEwlziQ4VkYpz+eLjMyFQ2JY5kDuKJ22yTUyCq6Nc Dyb6GFbbmXJ77kkXhHSsorAYU8qmX3A36Rqf6DAaVdVPw== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/import/binary.scm (resolve-package): Use and-let*. --- guix/import/npm-binary.scm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/guix/import/npm-binary.scm b/guix/import/npm-binary.scm index f095651c34..60d7c07a8e 100644 --- a/guix/import/npm-binary.scm +++ b/guix/import/npm-binary.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2019, 2020 Timothy Sample ;;; Copyright © 2021 Lars-Dominik Braun ;;; Copyright © 2020, 2023, 2024 Jelle Licht +;;; Copyright © 2025 Nicolas Graves ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,6 +34,7 @@ (define-module (guix import npm-binary) #:use-module (ice-9 regex) #:use-module (json) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-2) #:use-module (srfi srfi-26) #:use-module (srfi srfi-41) #:use-module (srfi srfi-9) @@ -158,11 +160,11 @@ (define* (semver-latest svs #:optional (svr *semver-range-any*)) (sort svs semver>?))) (define* (resolve-package name #:optional (svr *semver-range-any*)) - (let ((meta (lookup-meta-package* name))) - (and meta - (let* ((version (semver-latest (or (meta-package-versions meta) '()) svr)) - (pkg (meta-package-package meta version))) - pkg)))) + (and-let* + ((meta (lookup-meta-package* name)) + (version (semver-latest (or (meta-package-versions meta) '()) svr)) + (pkg (meta-package-package meta version))) + pkg)) ;;; From patchwork Mon Mar 24 07:29:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 40769 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 1B33227BBE9; Mon, 24 Mar 2025 07:30:59 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 6842227BBE2 for ; Mon, 24 Mar 2025 07:30:58 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twcGG-0004rA-5a; Mon, 24 Mar 2025 03:30:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twcG5-0004dW-1x for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:05 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twcG4-0002zm-Or for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=Bi53LHbN0mrkiLKLTvA9+SShiWqrdBWDQ1ttIctZhY8=; b=eHpsq2+nqzmC73Htf0uI60ehi9bhhV3nXETdywYWEOk7dDSs87Mjkeoh2IJOu2ZxDGx8VMWWePG7sKLziUHr7CCB/Jixep5uIe8WE1aib0tEbgh5RbLVJ/k/D85Ehj4AXARmKdf6l9soOv1uUdBC7DyMiuM+Jf0hyQILErAR2vRFs6Wb5PSnc0+zqTupSPOgnuNdaYB+PqGWyylC/rQ3XPOhtgepYVXwxJCBowoRK/l6YHErjuOYNDohIsUU1MGN2RldNQA/9YNjJEkE8WgsrW0Mk/7Jv/HJiElHA1PADli+Mwbfleb3VWJZneVaUXNiPHEVPCMY6NF8iPoK/gCy+Q==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1twcG4-0005V8-Ia for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:04 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77231] [PATCH 4/6] build-system/node: Add phase 'delete-unwanted-dev-dependencies. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 24 Mar 2025 07:30:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77231 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77231@debbugs.gnu.org Cc: jelle.licht@fsfe.org, Nicolas Graves Received: via spool by 77231-submit@debbugs.gnu.org id=B77231.174280138221038 (code B ref 77231); Mon, 24 Mar 2025 07:30:04 +0000 Received: (at 77231) by debbugs.gnu.org; 24 Mar 2025 07:29:42 +0000 Received: from localhost ([127.0.0.1]:53981 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twcFh-0005TA-Rd for submit@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:42 -0400 Received: from 3.mo563.mail-out.ovh.net ([46.105.40.8]:52149) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twcFY-0005SC-VG for 77231@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:35 -0400 Received: from director4.derp.mail-out.ovh.net (director4.derp.mail-out.ovh.net [79.137.60.37]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl6z2Nkfz1TR1; Mon, 24 Mar 2025 07:29:31 +0000 (UTC) Received: from director4.derp.mail-out.ovh.net (director4.derp.mail-out.ovh.net. [127.0.0.1]) by director4.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <77231@debbugs.gnu.org>; Mon, 24 Mar 2025 07:29:31 +0000 (UTC) Received: from mta2.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.101.155]) by director4.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl6z218fzy9s; Mon, 24 Mar 2025 07:29:31 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.0]) by mta2.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id C829CBA3DFF; Mon, 24 Mar 2025 07:29:30 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-101G00450a46136-82c3-44dc-b478-2554db22a900, AEA14DA1325383AAD40887B56448FDDF9DC3A193) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Mon, 24 Mar 2025 08:29:15 +0100 Message-ID: <20250324072925.19588-4-ngraves@ngraves.fr> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250324072925.19588-1-ngraves@ngraves.fr> References: <20250324072925.19588-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 710161367317603042 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduheeludejucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepfedprhgtphhtthhopeejjedvfeduseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepjhgvlhhlvgdrlhhitghhthesfhhsfhgvrdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehieefmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=Bi53LHbN0mrkiLKLTvA9+SShiWqrdBWDQ1ttIctZhY8=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1742801371; v=1; b=dy+qVL+AYHcxqHvBNyygIg3srWvas3NXBtG2Ek/Qwikl6TmfAsILXyzWp6oMQTooj9fmt4/u 4YYYqnYtOTVfLZX3bVNlPCZ9g4pG6cDi5ZtisJ9Hn4LVxUIORnzL+YZxtzA5ngSEzbHXy7pH7BU D4Z3iaJBV3EF0gi3yYl2CrVJMEfu14iFsmamIlUisegnttvdvDqH4AAUm15gy+JCieHCLHyqDen ar7XGQsHWYKpBNW/5pmkrFldGdfDTcWixGhychnwb3nu9rPmI9E28roxNLGzcqUBhjoFgfgsNo4 iNwk5XFhuPkdzvxsaSDHTsG570tzdW1mMT6IlIdZcMVJQ== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/build/node-build-system.scm (npm-ignored-inputs): New variable. (delete-dependencies): Extend procedure to accept a filtering procedure. (delete-unwanted-dev-dependencies): Define new phase to ignore all npm-ignored-inputs systematically. (%standard-phases): Add it here. --- guix/build/node-build-system.scm | 39 ++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-system.scm index 05940bc997..50e023b3ca 100644 --- a/guix/build/node-build-system.scm +++ b/guix/build/node-build-system.scm @@ -29,6 +29,7 @@ (define-module (guix build node-build-system) #:use-module (ice-9 match) #:use-module (json) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-71) #:export (%standard-phases delete-dependencies @@ -37,9 +38,21 @@ (define-module (guix build node-build-system) modify-json modify-json-fields node-build + npm-ignored-inputs replace-fields with-atomic-json-file-replacement)) +(define npm-ignored-inputs + (list + (list "aud" "nsp" ; passed end-of-life + "covert" ; code coverage + "auto-changelog" "npmignore" "evalmd" ; development tools + "eclint" "eslint" "prettier-standard" "standard" ; lint + "in-publish" "np" "safe-publish-latest") ; upload integration tools + ;; Second value is a list of prefixes to ignore + ;; Handy for personal configs and extensions of ignored inputs + (list "@ljharb/" "eslint-"))) + (define* (assoc-ref* alist key #:optional default) "Like assoc-ref, but return DEFAULT instead of #f if no value exists." (match (assoc key alist) @@ -100,7 +113,7 @@ (define* (modify-json #:key (file "package.json") #:rest all-arguments) modifications)) file))) -(define (delete-dependencies dependencies-to-remove) +(define (delete-dependencies predicate-or-dependencies) "Rewrite 'package.json' to allow the build to proceed without packages listed in 'dependencies-to-remove', a list of strings naming npm packages. @@ -114,9 +127,13 @@ (define (delete-dependencies dependencies-to-remove) dependency-key (lambda (dependencies) (remove - (lambda (dependency) - (member (car dependency) dependencies-to-remove)) - dependencies)))) + (match predicate-or-dependencies + ((? procedure? predicate) + predicate) + ((? list? dependencies-to-remove) + (lambda (dependency) + (member (car dependency) dependencies-to-remove)))) + dependencies)))) pkg-meta (list "devDependencies" @@ -399,11 +416,25 @@ (define scripts "echo Guix: avoiding node-gyp rebuild")) out))))) +(define delete-unwanted-dev-dependencies + (lambda* args + (modify-json + (delete-dependencies + (lambda (input) + (match npm-ignored-inputs + (((ignored ...) (prefixes ...) . ()) + (or (member (car input) ignored) + (any (cut string-prefix? <> (car input)) + prefixes))) + (_ #f))))))) + (define %standard-phases (modify-phases gnu:%standard-phases (add-after 'unpack 'set-home set-home) (add-before 'configure 'patch-dependencies patch-dependencies) (add-after 'patch-dependencies 'delete-lockfiles delete-lockfiles) + (add-after 'patch-dependencies 'delete-unwanted-dev-dependencies + delete-unwanted-dev-dependencies) (replace 'configure configure) (replace 'build build) (replace 'check check) From patchwork Mon Mar 24 07:29:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 40770 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 3A1CE27BBE9; Mon, 24 Mar 2025 07:31:01 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 76A6227BBEB for ; Mon, 24 Mar 2025 07:30:58 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twcGG-0004r2-4Q; Mon, 24 Mar 2025 03:30:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twcG6-0004eC-RY for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:06 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twcG6-00030G-GE for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=e49lRb8VzZ28MM+vbL4epTAQw9CT5H7gXjiMc/yPkWw=; b=IBCKeThJ63w53BqnyzLD6AaravZOTnHPTtLx1BbHGWaOFivT28qhz2nqwxOjkiW5O0g5OwWsD9xK8dI7ybn/x5SgMrLB8Of2Hat2NI5pAGNCGdxAUezg5MIpBUj1XsbtA6UigwvsYKDTHf1m3RE0qOEAg2eUuNcfEmZ5GdxIoHGxZFiDaG64v3Jcr/9Rp3mX4WqeHyo2H7OjbhvU80tY4HCAnXNwsI6GsP1WoiLxfHcVNNUMFHfFbgqmT1Z145qyQXRgwxeObaAj0ZcwEjs9R9KgG6VUVX84Ql77Kk2Zw58cP9jJsIj2F3n5FYVn4Y/YuJlVfxg4lULbCUw55C3vDw==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1twcG6-0005VT-9z for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:06 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77231] [PATCH 5/6] import: npm-binary: Handle vector of licenses. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 24 Mar 2025 07:30:06 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77231 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77231@debbugs.gnu.org Cc: jelle.licht@fsfe.org, Nicolas Graves Received: via spool by 77231-submit@debbugs.gnu.org id=B77231.174280138421060 (code B ref 77231); Mon, 24 Mar 2025 07:30:06 +0000 Received: (at 77231) by debbugs.gnu.org; 24 Mar 2025 07:29:44 +0000 Received: from localhost ([127.0.0.1]:53985 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twcFi-0005TR-VN for submit@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:43 -0400 Received: from 7.mo563.mail-out.ovh.net ([46.105.59.58]:57971) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twcFa-0005SP-Fs for 77231@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:35 -0400 Received: from director2.derp.mail-out.ovh.net (director2.derp.mail-out.ovh.net [79.137.60.36]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl706s7gz1WFs; Mon, 24 Mar 2025 07:29:32 +0000 (UTC) Received: from director2.derp.mail-out.ovh.net (director2.derp.mail-out.ovh.net. [127.0.0.1]) by director2.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <77231@debbugs.gnu.org>; Mon, 24 Mar 2025 07:29:32 +0000 (UTC) Received: from mta6.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.96.120]) by director2.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl706H7Szy6K; Mon, 24 Mar 2025 07:29:32 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.7]) by mta6.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id 2D5C7D43CD4; Mon, 24 Mar 2025 07:29:32 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-110S0043dc162e7-0030-47cd-ab3a-efc997541216, AEA14DA1325383AAD40887B56448FDDF9DC3A193) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Mon, 24 Mar 2025 08:29:16 +0100 Message-ID: <20250324072925.19588-5-ngraves@ngraves.fr> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250324072925.19588-1-ngraves@ngraves.fr> References: <20250324072925.19588-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 710442844043928290 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduheeludejucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfgggtgfesthekredtredtjeenucfhrhhomheppfhitgholhgrshcuifhrrghvvghsuceonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqeenucggtffrrghtthgvrhhnpeejffeitddtfeevtdeugffhveeuvdegueeftefggfffvdevffeguddvgfefveehgeenucffohhmrghinhepghhithhhuhgsrdgtohhmpdhnphhmjhhsrdhorhhgnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepfedprhgtphhtthhopeejjedvfeduseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepjhgvlhhlvgdrlhhitghhthesfhhsfhgvrdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehieefmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=e49lRb8VzZ28MM+vbL4epTAQw9CT5H7gXjiMc/yPkWw=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1742801373; v=1; b=jA3l2ko6P12Ek61zO9m8b8F69qilLrPrti67PoRTSN7YY0quaXHd0DcG4HzeaTBGyKUavBmW hcCaXsJV/5WlURs0dHDgSWLz291fjFPambW578StraHNuP9Wh56iNjwNG7mDvZU0LZRjOKrI+Q4 2SsVgtbnuSpY/3ae+Z7zgDtftEVoVEI406TlwWe1br4bE4lihVT2tg17ub/rMBxTxFJYcxkoGZp kSflWcUtUtmq8i0zOUquVmzdO2gLc7hQVUB1X1iIIM2z1jfbFuKJUSVJy1Kr+DNX0lxe7Vhx268 k/ncANZwW9MiW+Jf11paMjczjEmK79AWtAoIcpUhisYSg== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/import/npm-binary.scm ()[license]: Handle the case where a vector of licenses is used. * tests/npm-binary.scm (foo-json): Redefine as a procedure with license keyword. (test-source-hash): Redefine with direct reference to test-source. (foo-sexp): Redefine as a procedure with license keyword. (npm-binary->guix-package test): Use foo-json and foo-sexp. (npm-binary->guix-package with multiple licenses): Add test. --- guix/import/npm-binary.scm | 16 +++- tests/npm-binary.scm | 158 +++++++++++++++++++++---------------- 2 files changed, 102 insertions(+), 72 deletions(-) diff --git a/guix/import/npm-binary.scm b/guix/import/npm-binary.scm index 60d7c07a8e..01079c2814 100644 --- a/guix/import/npm-binary.scm +++ b/guix/import/npm-binary.scm @@ -105,7 +105,17 @@ (define-json-mapping make-package-revision package-revision? (match (assoc "type" alist) ((_ . (? string? type)) (spdx-string->license type)) - (_ #f))))) + (_ #f))) + ((? vector? vector) + (match (filter-map + (match-lambda + ((? string? str) (spdx-string->license str)) + (_ #f)) + (vector->list vector)) + ((license rest ...) + (cons* license rest)) + ((license) + license))))) (description package-revision-description ;string "description" empty-or-string) (dist package-revision-dist "dist" json->dist)) ;dist @@ -250,7 +260,9 @@ (define resolve-spec (home-page ,home-page) (synopsis ,synopsis) (description ,description) - (license ,license)) + (license ,(if (list? license) + `(list ,@license) + license))) (map (match-lambda (($ name version) (list name (semver->string version)))) resolved-deps)))) diff --git a/tests/npm-binary.scm b/tests/npm-binary.scm index 0cc2864546..b1c6174020 100755 --- a/tests/npm-binary.scm +++ b/tests/npm-binary.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2024 Jelle Licht +;;; Copyright © 2025 Nicolas Graves ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,42 +25,35 @@ (define-module (test-npm-binary) #:use-module (srfi srfi-64) #:use-module (ice-9 iconv) #:use-module (ice-9 match) + #:use-module (json) #:export (run-test)) -(define foo-json - "{ - \"name\": \"foo\", - \"dist-tags\": { - \"latest\": \"1.2.3\", - \"next\": \"2.0.1-beta4\" - }, - \"description\": \"General purpose utilities to foo your bars\", - \"homepage\": \"https://github.com/quartz/foo\", - \"repository\": \"quartz/foo\", - \"versions\": { - \"1.2.3\": { - \"name\": \"foo\", - \"description\": \"General purpose utilities to foo your bars\", - \"version\": \"1.2.3\", - \"author\": \"Jelle Licht \", - \"devDependencies\": { - \"node-megabuilder\": \"^0.0.2\" - }, - \"dependencies\": { - \"bar\": \"^0.1.0\" - }, - \"repository\": { - \"url\": \"quartz/foo\" - }, - \"homepage\": \"https://github.com/quartz/foo\", - \"license\": \"MIT\", - \"dist\": { - \"tarball\": \"https://registry.npmjs.org/foo/-/foo-1.2.3.tgz\" - } - } - } -}") +(define* (foo-json #:key (license "MIT")) + "Create a JSON description of an example foo npm package, optionally using a +different @var{license}." + (scm->json-string + `((name . "foo") + (dist-tags . ((latest . "1.2.3") + (next . "2.0.1-beta4"))) + (description . "General purpose utilities to foo your bars") + (homepage . "https://github.com/quartz/foo") + (repository . "quartz/foo") + (versions + . ((1.2.3 + . ((name . "foo") + (description . "General purpose utilities to foo your bars") + (version . "1.2.3") + (author . "Jelle Licht ") + (devDependencies . ((node-megabuilder . "^0.0.2"))) + (dependencies . ((bar . "^0.1.0"))) + (repository . ((url . "quartz/foo"))) + (homepage . "https://github.com/quartz/foo") + (license . ,license) + (dist + . ((tarball + . "https://registry.npmjs.org/foo/-/foo-1.2.3.tgz")))))))))) +;; Dependency JSON for the bar package (define bar-json "{ \"name\": \"bar\", @@ -87,61 +81,85 @@ (define bar-json } }") -(define test-source-hash - "") - (define test-source "Empty file\n") +(define test-source-hash + (bytevector->nix-base32-string + (gcrypt-sha256 (string->bytevector test-source "utf-8")))) + (define have-guile-semver? (false-if-exception (resolve-interface '(semver)))) +(define* (foo-sexp #:key (license 'license:expat)) + `(package + (name "node-foo") + (version "1.2.3") + (source (origin + (method url-fetch) + (uri "https://registry.npmjs.org/foo/-/foo-1.2.3.tgz") + (sha256 + (base32 "1n0h7zg9zzv4f7yn2gp0mq1v107im7pi6qq4k6q86rixz71ijklh")))) + (build-system node-build-system) + (arguments + (list #:tests? #f + #:phases + (gexp (modify-phases %standard-phases + (delete 'build) + (add-after 'patch-dependencies 'delete-dev-dependencies + (lambda _ + (modify-json + (delete-dependencies '("node-megabuilder"))))))))) + (inputs (list node-bar-0.1.2)) + (home-page "https://github.com/quartz/foo") + (synopsis "General purpose utilities to foo your bars") + (description "General purpose utilities to foo your bars") + (license ,license))) + (test-begin "npm") (unless have-guile-semver? (test-skip 1)) -(test-assert "npm-binary->guix-package" +(test-assert "npm-binary->guix-package base case" (mock ((guix http-client) http-fetch (lambda* (url #:rest _) (match url ("https://registry.npmjs.org/foo" - (values (open-input-string foo-json) - (string-length foo-json))) + (let ((json-foo (foo-json))) + (values (open-input-string json-foo) + (string-length json-foo)))) ("https://registry.npmjs.org/bar" (values (open-input-string bar-json) (string-length bar-json))) ("https://registry.npmjs.org/foo/-/foo-1.2.3.tgz" - (set! test-source-hash - (bytevector->nix-base32-string - (gcrypt-sha256 (string->bytevector test-source "utf-8")))) (values (open-input-string test-source) (string-length test-source)))))) - (match (npm-binary->guix-package "foo") - (`(package - (name "node-foo") - (version "1.2.3") - (source (origin - (method url-fetch) - (uri "https://registry.npmjs.org/foo/-/foo-1.2.3.tgz") - (sha256 - (base32 - ,test-source-hash)))) - (build-system node-build-system) - (arguments - (list #:tests? #f - #:phases - (gexp (modify-phases %standard-phases - (delete 'build) - (add-after 'patch-dependencies 'delete-dev-dependencies - (lambda _ - (modify-json - (delete-dependencies '("node-megabuilder"))))))))) - (inputs (list node-bar-0.1.2)) - (home-page "https://github.com/quartz/foo") - (synopsis "General purpose utilities to foo your bars") - (description "General purpose utilities to foo your bars") - (license license:expat)) - #t) - (x - (pk 'fail x #f))))) + (let ((sexp-foo (foo-sexp))) + (match (npm-binary->guix-package "foo") + (sexp-foo + #t) + (x + (pk 'fail x #f)))))) + +(test-assert "npm-binary->guix-package with multiple licenses" + (mock ((guix http-client) http-fetch + (lambda* (url #:rest _) + (match url + ("https://registry.npmjs.org/foo" + (let ((json-foo (foo-json #:license #("MIT" "Apache2.0")))) + (values (open-input-string json-foo) + (string-length json-foo)))) + ("https://registry.npmjs.org/bar" + (values (open-input-string bar-json) + (string-length bar-json))) + ("https://registry.npmjs.org/foo/-/foo-1.2.3.tgz" + (values (open-input-string test-source) + (string-length test-source)))))) + (let ((sexp-foo (foo-sexp + #:license '(list license:expat license:asl2.0)))) + (match (npm-binary->guix-package "foo") + (sexp-foo + #t) + (x + (pk 'fail x #f)))))) (test-end "npm") From patchwork Mon Mar 24 07:29:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 40768 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id EDFFC27BBEE; Mon, 24 Mar 2025 07:30:58 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 6E7B627BBE9 for ; Mon, 24 Mar 2025 07:30:58 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1twcGG-0004ro-Ec; Mon, 24 Mar 2025 03:30:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twcG7-0004ed-KJ for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:07 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1twcG7-00030V-5l for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=XbN0EE8476ZSsz55S3ha4fqP+n96z4ZE/RWmjAeWIW4=; b=WGyCLqqad18WGMZNjdTx7grdLEpeQAOMBAutODjQKB1FwSFAiWmqLe02kBkynY6//Q7a3NpcIDxEpa0PktukAyg4D0wNGDxWqyukelfdREBOmD6+i6nfEDOaOVijmosz1IcVR9gNOBpacc2ilfAixzzKkB3DvaPKJ4gphkppJygkDKk0prCYKs1DOGgwGL7Lrsri7kumHZJ/Jy5QPR4l5DG8REO/gQd7u4FBmpZUiQ8u8C2OyzaRx3z1QUAqh0ICMf/L9bqgaLxxIq3pNe8itjPfhKTtzQQYy+7OukZuH+5WygNAXqY0n+YtgL25VNNt3cb5IUh0ceUL1sAzGSIs/g==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1twcG6-0005Va-V6 for guix-patches@gnu.org; Mon, 24 Mar 2025 03:30:06 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77231] [PATCH 6/6] import: npm-binary: Filter out npm-ignored-inputs. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 24 Mar 2025 07:30:06 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77231 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77231@debbugs.gnu.org Cc: jelle.licht@fsfe.org, Nicolas Graves Received: via spool by 77231-submit@debbugs.gnu.org id=B77231.174280138421069 (code B ref 77231); Mon, 24 Mar 2025 07:30:06 +0000 Received: (at 77231) by debbugs.gnu.org; 24 Mar 2025 07:29:44 +0000 Received: from localhost ([127.0.0.1]:53987 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twcFk-0005Tl-GG for submit@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:44 -0400 Received: from 6.mo562.mail-out.ovh.net ([46.105.48.43]:54797) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twcFc-0005SY-6o for 77231@debbugs.gnu.org; Mon, 24 Mar 2025 03:29:36 -0400 Received: from director3.derp.mail-out.ovh.net (director3.derp.mail-out.ovh.net [152.228.215.222]) by mo562.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl721n5Fz1Swq; Mon, 24 Mar 2025 07:29:34 +0000 (UTC) Received: from director3.derp.mail-out.ovh.net (director3.derp.mail-out.ovh.net. [127.0.0.1]) by director3.derp.mail-out.ovh.net (inspect_sender_mail_agent) with SMTP for <77231@debbugs.gnu.org>; Mon, 24 Mar 2025 07:29:33 +0000 (UTC) Received: from mta10.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.164.145]) by director3.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLl716p8jz7wVq; Mon, 24 Mar 2025 07:29:33 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.4]) by mta10.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id 76F14DA38EC; Mon, 24 Mar 2025 07:29:33 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-96R00174d24aa2-d6f9-4776-9228-92efbe66f1d2, AEA14DA1325383AAD40887B56448FDDF9DC3A193) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 Date: Mon, 24 Mar 2025 08:29:17 +0100 Message-ID: <20250324072925.19588-6-ngraves@ngraves.fr> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250324072925.19588-1-ngraves@ngraves.fr> References: <20250324072925.19588-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 710724317148406498 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduheeludekucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepleffjeetueethfefkeffffefvddukeejkefgleduiedthfekvefhiedvhfffgeegnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepfedprhgtphhtthhopeejjedvfeduseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepjhgvlhhlvgdrlhhitghhthesfhhsfhgvrdhorhhgpdhrtghpthhtohepnhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrpdfovfetjfhoshhtpehmohehiedvmgdpmhhouggvpehsmhhtphhouhht DKIM-Signature: a=rsa-sha256; bh=XbN0EE8476ZSsz55S3ha4fqP+n96z4ZE/RWmjAeWIW4=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1742801374; v=1; b=GF7RDG1L//B/KDnaYp0tNP4O62jhXiR0dh9PRRMHGnoUHNxXbT+lf/P1FBziui4DachaI4uH CCXk/str7XraykXeE6wurZZhOBatzVpivb4gI9VaKZ15SAao31v+0nPkNkRqb/VmyKOzq2eT5Rj HB2Q4NoKZiLF50e4fwXs0noo4J2zAZPX0ImACNsdcu/iipoAK/J8y+Lp35iQpvnOYnI+l9Pmy2h 1+MZVTHtdr3/NA+KyZtKe1U2PuNTWdWYhM6VDn871B4rhxybOyI01QQ77xAFWFbzF+R6h+GJrge QyeBYbD8Gd5wFeVnv2RGjcLZDSiPk8j6F4uWUZk+gVj4Q== X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/import/npm-binary.scm (npm-keep-input?): Add variable. (npm-package->package-sexp): Use npm-keep-input? to filter out unwanted inputs. --- guix/import/npm-binary.scm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/guix/import/npm-binary.scm b/guix/import/npm-binary.scm index 01079c2814..fed063f55d 100644 --- a/guix/import/npm-binary.scm +++ b/guix/import/npm-binary.scm @@ -24,6 +24,7 @@ (define-module (guix import npm-binary) #:use-module (gcrypt hash) #:use-module (gnu packages) #:use-module (guix base32) + #:use-module ((guix build node-build-system) #:select (npm-ignored-inputs)) #:use-module (guix http-client) #:use-module (guix import json) #:use-module (guix import utils) @@ -201,6 +202,16 @@ (define (package-revision->symbol package) (name (npm-name->name npm-name))) (name+version->symbol name version))) +(define (npm-keep-input? input) + "If INPUT is not among `npm-ignored-inputs', return it. Else return #f." + (match npm-ignored-inputs + (((ignored ...) (prefixes ...) . ()) + (let ((name (versioned-package-name input))) + (and (not (or (member name ignored) + (any (cut string-prefix? <> name) prefixes))) + input))) + (_ #f))) + (define (npm-package->package-sexp npm-package) "Return the `package' s-expression for an NPM-PACKAGE." (define resolve-spec @@ -218,6 +229,9 @@ (define resolve-spec home-page (string-append %default-page "/" (uri-encode name)))) (synopsis description) + (dependencies (filter-map npm-keep-input? dependencies)) + (dev-dependencies (filter-map npm-keep-input? dev-dependencies)) + (peer-dependencies (filter-map npm-keep-input? peer-dependencies)) (resolved-deps (map resolve-spec (append dependencies peer-dependencies))) (peer-names (map versioned-package-name peer-dependencies))