144 lines
4.0 KiB
Bash
Executable File
144 lines
4.0 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
BASE_DIR=$(pwd)
|
|
|
|
|
|
########################
|
|
# Install dependencies #
|
|
########################
|
|
#dpkg --add-architecture i386
|
|
|
|
apt-get update
|
|
apt-get install -y make python build-essential
|
|
apt-get install -y curl
|
|
apt-get install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
|
|
#apt-get install -y gcc-multilib g++-multilib
|
|
#apt-get install -y libc6-dev-i386
|
|
|
|
#apt-get install -y libc6-dev
|
|
|
|
apt-get --purge remove node
|
|
apt-get --purge remove nodejs
|
|
curl -sL https://deb.nodesource.com/setup_6.x | /bin/bash -e -
|
|
apt-get install -y nodejs
|
|
npm install -g npm@5.3.0
|
|
#npm cache clean --force
|
|
|
|
#ln -s /usr/include/asm-generic /usr/include/asm
|
|
|
|
|
|
#################
|
|
# Checkout node #
|
|
#################
|
|
NODE_BUILD_PATH=${BASE_DIR}/build/node
|
|
if [ ! -d "$NODE_BUILD_PATH" ]; then
|
|
git clone https://github.com/nodejs/node.git $NODE_BUILD_PATH
|
|
fi
|
|
cd $NODE_BUILD_PATH
|
|
git checkout v6.11.2
|
|
|
|
|
|
#######################
|
|
# Cross-build Node.js #
|
|
#######################
|
|
|
|
#export BASEDIR=$(pwd)
|
|
#export STAGING_DIR=${BASEDIR}/staging_dir
|
|
#export V8SOURCE=${BASEDIR}/v8m-rb
|
|
export PREFIX=arm-linux-gnueabihf-
|
|
export LIBPATH=${ROOTFS_DIR}/usr/lib/arm-linux-gnueabihf/
|
|
export TARGET_PATH=${ROOTFS_DIR}
|
|
|
|
# ARM cross-compile exports
|
|
export CC=${PREFIX}gcc
|
|
export CXX=${PREFIX}g++
|
|
export AR=${PREFIX}ar
|
|
export RANLIB=${PREFIX}ranlib
|
|
export LINK=${PREFIX}g++
|
|
export CPP="${PREFIX}gcc -E"
|
|
export STRIP=${PREFIX}strip
|
|
export OBJCOPY=${PREFIX}objcopy
|
|
export LD=${PREFIX}g++
|
|
export OBJDUMP=${PREFIX}objdump
|
|
export NM=${PREFIX}nm
|
|
export AS=${PREFIX}as
|
|
export PS1="[${PREFIX}] \w$ "
|
|
#export LDFLAGS='-Wl,-L'${LIBPATH}
|
|
export LDFLAGS='-Wl,-rpath-link '${LIBPATH}
|
|
|
|
export TARGET_ARCH="-march=armv7l"
|
|
#export TARGET_TUNE="-mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb"
|
|
export CXX_TARGET_ARCH="-march-armv7l"
|
|
|
|
export V8_TARGET_ARCH="-march-armv7l"
|
|
export CXX_host="g++ -m32"
|
|
export CC_host="gcc -m32"
|
|
export LINK_host="g++ -m32"
|
|
|
|
|
|
make clean
|
|
make distclean
|
|
|
|
#./configure --prefix=${TARGET_PATH} --dest-cpu=arm --dest-os=linux --without-snapshot --with-arm-float-abi=hard --with-arm-fpu=vfpv3
|
|
./configure --prefix=${TARGET_PATH} --dest-cpu=arm --dest-os=linux --without-snapshot --with-arm-float-abi=hard --with-arm-fpu=vfpv3 --without-intl
|
|
|
|
#./configure --without-snapshot --dest-cpu=arm --dest-os=linux --with-arm-float-abi=softfp --with-intl=full-icu --download=all
|
|
|
|
make snapshot=off -j4
|
|
make install
|
|
|
|
|
|
#########################
|
|
# Install node packages #
|
|
#########################
|
|
cd ${BASE_DIR}
|
|
|
|
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
|
# WAR for node-gyp build
|
|
#mkdir -p ${ROOTFS_DIR}/lib/node_modules/node-red/node_modules/bcrypt
|
|
#chown -R $USER:$GROUP ${ROOTFS_DIR}/lib/node_modules/node-red/node_modules/bcrypt
|
|
|
|
#mkdir -p ${ROOTFS_DIR}/lib/node_modules/node-red/node_modules/bcrypt/build
|
|
#chown -R $USER:$GROUP ${ROOTFS_DIR}/lib/node_modules/node-red/node_modules/bcrypt/build
|
|
|
|
#ls -la ${ROOTFS_DIR}/lib/node_modules/node-red/node_modules/bcrypt/build
|
|
#ls -la ${ROOTFS_DIR}
|
|
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
|
|
export npm_config_arch=arm
|
|
export npm_config_nodedir=${NODE_BUILD_PATH}
|
|
|
|
npm_install () {
|
|
npm install -g --prefix=${TARGET_PATH} --target_arch=arm --target_platform=linux "$1"
|
|
}
|
|
|
|
#npm --prefix=${TARGET_PATH} --target_arch=arm --target_platform=linux cache clean --force
|
|
|
|
npm_install npm@5.3.0
|
|
npm_install node-red
|
|
npm_install coap
|
|
npm_install node-red-dashboard
|
|
|
|
# Running `npm_install repos/node-red-contrib-juliet` fails, this is a workaround
|
|
cd repos/node-red-contrib-juliet
|
|
npm install --target_arch=arm --target_platform=linux
|
|
npm_install
|
|
|
|
|
|
#######################################
|
|
# Install WPAN service Node-RED flows #
|
|
#######################################
|
|
cd ${BASE_DIR}
|
|
|
|
NODE_DIR=${ROOTFS_DIR}/home/pi/.node-red
|
|
install -m 755 -d ${NODE_DIR}
|
|
install -m 755 -d ${NODE_DIR}/scripts/
|
|
install -m 644 -D files/flows_*.json ${NODE_DIR}/
|
|
install -m 755 -D files/*.sh ${NODE_DIR}/scripts/
|
|
install -m 755 -D files/usbreset ${ROOTFS_DIR}/usr/sbin/
|
|
|
|
on_chroot << EOF
|
|
chown -R pi:pi /home/pi/.node-red
|
|
EOF
|
|
|