burrow-pi-img/stage3/03-nodejs/00-run.sh
2017-09-06 11:06:13 +03:00

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