#!/bin/bash #PARAMETRIA VERSION=`grep Version src/conf/ConfiguracionGlobal.js | sed -e "s/'Version': //g" | sed -e "s/,//g" | sed -e "s/^[ \t]*//"` NWJS_VERSION='0.28.4' # Es la ultima compilada para ARM, siempre mirar la url https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases #NWJS_ARM='https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases/download/v' Se comenta se copio el tar al server de gugler por velocidad- NODE_CONSOLE='https://nodejs.org/dist/v14.4.0/node-v14.14.0-linux-armv7l.tar.xz' # Version node, siempre mirar la url NODE_NOMBRE='node-v14.14.0-linux-armv7l' DESCARGA_NWJS='https://nube.gugler.com.ar/index.php/s/iznYtBE7aBtXYdN/download' #server de gugler nwjs 28.4 # DEPENDENCIAS NW_GYP_INST=`npm list -g | grep nw-gyp@ | wc -l` NW_BUILDER_INST=`npm list | grep nw-builder@ | wc -l` node=`node -v | wc -l` npm=`npm -v | wc -l` # Metodo Spinner function spinner() { local info="$1" local pid=$! local delay=0.25 local spinstr='|/-\' while kill -0 $pid 2> /dev/null; do local temp=${spinstr#?} printf " [%c] $info" "$spinstr" local spinstr=$temp${spinstr%"$temp"} sleep $delay local reset="\b\b\b\b\b" for ((i=1; i<=$(echo $info | wc -c); i++)); do reset+="\b" done printf $reset done printf " \b\b\b\b" } # *********************************************************** # EJECUCION DE CODIGO -- LIMPIA Y VERIFICA ENTORNO # *********************************************************** echo "" echo "*************************************************" echo "* Comprobando y preparando el entorno ***" echo "*************************************************" echo "" printf "\033[1;4m--->Versión de EMAl: $VERSION \033[0m\n" printf "\033[1;4m--->Versión de NWJs: $NWJS_VERSION \033[0m\n" echo "" printf "\033[1;10m1) Limpiando compilación anterior. \033[0m" sudo mkdir build/Deb64/usr/bin 2> /dev/null sudo mkdir build/Deb64/usr/share/emalibre 2> /dev/null sudo rm -fr build/emalibre sudo rm -fr build/Deb64/usr/bin/* sudo rm -fr build/Deb64/usr/share/emalibre/* printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m2) Instalando/comprobando paquetes necesarios con APT. \033[0m" sudo apt-get -y -qq install build-essential git wget libusb-1.0-0 libusb-1.0-0-dev libudev-dev wget sudo chmod -R 777 build/Deb64 printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m3) Verificando node y dependencias: \033[0m\n" printf "\033[1;10m 3.1) Comprobando NWJS descargado en cache para arm. \033[0m" if [ -d "cache/$NWJS_VERSION-normal" ]; then printf "\033[1;32m --> OK. \033[0m\n" else printf "\033[5;91m --> NO. \033[0m" printf "\033[1;10m -> Se descarga de NWJS. \033[0m\n" mkdir -p "cache/$NWJS_VERSION-normal" cd "cache/$NWJS_VERSION-normal" wget $DESCARGA_NWJS -O nwjs.tar.xz -q --show-progress tar -xf nwjs.tar.xz rm -fr nwjs.tar.xz mv nwjs-v${NWJS_VERSION}-linux-arm linux64 rm -fr nwjs-v${NWJS_VERSION}-linux-arm cd ../.. printf "\033[1;32m --> OK. \033[0m\n" fi printf "\033[1;10m 3.2) Comprobando si esta node global. \033[0m" if [ $node = "1" ] then printf "\033[1;32m --> OK. \033[0m\n" else printf "\033[5;91m --> NO. \033[0m" printf "\033[1;32m --> Se sale, por favor instale manualmente. \033[0m\n" exit 0 fi printf "\033[1;10m 3.3) Comprobando si esta npm global. \033[0m" if [ $npm = "1" ] then printf "\033[1;32m --> OK. \033[0m\n" else printf "\033[5;91m --> NO. \033[0m" printf "\033[1;32m --> Se sale, por favor instale manualmente. \033[0m\n" exit 0 fi printf "\033[1;10m 3.4) Comprobando si esta nw-gyp como global. \033[0m" if [ $NW_GYP_INST = "1" ] then printf "\033[1;32m --> OK. \033[0m\n" else printf "\033[5;91m --> NO. \033[0m" npm install -g nw-gyp -no-audit -silent 2> /tmp/ema.log 1> /dev/null printf "\033[1;32m --> Se instalo. \033[0m\n" fi printf "\033[1;10m 3.5) Comprobando si nw-builder localmente. \033[0m" if [ $NW_BUILDER_INST = "1" ] then printf "\033[1;32m --> OK. \033[0m\n" else printf "\033[5;91m --> NO. \033[0m" npm install -no-audit -silent 2> /tmp/ema.log 1> /dev/null printf "\033[1;32m --> Se instalo. \033[0m\n" fi printf "\033[1;10m4) Empaquetando el proyecto. \033[0m" CHECK_EMPAQUETADO=`node empaquetarArm.js | grep "Correcto!" | wc -l` if [ "${CHECK_EMPAQUETADO}" -eq "1" ]; then printf "\033[1;32m --> OK. \033[0m\n"; else printf "\033[5;91m --> ERROR. Problema empaquetando con nw-builder. \033[0m\n";exit 1; fi sudo mv build/emalibre/linux64 build/emalibre/arm printf "\033[1;10m5) Aplicando permisos al proyecto. \033[0m" sudo chmod -R 777 build/emalibre/arm & spinner "Procesando..." printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m6) Eliminando node_modules. \033[0m" sudo rm -fr build/emalibre/arm/node_modules & spinner "Procesando..." printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m7) Generando node_modules con NPM. \033[0m" cd build/emalibre/arm npm install forever express node-hid nodemailer targz terminal-kit bootstrap bootstrap-select datatables datatables-buttons jquery notify-js-lib nprogress popper.js chart.js --production 2> /tmp/ema.log 1> /dev/null & spinner "Procesando..." printf "\033[1;32m \033[0m\n" printf "\033[1;10m8)Descargando la version de NWJS para ARM: \033[0m\n" wget $NODE_CONSOLE -O node -q --show-progress tar xf node rm -f node rm -f *.tar.xz mv $NODE_NOMBRE node_modules/node cp -R node_modules/node-hid ../ printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m 8.1) Corriendo postscript particular para ARM y NW.js. \033[0m" npm run postARM 2> /tmp/ema.log 1> /dev/null & spinner "Procesando..." CHECK_NW_NODE_BUILD=`cat /tmp/ema.log | grep "gyp info ok" | wc -l` if [ "${CHECK_NW_NODE_BUILD}" -eq "1" ]; then printf "\033[1;32m --> OK. \033[0m\n"; else printf "\033[5;91m --> ERROR. Verifique el modulo NW con node-hid. \033[0m\n";exit 1; fi printf "\033[1;10m9) Se purgan los tanques y logs. \033[0m" sudo echo "" > logs/debug.log sudo echo "[]" > logs/TanquePendientes.log sudo echo "[]" > logs/registro_diario.log printf "\033[1;32m --> OK. \033[0m\n"; printf "\033[1;10m 9.1) Se blanque el archivo de Configuracion General. \033[0m" sudo cp ../../conf/ConfiguracionGeneral.js conf/ConfiguracionGeneral.js cd ../../.. printf "\033[1;32m --> OK. \033[0m\n"; # ************************************************************** # Compilar EMA Libre Cliente (Carpincho) en modo GRAFICO Desktop # ************************************************************** echo "" echo "" echo "*************************************************" echo "* Build EMA Libre Cliente Grafico - ARM *" echo "*************************************************" echo "" printf "\033[1;10m1) Limpiando archivos temporales. \033[0m" sudo rm -f build/Deb64/DEBIAN/control sudo rm -fr build/Deb64/usr/bin/* sudo rm -fr build/Deb64/usr/share/emalibre/* printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m2) Copiando los fuentes de EMA Libre para 64bit. \033[0m" sudo cp -R build/emalibre/arm/* build/Deb64/usr/share/emalibre/ printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m3) Remplazando el archivo de control DEB. \033[0m" sudo cp -f build/controlDeb/control_arm_gui build/Deb64/DEBIAN/control & spinner "Procesando..." printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m4) Aplicando permisos necesarios. \033[0m" sudo chmod +x build/Deb64/usr/share/emalibre/emalibre sudo chmod 0755 build/Deb64/DEBIAN sudo chmod 0755 build/Deb64/DEBIAN/postrm sudo chmod 0755 build/Deb64/DEBIAN/postinst sudo chmod 0755 build/Deb64/DEBIAN/preinst sudo chown -R root:root build/Deb64 printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m5) Generando enlaces simbolicos del binario. \033[0m" cd build/Deb64/usr/bin/ sudo ln -s ../share/emalibre/emalibre emalibre cd ../../.. printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m6) Eliminando node para modo GUI y la intefaz para consola/web. \033[0m" # se mueve el servicio desde al temporal sudo mv Deb64/etc/init.d tmp sudo mv Deb64/etc/emalibre_modo tmp sudo rm -fr Deb64/usr/share/emalibre/node_modules/node sudo rm -fr Deb64/usr/share/emalibre/node_modules/express sudo rm -fr Deb64/usr/share/emalibre/gui_web sudo rm -fr Deb64/usr/share/emalibre/node_modules/forever sudo rm -fr Deb64/usr/share/emalibre/node_modules/forever-agent sudo rm -fr Deb64/usr/share/emalibre/node_modules/forever-monitor printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m7) Generando Paquete Deb para GUI ARM. \033[0m\n" sudo dpkg -b Deb64 debs/"emalibre-gui-arm_$VERSION.deb" # se vuelve el servicio desde el temporal sudo mv tmp/init.d Deb64/etc sudo mv tmp/emalibre_modo Deb64/etc/emalibre_modo printf "\033[5;10m Finalizo con exito, build/debs/emalibre-gui-arm_$VERSION.deb. \033[0m" printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m8) Limpiando archivos temporales. \033[0m" cd .. sudo rm -f build/Deb64/DEBIAN/control sudo rm -fr build/Deb64/usr/bin/* sudo rm -fr build/Deb64/usr/share/emalibre/* printf "\033[1;32m --> OK. \033[0m\n" # *********************************************************** # Compilar EMA Libre Cliente (Carpincho) en modo CONSOLA # *********************************************************** echo "" echo "" echo "*************************************************" echo "* Build EMA Libre Cliente Consola - ARM *" echo "*************************************************" echo "" printf "\033[1;10m1) Limpiando archivos temporales. \033[0m" sudo rm -f build/Deb64/DEBIAN/control sudo rm -fr build/Deb64/usr/bin/* sudo rm -fr build/Deb64/usr/share/emalibre/* printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m2) Copiando los fuentes de EMA Libre para ARM. \033[0m" sudo cp -R build/emalibre/arm/core build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/logs build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/conf build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/tmp build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/node_modules build/Deb64/usr/share/emalibre/ sudo rm -fr build/Deb64/usr/share/emalibre/node_modules/node-hid sudo cp -R build/emalibre/node-hid build/Deb64/usr/share/emalibre/node_modules sudo cp -R build/emalibre/arm/CHANGELOG build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/COPYING build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/AUTHORS build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/package.json build/Deb64/usr/share/emalibre/ printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m3) Remplazando el archivo de control DEB. \033[0m" sudo cp -f build/controlDeb/control_arm_console build/Deb64/DEBIAN/control & spinner "Procesando..." printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m4) Aplicando permisos necesarios. \033[0m" sudo chmod 0755 build/Deb64/DEBIAN sudo chmod 0755 build/Deb64/DEBIAN/postrm sudo chmod 0755 build/Deb64/DEBIAN/postinst sudo chmod 0755 build/Deb64/DEBIAN/preinst sudo chown -R root:root build/Deb64 printf "\033[1;32m --> OK. \033[0m\n" cd build printf "\033[1;10m7) Generando Paquete Deb para Consola ARM. \033[0m\n" sudo dpkg -b Deb64 debs/"emalibre-consola-arm_$VERSION.deb" printf "\033[5;10m Finalizo con exito, build/debs/emalibre-console-arm_$VERSION.deb. \033[0m" printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m8) Limpiando archivos temporales. \033[0m" cd .. sudo rm -f build/Deb64/DEBIAN/control sudo rm -fr build/Deb64/usr/bin/* sudo rm -fr build/Deb64/usr/share/emalibre/* printf "\033[1;32m --> OK. \033[0m\n" echo "" # *********************************************************** # Compilar EMA Libre Cliente (Carpincho) en modo CONSOLA/WEB # *********************************************************** echo "" echo "" echo "*************************************************" echo "* Build EMA Libre Cliente Web - ARM *" echo "*************************************************" echo "" printf "\033[1;10m1) Limpiando archivos temporales. \033[0m" sudo rm -f build/Deb64/DEBIAN/control sudo rm -fr build/Deb64/usr/bin/* sudo rm -fr build/Deb64/usr/share/emalibre/* printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m2) Copiando los fuentes de EMA Libre para ARM. \033[0m" sudo cp -R build/emalibre/arm/core build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/logs build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/conf build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/gui_web build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/gui_common build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/tmp build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/node_modules build/Deb64/usr/share/emalibre/ sudo rm -fr build/Deb64/usr/share/emalibre/node_modules/node-hid sudo cp -R build/emalibre/node-hid build/Deb64/usr/share/emalibre/node_modules sudo cp -R build/emalibre/arm/CHANGELOG build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/COPYING build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/AUTHORS build/Deb64/usr/share/emalibre/ sudo cp -R build/emalibre/arm/package.json build/Deb64/usr/share/emalibre/ printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m3) Remplazando el archivo de control DEB. \033[0m" sudo cp -f build/controlDeb/control_arm_web build/Deb64/DEBIAN/control & spinner "Procesando..." printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m4) Aplicando permisos necesarios. \033[0m" sudo chmod 0755 build/Deb64/DEBIAN sudo chmod 0755 build/Deb64/DEBIAN/postrm sudo chmod 0755 build/Deb64/DEBIAN/postinst sudo chmod 0755 build/Deb64/DEBIAN/preinst sudo chown -R root:root build/Deb64 printf "\033[1;32m --> OK. \033[0m\n" cd build printf "\033[1;10m7) Generando Paquete Deb para WEB en ARM. \033[0m\n" sudo dpkg -b Deb64 debs/"emalibre-web-arm_$VERSION.deb" printf "\033[5;10m Finalizo con exito, build/debs/emalibre-web-arm_$VERSION.deb. \033[0m" printf "\033[1;32m --> OK. \033[0m\n" printf "\033[1;10m8) Limpiando archivos temporales. \033[0m" cd .. sudo rm -f build/Deb64/DEBIAN/control sudo rm -fr build/Deb64/usr/bin/* sudo rm -fr build/Deb64/usr/share/emalibre/* sudo rm -fr build/emalibre printf "\033[1;32m --> OK. \033[0m\n" echo ""