Carpincho/generarDeb64.sh
2024-12-10 10:03:23 -03:00

279 lines
13 KiB
Bash
Executable File

#!/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.94.0'
# DEPENDENCIAS
NW_GYP_INST=`npm list -g | grep nw-gyp@ | grep -v deduped | wc -l`
NW_BUILDER_INST=`npm list | grep nw-builder@ | grep -v deduped | 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--->Version de EmaL: $VERSION \033[0m\n"
printf "\033[1;4m--->Version de NWJs: $NWJS_VERSION \033[0m\n"
echo ""
printf "\033[1;10m1) Limpiando compilacion 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/linux64
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 con APT necesarios. \033[0m"
sudo apt-get -y -qq install build-essential git wget libusb-1.0-0 libusb-1.0-0-dev libudev-dev
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 si esta node global. \033[0m"
if [ $node -eq 1 ]
then
printf "\033[1;32m --> OK. \033[0m\n"
else
printf "\033[1;31m --> NO. \033[0m"
printf "\033[1;32m --> Se sale, por favor instale manualmente. \033[0m\n"
exit 0
fi
printf "\033[1;10m 3.2) Comprobando si esta npm global. \033[0m"
if [ $npm -eq 1 ]
then
printf "\033[1;32m --> OK. \033[0m\n"
else
printf "\033[1;31m --> 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 nw-gyp como global. \033[0m"
if [ $NW_GYP_INST -eq 1 ]
then
printf "\033[1;32m --> OK. \033[0m\n"
else
printf "\033[1;31m --> 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.4) Comprobando si nw-builder localmente. \033[0m"
if [ $NW_BUILDER_INST -eq 1 ]
then
printf "\033[1;32m --> OK. \033[0m\n"
else
printf "\033[1;31m --> 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 emalibre. \033[0m"
CHECK_EMPAQUETADO=`node empaquetarLinux.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
printf "\033[1;10m5) Aplicando Permisos al proyecto. \033[0m"
sudo chmod -R 777 build/emalibre/linux64 & spinner "Procesando..."
printf "\033[1;32m --> OK. \033[0m\n"
printf "\033[1;10m6) Eliminando node_modules del proyecto. \033[0m"
sudo rm -fr build/emalibre/linux64/node_modules & spinner "Procesando..."
printf "\033[1;32m --> OK. \033[0m\n"
printf "\033[1;10m7) Generando node_modules con NPM del proyecto. \033[0m"
cd build/emalibre/linux64
npm install ---production -no-audit -silent 2> /tmp/ema.log 1> /dev/null
printf "\033[1;32m --> OK. \033[0m\n";
printf "\033[1;10m8) 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;10m9) Se blanquea el archivo de Configuracion General. \033[0m"
sudo cp ../../conf/ConfiguracionGeneral.js conf/ConfiguracionGeneral.js
printf "\033[1;32m --> OK. \033[0m\n";
cd ..
sudo cp -R linux64 Linux64_nogui # Se copia antes del postLINUX (que implementa NWJS) para el modo consola y web
sudo chmod -R 777 Linux64_nogui
cd linux64
npm run postLINUX -no-audit -silent 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
cd ../../..
# **************************************************************
# Compilar EMA Libre Cliente (Carpincho) en modo GRAFICO Desktop
# **************************************************************
echo ""
echo ""
echo "*************************************************"
echo "* Build EMA Libre Cliente Grafico - GNU/Linux *"
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/linux64/* 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_linux_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/web/express/forever/servicio 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/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
sudo rm -fr Deb64/usr/share/emalibre/gui_web
printf "\033[1;32m --> OK. \033[0m\n"
printf "\033[1;10m7) Generando Paquete Deb para GUI 64bit Linux. \033[0m\n"
sudo dpkg -b Deb64 debs/"emalibre-gui-linux_$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-linux_$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 - GNU/Linux *"
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/Linux64_nogui/core build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/logs build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/conf build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/tmp build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/node_modules build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/CHANGELOG build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/COPYING build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/AUTHORS build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/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_linux_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 64bit Linux. \033[0m\n"
sudo dpkg -b Deb64 debs/"emalibre-consola-linux_$VERSION.deb"
printf "\033[5;10m Finalizo con exito, build/debs/emalibre-console-linux_$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 - GNU/Linux *"
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/Linux64_nogui/core build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/logs build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/conf build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/gui_web build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/gui_common build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/tmp build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/node_modules build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/CHANGELOG build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/COPYING build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/AUTHORS build/Deb64/usr/share/emalibre/
sudo cp -R build/emalibre/Linux64_nogui/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_linux_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 echo "web" > build/Deb64/etc/emalibre_modo
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 64bit Linux. \033[0m\n"
sudo dpkg -b Deb64 debs/"emalibre-web-linux_$VERSION.deb"
printf "\033[5;10m Finalizo con exito, build/debs/emalibre-console-linux_$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 ""