OpenEmbedded layer for latest Node.js releases.
ℹ️ As an official extension of this layer, installing meta-nodejs-contrib is highly recommended for community contributed Node.js based package recipes and Bitbake helper classes.
meta-nodejs depends on following layers:
Node.js v7+ ships with V8 v5.5+ that requires native (host) compilation of some internal build tools (mkpeephole and mksnapshot).
These internal tools must be built with "bitness" matching the cross-compilation target (eg. 32-bit ARM).
If you encounter build errors related to mkpeephole or mksnapshot you most likely need to install appropriate multilib compilers and libraries to to your host system.
Prerequisites for compiling for 32-bit ARM with x86_64 Ubuntu 16.04 Xenial (or newer):
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install g++-multilib libssl-dev:i386 libcrypto++-dev:i386 zlib1g-dev:i386
nodejsnodejs-npmnodejs-dtracenodejs-systemtapnodejs-wafadmin(only with Node.js0.8)
Layer installation varies depending on your OpenEmbedded distribution. These instructions are generic.
-
Fetch
meta-nodejslayer fromhttps://github.com/imyller/meta-nodejs.git -
Add
meta-nodejslayer toEXTRALAYERSinconf/bblayers.conf. For example:EXTRALAYERS +=" \ ${TOPDIR}/sources/meta-nodejs \ "
As an official extension of this layer, installing meta-nodejs-contrib is highly recommended for community contributed Node.js based package recipes and Bitbake helper classes.
To build latest stable Node.js package:
bitbake nodejsAdd Node.js as a dependency in recipe with RDEPENDS (for runtime) or DEPENDS (for build):
DEPENDS += " nodejs"
RDEPENDS_${PN} += " nodejs"Inherit npm-install build task class in your recipe.
meta-nodejs layer adds few Node.js related helper classes.
npm-base class defines following functions:
oe_runnpm: call cross-compilingnpmoe_runnpm_native: call native-compilingnpm
For example:
inherit npm-base
do_install() {
oe_runnpm install # Installs dependencies defined in package.json
}NPM_FLAGS: Extra command line arguments fornpmcalls made byoe_runnpm()NPM_ARCH: Override npm target architecture (defaults toTARGET_ARCH)NPM_REGISTRY: override npm registry URL
npm-install class inherits npm-base class and adds following build tasks (listed in their run order):
npm_install: runsnpm installin source directorynpm_shrinkwrap: runsnpm shrinkwrapin source directorynpm_dedupe: runsnpm dedupein source directory
You can disable one or more of these build tasks in the recipe with do_<taskname>[noexec] = "1":
do_npm_shrinkwrap[noexec] = "1"NPM_INSTALL_FLAGS: Extra command line arguments fornpmcalls made innpm_installtaskNPM_INSTALL: Parameters fornpm installcommand (such as specific package names)
npm-install-global class inherits npm-base class and installs the selected package globally.
This is done in the do_install task of the class.
NPM_INSTALL_FLAGS: Extra command line arguments fornpmcalls made indo_installanddo_configuretask

