guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#51838] [PATCH v5 07/45] guix: node-build-system: Add #:absent-depen


From: Philip McGrath
Subject: [bug#51838] [PATCH v5 07/45] guix: node-build-system: Add #:absent-dependencies argument.
Date: Tue, 21 Dec 2021 13:25:50 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.1

Hi,

On 12/21/21 00:20, Liliana Marie Prikler wrote:
Hi,

excuse my brevity, but I'll be off to work soon.

Am Montag, dem 20.12.2021 um 22:59 -0500 schrieb Philip McGrath:
My reservation regarding:


(add-after 'patch-dependencies 'drop-junk
    (lambda _
      (with-atomic-json-replacement "package.json"
        (lambda (json) (delete-dependencies json '("node-tap"))))))


is that `with-atomic-json-replacement` would make (guix build json)'s
representation a part of node-build-system's API, which it currently
is not. For the reasons I detailed in my last email, I think that
would open up a larger can of worms than it might seem.
That might be a valid concern, but I'd point to the "we don't
gratuitously change API" shield.  Plus if we do, we'd replace our
current JSON by Guile-JSON.  If that has a different internal
representation that would awfully break things, please do tell.

Here are, to the best of my understanding, the differences in representation among (guix build json) and the three versions of guile-json packaged in Guix. (For guile-json, this is based on my relatively-quick reading of the docs, not any direct experience.) An extra complication is that some part of Guix's code staging seems to incorrectly turn #nil into '(). I will see if I can narrow that down and file a bug report.

(guix build json):
  • object -> (Pairof '@ (Listof (Pairof String Json)))
  • array  -> (Listof Json)
  • null   -> #nil
  • string -> String

guile-json-4:
  • object -> (Listof (Pairof (U Symbol Number String) Json))
  • array  -> (Vectorof Json)
  • null   -> 'null ;; configurable by keyword argument
  • string -> (U Symbol String)

guile-json-3:
  • object -> (Listof (Pairof (U Symbol Number String) Json))
  • array  -> (Vectorof Json)
  • null   -> #nil
  • string -> (U Symbol String)

guile-json-1:
  • object -> (U (HashTable (U Symbol String) Json)
                 (Listof (Pairof (U Symbol String) Json)))
  • array  -> (Listof Json)
  • null   -> #nil
  • string -> (U Symbol String)

-Philip





reply via email to

[Prev in Thread] Current Thread [Next in Thread]