[yocto] Cross-compiling Node-RED 0.10.10 on Openembedded Yocto project LINUX

Jeff Hatch jhatch at multitech.com
Thu Sep 17 08:52:13 PDT 2015


I'm running into some difficulty building Node-RED 0.10.10 for an ARM 
architecture project.  I am trying to build using the Openembedded Yocto
core
to cross-compile the firmware for the project I am working on.  There
are some 
custom modifications that we have made to Node-RED, primarily adding our
own 
nodes integrated for our hardware.  These changes have been integrated
using 
diffs applied to the code from GitHub.  Due to these changes, I need to
follow 
the development procedure:

# git clone https://github.com/node-red/node-red.git

# cd node-red

# npm install

# sudo npm install -g grunt-cli

# grunt build

# node red

Previously the build was using "npm install --production" and built 
successfully, and Node-RED would run just fine on our ARM based product.
This 
is no longer sufficient for building and running Node-RED 0.10.10 in the
manner
we wish to build and install it because it appears that the build is now
generating files that don't get created with "npm install --production".
I am 
presuming that Node-RED 0.11.1 will have the same requirement(s). 

There is a command in the Yocto project bitbake recipes called oe_runnpm
that
allows the running of npm commands in the build with the appropriate 
environment all set up.  This is not working with the "grunt build"
command.  
Whether grunt is installed locally or globally the following error
indicating that, 
from what I can tell, grunt is using the build server architecture
instead of 
the cross-compile ARM architecture occurs:

ERROR: QA Issue: Architecture did not match (40 to 62)
on /work/arm926ejste-mlinux-linux-gnueabi/node-red/0.10.4-r47/packages-split/node-red/opt/node-red/node_modules/grunt-sass/node_modules/node-sass/vendor/linux-x64-11/binding.node

The following is what my bitbake recipe looks like:


DESCRIPTION = "Node-RED"
HOMEPAGE = "http://nodered.org"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
DEPENDS = "nodejs nodejs-native"
PR = "r47"

inherit npm
inherit update-rc.d

.
.
.

S = "${WORKDIR}/git"

INITSCRIPT_NAME = "node-red"
INITSCRIPT_PARAMS = "defaults 99 21"

do_install() {
    # npm install dependencies
    oe_runnpm install
    # npm install more stuff
    oe_runnpm install grunt-cli
    ./node_modules/grunt-cli/bin/grunt build
   
    oe_runnpm install serialport nodemailer

    # remove dupe deps
    oe_runnpm dedupe

    # install node-red
    install -d ${D}/opt/node-red
    cp -r * ${D}/opt/node-red/

    # install -d -p ${D}/opt/node-red/nodes/mts
    # cp -r ${WORKDIR}/apps/lora ${D}/opt/node-red/nodes/mts/

    install -d ${D}${sysconfdir}/init.d
    install -m 0755 ${WORKDIR}/node-red.init
${D}${sysconfdir}/init.d/node-red

    install -d ${D}${bindir}
    install -m 0755 ${WORKDIR}/update-flows ${D}${bindir}/
}


I am not very familiar with this grunt utility.  Is there any guidance
or an
alternative that you could give me that might work to get this build to
succeed?  This error is related to grunt-sass which requires node-sass,
which
requires libsass.  The version of node-js being integrated with this is
0.10.40.

Thank You,

-- 
Jeff Hatch
Senior Software Engineer


1 (763) 717 - 5574   DIRECT
1 (763) 228 - 3603   MOBILE

2205 Woodale Drive 
Mounds View, MN 55112

www.multitech.com



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20150917/ca314b61/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Mulitech.jpg
Type: image/jpeg
Size: 3760 bytes
Desc: not available
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20150917/ca314b61/attachment.jpg>


More information about the yocto mailing list