Subject: Re: [bug#51838] [PATCH v3 26/43] gnu: Add node-nan.

From: Philip McGrath <[email-masked]>
Date: Sun, 12 Dec 2021 16:33:13 -0500

On 12/12/21 11:17, Pierre Langlois wrote:
> 
> Philip McGrath <[email-masked]> writes:
> 
>> * gnu/packages/node-xyz.scm (node-nan): New variable.
>> ---
>>   gnu/packages/node-xyz.scm | 44 +++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 44 insertions(+)
>>
>> diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm
>> index 3e06413908..ed169c0778 100644
>> --- a/gnu/packages/node-xyz.scm
>> +++ b/gnu/packages/node-xyz.scm
>> @@ -553,3 +553,47 @@ (define-public node-irc
>>       (description "@code{node-irc} is an IRC client library for Node.js.
>>   It has functions for joining, parting, talking, and many other IRC commands.")
>>       (license license:gpl3+)))
>> +
>> +(define-public node-nan
>> +  (package
>> +    (name "node-nan")
>> +    (version "2.15.0")
>> +    (source
>> +     (origin
>> +       (method git-fetch)
>> +       (uri (git-reference
>> +             (url "https://github.com/nodejs/nan")
>> +             (commit (string-append "v" version))))
>> +       (file-name (git-file-name name version))
>> +       (sha256
>> +        (base32 "18xslh9va5ld872scrp5y4251ax9s3c6qh0lnl1200lpzbsxy7yd"))))
>> +    (build-system node-build-system)
>> +    (arguments
>> +     `(#:tests?
>> +       ;; tests need tap and other dependencies
>> +       #f
> 
> Formatting nit, you can write this all in one line:
> 
>      #:tests? #f  ;; Tests need tap an other dependencies.

Yes, I'll do that. It causes problems for automatic indentation if it's 
the first line, but I can put it after #:absent-dependencies, as I 
started doing elsewhere.

> 
>> +       #:absent-dependencies
>> +       '("bindings"
>> +         "commander"
>> +         "glob"
>> +         "request"
>> +         "node-gyp" ;; would be needed for tests
>> +         "tap"
>> +         "xtend")))
>> +    (inputs
>> +     `(("readable-stream" ,node-readable-stream)))
>> +    (home-page "https://github.com/nodejs/nan")
>> +    (synopsis "Native Abstractions for Node.js")
>> +    (description "A header file filled with macro and utility goodness for
>> +making add-on development for Node.js easier across versions 0.8, 0.10, 0.12,
>> +1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 and 16.
> 
> Given our packages only work with the node what Guix uses, you could
> remove the version numbers from the description. Mostly because we
> probalby won't think to update this description when future node
> releases appear.
> 
>> +
>> +Thanks to the crazy changes in V8 (and some in Node core), keeping native
>> +addons compiling happily across versions, particularly 0.10 to 0.12 to 4.0, is
>> +a minor nightmare.
> 
> I'd remove this sentence, it doesn't make much sense in Guix given we
> don't support older versions.

Both of these seem like good changes to me. (Personally, I think a lot 
of complexity in JavaScript land comes from trying to support obsolete 
versions of things.)

-Philip