From: Philip McGrath <philip@philipmcgrath.com>
To: Liliana Marie Prikler <liliana.prikler@gmail.com>, 51838@debbugs.gnu.org
Cc: Timothy Sample <samplet@ngyro.com>,
Pierre Langlois <pierre.langlois@gmx.com>,
Jelle Licht <jlicht@fsfe.org>
Subject: [bug#51838] [PATCH v6 03/41] guix: node-build-system: Add JSON utilities.
Date: Fri, 31 Dec 2021 00:22:48 -0500 [thread overview]
Message-ID: <c50c6932-b046-ed5e-d8b3-ec2762cc1fde@philipmcgrath.com> (raw)
In-Reply-To: <efe63e47f4b6c782f3ec9ad1585c1043dd8fac21.camel@gmail.com>
Hi Liliana,
On 12/30/21 11:56, Liliana Marie Prikler wrote:
> Am Donnerstag, dem 30.12.2021 um 02:38 -0500 schrieb Philip McGrath:
>> This commit adds several utility functions for non-destructive
>> transformation of the JSON representation used by (guix build json),
>> particularly for purely functional update of JSON objects. They
>> should
>> eventually be exported, but most are private for now to allow for
>> more
>> experience and consideration before commiting to the API. The design
>> was largely inspired by the 'racket/dict' and 'racket/hash'
>> libraries.
>> Liliana Marie Prikler proposed 'with-atomic-json-file-replacement'.
> Given that this is a fair amount of procedures that you're proposing, I
> think a new file would be appropriate. Perhaps (guix build json-
> utils)? Adding that should IIUC not cause a world rebuild, so we could
> do that on master.
>
I agree that these functions ultimately belong in their own file, and
I'd even had the name (guix build json-utils) in mind.
I put them in (guix build node-build-system) for now because, if they
were in (guix build json-utils), they would have to be exported, at
which point their API would have to be relatively stable, and I didn't
want designing them to block, or to be rushed by, the rest of this
series. Now, maybe consensus on the json-utils will turn out to be the
easy part! But my high-level question is, in your view, do any of the
points I'm about to respond to block this patch series?
On 12/30/21 13:18, Liliana Marie Prikler wrote:
> Having argued for these procedures to be moved into their own file in a
> separate mail, now it's time to bikeshed stylistic choices.
>
> Am Donnerstag, dem 30.12.2021 um 02:38 -0500 schrieb Philip McGrath:
>> +(define (jsobject-ref js key failure-result)
>> + "Return the value assosciated with KEY in the json object JS. If
>> KEY is not
>> +found and FAILURE-RESULT is a procedure, it is called in tail position
>> with
>> +zero arguments. Otherwise, FAILURE-RESULT is returned."
>> + ;; TODO: `failure-result` should be optional, but should the default
>> + ;; `failure-result` be #f (like `assoc-ref`), a thunk raising an
>> exception,
>> + ;; '(@), or something else? Keep it mandatory until we discuss and
>> decide.
>> + (match js
>> + (('@ . alist)
>> + (match (assoc key alist)
>> + (#f
>> + (if (procedure? failure-result)
>> + (failure-result)
>> + failure-result))
>> + ((_ . value)
>> + value)))))
> We can safely replace failure-result by Guile's DEFAULT and leave error
> handling to the user.
I don't care whether we call it DEFAULT or FAILURE-RESULT.
I agree that it should not raise an exception by default. My current
thinking is that '(@) would be a good default DEFAULT: it is useful for
the common pattern of traversing or transforming nested objects, and, as
you point out at the end of this email, explicitly typing #f (the other
useful possibility) looks much more like normal Scheme than explicitly
typing '(@).
In my experience with [1] and [2] (the purely-functional dictionary
libraries I use most often), the special case for a procedure as DEFAULT
is useful. I feel less strongly about it because it's relatively easy to
work around for JSON, since you can pick some non-JSON signal value, but
it also seems to have especially little downside for JSON, since (guix
build json) will never have a procedure in a valid JSON object. In
addition to raising exceptions and other control flow, it's useful for
default values that are expensive to produce.
[1]: https://docs.racket-lang.org/reference/hashtables.html
[2]: https://docs.racket-lang.org/reference/dicts.html
>
>> +(define (alist-pop alist key)
>> + "Return two values: the first pair in ALIST with the given KEY in
>> its
>> +'car' (or #f, if no such pair exists) and an assosciation list like
>> (and
>> +potentially sharing storage with) ALIST, but with no entry for KEY."
>> + (match (assoc key alist)
>> + ;; If key isn't present, we don't need to do any allocation
>> + (#f
>> + (values #f alist))
>> + (found
>> + (values found
>> + ;; Because we have `found`, we can find it more
>> + ;; efficiently this time with `eq?`. We avoid using
>> + ;; `delq` because it would copy pairs in a shared
>> + ;; tail. We assume a sufficiently smart compiler to
>> + ;; handle "tail recursion modulo cons" (vid. e.g. Indiana
>> + ;; University Technical Report No. 19, Friedman & Wise
>> + ;; 1975) at least as efficiently as a hand-written
>> + ;; tail-recursive implementation with an accumulator.
>> + (let loop ((alist alist))
>> + (match alist
>> + ;; We know that `found` is present,
>> + ;; so no need to check for '()
>> + ((this . alist)
>> + (if (eq? this found)
>> + alist
>> + (cons this (loop alist))))))))))
> I think this can be more efficiently be done in a "single" loop.
>
> (let loop ((rest alist)
> (previous '()))
> (match rest
> (() (values #f alist))
> ((first . rest)
> (if (eq? (car first) key)
> (values first (reverse! previous rest))
> (loop rest (cons first previous))))))
>
I'll admit to a Racket bias, but, having just eliminated the use of
'assoc-set!', I'm loathe to start mutating pairs (even correctly). To
quote a bit from the SRFI-1 spec for 'append-reverse!', "note that this
pattern of iterative computation followed by a reverse can frequently be
rewritten as a recursion, dispensing with the reverse and append-reverse
steps, and shifting temporary, intermediate storage from the heap to the
stack, which is typically a win for reasons of cache locality and eager
storage reclamation." (See how 'set-cdr!' can crash safe Chez Scheme!
<https://github.com/cisco/ChezScheme/issues/599>)
IIUC, using SRFI-1's 'span' would lead to the same situation.
> Also, I don't think your version is tail-recursive. (loop alist) is
> not in tail position from what I can tell.
Yes, "tail recursion modulo cons" refers to a compiler optimization for
functions which are _not_ tail recursive. For full details, see the
Friedman & Wise 1975 tech report I cited at
<https://legacy.cs.indiana.edu/ftp/techreports/TR19.pdf> (or various
other articles), but, as briefly as I can: The optimization rests on the
observation that many recursive functions, like the classic definition
of 'map':
(define (map f lst)
(match lst
(()
'())
((this . lst)
(cons (f this)
(map f lst)))))
are nearly tail-recursive, and the only real work remaining to be done
in the continuation of the recursive call is to fill in the cdr of the
pair. Thus, a compiler can safely transform this code into a truly
tail-recursive implementation:
(define (map f lst)
(match lst
(()
'())
((this . lst)
(define ret (list (f this)))
(let loop ((dest ret)
(lst lst))
(match lst
((this . lst)
(define new (list (f this)))
(set-cdr! dest new)
(loop new lst))
(()
ret))))))
Unlike the Proper Implementation of Tail Calls (so-called "tail-call
optimization"), handling "tail recursion modulo cons" truly is an
optimization: it does not change the space complexity of the function.
But it can allow the compiler to generate whatever code it thinks will
work best with its collector/allocator and continuation/"call stack"
implementation.
(The optimizations applies to constructors in general, not just 'cons',
and a compiler can safely apply it to values that are immutable from the
perspective of the source language.)
>
>> +;; Sadly, Guile's implementation of (@ (srfi srfi-1) alist-delete)
>> +;; performs unnecessary allocation, e.g. this currently evaluates to
>> #f:
>> +;;
>> +;; (let ((alist `(("a" . 1)("b" . 2)("c" . 3))))
>> +;; (eq? alist (alist-delete "x" alist)))
>> +;;
>> +;; These functions generally choose to allocate a new outer pair
>> (with the '@
>> +;; tag), even though in unusual cases the resulting object might not
>> have
>> +;; changed, for the sake of simplicity and to avoid retaining a
>> reference to
>> +;; the original alist longer than necessary. But that is O(1)
>> allocation that
>> +;; could only rarely be avoided: `alist-delete` would allocate O(n)
>> pairs,
>> +;; which would only be necessary in the worst case.
>> +(define (alist-delete* alist key)
>> + "Return an assosciation list like (and potentially sharing storage
>> with)
>> +ALIST, but with no entry for KEY."
>> + (define-values (_popped remaining)
>> + (alist-pop alist key))
>> + remaining)
> That's a pretty long comment around something that could be done with
> call-with-values or SRFI-71 let. I think one of these two should be
> preferred.
>
> Note that both our versions of alist-pop only pop the first key (as
> they should). This means that alist-delete* should really be called
> alist-delete-1 as in "remove the first pair in ALIST belonging to KEY".
> For the larger JSON handling below, this makes no difference however.
Here I was using '*' to mean "a slightly altered version of", as with
'letrec' and 'letrec*', but, yes, since the other functions defined here
use '*' to mean "zero or more times", the name is confusing: I think I'd
just call it 'alist-delete' and not import (srfi srfi-1)'s version.
The comment may be unnecessarily long ... the essence of what I was
trying to explain is that, in all of these implementations, I've tried
to avoid unnecessary allocation. Being able to rely on 'alist-delete',
and more generally 'alist-pop', not to needlessly copy the "spine" of
the list lets later functions use them unconditionally.
Why would you prefer 'call-with-values' or SRFI-71 over 'define-values'?
The style guide against which I'm used to working [3] generally prefers
internal definitions, to avoid rightward drift.
[3]:
https://docs.racket-lang.org/style/Choosing_the_Right_Construct.html#%28part._.Definitions%29
>> +(define (alist-set alist key value)
>> + "Return an assosciation list like ALIST, but with KEY mapped to
>> VALUE,
>> +replacing any existing mapping for KEY."
>> + (acons key value (alist-delete* alist key)))
> Is order relevant here? Because we could just as well reimplement our
> alist-delete* loop and cons the replacement onto the rest. WDYT?
Relying on order for JSON objects is non-interoperable, per RFC 8259 §
4. I'm not intending for these alist procedures to be exported, so I'm
not trying to handle any more general case than that, as I explain in
the comments at the top of the file.
I'm not sure what the advantage would be to reimplementing the
'alist-delete' loop here.
>
>> +(define (jsobject-set js key value)
>> + "Return a json object like JS, but with KEY mapped to VALUE,
>> replacing any
>> +existing mapping for KEY."
>> + (cons '@ (match js
>> + (('@ . alist)
>> + (alist-set alist key value)))))
> I think it'd be wiser to put the cons inside the match.
>
I don't care very much either way.
>> +(define jsobject-set*
>> + (case-lambda
>> + "Return a json object like JS, but functionally extended by
>> mapping each
>> +KEY to each VALUE, replacing any existing mapping for each KEY. The
>> update
>> +takes place from left to right, so later mappings overwrite earlier
>> mappings
>> +for the same KEY."
>> + ((js)
>> + js)
>> + ((js key value)
>> + (jsobject-set js key value))
>> + ((js . args)
>> + (cons '@ (match js
>> + (('@ . alist)
>> + (let loop ((alist alist)
>> + (args args))
>> + (match args
>> + (()
>> + alist)
>> + ((key value . args)
>> + (loop (alist-set alist key value)
>> + args))))))))))
> I'm not sure if I like this "syntax". I think I'd prefer
> (jsobject-set* obj (FIELD1 VALUE1) (FIELD2 VALUE2) ...)
> with FIELD1, FIELD2 being identifiers
> WDYT?
So you would make 'jsobject-set*' a macro? When you say, "with FIELD1,
FIELD2 being identifiers", do you mean that the macro should convert
them to strings at compile-time? While, if I were designing a JSON
representation, I'd much prefer to use symbols for the object keys, I
think it would be confusing to use strings everywhere else but magic
symbols here.
I based this function on 'hash-set*' [4], 'dict-set*' [5], and numerous
similar functions in the Racket world, so I have a high degree of
confidence in the usability of the interface.
[4]:
https://docs.racket-lang.org/reference/hashtables.html#%28def._%28%28lib._racket%2Fprivate%2Fbase..rkt%29._hash-set%2A%29%29
[5]:
https://docs.racket-lang.org/reference/dicts.html#%28def._%28%28lib._racket%2Fdict..rkt%29._dict-set%2A%29%29
>> +(define (alist-update alist key failure-result updater)
>> + "Return an assosciation list like ALIST, but with KEY mapped to
>> the result
>> +of applying UPDATER to the value to which KEY is mapped in ALIST.
>> When ALIST
>> +does not have an existing mapping for KEY, FAILURE-RESULT is used as
>> with
>> +'jsobject-ref' to obtain the argument for UPDATER."
>> + ;; Often, `updater` will be a lambda expression, so making it the
>> last
>> + ;; argument may help to makes the code legible, and the most
>> likely
>> + ;; `failure-result` arguments are all shorter than the keyword
>> + ;; `#:failure-result`. Plus, making `failure-result` mandatory
>> helps make
>> + ;; `alist-update` consistent with `alist-update*`.
> Which alist-update* are you referring to here? Either way, the
> failure-result to default argument from above applies, but we could
> keyword it.
Ah, I guess read that as, "Plus, making 'default' mandatory helps make
'jsobject-update' consistent with 'jsobject-update*'."
>> + (define-values (popped tail-alist)
>> + (alist-pop alist key))
>> + (acons key
>> + (updater (match popped
>> + (#f
>> + (if (procedure? failure-result)
>> + (failure-result)
>> + failure-result))
>> + ((_ . value)
>> + value)))
>> + tail-alist))
> SRFI-71 let says hi. Also the ordering question applies. I'm starting
> to think we should implement alist-pop, alist-set and alist-update in
> terms of a single more powerful function producing three values (or
> SRFI-1 span).
Same question again re 'define-values'.
My intent in creating 'alist-pop' was to have a primitive that would
work for both 'alist-update' and 'alist-delete', and thereby
'alist-set'. Returning the prefix and the tail separately would involve
either extra allocation or mutating pairs. Since order never matters in
this context, why pay that price?
>> +(define* (jsobject-union #:key
>> + (combine (lambda (a b) b))
>> + (combine/key (lambda (k a b) (combine a
>> b)))
>> + #:rest json-objects)
>> + "Combine the given JSON-OBJECTS into a single json object. The
>> JSON-OBJECTS
>> +are merged from left to right by adding each key/value pair of each
>> object to
>> +the aggregate object in turn. When one of the JSON-OBJECTS contains
>> a mapping
>> +from some key KEY to a value VAL such that the aggregate object
>> already
>> +contains a mapping from KEY to a value VAL0, the aggregate object is
>> +functionally updated to instead map KEY to the value of (COMBINE/KEY
>> KEY VAL0
>> +VAL). The default COMBINE/KEY tail-calls (COMBINE VAL0 VAL), and
>> the default
>> +COMBINE simply returns its second argument, so, by default, mappings
>> in later
>> +JSON-OBJECTS supersede those in earlier ones."
>> + (match (filter (lambda (v)
>> + (not (or (keyword? v)
>> + (procedure? v))))
>> + json-objects)
>> + (()
>> + '(@))
>> + (((and js0 ('@ . _)))
>> + js0)
>> + ((('@ . alist0) ('@ . alist*) ...)
>> + (cons '@ (fold (lambda (alist1 alist0)
>> + (if (null? alist0)
>> + alist1
>> + (fold (lambda (k+v alist0)
>> + (match k+v
>> + ((k . v)
>> + (define-values (popped tail-
>> alist)
>> + (alist-pop alist0 k))
>> + (match popped
>> + (#f
>> + (cons k+v tail-alist))
>> + ((_ . v0)
>> + (acons k
>> + (combine/key k v0 v)
>> + tail-alist))))))
>> + alist0
>> + alist1)))
>> + alist0
>> + alist*)))))
> Same default argument. Cons inside.
> I think having a single combine function taking (k a b) would be less
> confusing than having two. Is there a rationale for the form you
> chose?
I based this function in particular on 'hash-union' from 'racket/hash'
[6], which uses these keywords. (But in 'hash-union', collisions trigger
an exception by default, and it requires at least one argument, because
otherwise it would be unclear what key-comparison function the result
should use.)
Having '#:combine' in addition to '#:combine/key' is ultimately just a
convenience, but it is quite a nice convenience in practice. It is quite
rare, in my experience, for a '#:combine' function to actually depend on
the key: it might depend on the type of the value, but, very often, it
unconditionally applies to all keys. Using '#:combine' is particularly
nice when using a combination function that already exists, like
'append' or '+'.
[6]:
https://docs.racket-lang.org/reference/hashtables.html#%28def._%28%28lib._racket%2Fhash..rkt%29._hash-union%29%29
>> + (with-atomic-json-file-replacement "package.json"
>> + (lambda (pkg-meta)
>> + (jsobject-update*
>> + pkg-meta
>> + "devDependencies" '(@) resolve-dependencies
>> + "dependencies" '(@) (lambda (deps)
>> + (resolve-dependencies
>> + (jsobject-union
>> + (jsobject-ref pkg-meta
>> "peerDependencies" '(@))
>> + deps))))))
>> #t)
> We should probably add a function to our js utils that "generates an
> empty object", because '(@) is quite confusing to see in these
> circumstances. Otherwise LGTM with the aforementioned caveats.
I'm not sure what to call it: it would have to be short, or people (me,
at least) might end up writing '(@) anyway. Also, IIUC Guile doesn't
actually prevent you from mutating quoted constant pairs, so I function
would have to allocate a fresh pair to be robust.
It's a somewhat odd idea, but how about this?
(define-syntax |{}| (identifier-syntax '(@)))
It's as short as '(@), it looks like the JSON notation for the empty
object, and IIUC people could only use it to mess up occurrences of '(@)
within the same compilation unit, which we can't stop them from doing
anyway.
Alternatively, if we give up the thunk special case for 'default'
values, we could do:
(define jsobject-update
(case-lambda
((js key updater)
(jsobject-update js key '(@) updater))
((js key default updater)
...)))
(define jsobject-update*
(case-lambda
...
((js . args)
(match js
(('@ . alist)
(cons '@ (let loop ((alist alist)
(args args))
(match args
(()
alist)
((key (? procedure? updater) . args)
(loop (alist-update alist key '(@) updater)
args))
((key default updater . args)
(loop (alist-update alist key '(@) updater)
args))))))))))
-Philip
next prev parent reply other threads:[~2021-12-31 5:23 UTC|newest]
Thread overview: 458+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-14 12:41 [bug#51838] [PATCH 00/11] guix: node-build-system: Support compiling add-ons with node-gyp Philip McGrath
2021-11-14 12:58 ` [bug#51838] [PATCH 01/11] gnu: node: Avoid duplicating build phases Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 02/11] gnu: node: Update to 10.24.1 for bootstrapping Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 03/11] guix: node-build-system: Support compiling add-ons with node-gyp Philip McGrath
2021-11-14 20:44 ` Liliana Marie Prikler
2021-11-20 4:26 ` Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 01/26] gnu: node: Avoid duplicating build phases Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 02/26] gnu: node: Update to 10.24.1 for bootstrapping Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 03/26] gnu: node: Patch shebangs in node_modules Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 04/26] gnu: node: Add an npmrc file to set nodedir Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 05/26] guix: node-build-system: Add #:absent-dependencies argument Philip McGrath
2021-11-20 7:41 ` Liliana Marie Prikler
2021-11-20 17:04 ` Philip McGrath
2021-11-20 20:24 ` Liliana Marie Prikler
2021-11-28 19:27 ` [bug#51838] [PATCH 00/11] guix: node-build-system: Support compiling add-ons with node-gyp Timothy Sample
2021-12-02 21:50 ` Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 06/26] gnu: node-semver-bootstrap: Use #:absent-dependencies Philip McGrath
2021-11-20 7:43 ` Liliana Marie Prikler
2021-11-20 4:33 ` [bug#51838] [PATCH v2 07/26] gnu: node-ms-bootstrap: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 08/26] gnu: node-binary-search-bootstrap: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 09/26] gnu: node-debug-bootstrap: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 10/26] gnu: node-llparse-builder-bootstrap: " Philip McGrath
2021-11-20 7:44 ` Liliana Marie Prikler
2021-11-20 17:09 ` Philip McGrath
2021-11-23 11:04 ` Jelle Licht
2021-11-28 19:35 ` [bug#51838] [PATCH 00/11] guix: node-build-system: Support compiling add-ons with node-gyp Timothy Sample
2021-12-02 21:18 ` Philip McGrath
2021-12-03 5:17 ` Liliana Marie Prikler
2021-12-08 20:27 ` [bug#51838] [PATCH v3 00/43] " Philip McGrath
2021-12-08 20:27 ` [bug#51838] [PATCH v3 01/43] gnu: node: Avoid duplicating build phases Philip McGrath
2021-12-08 20:27 ` [bug#51838] [PATCH v3 02/43] gnu: node: Update to 10.24.1 for bootstrapping Philip McGrath
2021-12-08 20:27 ` [bug#51838] [PATCH v3 03/43] gnu: node: Patch shebangs in node_modules Philip McGrath
2021-12-08 20:27 ` [bug#51838] [PATCH v3 04/43] gnu: node: Add an npmrc file to set nodedir Philip McGrath
2021-12-12 15:19 ` Pierre Langlois
2021-12-12 20:19 ` Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 00/45] guix: node-build-system: Support compiling add-ons with node-gyp Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 01/45] gnu: node: Avoid duplicating build phases Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 02/45] gnu: node: Update to 10.24.1 for bootstrapping Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 03/45] gnu: node: Patch shebangs in node_modules Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 04/45] gnu: node: Add an npmrc file to set nodedir Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 05/45] guix: node-build-system: Add delete-lockfiles phase Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 06/45] guix: node-build-system: Refactor patch-dependencies phase Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 07/45] guix: node-build-system: Add #:absent-dependencies argument Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 08/45] gnu: node-semver-bootstrap: Use #:absent-dependencies Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 09/45] gnu: node-ms-bootstrap: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 10/45] gnu: node-binary-search-bootstrap: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 11/45] gnu: node-debug-bootstrap: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 12/45] gnu: node-llparse-builder-bootstrap: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 13/45] gnu: node-llparse-frontend-bootstrap: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 14/45] gnu: node-llparse-bootstrap: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 15/45] gnu: node-semver: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 16/45] gnu: node-wrappy: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 17/45] gnu: node-once: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 18/45] gnu: node-irc-colors: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 19/45] gnu: node-irc: " Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 20/45] guix: node-build-system: Add implicit libuv input Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 21/45] guix: node-build-system: Add avoid-node-gyp-rebuild phase Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 22/45] gnu: Add node-inherits Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 23/45] gnu: Add node-safe-buffer Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 24/45] gnu: Add node-string-decoder Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 25/45] gnu: Add node-readable-stream Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 26/45] gnu: Add node-nan Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 27/45] gnu: Add node-openzwave-shared Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 28/45] gnu: Add node-addon-api Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 29/45] gnu: Add node-sqlite3 Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 30/45] gnu: Add node-file-uri-to-path Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 31/45] gnu: Add node-bindings Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 32/45] gnu: Add node-segfault-handler Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 33/45] gnu: Add node-ms Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 34/45] gnu: Add node-debug Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 35/45] gnu: Add node-serialport-binding-abstract Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 36/45] gnu: Add node-serialport-parser-delimiter Philip McGrath
2021-12-13 6:00 ` [bug#51838] [PATCH v4 37/45] gnu: Add node-serialport-parser-readling Philip McGrath
2021-12-13 6:01 ` [bug#51838] [PATCH v4 38/45] gnu: Add node-serialport-bindings Philip McGrath
2021-12-13 6:01 ` [bug#51838] [PATCH v4 39/45] gnu: Add node-serialport-parser-regex Philip McGrath
2021-12-13 6:01 ` [bug#51838] [PATCH v4 40/45] gnu: Add node-serialport-parser-ready Philip McGrath
2021-12-13 6:01 ` [bug#51838] [PATCH v4 41/45] gnu: Add node-serialport-parser-inter-byte-timeout Philip McGrath
2021-12-13 6:01 ` [bug#51838] [PATCH v4 42/45] gnu: Add node-serialport-parser-cctalk Philip McGrath
2021-12-13 6:01 ` [bug#51838] [PATCH v4 43/45] gnu: Add node-serialport-parser-byte-length Philip McGrath
2021-12-13 6:01 ` [bug#51838] [PATCH v4 44/45] gnu: Add node-serialport-stream Philip McGrath
2021-12-13 6:01 ` [bug#51838] [PATCH v4 45/45] gnu: Add node-serialport Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 00/45] guix: node-build-system: Support compiling add-ons with node-gyp Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 01/45] gnu: node: Avoid duplicating build phases Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 02/45] gnu: node: Update to 10.24.1 for bootstrapping Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 03/45] gnu: node: Patch shebangs in node_modules Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 04/45] gnu: node: Add an npmrc file to set nodedir Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 05/45] guix: node-build-system: Add delete-lockfiles phase Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 06/45] guix: node-build-system: Refactor patch-dependencies phase Philip McGrath
2021-12-17 4:29 ` Liliana Marie Prikler
2021-12-18 17:03 ` Philip McGrath
2021-12-18 17:52 ` Liliana Marie Prikler
2021-12-18 18:59 ` Timothy Sample
2021-12-20 18:03 ` Philip McGrath
2021-12-20 19:54 ` Liliana Marie Prikler
2021-12-21 3:40 ` Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 07/45] guix: node-build-system: Add #:absent-dependencies argument Philip McGrath
2021-12-17 4:43 ` Liliana Marie Prikler
2021-12-17 15:46 ` Timothy Sample
2021-12-17 19:40 ` Liliana Marie Prikler
2021-12-18 2:48 ` Timothy Sample
2021-12-18 8:30 ` Liliana Marie Prikler
2021-12-18 18:31 ` Philip McGrath
2021-12-18 20:49 ` Liliana Marie Prikler
2021-12-18 22:55 ` Philip McGrath
2021-12-19 1:02 ` Liliana Marie Prikler
2021-12-20 19:33 ` Philip McGrath
2021-12-20 20:15 ` Timothy Sample
2021-12-20 22:00 ` Liliana Marie Prikler
2021-12-21 3:59 ` Philip McGrath
2021-12-21 5:20 ` Liliana Marie Prikler
2021-12-21 18:25 ` Philip McGrath
2021-12-21 20:44 ` Liliana Marie Prikler
2021-12-23 4:41 ` Philip McGrath
2021-12-23 5:19 ` Philip McGrath
2021-12-23 18:12 ` Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v6 00/41] guix: node-build-system: Support compiling add-ons with node-gyp Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 01/41] guix: node-build-system: Add delete-lockfiles phase Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 02/41] guix: node-build-system: Add implicit libuv input Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 03/41] guix: node-build-system: Add JSON utilities Philip McGrath
2021-12-30 16:56 ` Liliana Marie Prikler
2021-12-30 18:18 ` Liliana Marie Prikler
2021-12-31 5:22 ` Philip McGrath [this message]
2021-12-31 10:18 ` Liliana Marie Prikler
2022-01-08 4:13 ` Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 04/41] guix: node-build-system: Add avoid-node-gyp-rebuild phase Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 05/41] guix: node-build-system: Add 'delete-dependencies' helper function Philip McGrath
2021-12-30 17:29 ` Liliana Marie Prikler
2021-12-31 1:09 ` Philip McGrath
2021-12-31 2:46 ` Liliana Marie Prikler
2022-01-05 19:08 ` Philip McGrath
2022-01-05 20:02 ` Leo Famulari
2022-01-06 16:50 ` Liliana Marie Prikler
2022-01-06 17:28 ` Leo Famulari
2022-01-05 21:04 ` Liliana Marie Prikler
2022-01-05 22:58 ` Liliana Marie Prikler
2022-01-08 4:14 ` Philip McGrath
2022-01-08 7:59 ` Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v6 06/41] gnu: node-semver-bootstrap: Use 'delete-dependencies' Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 07/41] gnu: node-ms-bootstrap: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 08/41] gnu: node-binary-search-bootstrap: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 09/41] gnu: node-debug-bootstrap: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 10/41] gnu: node-llparse-builder-bootstrap: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 11/41] gnu: node-llparse-frontend-bootstrap: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 12/41] gnu: node-llparse-bootstrap: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 13/41] gnu: node-semver: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 14/41] gnu: node-wrappy: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 15/41] gnu: node-once: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 16/41] gnu: node-irc-colors: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 17/41] gnu: node-irc: " Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 18/41] gnu: Add node-inherits Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 19/41] gnu: Add node-safe-buffer Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 20/41] gnu: Add node-string-decoder Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v6 21/41] gnu: Add node-readable-stream Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 22/41] gnu: Add node-nan Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 23/41] gnu: Add node-openzwave-shared Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 24/41] gnu: Add node-addon-api Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 25/41] gnu: Add node-sqlite3 Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 26/41] gnu: Add node-file-uri-to-path Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 27/41] gnu: Add node-bindings Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 28/41] gnu: Add node-segfault-handler Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 29/41] gnu: Add node-ms Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 30/41] gnu: Add node-debug Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 31/41] gnu: Add node-serialport-binding-abstract Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 32/41] gnu: Add node-serialport-parser-delimiter Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 33/41] gnu: Add node-serialport-parser-readline Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 34/41] gnu: Add node-serialport-bindings Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 35/41] gnu: Add node-serialport-parser-regex Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 36/41] gnu: Add node-serialport-parser-ready Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 37/41] gnu: Add node-serialport-parser-inter-byte-timeout Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 38/41] gnu: Add node-serialport-parser-cctalk Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 39/41] gnu: Add node-serialport-parser-byte-length Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 40/41] gnu: Add node-serialport-stream Philip McGrath
2021-12-30 7:39 ` [bug#51838] [PATCH v6 41/41] gnu: Add node-serialport Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 00/41] guix: node-build-system: Support compiling add-ons with node-gyp Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 01/41] guix: node-build-system: Add delete-lockfiles phase Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 02/41] guix: node-build-system: Add implicit libuv input Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 03/41] guix: node-build-system: Add JSON utilities Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 04/41] guix: node-build-system: Add avoid-node-gyp-rebuild phase Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 05/41] guix: node-build-system: Add #:absent-dependencies argument Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 06/41] gnu: node-semver-bootstrap: Use #:absent-dependencies Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 07/41] gnu: node-ms-bootstrap: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 08/41] gnu: node-binary-search-bootstrap: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 09/41] gnu: node-debug-bootstrap: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 10/41] gnu: node-llparse-builder-bootstrap: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 11/41] gnu: node-llparse-frontend-bootstrap: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 12/41] gnu: node-llparse-bootstrap: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 13/41] gnu: node-semver: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 14/41] gnu: node-wrappy: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 15/41] gnu: node-once: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 16/41] gnu: node-irc-colors: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 17/41] gnu: node-irc: " Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 18/41] gnu: Add node-inherits Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 19/41] gnu: Add node-safe-buffer Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 20/41] gnu: Add node-string-decoder Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 21/41] gnu: Add node-readable-stream Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 22/41] gnu: Add node-nan Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 23/41] gnu: Add node-openzwave-shared Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 24/41] gnu: Add node-addon-api Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 25/41] gnu: Add node-sqlite3 Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 26/41] gnu: Add node-file-uri-to-path Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 27/41] gnu: Add node-bindings Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 28/41] gnu: Add node-segfault-handler Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 29/41] gnu: Add node-ms Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 30/41] gnu: Add node-debug Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 31/41] gnu: Add node-serialport-binding-abstract Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 32/41] gnu: Add node-serialport-parser-delimiter Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 33/41] gnu: Add node-serialport-parser-readline Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 34/41] gnu: Add node-serialport-bindings Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 35/41] gnu: Add node-serialport-parser-regex Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 36/41] gnu: Add node-serialport-parser-ready Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 37/41] gnu: Add node-serialport-parser-inter-byte-timeout Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 38/41] gnu: Add node-serialport-parser-cctalk Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 39/41] gnu: Add node-serialport-parser-byte-length Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 40/41] gnu: Add node-serialport-stream Philip McGrath
2021-12-30 7:44 ` [bug#51838] [PATCH v7 41/41] gnu: Add node-serialport Philip McGrath
2021-12-30 20:03 ` [bug#51838] [PATCH v6 00/41] guix: node-build-system: Support compiling add-ons with node-gyp Ryan Sundberg via Guix-patches via
2021-12-20 21:50 ` [bug#51838] [PATCH v5 07/45] guix: node-build-system: Add #:absent-dependencies argument Liliana Marie Prikler
2021-12-20 23:10 ` Jelle Licht
2021-12-20 23:33 ` Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 08/45] gnu: node-semver-bootstrap: Use #:absent-dependencies Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 09/45] gnu: node-ms-bootstrap: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 10/45] gnu: node-binary-search-bootstrap: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 11/45] gnu: node-debug-bootstrap: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 12/45] gnu: node-llparse-builder-bootstrap: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 13/45] gnu: node-llparse-frontend-bootstrap: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 14/45] gnu: node-llparse-bootstrap: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 15/45] gnu: node-semver: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 16/45] gnu: node-wrappy: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 17/45] gnu: node-once: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 18/45] gnu: node-irc-colors: " Philip McGrath
2021-12-17 2:02 ` [bug#51838] [PATCH v5 19/45] gnu: node-irc: " Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 20/45] guix: node-build-system: Add implicit libuv input Philip McGrath
2021-12-17 5:08 ` Liliana Marie Prikler
2021-12-18 16:16 ` Philip McGrath
2021-12-18 17:01 ` Liliana Marie Prikler
2021-12-19 20:34 ` Jelle Licht
2021-12-18 17:07 ` Philip McGrath
2021-12-19 20:41 ` Jelle Licht
2021-12-19 20:54 ` Liliana Marie Prikler
2021-12-17 2:03 ` [bug#51838] [PATCH v5 21/45] guix: node-build-system: Add avoid-node-gyp-rebuild phase Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 22/45] gnu: Add node-inherits Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 23/45] gnu: Add node-safe-buffer Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 24/45] gnu: Add node-string-decoder Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 25/45] gnu: Add node-readable-stream Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 26/45] gnu: Add node-nan Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 27/45] gnu: Add node-openzwave-shared Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 28/45] gnu: Add node-addon-api Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 29/45] gnu: Add node-sqlite3 Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 30/45] gnu: Add node-file-uri-to-path Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 31/45] gnu: Add node-bindings Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 32/45] gnu: Add node-segfault-handler Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 33/45] gnu: Add node-ms Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 34/45] gnu: Add node-debug Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 35/45] gnu: Add node-serialport-binding-abstract Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 36/45] gnu: Add node-serialport-parser-delimiter Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 37/45] gnu: Add node-serialport-parser-readline Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 38/45] gnu: Add node-serialport-bindings Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 39/45] gnu: Add node-serialport-parser-regex Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 40/45] gnu: Add node-serialport-parser-ready Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 41/45] gnu: Add node-serialport-parser-inter-byte-timeout Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 42/45] gnu: Add node-serialport-parser-cctalk Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 43/45] gnu: Add node-serialport-parser-byte-length Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 44/45] gnu: Add node-serialport-stream Philip McGrath
2021-12-17 2:03 ` [bug#51838] [PATCH v5 45/45] gnu: Add node-serialport Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 05/43] guix: node-build-system: Refactor patch-dependencies phase Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 06/43] guix: node-build-system: Add #:absent-dependencies argument Philip McGrath
2021-12-12 15:31 ` Pierre Langlois
2021-12-12 20:22 ` Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 07/43] gnu: node-semver-bootstrap: Use #:absent-dependencies Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 08/43] gnu: node-ms-bootstrap: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 09/43] gnu: node-binary-search-bootstrap: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 10/43] gnu: node-debug-bootstrap: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 11/43] gnu: node-llparse-builder-bootstrap: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 12/43] gnu: node-llparse-frontend-bootstrap: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 13/43] gnu: node-llparse-bootstrap: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 14/43] gnu: node-semver: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 15/43] gnu: node-wrappy: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 16/43] gnu: node-once: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 17/43] gnu: node-irc-colors: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 18/43] gnu: node-irc: " Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 19/43] guix: node-build-system: Add implicit libuv input Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 20/43] guix: node-build-system: Add delete-lockfiles phase Philip McGrath
2021-12-12 16:09 ` Pierre Langlois
2021-12-12 21:26 ` Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 21/43] guix: node-build-system: Add avoid-node-gyp-rebuild phase Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 22/43] gnu: Add node-inherits Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 23/43] gnu: Add node-safe-buffer Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 24/43] gnu: Add node-string-decoder Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 25/43] gnu: Add node-readable-stream Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 26/43] gnu: Add node-nan Philip McGrath
2021-12-12 16:17 ` Pierre Langlois
2021-12-12 21:33 ` Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 27/43] gnu: Add node-openzwave-shared Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 28/43] gnu: Add node-addon-api Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 29/43] gnu: Add node-sqlite3 Philip McGrath
2021-12-12 15:42 ` Pierre Langlois
2021-12-12 21:18 ` Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 30/43] gnu: Add node-file-uri-to-path Philip McGrath
2021-12-12 16:26 ` Pierre Langlois
2021-12-12 21:34 ` Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 31/43] gnu: Add node-bindings Philip McGrath
2021-12-12 15:57 ` Pierre Langlois
2021-12-12 21:20 ` Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 32/43] gnu: Add node-segfault-handler Philip McGrath
2021-12-12 16:31 ` Pierre Langlois
2021-12-12 21:38 ` Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 33/43] gnu: Add node-serialport-binding-abstract Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 34/43] gnu: Add node-serialport-parser-delimiter Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 35/43] gnu: Add node-serialport-parser-readling Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 36/43] gnu: Add node-serialport-bindings Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 37/43] gnu: Add node-serialport-parser-regex Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 38/43] gnu: Add node-serialport-parser-ready Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 39/43] gnu: Add node-serialport-parser-inter-byte-timeout Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 40/43] gnu: Add node-serialport-parser-cctalk Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 41/43] gnu: Add node-serialport-parser-byte-length Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 42/43] gnu: Add node-serialport-stream Philip McGrath
2021-12-08 20:28 ` [bug#51838] [PATCH v3 43/43] gnu: Add node-serialport Philip McGrath
2021-12-12 16:01 ` [bug#51838] [PATCH v3 00/43] guix: node-build-system: Support compiling add-ons with node-gyp Pierre Langlois
2021-12-12 16:36 ` Pierre Langlois
2021-12-12 21:45 ` Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 11/26] gnu: node-llparse-frontend-bootstrap: Use #:absent-dependencies Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 12/26] gnu: node-llparse-bootstrap: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 13/26] gnu: node-semver: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 14/26] gnu: node-wrappy: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 15/26] gnu: node-once: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 16/26] gnu: node-irc-colors: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 17/26] gnu: node-irc: " Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 18/26] guix: node-build-system: Add optional #:libuv? argument Philip McGrath
2021-11-20 7:46 ` Liliana Marie Prikler
2021-11-20 17:16 ` Philip McGrath
2021-11-20 4:33 ` [bug#51838] [PATCH v2 19/26] gnu: Add node-inherits Philip McGrath
2021-11-20 4:34 ` [bug#51838] [PATCH v2 20/26] gnu: Add node-safe-buffer Philip McGrath
2021-11-20 4:34 ` [bug#51838] [PATCH v2 21/26] gnu: Add node-string-decoder Philip McGrath
2021-11-20 4:34 ` [bug#51838] [PATCH v2 22/26] gnu: Add node-readable-stream Philip McGrath
2021-11-20 4:34 ` [bug#51838] [PATCH v2 23/26] gnu: Add node-nan Philip McGrath
2021-11-20 4:34 ` [bug#51838] [PATCH v2 24/26] gnu: Add node-openzwave-shared Philip McGrath
2021-11-20 4:34 ` [bug#51838] [PATCH v2 25/26] gnu: Add node-addon-api Philip McGrath
2021-11-20 4:34 ` [bug#51838] [PATCH v2 26/26] gnu: Add node-sqlite3 Philip McGrath
2021-11-20 7:48 ` Liliana Marie Prikler
2021-11-20 5:10 ` [bug#51838] [PATCH 03/11] guix: node-build-system: Support compiling add-ons with node-gyp Philip McGrath
2021-11-20 7:28 ` Liliana Marie Prikler
2021-11-14 13:04 ` [bug#51838] [PATCH 04/11] gnu: Add node-inherits Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 05/11] gnu: Add node-safe-buffer Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 06/11] gnu: Add node-string-decoder Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 07/11] gnu: Add node-readable-stream Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 08/11] gnu: Add node-nan Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 09/11] gnu: Add node-openzwave-shared Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 10/11] gnu: Add node-addon-api Philip McGrath
2021-11-14 13:04 ` [bug#51838] [PATCH 11/11] gnu: Add node-sqlite3 Philip McGrath
2021-11-20 17:38 ` [bug#51838] [PATCH v2 04/26] gnu: node: Add an npmrc file to set nodedir Timothy Sample
2021-11-20 19:55 ` [bug#51838] [PATCH 00/11] guix: node-build-system: Support compiling add-ons with node-gyp Timothy Sample
2021-12-02 21:52 ` Philip McGrath
2021-11-20 20:04 ` Timothy Sample
2021-12-02 22:02 ` Philip McGrath
2021-11-20 20:08 ` Timothy Sample
2021-11-23 20:54 ` Pierre Langlois
2021-11-28 19:59 ` Timothy Sample
2021-12-02 22:22 ` Philip McGrath
2021-12-30 7:38 ` [bug#51838] [PATCH v8 01/41] guix: node-build-system: Add delete-lockfiles phase Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 02/41] guix: node-build-system: Add implicit libuv input Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 03/41] guix: node-build-system: Add JSON utilities Liliana Marie Prikler
2022-01-08 4:13 ` Philip McGrath
2022-01-08 7:00 ` Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 04/41] guix: node-build-system: Add avoid-node-gyp-rebuild phase Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 05/41] guix: node-build-system: Add 'delete-dependencies' helper function Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 06/41] gnu: node-semver-bootstrap: Use 'delete-dependencies' Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 07/41] gnu: node-ms-bootstrap: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 08/41] gnu: node-binary-search-bootstrap: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 09/41] gnu: node-debug-bootstrap: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 10/41] gnu: node-llparse-builder-bootstrap: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 11/41] gnu: node-llparse-frontend-bootstrap: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 12/41] gnu: node-llparse-bootstrap: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 13/41] gnu: node-semver: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 14/41] gnu: node-wrappy: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 15/41] gnu: node-once: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 16/41] gnu: node-irc-colors: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 17/41] gnu: node-irc: " Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 18/41] gnu: Add node-inherits Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 19/41] gnu: Add node-safe-buffer Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 20/41] gnu: Add node-string-decoder Liliana Marie Prikler
2021-12-30 7:38 ` [bug#51838] [PATCH v8 21/41] gnu: Add node-readable-stream Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 22/41] gnu: Add node-nan Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 23/41] gnu: Add node-openzwave-shared Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 24/41] gnu: Add node-addon-api Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 25/41] gnu: Add node-sqlite3 Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 26/41] gnu: Add node-file-uri-to-path Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 27/41] gnu: Add node-bindings Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 28/41] gnu: Add node-segfault-handler Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 29/41] gnu: Add node-ms Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 30/41] gnu: Add node-debug Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 31/41] gnu: Add node-serialport-binding-abstract Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 32/41] gnu: Add node-serialport-parser-delimiter Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 33/41] gnu: Add node-serialport-parser-readline Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 34/41] gnu: Add node-serialport-bindings Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 35/41] gnu: Add node-serialport-parser-regex Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 36/41] gnu: Add node-serialport-parser-ready Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 37/41] gnu: Add node-serialport-parser-inter-byte-timeout Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 38/41] gnu: Add node-serialport-parser-cctalk Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 39/41] gnu: Add node-serialport-parser-byte-length Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 40/41] gnu: Add node-serialport-stream Liliana Marie Prikler
2021-12-30 7:39 ` [bug#51838] [PATCH v8 41/41] gnu: Add node-serialport Liliana Marie Prikler
2022-01-06 17:45 ` [bug#51838] [PATCH v8 00/41] guix: node-build-system: Support compiling add-ons with node-gyp Liliana Marie Prikler
2022-01-07 16:49 ` Timothy Sample
2022-01-07 19:43 ` Liliana Marie Prikler
2022-01-07 21:02 ` Jelle Licht
2022-01-07 22:20 ` Liliana Marie Prikler
2022-01-07 23:07 ` Jelle Licht
2022-01-08 0:20 ` Liliana Marie Prikler
2022-01-07 21:07 ` Philip McGrath
2022-01-07 23:06 ` Liliana Marie Prikler
2022-01-07 22:11 ` Philip McGrath
2022-01-07 23:47 ` Liliana Marie Prikler
2022-01-08 4:14 ` Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 " Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 01/41] guix: node-build-system: Add delete-lockfiles phase Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 02/41] guix: node-build-system: Add implicit libuv input Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 03/41] guix: node-build-system: Add JSON utilities Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 04/41] guix: node-build-system: Add avoid-node-gyp-rebuild phase Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 05/41] guix: node-build-system: Add 'delete-dependencies' helper function Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 06/41] gnu: node-semver-bootstrap: Use 'delete-dependencies' Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 07/41] gnu: node-ms-bootstrap: " Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 08/41] gnu: node-binary-search-bootstrap: " Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 09/41] gnu: node-debug-bootstrap: " Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 10/41] gnu: node-llparse-builder-bootstrap: " Philip McGrath
2022-01-08 8:41 ` [bug#51838] [PATCH v9 11/41] gnu: node-llparse-frontend-bootstrap: " Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 12/41] gnu: node-llparse-bootstrap: " Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 13/41] gnu: node-semver: " Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 14/41] gnu: node-wrappy: " Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 15/41] gnu: node-once: " Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 16/41] gnu: node-irc-colors: " Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 17/41] gnu: node-irc: " Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 18/41] gnu: Add node-inherits Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 19/41] gnu: Add node-safe-buffer Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 20/41] gnu: Add node-string-decoder Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 21/41] gnu: Add node-readable-stream Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 22/41] gnu: Add node-nan Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 23/41] gnu: Add node-openzwave-shared Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 24/41] gnu: Add node-addon-api Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 25/41] gnu: Add node-sqlite3 Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 26/41] gnu: Add node-file-uri-to-path Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 27/41] gnu: Add node-bindings Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 28/41] gnu: Add node-segfault-handler Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 29/41] gnu: Add node-ms Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 30/41] gnu: Add node-debug Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 31/41] gnu: Add node-serialport-binding-abstract Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 32/41] gnu: Add node-serialport-parser-delimiter Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 33/41] gnu: Add node-serialport-parser-readline Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 34/41] gnu: Add node-serialport-bindings Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 35/41] gnu: Add node-serialport-parser-regex Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 36/41] gnu: Add node-serialport-parser-ready Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 37/41] gnu: Add node-serialport-parser-inter-byte-timeout Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 38/41] gnu: Add node-serialport-parser-cctalk Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 39/41] gnu: Add node-serialport-parser-byte-length Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 40/41] gnu: Add node-serialport-stream Philip McGrath
2022-01-08 8:42 ` [bug#51838] [PATCH v9 41/41] gnu: Add node-serialport Philip McGrath
2022-01-08 11:19 ` [bug#51838] [PATCH v9 00/41] guix: node-build-system: Support compiling add-ons with node-gyp Liliana Marie Prikler
2022-01-08 15:33 ` Philip McGrath
2022-01-09 1:19 ` bug#51838: " Liliana Marie Prikler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c50c6932-b046-ed5e-d8b3-ec2762cc1fde@philipmcgrath.com \
--to=philip@philipmcgrath.com \
--cc=51838@debbugs.gnu.org \
--cc=jlicht@fsfe.org \
--cc=liliana.prikler@gmail.com \
--cc=pierre.langlois@gmx.com \
--cc=samplet@ngyro.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.