From unknown Sun Jun 15 16:42:47 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#77231 <77231@debbugs.gnu.org> To: bug#77231 <77231@debbugs.gnu.org> Subject: Status: [PATCH javascript-team 0/6] Improve importer and build-system. Reply-To: bug#77231 <77231@debbugs.gnu.org> Date: Sun, 15 Jun 2025 23:42:47 +0000 retitle 77231 [PATCH javascript-team 0/6] Improve importer and build-system. reassign 77231 guix-patches submitter 77231 Nicolas Graves severity 77231 normal tag 77231 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 24 03:20:27 2025 Received: (at submit) by debbugs.gnu.org; 24 Mar 2025 07:20:27 +0000 Received: from localhost ([127.0.0.1]:53935 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twc6l-00053d-8P for submit@debbugs.gnu.org; Mon, 24 Mar 2025 03:20:27 -0400 Received: from lists.gnu.org ([2001:470:142::17]:37886) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twc6h-00053E-Mk for submit@debbugs.gnu.org; Mon, 24 Mar 2025 03:20:24 -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 1twc6c-0003s2-5i for guix-patches@gnu.org; Mon, 24 Mar 2025 03:20:18 -0400 Received: from 5.mo563.mail-out.ovh.net ([46.105.53.64]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1twc6X-0001TZ-Ku for guix-patches@gnu.org; Mon, 24 Mar 2025 03:20:17 -0400 Received: from director3.derp.mail-out.ovh.net (director3.derp.mail-out.ovh.net [152.228.215.222]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLkw21Qvgz1XFj; Mon, 24 Mar 2025 07:20:01 +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 ; Mon, 24 Mar 2025 07:20:01 +0000 (UTC) Received: from mta10.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.164.177]) by director3.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4ZLkw1540hz7wVj; Mon, 24 Mar 2025 07:20:01 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.5]) by mta10.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id 31C7BDA38EC; Mon, 24 Mar 2025 07:20:01 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-109S003ad1f0089-8c96-49cf-b73b-0c9386fbac91, AEA14DA1325383AAD40887B56448FDDF9DC3A193) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves To: guix-patches@gnu.org Subject: [PATCH javascript-team 0/6] Improve importer and build-system. Date: Mon, 24 Mar 2025 08:18:53 +0100 Message-ID: <20250324071954.16997-1-ngraves@ngraves.fr> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Ovh-Tracer-Id: 549720632597668578 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduheeludehucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucenucfjughrpefhvfevufffkffoggfgsedtkeertdertddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepkeffgeetfffgffejgeejvdffgfdtvdeuueetgfefuedvjeegvdegjeejveeuueevnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepvddprhgtphhtthhopehguhhigidqphgrthgthhgvshesghhnuhdrohhrghdprhgtphhtthhopehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpoffvtefjohhsthepmhhoheeifegmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=v59vz4+0Amh5puA4m94Gu1LPGWOF++ez8NhTCXNsoHo=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1742800802; v=1; b=2rnoZtAlGOzRHN1gc285Yk5G/GgsuofAB/nE3t0LMvIFO6HAsP5AhIReX6wnvpMxo/KabEz9 qpXQ83Rt60aCV/Oof1erRxQ20N4f8FRzsNnFINIIWUXhmipRchnWGbfBlBWbx7gS4deF1uHf8QL 0MTvpkIA1IuW8VbCwEAHvp8lh4qoJ3WgCthOnUvgqXqj3Hv6CrJ8owTZtSontKi/ln/zP1FHGtc DYfw/qTmJXxiz5U+BZmfOq5xck1TmNveJu9Yo2369nopjQBfqvV2aQPSkTxbMftinB7N4/Nhhw7 bDuaJjEubU4M05Kwy96l814cOTwusICcmudYip2VfuwgQ== Received-SPF: permerror client-ip=46.105.53.64; envelope-from=ngraves@ngraves.fr; helo=5.mo563.mail-out.ovh.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: submit Cc: Nicolas Graves X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Like in python, there are some development dependencies we want to avoid since they are not contributing to the build at all. This patch series adds options to ignore them. This change requires to rebuild node, so I prefer to do that on CI. Nicolas Graves (6): import: npm-binary: Fix import. import: npm-binary: Improve npm-package->package-sexp. import: npm-binary: Improve-style. build-system/node: Add phase 'delete-unwanted-dev-dependencies. import: npm-binary: Handle vector of licenses. import: npm-binary: Filter out npm-ignored-inputs. guix/build/node-build-system.scm | 39 +++++++- guix/import/npm-binary.scm | 160 ++++++++++++++++++------------- tests/npm-binary.scm | 157 +++++++++++++++++------------- 3 files changed, 215 insertions(+), 141 deletions(-) -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 24 03:29:34 2025 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 From: Nicolas Graves To: 77231@debbugs.gnu.org Subject: [PATCH 2/6] import: npm-binary: Improve npm-package->package-sexp. 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 Content-Transfer-Encoding: 8bit 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-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77231 Cc: jelle.licht@fsfe.org, Nicolas Graves X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * 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 '())))) ;;; -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 24 03:29:41 2025 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 From: Nicolas Graves To: 77231@debbugs.gnu.org Subject: [PATCH 3/6] import: npm-binary: Improve-style. 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 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 77231 Cc: jelle.licht@fsfe.org, Nicolas Graves X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * 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)) ;;; -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 24 03:29:42 2025 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 From: Nicolas Graves To: 77231@debbugs.gnu.org Subject: [PATCH 4/6] build-system/node: Add phase 'delete-unwanted-dev-dependencies. 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 Content-Transfer-Encoding: 8bit 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-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77231 Cc: jelle.licht@fsfe.org, Nicolas Graves X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * 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) -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 24 03:29:43 2025 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 From: Nicolas Graves To: 77231@debbugs.gnu.org Subject: [PATCH 1/6] import: npm-binary: Fix import. 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 Content-Transfer-Encoding: 8bit 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-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 77231 Cc: jelle.licht@fsfe.org, Nicolas Graves X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) 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") -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 24 03:29:44 2025 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 From: Nicolas Graves To: 77231@debbugs.gnu.org Subject: [PATCH 5/6] import: npm-binary: Handle vector of licenses. 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 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 77231 Cc: jelle.licht@fsfe.org, Nicolas Graves X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * 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") -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 24 03:29:44 2025 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 From: Nicolas Graves To: 77231@debbugs.gnu.org Subject: [PATCH 6/6] import: npm-binary: Filter out npm-ignored-inputs. 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 Content-Transfer-Encoding: 8bit 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-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77231 Cc: jelle.licht@fsfe.org, Nicolas Graves X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * 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)) -- 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 24 17:24:19 2025 Received: (at 77231) by debbugs.gnu.org; 24 Mar 2025 21:24:19 +0000 Received: from localhost ([127.0.0.1]:59662 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twpHN-0005YW-Hj for submit@debbugs.gnu.org; Mon, 24 Mar 2025 17:24:19 -0400 Received: from mail2.fsfe.org ([213.95.165.55]:59268) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twpHL-0005Y7-JI for 77231@debbugs.gnu.org; Mon, 24 Mar 2025 17:24:16 -0400 From: Jelle Licht DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fsfe.org; s=2023072501; t=1742851466; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=k/izMIHVy67TNvwkxGYzTxLORzw4PhqTDdDl0tajQ7I=; b=q1DXZGeYBCyD5zYN4CB+tLPBIgYSVHRlqAa9FTheUTe6Ak7lKJovpdrbfVMM01iGk80f7u VUPxhWucYhthdRLJZu8BiKNw6k7PAPU00ZltLjO3+0vybStPWrOof+MzQveRfjldQvcahi G1jjmPKnYk7IqAKsYSOjtz/o0jgbSqo= To: 77231@debbugs.gnu.org Subject: Re: [bug#77231] [PATCH 4/6] build-system/node: Add phase 'delete-unwanted-dev-dependencies. In-Reply-To: <20250324072925.19588-4-ngraves@ngraves.fr> References: <20250324072925.19588-1-ngraves@ngraves.fr> <20250324072925.19588-4-ngraves@ngraves.fr> Date: Mon, 24 Mar 2025 22:24:11 +0100 Message-ID: <87o6xqt950.fsf@fsfe.org> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 77231 Cc: jelle.licht@fsfe.org, Nicolas Graves X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) Thanks for working all of this though, I really appreciate it all! I've applied patches 1, 2, 3, and 5 locally, and after doing some sanity checks over night, will be pushing it to the javascript-team W.r.t patches 4 and 6; A hardcoded list of ignored inputs as part of the build system seems like it will tightly couple package expressions to a particular version of guix. Changing it in the future (by adding or removing things) will also be annoying for packages in guix, as well as generated package expressions 'in the wilds'. A similar argument was better framed in the discussion around issues.guix.gnu.org/51838 (warning: long read). The idea of having the importer be able to effectively ignore a large part of the huge dependency graph if we know it won't be useful to us is a cool feature to have. Ideally it'd somehow be part of the generated output as well though, so the generated package expressions run on more revisions of guix. Tangentially, how did you run into issues with this particular list of deps? Are they not often encountered as devDependencies (and subsequently explicitly removed in the package expressions generated by the importer)? Or is the point to minimise (generated) code duplication between packages to remove these ne'er-needed-deps? Thanks again! - Jelle Nicolas Graves via Guix-patches via writes: > * 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) > -- > 2.48.1 From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 25 03:19:31 2025 Received: (at 77231) by debbugs.gnu.org; 25 Mar 2025 07:19:31 +0000 Received: from localhost ([127.0.0.1]:35893 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1twyZP-0001Le-5O for submit@debbugs.gnu.org; Tue, 25 Mar 2025 03:19:31 -0400 Received: from 4.mo563.mail-out.ovh.net ([46.105.53.192]:49781) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1twyZK-0001LQ-N0 for 77231@debbugs.gnu.org; Tue, 25 Mar 2025 03:19:29 -0400 Received: from director3.derp.mail-out.ovh.net (director3.derp.mail-out.ovh.net [152.228.215.222]) by mo563.mail-out.ovh.net (Postfix) with ESMTPS id 4ZMLrr4LzMz1Xgh; Tue, 25 Mar 2025 07:19:24 +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>; Tue, 25 Mar 2025 07:19:24 +0000 (UTC) Received: from mta6.priv.ovhmail-u1.ea.mail.ovh.net (unknown [10.110.188.122]) by director3.derp.mail-out.ovh.net (Postfix) with ESMTPS id 4ZMLrr2CCLz7wVr; Tue, 25 Mar 2025 07:19:24 +0000 (UTC) Received: from ngraves.fr (unknown [10.1.6.6]) by mta6.priv.ovhmail-u1.ea.mail.ovh.net (Postfix) with ESMTPSA id D0991D43C66; Tue, 25 Mar 2025 07:19:23 +0000 (UTC) Authentication-Results: garm.ovh; auth=pass (GARM-103G005e33b5be8-32c7-48df-a211-b5ec9906b5bf, FB45688AE489E0BEC42E54AE58A1B437771C36DF) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 90.92.117.144 From: Nicolas Graves To: Jelle Licht , 77231@debbugs.gnu.org Subject: Re: [bug#77231] [PATCH 4/6] build-system/node: Add phase 'delete-unwanted-dev-dependencies. In-Reply-To: <87o6xqt950.fsf@fsfe.org> References: <20250324072925.19588-1-ngraves@ngraves.fr> <20250324072925.19588-4-ngraves@ngraves.fr> <87o6xqt950.fsf@fsfe.org> Date: Tue, 25 Mar 2025 08:19:23 +0100 Message-ID: <877c4d1ssk.fsf@ngraves.fr> MIME-Version: 1.0 Content-Type: text/plain X-Ovh-Tracer-Id: 6411999971258721010 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduiedvtdefucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvvefujghffffkgggtsehttdertddttddtnecuhfhrohhmpefpihgtohhlrghsucfirhgrvhgvshcuoehnghhrrghvvghssehnghhrrghvvghsrdhfrheqnecuggftrfgrthhtvghrnhepuddtfffhleeufeegieehvdekjeeggfekkedvgeeliefhleetudetuddtueeiveetnecuffhomhgrihhnpehgnhhurdhorhhgnecukfhppeduvdejrddtrddtrddupdeltddrledvrdduudejrddugeegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpehnghhrrghvvghssehnghhrrghvvghsrdhfrhdpnhgspghrtghpthhtohepfedprhgtphhtthhopeejjedvfeduseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepjhgvlhhlvgdrlhhitghhthesfhhsfhgvrdhorhhgpdhrtghpthhtohepjhhlihgthhhtsehfshhfvgdrohhrghdpoffvtefjohhsthepmhhoheeifegmpdhmohguvgepshhmthhpohhuth DKIM-Signature: a=rsa-sha256; bh=OKc2EwbQLe0fBbLUiViqpc9Za0+Arkac3ELAVH3FMQ8=; c=relaxed/relaxed; d=ngraves.fr; h=From; s=ovhmo4487190-selector1; t=1742887164; v=1; b=IJM6u/NfWMHo/1UBlDvpI4S2b4Uef4xK4FOw5ujOJ0XtdqZxxX3H4/FMP9yWYEMEK/GSJF+w LTaiBxVYEoFkCURhSMLvzZPmdx7WHnnPi0X/A/QJ+C9vhk9t9Ff2EhFDVtSJ4SFOV13gj3CPaDU bv8ytNNvXAbM4cbWfITsb+TVoNl7m1S4o/WFdPefroKdJNSQBphnHcr060JYoTiObOKgKm17S9I Vz26Mz/6ke9dAUkSAKWjFJvNXhmf3uHA9DzA+jgdoM8wXfZohgMO+wBNvxkJBBXkyDmdVncvJ+l +YiKj0G/KBz+oBy0B2Fkw3bOjh2Y6MM9Z1qHfX8y5xLSw== X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77231 Cc: jelle.licht@fsfe.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2025-03-24 22:24, Jelle Licht wrote: > Thanks for working all of this though, I really appreciate it all! I've > applied patches 1, 2, 3, and 5 locally, and after doing some sanity > checks over night, will be pushing it to the javascript-team > > W.r.t patches 4 and 6; > A hardcoded list of ignored inputs as part of the build system seems > like it will tightly couple package expressions to a particular version > of guix. Changing it in the future (by adding or removing things) will > also be annoying for packages in guix, as well as generated package > expressions 'in the wilds'. > > A similar argument was better framed in the discussion around > issues.guix.gnu.org/51838 (warning: long read). I did the same for python in 68315. Wasn't aware of that discussion indeed. A good general (not Node specific) altenative IMO would be to have "development-inputs" that are NOT injected in the build/derivation neither evaluated (when is compiled) but whose names could be made available as an argument to the build-system. That makes it uncessary to record them at the build-system level (although adds more package boilerplate). Python basically has the same issue with a lot of false/unrequired native-inputs. I think I heard Nix solves this with a concept similar to what I describe. > The idea of having the importer be able to effectively ignore a large > part of the huge dependency graph if we know it won't be useful to us is > a cool feature to have. Ideally it'd somehow be part of the generated > output as well though, so the generated package expressions run on more > revisions of guix. Do you mean we should do that as a snippet or in an earlier phase? > Tangentially, how did you run into issues with this particular list of > deps? Are they not often encountered as devDependencies (and > subsequently explicitly removed in the package expressions generated by > the importer)? Or is the point to minimise (generated) code duplication > between packages to remove these ne'er-needed-deps? The latter, but it felt needed for some reason, the sheer count of lines and readability is consequential. > > Thanks again! > - Jelle -- Best regards, Nicolas Graves