diff mbox series

[bug#36599] gnu: Add node-semver. (Updated)

Message ID c7c5b4ec926007e9611d74a7cca62d48@autistici.org
State Accepted
Headers show
Series [bug#36599] gnu: Add node-semver. (Updated) | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job

Commit Message

Giacomo Leidi April 15, 2020, 3:36 p.m. UTC
Hi Efraim,

> Overall it looks good to me. I also checked npm¹ and it agrees that
> there are no dependencies for this package. Do you happen to know why
> there's a test directory installed? I don't know if it's supposed to be
> there but it seems strange to me

I didn't notice and I agree that tests shouldn't be installed but IIUC 
it's a limitation of the node-build-system that copies recursively the 
contents of the node_modules directory. I checked and it seems that 
other packages using the node-build-system have the same problem (i.e. 
node-color-name install test.js, node-far installs a test directory). 
One way to fix this could be adding an extra phase (either to each 
package or in the node-build-system with a special field indicating a 
list of tests directories) where we delete the test directory from  
node_modules preventing the copy.

On my system I get

orang3@frastanato ~/code/guix [env]$ du -sh 
/gnu/store/5kkb1nya9ws12b2qxsn0r7904nx6v5b5-node-semver-7.2.1
732K    /gnu/store/5kkb1nya9ws12b2qxsn0r7904nx6v5b5-node-semver-7.2.1

orang3@frastanato ~/code/guix [env]$ du -sh 
/gnu/store/5kkb1nya9ws12b2qxsn0r7904nx6v5b5-node-semver-7.2.1/lib/node_modules/semver/test/
264K    
/gnu/store/5kkb1nya9ws12b2qxsn0r7904nx6v5b5-node-semver-7.2.1/lib/node_modules/semver/test/

which is not much but amounts nearly to 1/3 of the total disk usage of 
semver. If you believe that another phase deleting the tests would be 
better I attached an attempt.

Giacomo

Comments

Julien Lepiller April 15, 2020, 5:09 p.m. UTC | #1
Le 15 avril 2020 11:36:06 GMT-04:00, goodoldpaul@autistici.org a écrit :
>Hi Efraim,
>
>> Overall it looks good to me. I also checked npm¹ and it agrees that
>> there are no dependencies for this package. Do you happen to know why
>> there's a test directory installed? I don't know if it's supposed to
>be
>> there but it seems strange to me
>
>I didn't notice and I agree that tests shouldn't be installed but IIUC 
>it's a limitation of the node-build-system that copies recursively the 
>contents of the node_modules directory. I checked and it seems that 
>other packages using the node-build-system have the same problem (i.e. 
>node-color-name install test.js, node-far installs a test directory). 
>One way to fix this could be adding an extra phase (either to each 
>package or in the node-build-system with a special field indicating a 
>list of tests directories) where we delete the test directory from  
>node_modules preventing the copy.
>
>On my system I get
>
>orang3@frastanato ~/code/guix [env]$ du -sh 
>/gnu/store/5kkb1nya9ws12b2qxsn0r7904nx6v5b5-node-semver-7.2.1
>732K    /gnu/store/5kkb1nya9ws12b2qxsn0r7904nx6v5b5-node-semver-7.2.1
>
>orang3@frastanato ~/code/guix [env]$ du -sh 
>/gnu/store/5kkb1nya9ws12b2qxsn0r7904nx6v5b5-node-semver-7.2.1/lib/node_modules/semver/test/
>264K    
>/gnu/store/5kkb1nya9ws12b2qxsn0r7904nx6v5b5-node-semver-7.2.1/lib/node_modules/semver/test/
>
>which is not much but amounts nearly to 1/3 of the total disk usage of 
>semver. If you believe that another phase deleting the tests would be 
>better I attached an attempt.
>
>Giacomo

Does npm install the test.js files when run by ittself (in which case we replicate its behavior), or does it have a mechanism to know what files to install? If so we thould replicate that mecanism.
diff mbox series

Patch

From 77ffe7c3a0be8e215f4f4ae0b780385ffe39c1a2 Mon Sep 17 00:00:00 2001
From: Giacomo Leidi <goodoldpaul@autistici.org>
Date: Wed, 8 Apr 2020 00:59:13 +0200
Subject: [PATCH]  gnu: Add node-semver.

* gnu/packages/node-xyz.scm (node-semver): New variable.
---
 gnu/packages/node-xyz.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm
index 44236ec469..93328969e5 100644
--- a/gnu/packages/node-xyz.scm
+++ b/gnu/packages/node-xyz.scm
@@ -1,5 +1,6 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -244,3 +245,34 @@  protocol used in @code{node-lynx}.")
     (description "This package provides the Node.js @code{util.deprecate()}
 function with browser support.")
     (license license:expat)))
+
+(define-public node-semver
+  (package
+    (name "node-semver")
+    (version "7.2.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/npm/node-semver.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "06biknqb05r9xsmcflm3ygh50pjvdk84x6r79w43kmck4fn3qn5p"))))
+    (build-system node-build-system)
+    (arguments
+     `(#:tests? #f ;; FIXME: Tests depend on node-tap
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'install 'delete-tests-dir
+           (lambda _
+             ;; Delete tests to prevent installing them
+             (delete-file-recursively "test")
+             (delete-file-recursively "tap-snapshots")
+             #t)))))
+    (home-page "https://github.com/npm/node-semver")
+    (synopsis "Parses semantic versions strings")
+    (description
+     "@code{node-semver} is a JavaScript implementation of the
+@uref{https://semver.org/, SemVer.org} specification.")
+    (license license:isc)))
-- 
2.26.1