[OE-core] npm.bbclass support for deep native modules?

Peter A. Bigot pab at pabigot.com
Sun Nov 27 00:17:48 UTC 2016


I'm using the current head of morty and trying to get a handle on the
new nodejs support in OE.

I'm failing to build a recipe for statsd.  Starting with this:

     devtool add 'npm://registry.npmjs.org;name=statsd;version=0.8.0'
     bitbake statsd

produces an error related to the modern-syslog dependency:

  DEBUG: Executing shell function do_compile
| npm ERR! Linux 4.4.0-47-generic
| npm ERR! argv 
"/mnt/devel/oe/omap/build-bb-morty-master/tmp/sysroots/x86_64-linux/usr/bin/node" 
"/mnt/devel/oe/omap/build-bb-morty-master/tmp/sysroots/x86_64-linux/usr/bin/npm" 
"--arch=arm" "--target_arch=arm" "--production" "--no-registry" "install"
| npm ERR! node v4.6.1
| npm ERR! npm  v2.15.9
|
| npm ERR! Registry not defined and registry files not found: 
"/mnt/devel/oe/omap/build-bb-morty-master/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/statsd/0.8.0-r0/npm_cache/noregistry/modern-syslog/.cache.json", 
"/mnt/devel/oe/omap/build-bb-morty-master/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/statsd/0.8.0-r0/npm_cache/modern-syslog/.cache.json".

modern-syslog 1.1.2 needs node-gyp to build a native component and
https://wiki.yoctoproject.org/wiki/TipsAndTricks/NPM notes that devtool
can't detect such things.  Doing this works fine to build that package:

     devtool add 'npm://registry.npmjs.org;name=modern-syslog;version=1.1.2'
     bitbake modern-syslog

but I'm having no luck getting "bitbake statsd" to find the result.
I've added:

     DEPENDS = "modern-syslog"

to statsd_0.8.0.bb but that isn't helping.  It looks like I need some
way to have the recipe install the prepared modern-syslog into the cache
(or globally?) before baking statsd, but since the cache gets cleared in
npm_do_compile() it's not clear how to make that happen.

I'm very rusty with OE (two years away), so am I missing something or is
this just beyond what the bitbake infrastructure can currently handle?
If so, can somebody suggest a way to hand-patch the recipe, or outline
how npm.bbclass might be extended to support this?

Thanks.

Peter




More information about the Openembedded-core mailing list