Subject: [bug#51838] [PATCH 00/11] guix: node-build-system: Support compiling add-ons with node-gyp.

From: Philip McGrath <[email-masked]>
Date: Thu, 2 Dec 2021 17:22:26 -0500

Hi,

On 11/28/21 14:59, Timothy Sample wrote:
> Pierre Langlois <[email-masked]> writes:
>> The overall approach looks good to me, it's better than what I
>> originally proposed for sure :-).  That being said, I'm not very
>> familiar with the Node.js ecosystem so I don't know if it's necessarily
>> the right way, but I suspect the correct way for node isn't very Guix-y
>> so I'm not too worried about that.
> 
> The whole Node.js bundles NPM, which bundles node-gyp, which bundles a
> fork of GYP [1] is not very Guix-y at all, no.  :/  This is one of those
> problems (like bootstrapping GCC) that will take years of incremental
> improvements and side projects and all that.

It's something of a tangent, but, as I discussed briefly with Pierre in 
e.g. <https://issues.guix.gnu.org/49946#73>, I think it would make a lot 
of sense, even if we can't unbundle/bootstrap everything, to make the 
355 dependencies of npm we are already distributing available as Guix 
packages. For example, I think I found a bootstrapping cycle with the 
Unicode data packages: even if the version we're currently using is 
messy, letting other packages use it, too, might unlock much more of the 
JavaScript universe. I've experimented a bit (partially looking at what 
Debian does), and I may look at that some time after this.

> I have an idea to simplify the patch series a bit: if we can answer my
> question here <https://issues.guix.gnu.org/51838#57> and come to a
> conclusion about deleting lock files
> <https://issues.guix.gnu.org/51838#58>, I could merge the
> ‘#:absent-dependencies’ part of the patch series.  I think this might
> make future re-rolls easier and help rein in the scope a bit.

That sounds like a great approach! I had not expected this patch series 
to end up touching every JavaScript package in Guix :)

I was offline a bit for holidays here, and just before that I'd noticed 
a problem with npm generating implicit build commands that tried to 
rebuild node-gyp packages when they are installed. I'll page this stuff 
back in and send a v3 soon that hopefully has at least the 
'#:absent-dependencies' part ready to merge.

-Philip