Just an update on this for Philippe and any interested parties.
I started down the line of grabbing the patch and was indeed able to get the 
tars to add into the cache.  I was also able to get the system to build offline 
with some manual tweaking.
The main issue I am running into now is that we need a full shrinkwrap after 
npm install to get the proper information for the cache to pick things up.
This will cause pretty sizable rewrites to how the npm fetcher currently 
functions, maybe the recipe generator too.

It will be awhile before I have the free time to attempt to something like that 
so if anyone wants to pick up where I left off send me an email. 
I can supply you with details of what I have done so far.


-----Original Message-----
From: Davis, Michael 
Sent: Friday, November 03, 2017 9:39 AM
To: 'Philippe Coval'; [email protected]
Subject: RE: [OE-core] [PATCH] classes/npm: Fix install to use offline option

Npm v4/v6 have a patch to allow the --no-registry to work.  It was taken out in 
the transition to Node 8 since the cache system is completely different.
Unfortunately this doesn't work for nodev8 / npmv5 so the offline build on 
master/rocko is completely broken.
I am trying to get something working by adding the dependency tar.gz directly 
into the cache manually before the build, but I am running into a npm bug.
https://github.com/nodejs/help/issues/944


-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Philippe 
Coval
Sent: Friday, November 03, 2017 5:54 AM
To: [email protected]
Subject: [OE-core] [PATCH] classes/npm: Fix install to use offline option

Option --no-registry seems deprecated or even non supported for ages,
while --offline fixed the problem on install task.

Issue can be reproduced using:

  devtool add "npm://registry.npmjs.org;name=epoll;version=latest"
  bitbake epoll

  | DEBUG: Executing shell function do_install
  (...)
  | npm ERR! argv ".../node" ".../npm" "install" (...) "--production" 
"--no-registry"
  | npm ERR! node v6.11.0
  | npm ERR! npm  v3.10.10
  | npm ERR! registry URL is required

And also from log file ".../epoll/1.0.0-r0/npmpkg/npm-debug.log":

   silly mapToRegistry using default registry
   41 silly mapToRegistry registry null
   42 verbose stack AssertionError: registry URL is required
   42 verbose stack     at Conf.getCredentialsByURI 
(.../get-credentials-by-uri.js:8:3)

More relevent insights:
https://github.com/npm/npm/issues/2568#

Signed-off-by: Philippe Coval <[email protected]>
---
 meta/classes/npm.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/classes/npm.bbclass b/meta/classes/npm.bbclass
index a69bedb..dfd1ffe 100644
--- a/meta/classes/npm.bbclass
+++ b/meta/classes/npm.bbclass
@@ -45,7 +45,7 @@ npm_do_install() {
        # be created in this directory
        export HOME=${WORKDIR}
        mkdir -p ${NPM_INSTALLDIR}/
-       npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} 
--target_arch=${NPM_ARCH} --production --no-registry
+       npm install --prefix ${D}${prefix} -g --arch=${NPM_ARCH} 
--target_arch=${NPM_ARCH} --production --offline
        if [ -d ${D}${prefix}/etc ] ; then
                # This will be empty
                rmdir ${D}${prefix}/etc
-- 
1.9.1

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core
-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to