On Wed, Jul 22, 2020 at 8:24 AM Troy Dawson <tdawson(a)redhat.com> wrote:
On Wed, Jul 22, 2020 at 6:31 AM Ben Rosser <rosser.bjr(a)gmail.com> wrote:
>
> On Tue, Jul 21, 2020 at 10:56 AM Tom Hughes via nodejs
> <nodejs(a)lists.fedoraproject.org> wrote:
> >
> > On 21/07/2020 15:39, Troy Dawson wrote:
> >
> > > Problem2: Many of the bundled libraries are archful, meaning they need
> > > to be compiled. What if an essential nodejs library was originally a
> > > noarch?
> > > Solution2: All bundled nodejs library packages will be treached as
> > > archful, meaning they will need to be built on each supported arch.
> >
> > I think "many" is stretching things.
> >
> > There were never more than about a dozen or so archful modules in
> > Fedora and most of them were not widely used.
> >
> > I suspect that archful modules are probably best kept packaged as
> > they are now mostly just because trying to build them as part of
> > a large bundled tree is going to be incredibly painful.
>
> I think this makes sense as well. Essentially, we should just say that
> archful nodejs modules are "essential" (in the words of the proposal)
> and therefore need to be packaged and shipped separately.
>
> I think a "npm2rpm" script would have to do a couple things-- does
> this sound about right?
>
> a) recursively parse package.json to get a list of all dependencies
> and tarballs, and use this to write out a list of Sources.
> b) for each package, also look at package.json to see what files need
> to be installed, and write out instructions for the %install section.
> c) generate a "License" field for the package and also install all the
> relevant licenses in %license.
>
> There should probably be a way to specify that a given dependency is
> not being bundled too, to stop the parser from descending into that
> dependency tree. I imagine that (at least during the transition to
> this and maybe afterwards, in the case of archful or essential
> modules) it would be very useful to have packages with a mixture of
> bundled and unbundled dependencies.
>
> Ben Rosser
>
You are both right.
Odd as it seems, I kept seeing nodejs-sqlite3 come up, which is archful.
I had never done a real search.
It turns out that the various packages I had been working on require
it, and only two other packages.
So ya, Ben, I like you idea. I was looking at a very skewed view.
Troy
Sorry for being so quiet.
I was going through all of Fedora's dependencies, and double checking
my results because I was having a hard time believing what I was
seeing.
I wanted to get a list of essential nodejs packages, and I thought of
getting a list of nodejs packages that are required by non-nodejs
packages.
That list is amazingly small.
# Binaries / Runtime packages
statsd -> nodejs-generic-pool
R-shiny -> nodejs-showdown
notepadqq -> nodejs-shelljs
mocha -> uglify-js and nodejs-jade
kosmtik -> 11 nodejs libraries
jake -> 5 nodejs libraries
elasticdump -> 3 nodejs libraries
discord-irc -> 10 nodejs libraries
carto -> 4 nodejs libraries
# Source Dependencies
statsd
R-shiny
python-webassets
perl-Mojolicious-Plugin-AssetPack
mocha
kosmtik
jake
elasticdump
discord-irc
carto
Note: Due to the current high volume of uninstallable packages, and
being in the middle of a mass rebuild, it's possible I'm off by a few
packages.
I also left off js-jquery*. But even if you think we should include
the js-* packages, that's still only about 5-10 more packages.
Most of the binary/runtime dependencies did not have many duplicates.
So we are looking at 30-40 packages if we wanted to consider all of
them "essential".
I would think it would be better to have the high volume ones (jake,
kosmtik, discord-irc) bundle their nodejs dependencies.
So, after this exercise, I'm sort of at a loss as to what we would
consider essential. So I'm going to throw out a short list. Please
add or subtract from it.
Once we figure on a list, we can start figuring out a plan on how to
trim Fedora down to that list.
nodejs (Have to have)
npm (Have to have)
yarnpkg
js-jquery
uglify-js
Thanks
Troy