[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