Proyecto movido a GitHub
Miér 7 Abr 2021 - 19:23 por bittor
Proyecto movido a GitHub:
https://github.com/bittor7x0/VDR-M7x0
Con muchos cambios y correcciones, Más información
También incluye el plugin epgfixer para corregir la EPG usando expresiones regulares y el plugin xmltv2vdr para descargar la EPG de internet
https://github.com/bittor7x0/VDR-M7x0
Con muchos cambios y correcciones, Más información
También incluye el plugin epgfixer para corregir la EPG usando expresiones regulares y el plugin xmltv2vdr para descargar la EPG de internet
Comentarios: 0
Buscar
GUI script generacion de firmware
+9
gatopardo
jb
naldoco
Krako
carcoco
pjllaneras
AzagraMac
zjuanma
bittor
13 participantes
Página 1 de 3.
Página 1 de 3. • 1, 2, 3
Cambiar script que genera el firmware
El script de generación del firm en Linux es un poco arcaico y necesitaría cambiarse, aunque como a los desarrolladores no nos sobra tiempo y sigue funcionando, nunca se cambia.
Como ahora hay gente interesada en mejorar este script, vamos a recoger aquí los objetivos, ideas, ejemplos de scripts de otros proyectos en los que fijarnos, etc. que nos gustaría tuviera el nuevo script.
Mis ideas a groso modo serían:
- Los mensajes del script tienen que ser en inglés para los usuarios alemanes y franceses.
- Unificar las funcionalidades de los scripts make-fw, make-plugins y make-vdr en uno sólo con parámetros que permita generar el firm, vdr o plugins.
- Que se pueda usar la configuración personal de cada uno con los datos de red, directorios de grabación, configuraciones del EPGSearch, canales, etc. que se establecerán en el firm.
- Preguntas como versión Lite o Pro, M740 o M750T, idioma para poder hacer algunos ajustes al firm para usuarios extranjeros.
- En el SVN, la mayoría de veces sólo se actualizan scripts del firmware, webif, parches del VDR, plugins y no es necesario recompilar todo el ToolChain con todo el tiempo que esto conlleva.
Estaría bien que el script detectara las partes que han sido modificadas respecto a la última versión compilada localmente y sólo recompilara esa parte, es decir, si sólo se han cambiado los scripts del firm que los actualice y genere el firm sin tener que hacer nada más, ídem para webif, etc.
Como ahora hay gente interesada en mejorar este script, vamos a recoger aquí los objetivos, ideas, ejemplos de scripts de otros proyectos en los que fijarnos, etc. que nos gustaría tuviera el nuevo script.
Mis ideas a groso modo serían:
- Los mensajes del script tienen que ser en inglés para los usuarios alemanes y franceses.
- Unificar las funcionalidades de los scripts make-fw, make-plugins y make-vdr en uno sólo con parámetros que permita generar el firm, vdr o plugins.
- Que se pueda usar la configuración personal de cada uno con los datos de red, directorios de grabación, configuraciones del EPGSearch, canales, etc. que se establecerán en el firm.
- Preguntas como versión Lite o Pro, M740 o M750T, idioma para poder hacer algunos ajustes al firm para usuarios extranjeros.
- En el SVN, la mayoría de veces sólo se actualizan scripts del firmware, webif, parches del VDR, plugins y no es necesario recompilar todo el ToolChain con todo el tiempo que esto conlleva.
Estaría bien que el script detectara las partes que han sido modificadas respecto a la última versión compilada localmente y sólo recompilara esa parte, es decir, si sólo se han cambiado los scripts del firm que los actualice y genere el firm sin tener que hacer nada más, ídem para webif, etc.
GUI script generacion de firmware
Al hilo de este post de bittor https://vdr-m7x0.foroactivo.com.es/general-f8/cambiar-script-que-genera-el-firmware-t864.htm#11869 me he puesto a hacer un script en linux con un pequeño interfaz basado en ncurses.
Hay que instalar el paquete 'dialog' que debe estar en todas las distros.
Bueno es una primera version, para que se vea los menus y esas cosas. Pero prefiero que me deis opiniones antes de seguir para adelante.
- Se tiene que copiar y ejecutar desde el directorio padre de VDR-NG-EM
- Los textos hay que revisarlos mucho.
- De la parte de 'Opciones del firmware' funciona la parte de la red y la guarda en un fichero .config_net para futuras ejecuciones del script.
- "Generar firmware" no funciona pero no rompe nada.
- "Actualizar vdr" actualiza y compila el vdr, y genera un nuevo .ofi con todo.
- "Actualizar plugins" actualiza y compila los plugins (no lo he probado todavia) y genera un nuevo .ofi con todo.
- "Actualizar webif" pues igual que los otros.
Espero opiniones constructivas y si alguno se anima a ayudar, adelante.
p.d: Ya me gustaria hacerlo con 'make menuconfig', pero no he encontrado
mucha documentacion al respecto.
Hay que instalar el paquete 'dialog' que debe estar en todas las distros.
Bueno es una primera version, para que se vea los menus y esas cosas. Pero prefiero que me deis opiniones antes de seguir para adelante.
- Se tiene que copiar y ejecutar desde el directorio padre de VDR-NG-EM
- Los textos hay que revisarlos mucho.
- De la parte de 'Opciones del firmware' funciona la parte de la red y la guarda en un fichero .config_net para futuras ejecuciones del script.
- "Generar firmware" no funciona pero no rompe nada.
- "Actualizar vdr" actualiza y compila el vdr, y genera un nuevo .ofi con todo.
- "Actualizar plugins" actualiza y compila los plugins (no lo he probado todavia) y genera un nuevo .ofi con todo.
- "Actualizar webif" pues igual que los otros.
Espero opiniones constructivas y si alguno se anima a ayudar, adelante.
p.d: Ya me gustaria hacerlo con 'make menuconfig', pero no he encontrado
mucha documentacion al respecto.
- Código:
#!/bin/bash
#inicio de script
#Script con licencia de distribución Dominio Público
#http://creativecommons.org/publicdomain/
#Este software se entrega sin garantía de ningún tipo
#Autor: naldoco (Reynaldo Cordero)
#Autor: zjuanma
#Defaults
BASE=`pwd`
COMP_LOG="$BASE/compilacion.log"
ERROR_LOG="$BASE/errores.log"
MAKE_LOG="$BASE/make.log"
TEMP=/tmp/answer$$
CONF_VERSION="lite"
CONF_MODEL="m740"
CONF_NET_FILE="$BASE/.config_net"
CONF_LOCAL_FILE="$BASE/.config_local"
RC_CONF="$BASE/VDR-NG-EM/VDR-NG-FW/buildin/base-pro/common/etc/rc.conf"
RC_LOCAL_CONF="$BASE/VDR-NG-EM/VDR-NG-FW/buildin/base-pro/common/etc/rc.local.conf"
export CC=/usr/bin/gcc-3.4
#fin defaults
#---------------------------------------------------------------------------------------------------------------
# utility function
on_off() {
if [ "$1" = "$2" ] ; then echo on ; else echo off ; fi
}
#---------------------------------------------------------------------------------------------------------------
select_version() {
dialog --title "Version" \
--radiolist "Select Version:" 11 60 4 \
1 "LITE" `on_off $CONF_VERSION 'lite'` \
2 "PRO" `on_off $CONF_VERSION 'pro'` \
2>$TEMP
if [ "$?" != "0" ] ; then return ; fi
choice=`cat $TEMP`
case $choice in
1) CONF_VERSION='lite';;
2) CONF_VERSION='pro';;
esac
}
#---------------------------------------------------------------------------------------------------------------
select_model() {
dialog --title "Siemens m7xx model" \
--radiolist "Select Siemens m7xx model:" 11 60 4 \
1 "M740" `on_off $CONF_MODEL "m740"` \
2 "M750T" `on_off $CONF_MODEL "m750t"` \
2> $TEMP
if [ "$?" != "0" ] ; then return ; fi
choice=`cat $TEMP`
case $choice in
1) CONF_MODEL='m740';;
2) CONF_MODEL='m750t';;
esac
}
#---------------------------------------------------------------------------------------------------------------
net_menu() {
# network config
dialog \
--title "Asignacion IP" \
--radiolist "Seleccione una opcion:" 10 60 3 \
1 "DHCP" `on_off $net "dhcp"` \
2 "IP fija" `on_off $net "inet"` 2>$TEMP
choice=`cat $TEMP`
case $choice in
1) net=dhcp;;
2) net=inet;
dialog --inputbox "Direccion IP: " 0 0 $ip 2> $TEMP ;
ip=`cat $TEMP`;
dialog --inputbox "Direccion Mascara de red: " 0 0 $netmask 2> $TEMP ;
netmask=`cat $TEMP`;
dialog --inputbox "Direccion Puerta de enlace: " 0 0 $gateway 2> $TEMP ;
gateway=`cat $TEMP`;
if [ -z "$gateway" ] ; then gateway="NO" ; fi ;;
esac
}
#---------------------------------------------------------------------------------------------------------------
netdate_menu(){
#netdate=NO
#netdate_server=europe.pool.ntp.org
dialog --title "Servidor de fecha" \
--checklist "Seleccion:" 11 60 4 \
1 "Activar servidor de fecha" `on_off $netdate "YES"` 2> $TEMP
if [ "$?" != "0" ] ; then return ; fi
choice=`cat $TEMP`
case $choice in
\"1\") netdate='YES';
dialog --inputbox "Servidor de fecha: " 0 0 $netdate_server 2> $TEMP ;
netdate_server=`cat $TEMP`;;
*) netdate='NO';;
esac
}
#---------------------------------------------------------------------------------------------------------------
configure_net() {
while true
do
dialog \
--title "Configuracion de la red" \
--menu "Configuracion de la red:" 10 60 3 \
1 "Asignacion IP" \
2 "Servidor de fecha" 2>$TEMP
if [ "$?" != "0" ] ; then return ; fi
choice=`cat $TEMP`
case $choice in
1) net_menu;;
2) netdate_menu;;
esac
done
}
#---------------------------------------------------------------------------------------------------------------
set_net() {
echo "net=$net" > $CONF_NET_FILE
echo "ip=$ip" >> $CONF_NET_FILE
echo "netmask=$netmask" >> $CONF_NET_FILE
echo "gateway=$gateway" >> $CONF_NET_FILE
echo "netdate=$netdate" >> $CONF_NET_FILE
echo "netdate_server=$netdate_server" >> $CONF_NET_FILE
sed -i "s/net=.*/net=$net/g" $RC_CONF
sed -i "s/ip=.*/ip=$ip/g" $RC_CONF
sed -i "s/netmask=.*/netmask=$netmask/g" $RC_CONF
sed -i "s/gateway=.*/gateway=$gateway/g" $RC_CONF
sed -i "s/netdate=.*/netdate=$netdate/g" $RC_CONF
sed -i "s/netdate_server=.*/netdate_server=$netdate_server/g" $RC_CONF
return
}
#---------------------------------------------------------------------------------------------------------------
configure_local() {
#TODO
return
}
#---------------------------------------------------------------------------------------------------------------
config_general(){
#Configurar parametros de la red
if [ "$CONF_VERSION" = "pro" ]; then
source $RC_CONF
if [ -f $CONF_NET_FILE ]; then
source $CONF_NET_FILE
fi
fi
#Configurar parametros del rc.local.conf
source $RC_LOCAL_CONF
if [ -f $CONF_LOCAL_FILE ]; then
source $CONF_LOCAL_FILE
fi
}
#---------------------------------------------------------------------------------------------------------------
update_vdr() {
dialog --infobox "Processing, please wait" 3 34
svn update $BASE/VDR-NG-EM/Addons 3>&2 2>&1 1>&3 >> $MAKE_LOG
cd $BASE/VDR-NG-EM/VDR-NG-FW
((make clean-vdr 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) >> $MAKE_LOG
((make distclean-vdr 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) >> $MAKE_LOG
((make 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
update_plugins() {
dialog --infobox "Processing, please wait" 3 34
cd $BASE/VDR-NG-EM/VDR-NG-FW
((make clean-vdr-plugins 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) >> $MAKE_LOG
((make distclean-vdr-plugins 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) >> $MAKE_LOG
((make 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
update_webif() {
dialog --infobox "Processing, please wait" 3 34
svn update $BASE/VDR-NG-EM/Addons 3>&2 2>&1 1>&3 >> $MAKE_LOG
cd $BASE/VDR-NG-EM/VDR-NG-FW
((make clean-webif 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) >> $MAKE_LOG
((make distclean-webif 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) >> $MAKE_LOG
((make 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) 2>&1 >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
create_firmware(){
# Se informa de que no harán más preguntas, de los ficheros de log y de que tenga paciencia.
dialog --msgbox "La compilación puede llevar 'bastante' tiempo. Paciencia. El archivo de log se llama '$COMP_LOG' El archivo con los warnings y los errores es '$ERROR_LOG' Si al final obtiene un firmware, el proceso puede considerlo 'sin errores' " 0 0
dialog --infobox "Processing, please wait" 3 34
echo "Haciendo limpieza de ficheros..." >>$COMP_LOG
###rm -rf VDR-NG-EM/VDR-NG-FW
echo "Actualizando VDR-NG-EM..." >> $COMP_LOG
###svn checkout http://svn.assembla.com/svn/VDR-M7x0/unstable ./VDR-NG-EM
# Aquí se configura automáticamente si la versión es PRO o LITE.
sed -i "s/vdr_version=\".*\"/vdr_version=\"$CONF_VERSION\"/g" $BASE/VDR-NG-EM/make-fw
echo "Recordatorio: compilando con la opción" \
"`grep ^vdr_version $BASE/VDR-NG-EM/make-fw`" >>$COMP_LOG
echo "Preparando la compilación..." >>$COMP_LOG
cd $BASE/VDR-NG-EM
###./make-fw
echo "Estamos en el directorio `pwd`" >> $COMP_LOG
# Aquí se configura automáticamente el modelo del Siemens
if [ "$CONF_VERSION" = "lite" ]; then
echo $CONF_MODEL > ./VDR-NG-FW/buildin/base-lite/m740/etc/systemtype
fi
# VDR-NG-EM/VDR-NG-FW/buildin/base-pro/m740/etc/systemtype
if [ "$CONF_VERSION" = "pro" ]; then
echo $CONF_MODEL > ./VDR-NG-FW/buildin/base-pro/m740/etc/systemtype
fi
echo "Recuperando las descargas..." >> $COMP_LOG
# Mover al directorio definitivo de descargas
cp -rf $BASE/downloads/* $BASE/VDR-NG-EM/VDR-NG-FW/downloads/ >> $COMP_LOG
echo "Compilando el firmware..." >> $COMP_LOG
echo "Se guardan las incidencias detalladas de la compilación en el fichero 'make.log'" >> $COMP_LOG
cd $BASE/VDR-NG-FW
export PATH=$PATH:./
# make
###((make 3>&2 2>&1 1>&3 | tee ../../errores.log) 3>&2 2>&1 1>&3) 2>&1 | tee ../../make.log
echo "Fin de la compilación" >> $COMP_LOG
exito="NO"
version=`svnversion $BASE/VDR-NG-EM/Addons | cut -d ":" -f 2`
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.ofi ]; then
### cp VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.ofi open7x0.org-m740-$version.ofi
dialog --msgbox "Firmware generado: open7x0.org-m740-$version.ofi" 0 0
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.wsw ]; then
### cp VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.wsw open7x0.org-m740-$version.wsw
dialog --msgbox "Firmware generado: open7x0.org-m740-$version.wsw" 0 0
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.ofi ]; then
### cp VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.ofi open7x0.org-m750s-$version.ofi
dialog --msgbox "Firmware generado: open7x0.org-m750s-$version.ofi" 0 0
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.wsw ]; then
### cp VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.wsw open7x0.org-m750s-$version.wsw
dialog --msgbox "Firmware generado: open7x0.org-m750s-$version.wsw" 0 0
exito="SI"
fi
if [ "$exito" = "NO" ]; then
dialog --msgbox "Ha habido un error. Eche un vistazo hacia el final del fichero 'errores.log' para tratar de averiguar el problema." 0 0
else
dialog --msgbox "Puede proceder a la instalación del firmware." 0 0
fi
echo "Fin de la compilación" >> $COMP_LOG
date >> $COMP_LOG
}
#---------------------------------------------------------------------------------------------------------------
main_menu() {
config_general
while true
do
dialog \
--title "Generacion firmware VDR-EM" \
--menu "Seleccione una opción:" 12 60 5 \
1 "Opciones del firmware" \
2 "Generar firmware" \
3 "Actualizar VDR" \
4 "Actualizar Plugins" \
5 "Actualizar Servidor Web" \
6 "Salir" 2>$TEMP
if [ "$?" != "0" ] ; then return ; fi
choice=`cat $TEMP`
case $choice in
1) configure_net;set_net;configure_local;;
2) create_firmware;;
3) update_vdr;create_firmware;;
4) update_plugins;;
5) update_webif;create_firmware;;
6) exit 0;;
esac
done
}
#--------------- MAIN -----------------------------------------------------------------------------
#Inicializar el fichero de log general
echo "Inicio de la compilación" >$COMP_LOG
date >> $COMP_LOG
# Introducción e instrucciones generales
dialog --msgbox "Debe ejecutar este script en el directorio que alojará al directorio de compilación 'VDR-NG-EM'. Va a descargar y compilar los fuentes del firmware para su VDR en su versión 'pro' o 'lite', según elija. Este archivo de lotes automatiza los pasos explicados en la página web: http://www.assembla.com/wiki/show/VDR-M7x0/Instalación_del_VDR-NG-EM#instalacion_linux Si su distribución es una Ubuntu Karmic Koala (9.10), DEBE leer las instrucciones de esa página antes de seguir." 0 0
# El usuario debe elegir entre firmware 'PRO' y firmware 'LITE'
select_version
echo "Version: $CONF_VERSION" >> $COMP_LOG
# El usuario debe elegir el modelo de su Siemens entre m740 y m750t
select_model
echo "Modelo: $CONF_MODEL" >> $COMP_LOG
#Guardando downloads
dialog --infobox "Salvando las descargas de una compilación anterior... please wait" 0 0
sleep 3
mkdir -p $BASE/downloads/
cp -u -v $BASE/VDR-NG-EM/VDR-NG-FW/downloads/* $BASE/downloads/ >> $COMP_LOG
#Menu principal
main_menu
#fin de script
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
Tiene buena pinta porque es más amigable, aunque ese modo de texto azul es prehistórico
He mirado y está el xdialog para que sean ventanas de las X, pero no está disponible en los repositorios de Ubuntu 9.10
He mirado y está el xdialog para que sean ventanas de las X, pero no está disponible en los repositorios de Ubuntu 9.10
Re: GUI script generacion de firmware
xdialog no tiene paquete para Karmic, porque tiene zenity por defecto.
Quizas lo mire porque no creo que sea dificil de adaptar.
Quizas lo mire porque no creo que sea dificil de adaptar.
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
Bueno bittor, a ver si te gusta este script con zenity.
Falta que actualice la parte del firmware del svn y revisar el volcado
de log a ficheros.
Falta que actualice la parte del firmware del svn y revisar el volcado
de log a ficheros.
- Código:
#!/bin/bash
#inicio de script
#Script con licencia de distribución Dominio Público
#http://creativecommons.org/publicdomain/
#Este software se entrega sin garantía de ningún tipo
#Autor: naldoco (Reynaldo Cordero)
#Autor: zjuanma
#Defaults
BASE=`pwd`
COMP_LOG="$BASE/compilacion.log"
ERROR_LOG="$BASE/errores.log"
MAKE_LOG="$BASE/make.log"
TEMP=/tmp/answer$$
version_firm="lite"
model_m7xx="m740"
last_svn_firm=0
CONF_NET_FILE="$BASE/.config_net"
CONF_LOCAL_FILE="$BASE/.config_local"
RC_CONF="$BASE/VDR-NG-EM/VDR-NG-FW/buildin/base-pro/common/etc/rc.conf"
RC_LOCAL_CONF="$BASE/VDR-NG-EM/VDR-NG-FW/buildin/base-pro/common/etc/rc.local.conf"
export CC=/usr/bin/gcc-3.4
#fin defaults
#---------------------------------------------------------------------------------------------------------------
# utility function
on_off() {
if [ "$1" = "$2" ] ; then echo TRUE ; else echo FALSE ; fi
}
debug() {
echo $1 >> $COMP_LOG
}
info() {
echo $1 >> $COMP_LOG
}
check_zenity() {
zenity 3>&2 2>&1 > /dev/null
if [ "$?" = "127" ] ; then
echo "Necesitas instalar el paquete zenity"
exit 1
fi
}
get_svn_firm() {
return `svn log -l 1 -q VDR-NG-FW | grep -v '^\-' | cut -d'|' -f 1`
}
#---------------------------------------------------------------------------------------------------------------
select_version() {
ans=$(zenity --list --title "Version" --text "Select Version:" --radiolist --column="" --column="Version" `on_off $version_firm 'lite'` "LITE" `on_off $version_firm 'pro'` "PRO" );
case $ans in
"LITE") version_firm='lite';;
"PRO") version_firm='pro';;
esac
}
#---------------------------------------------------------------------------------------------------------------
select_model() {
ans=$(zenity --list --title "Siemens m7xx model" --text "Select Siemens m7xx model" --radiolist --column="" --column="Model" `on_off $model_m7xx 'm740'` "M740" `on_off $model_m7xx 'm750t'` "M750T" );
case $ans in
"M740") model_m7xx='m740';;
"M750T") model_m7xx='m750t';;
esac
}
#---------------------------------------------------------------------------------------------------------------
inet_menu() {
# network config
ans=$(zenity --list --title "Configuracion IP" --text "Selecciona una opcion" --radiolist --column="" --column="Model" `on_off $net 'dhcp'` DHCP `on_off $net 'inet'` "IP Fija" );
case $ans in
"DHCP") net=dhcp;;
"IP Fija") net=inet;
ip=$(zenity --title "Network configuration" --entry --text "Direccion IP" --entry-text "$ip")
netmask=$(zenity --title "Network configuration" --entry --text "Direccion Mascara de red" --entry-text "$netmask")
gateway=$(zenity --title "Network configuration" --entry --text "Direccion Puerta de enlace" --entry-text "$gateway")
if [ -z "$gateway" ] ; then gateway="NO" ; fi ;;
esac
}
#---------------------------------------------------------------------------------------------------------------
netdate_menu(){
#netdate=NO
#netdate_server=europe.pool.ntp.org
ans=$(zenity --list --title "Servidor de fecha" --text "Selecciona una opcion" --checklist --column="" --column="" `on_off $netdate "YES"` "Activar servidor de fecha" );
if [ -z "$ans" ] ; then return ; fi
case $ans in
"Activar servidor de fecha")
netdate='YES';
netdate_server=$(zenity --title "Netdate configuration" --entry --text "Servidor de fecha" --entry-text "$netdate_server");;
*) netdate='NO';;
esac
}
#---------------------------------------------------------------------------------------------------------------
net_menu() {
while true
do
ans=$(zenity --list --title="Configuracion de la red" --column "" --column ""\
1 "Asignacion IP" \
2 "Servidor de fecha" )
if [ -z "$ans" ] ; then return ; fi
case $ans in
1) inet_menu;;
2) netdate_menu;;
esac
done
}
#---------------------------------------------------------------------------------------------------------------
set_net() {
cat /dev/null > $CONF_NET_FILE
echo "net=$net" > $CONF_NET_FILE
echo "ip=$ip" >> $CONF_NET_FILE
echo "netmask=$netmask" >> $CONF_NET_FILE
echo "gateway=$gateway" >> $CONF_NET_FILE
echo "netdate=$netdate" >> $CONF_NET_FILE
echo "netdate_server=$netdate_server" >> $CONF_NET_FILE
sed -i "s/net=.*/net=$net/g" $RC_CONF
sed -i "s/ip=.*/ip=$ip/g" $RC_CONF
sed -i "s/netmask=.*/netmask=$netmask/g" $RC_CONF
sed -i "s/gateway=.*/gateway=$gateway/g" $RC_CONF
sed -i "s/netdate=.*/netdate=$netdate/g" $RC_CONF
sed -i "s/netdate_server=.*/netdate_server=$netdate_server/g" $RC_CONF
return
}
#---------------------------------------------------------------------------------------------------------------
set_general() {
cat /dev/null > $CONF_LOCAL_FILE ;
echo "last_svn_firm=$last_svn_firm" >> $CONF_LOCAL_FILE;
echo "model_m7xx=$model_m7xx" >> $CONF_LOCAL_FILE ;
echo "version_firm=$version_firm" >> $CONF_LOCAL_FILE ;
###TODO
return
}
#---------------------------------------------------------------------------------------------------------------
load_general(){
#Configurar parametros del rc.local.conf
source $RC_LOCAL_CONF
if [ -f $CONF_LOCAL_FILE ]; then
source $CONF_LOCAL_FILE
fi
#Configurar parametros de la red
if [ "$version_firm" = "pro" ]; then
source $RC_CONF
if [ -f $CONF_NET_FILE ]; then
source $CONF_NET_FILE
fi
fi
}
#---------------------------------------------------------------------------------------------------------------
update_vdr() {
svn update $BASE/VDR-NG-EM/Addons 3>&2 2>&1 1>&3 | tee >(zenity --progress --auto-close --pulsate --text "Actualizando codigo fuente de VDR") >> $MAKE_LOG
(
cd $BASE/VDR-NG-EM/VDR-NG-FW ;
((make clean-vdr 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make distclean-vdr 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
) | zenity --progress --auto-close --pulsate --text "Compilando VDR" >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
update_plugins() {
svn update $BASE/VDR-NG-EM/Addons 3>&2 2>&1 1>&3 | tee >(zenity --progress --auto-close --pulsate --text "Actualizando codigo fuente de plugins" ) >> $MAKE_LOG
(
cd $BASE/VDR-NG-EM/VDR-NG-FW ;
((make clean-vdr-plugins 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make distclean-vdr-plugins 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
) | zenity --progress --auto-close --pulsate --text "Compilando Plugins" >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
update_webif() {
svn update $BASE/VDR-NG-EM/Addons 3>&2 2>&1 1>&3 | tee >(zenity --progress --auto-close --pulsate --text "Actualizando codigo fuente de webif" ) >> $MAKE_LOG
(
cd $BASE/VDR-NG-EM/VDR-NG-FW;
((make clean-webif 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make distclean-webif 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
) | tee zenity --progress --auto-close --pulsate --text "Compilando webif" >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
update_firmware() {
# Se informa de que no harán más preguntas, de los ficheros de log y de que tenga paciencia.
zenity --info --text "La compilación puede llevar 'bastante' tiempo. Paciencia.\nEl archivo de log se llama '$COMP_LOG'.\nEl archivo con los warnings y los errores es '$ERROR_LOG'"
info "Haciendo limpieza de ficheros..."
###rm -rf VDR-NG-EM/VDR-NG-FW | tee >(zenity --progress --auto-close --pulsate) >> $COMP_LOG
info "Actualizando VDR-NG-EM..."
###TODO
###svn checkout http://svn.assembla.com/svn/VDR-M7x0/unstable ./VDR-NG-EM | tee >(zenity --progress --auto-close --pulsate) >> $COMP_LOG
# Aquí se configura automáticamente si la versión es PRO o LITE.
sed -i "s/vdr_version=\".*\"/vdr_version=\"$version_firm\"/g" $BASE/VDR-NG-EM/make-fw
info "Recordatorio: compilando con la opción `grep ^vdr_version $BASE/VDR-NG-EM/make-fw`"
info "Preparando la compilación..."
cd $BASE/VDR-NG-EM
###TODO
###./make-fw
debug "Estamos en el directorio `pwd`"
# Aquí se configura automáticamente el modelo del Siemens
if [ "$version_firm" = "lite" ]; then
echo $model_m7xx > ./VDR-NG-FW/buildin/base-lite/m740/etc/systemtype
fi
# VDR-NG-EM/VDR-NG-FW/buildin/base-pro/m740/etc/systemtype
if [ "$version_firm" = "pro" ]; then
echo $model_m7xx > ./VDR-NG-FW/buildin/base-pro/m740/etc/systemtype
fi
info "Recuperando las descargas..."
# Mover al directorio definitivo de descargas
###TODO cp -rf $BASE/downloads/* $BASE/VDR-NG-EM/VDR-NG-FW/downloads/ | tee >(zenity --progress --auto-close --pulsate) >> $COMP_LOG
}
#---------------------------------------------------------------------------------------------------------------
create_firmware(){
info "Compilando el firmware..."
info "Se guardan las incidencias detalladas de la compilación en el fichero '$MAKE_LOG'"
#recuperando ficheros downloads
rm $BASE/VDR-NG-EM/VDR-NG-FW/downloads
ln -s $BASE/downloads $BASE/VDR-NG-EM/VDR-NG-FW/downloads
cd $BASE/VDR-NG-EM/VDR-NG-FW
export PATH=$PATH:./
# make
##((make 3>&2 2>&1 1>&3 | tee ../../errores.log) 3>&2 2>&1 1>&3) 2>&1 | tee ../../make.log
((make 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) | tee >(zenity --progress --auto-close --pulsate --text "Creando fichero de firmware") >> $MAKE_LOG
info "Fin de la compilación"
exito="NO"
version=`svnversion $BASE/VDR-NG-EM/Addons | cut -d ":" -f 2`
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.ofi ]; then
cp $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.ofi open7x0.org-m740-$version.ofi
zenity --info --text "Firmware generado: open7x0.org-m740-$version.ofi"
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.wsw ]; then
cp $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.wsw open7x0.org-m740-$version.wsw
zenity --info --text "Firmware generado: open7x0.org-m740-$version.wsw"
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.ofi ]; then
cp $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.ofi open7x0.org-m750s-$version.ofi
zenity --info --text "Firmware generado: open7x0.org-m750s-$version.ofi"
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.wsw ]; then
cp $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.wsw open7x0.org-m750s-$version.wsw
zenity --info --text "Firmware generado: open7x0.org-m750s-$version.wsw"
exito="SI"
fi
if [ "$exito" = "NO" ]; then
zenity --error --text "Ha habido un error. Eche un vistazo hacia el final del fichero 'errores.log' para tratar de averiguar el problema."
else
zenity --info --text "Puede proceder a la instalación del firmware."
fi
echo "Fin de la compilación" >> $COMP_LOG
date >> $COMP_LOG
}
#---------------------------------------------------------------------------------------------------------------
main_menu() {
while true
do
ans=$(zenity --list --width 300 --height 275 --title "Generacion firmware VDR-EM" --text "" --column "" --column ""\
1 "Opciones del firmware" \
2 "Generar firmware" \
3 "Actualizar VDR" \
4 "Actualizar Plugins" \
5 "Actualizar Servidor Web" \
6 "Salir" )
if [ -z $ans ] ; then return ; fi
case $ans in
1) net_menu;set_net;;
2) update_firmware;load_general;create_firmware;;
3) update_vdr;create_firmware;;
4) update_plugins;create_firmware;;
5) update_webif;create_firmware;;
6) exit 0;;
esac
done
}
#--------------- MAIN -----------------------------------------------------------------------------
check_zenity
#Inicializar el fichero de log general
debug "Inicio de la compilación"
debug `date`
# Introducción e instrucciones generales
zenity --info --text ".- Debe ejecutar este script en el directorio que alojará al directorio de compilación 'VDR-NG-EM'.\n.- Va a descargar y compilar los fuentes del firmware para su VDR en su versión 'pro' o 'lite', según elija.\n.- Este archivo de lotes automatiza los pasos explicados en la página web: http://www.assembla.com/wiki/show/VDR-M7x0/Instalación_del_VDR-NG-EM#instalacion_linux.\n.- Si su distribución es una Ubuntu Karmic Koala (9.10), DEBE leer las instrucciones de esa página antes de seguir."
#Cargando configuracion guardada por defecto
load_general
# El usuario debe elegir entre firmware 'PRO' y firmware 'LITE'
select_version
debug "Version: $version_firm"
# El usuario debe elegir el modelo de su Siemens entre m740 y m750t
select_model
debug "Modelo: $model_m7xx"
set_general
load_general
#Guardando downloads
if [ -f "$BASE/VDR-NG-EM/VDR-NG-FW/downloads" ]; then
(
mkdir -p $BASE/downloads
cp -u -v $BASE/VDR-NG-EM/VDR-NG-FW/downloads $BASE/downloads
)| tee >(zenity --progress --title "Downloads backup" --auto-close --pulsate --auto-close) >> $COMP_LOG
fi
#Menu principal
main_menu
#fin de script
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
Esto ya es otra cosa, ha mejorado considerablemente.
Supongo que el UCK también está hecho con zenity porque la apariencia visual es idéntica.
RainerW es un alemán que quiere colaborar y me ha enviado este script para tener el firm en otros idiomas.
Le he preguntado si nos daba permiso para incluirlo en este nuevo script que estás haciendo poniendo sus créditos y no hay problema en usarlo.
A parte está haciendo otro para las configuraciones que le he comentado que me pase cuando lo termine.
Supongo que el UCK también está hecho con zenity porque la apariencia visual es idéntica.
RainerW es un alemán que quiere colaborar y me ha enviado este script para tener el firm en otros idiomas.
Le he preguntado si nos daba permiso para incluirlo en este nuevo script que estás haciendo poniendo sus créditos y no hay problema en usarlo.
A parte está haciendo otro para las configuraciones que le he comentado que me pase cuando lo termine.
Última edición por bittor el Vie 5 Feb 2010 - 14:27, editado 1 vez
Re: GUI script generacion de firmware
Vale, le pongo una opcion de idioma, pero yo creo que lo mejor es mantener los scripts por separado como ahora y que se vayan llamando por desdel el interfaz.
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
¿alguien se anima a colaborar con este nuevo script para generar el firmware?
Re: GUI script generacion de firmware
yo me apunto... he estado unos dias apartado por motivos personales. pero ya toy de nuevo.
Un saludo.
Un saludo.
Re: GUI script generacion de firmware
Yo también me apunto, dentro de mis modestas posibilidades... ahora no estoy en casa, pero antes de salir lo he probado y al compilar me ha dado una serie de errores que no he tenido tiempo de mirar no se si tienen que ver con el script o son simplemente de compilación.
pjllaneras- Betatester
- Cantidad de envíos : 569
Fecha de inscripción : 29/01/2009
Edad : 52
Localización : Palma de Mallorca
Re: GUI script generacion de firmware
Yo creo que lo suyo seria subirlo al svn.
Me falta :
- revisar los textos (quizas traducirlos)
- revisar el tema de volcar toda la salida a un fichero de log para poder revisarlo luego, pero no doy con ello. (Los errores de compilacion no se porque tiene algo que ver con esto).
- añadir el script de los idiomas del amigo aleman. (esto se hace en 5 minutos, no me preocupa)
- Ver que parametros con sus posibles valores hay que configurar del .config (no creo que debamos poner todos, solo los basicos)
- A medias tengo los parametros del rc.local.conf.
Despues de todo esto, ya tengo una version funcional. Solo hay que ejecutar el script en un directorio vacio y lanzarlo.
Se puede copiar el directorio downloads al mismo nivel del script y asi no hace las descargas. En esta version
los mensajes salen en la consola no en los ficheros.
Me falta :
- revisar los textos (quizas traducirlos)
- revisar el tema de volcar toda la salida a un fichero de log para poder revisarlo luego, pero no doy con ello. (Los errores de compilacion no se porque tiene algo que ver con esto).
- añadir el script de los idiomas del amigo aleman. (esto se hace en 5 minutos, no me preocupa)
- Ver que parametros con sus posibles valores hay que configurar del .config (no creo que debamos poner todos, solo los basicos)
- A medias tengo los parametros del rc.local.conf.
Despues de todo esto, ya tengo una version funcional. Solo hay que ejecutar el script en un directorio vacio y lanzarlo.
Se puede copiar el directorio downloads al mismo nivel del script y asi no hace las descargas. En esta version
los mensajes salen en la consola no en los ficheros.
- Código:
#!/bin/bash
#inicio de script
#Script con licencia de distribución Dominio Público
#http://creativecommons.org/publicdomain/
#Este software se entrega sin garantía de ningún tipo
#Autor: naldoco (Reynaldo Cordero)
#Autor: zjuanma
#Defaults
COMP_OPTS=""
BASE=`pwd`
COMP_LOG="$BASE/compilacion.log"
ERROR_LOG="$BASE/errores.log"
MAKE_LOG="$BASE/make.log"
TEMP=/tmp/answer$$
version_firm="lite"
model_m7xx="m740"
last_svn_firm=0
CONF_NET_FILE="$BASE/.config_net"
CONF_LOCAL_FILE="$BASE/.config_local"
RC_CONF="$BASE/VDR-NG-EM/VDR-NG-FW/buildin/base-$version_firm/common/etc/rc.conf"
RC_LOCAL_CONF="$BASE/VDR-NG-EM/VDR-NG-FW/buildin/base-$version_firm/common/etc/rc.local.conf"
export CC=/usr/bin/gcc-3.4
#fin defaults
#---------------------------------------------------------------------------------------------------------------
# utility function
on_off() {
if [ "$1" = "$2" ] ; then echo TRUE ; else echo FALSE ; fi
}
debug() {
echo $1 ##>> $COMP_LOG
}
info() {
echo $1 #>> $COMP_LOG
}
check_zenity() {
zenity 2>&1 > /dev/null
if [ "$?" = "127" ] ; then
echo "Necesitas instalar el paquete zenity"
exit 1
fi
}
get_svn_firm() {
return `svn log -l 1 -q VDR-NG-FW | grep -v '^\-' | cut -d'|' -f 1`
}
#---------------------------------------------------------------------------------------------------------------
select_version() {
ans=$(zenity --list --title "Version" --text "Select Version:" --radiolist --column="" --column="Version" `on_off $version_firm 'lite'` "LITE" `on_off $version_firm 'pro'` "PRO" );
case $ans in
"LITE") version_firm='lite';;
"PRO") version_firm='pro';;
esac
}
#---------------------------------------------------------------------------------------------------------------
select_model() {
ans=$(zenity --list --title "Siemens m7xx model" --text "Select Siemens m7xx model" --radiolist --column="" --column="Model" `on_off $model_m7xx 'm740'` "M740" `on_off $model_m7xx 'm750t'` "M750T" );
case $ans in
"M740") model_m7xx='m740';;
"M750T") model_m7xx='m750t';;
esac
}
#---------------------------------------------------------------------------------------------------------------
inet_menu() {
# network config
ans=$(zenity --list --title "Configuracion IP" --text "Selecciona una opcion" --radiolist --column="" --column="Model" `on_off $net 'dhcp'` DHCP `on_off $net 'inet'` "IP Fija" );
case $ans in
"DHCP") net=dhcp;;
"IP Fija") net=inet;
ip=$(zenity --title "Network configuration" --entry --text "Direccion IP" --entry-text "$ip")
netmask=$(zenity --title "Network configuration" --entry --text "Direccion Mascara de red" --entry-text "$netmask")
gateway=$(zenity --title "Network configuration" --entry --text "Direccion Puerta de enlace" --entry-text "$gateway")
if [ -z "$gateway" ] ; then gateway="NO" ; fi ;;
esac
}
#---------------------------------------------------------------------------------------------------------------
netdate_menu(){
#netdate=NO
#netdate_server=europe.pool.ntp.org
ans=$(zenity --list --title "Servidor de fecha" --text "Selecciona una opcion" --checklist --column="" --column="" `on_off $netdate "YES"` "Activar servidor de fecha" );
if [ -z "$ans" ] ; then return ; fi
case $ans in
"Activar servidor de fecha")
netdate='YES';
netdate_server=$(zenity --title "Netdate configuration" --entry --text "Servidor de fecha" --entry-text "$netdate_server");;
*) netdate='NO';;
esac
}
#---------------------------------------------------------------------------------------------------------------
net_menu() {
while true
do
ans=$(zenity --list --title="Configuracion de la red" --column "" --column ""\
1 "Asignacion IP" \
2 "Servidor de fecha" )
if [ -z "$ans" ] ; then return ; fi
case $ans in
1) inet_menu;;
2) netdate_menu;;
esac
done
}
#---------------------------------------------------------------------------------------------------------------
set_net() {
cat /dev/null > $CONF_NET_FILE
echo "net=$net" > $CONF_NET_FILE
echo "ip=$ip" >> $CONF_NET_FILE
echo "netmask=$netmask" >> $CONF_NET_FILE
echo "gateway=$gateway" >> $CONF_NET_FILE
echo "netdate=$netdate" >> $CONF_NET_FILE
echo "netdate_server=$netdate_server" >> $CONF_NET_FILE
sed -i "s/net=.*/net=$net/g" $RC_CONF
sed -i "s/ip=.*/ip=$ip/g" $RC_CONF
sed -i "s/netmask=.*/netmask=$netmask/g" $RC_CONF
sed -i "s/gateway=.*/gateway=$gateway/g" $RC_CONF
sed -i "s/netdate=.*/netdate=$netdate/g" $RC_CONF
sed -i "s/netdate_server=.*/netdate_server=$netdate_server/g" $RC_CONF
return
}
#---------------------------------------------------------------------------------------------------------------
set_general() {
cat /dev/null > $CONF_LOCAL_FILE ;
echo "last_svn_firm=$last_svn_firm" >> $CONF_LOCAL_FILE;
echo "model_m7xx=$model_m7xx" >> $CONF_LOCAL_FILE ;
echo "version_firm=$version_firm" >> $CONF_LOCAL_FILE ;
echo "vdr_videodirs=$vdr_videodirs" >> $CONF_LOCAL_FILE ;
sed -i "s/vdr_videodirs=.*/vdr_videodirs=$vdr_videodirs/g" $RC_LOCAL_CONF
echo "do_net_mount=$do_net_mount" >> $CONF_LOCAL_FILE ;
sed -i "s/do_net_mount=.*/do_net_mount=$do_net_mount/g" $RC_LOCAL_CONF
###TODO
return
}
#---------------------------------------------------------------------------------------------------------------
general_menu() {
vdr_videodirs=$(zenity --title "General configuration" --entry --text "Directorio de grabaciones" --entry-text "$vdr_videodirs");
ans=$(zenity --list --title "General configuration" --text "Montar directorios de red" --radiolist --column="" --column="Option" `on_off $do_net_mount 'YES'` "YES" `on_off $do_net_mount 'NO'` "NO" );
return
}
#---------------------------------------------------------------------------------------------------------------
load_general(){
#Configurar parametros del rc.local.conf
if [ -f $CONF_LOCAL_FILE ]; then
source $CONF_LOCAL_FILE
fi
RC_CONF="$BASE/VDR-NG-EM/VDR-NG-FW/buildin/base-$version_firm/common/etc/rc.conf"
RC_LOCAL_CONF="$BASE/VDR-NG-EM/VDR-NG-FW/buildin/base-$version_firm/common/etc/rc.local.conf"
if [ -f $RC_LOCAL_CONF ]; then
source $RC_LOCAL_CONF
fi
if [ -f $CONF_LOCAL_FILE ]; then
source $CONF_LOCAL_FILE
fi
#Configurar parametros de la red
if [ "$version_firm" = "pro" ]; then
if [ -f $RC_CONF ]; then
source $RC_CONF
fi
if [ -f $CONF_NET_FILE ]; then
source $CONF_NET_FILE
fi
fi
}
#---------------------------------------------------------------------------------------------------------------
update_vdr() {
svn update $BASE/VDR-NG-EM/Addons 2>&1 | tee -a >(zenity --progress --auto-close --auto-kill --pulsate --text "Actualizando codigo fuente de VDR") >> $MAKE_LOG
(
cd $BASE/VDR-NG-EM/VDR-NG-FW ;
((make clean-vdr 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make distclean-vdr 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make 3>&2 2>&1 1>&3 | tee -a $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
) | tee -a >(zenity --progress --auto-close --auto-kill --pulsate --text "Compilando VDR") >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
update_plugins() {
svn update $BASE/VDR-NG-EM/Addons 2>&1 | tee -a >(zenity --progress --auto-close --auto-kill --pulsate --text "Actualizando codigo fuente de plugins") >> $MAKE_LOG
(
cd $BASE/VDR-NG-EM/VDR-NG-FW ;
((make clean-vdr-plugins 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make distclean-vdr-plugins 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
) | tee -a >(zenity --progress --auto-close --pulsate --text "Compilando Plugins") >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
update_webif() {
svn update $BASE/VDR-NG-EM/Addons 2>&1 | tee -a >(zenity --progress --auto-close --auto-kill --pulsate --text "Actualizando codigo fuente de webif") >> $MAKE_LOG
(
cd $BASE/VDR-NG-EM/VDR-NG-FW;
((make clean-webif 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make distclean-webif 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
((make 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) ;
) | tee -a >(zenity --progress --auto-close --auto-kill --pulsate --text "Compilando webif") >> $MAKE_LOG
}
#---------------------------------------------------------------------------------------------------------------
backup_downloads() {
#Gestionando downloads
if [ ! -e $BASE/downloads ]; then
mkdir -p $BASE/downloads
fi
if [ -d "$BASE/VDR-NG-EM/VDR-NG-FW/downloads" ]; then
(
cp -u -v $BASE/VDR-NG-EM/VDR-NG-FW/downloads/* $BASE/downloads/
rm -rf $BASE/VDR-NG-EM/VDR-NG-FW/downloads
) | tee -a >(zenity --progress --text "Downloads backup" --auto-close --auto-kill --pulsate --auto-close)
fi
if [ -e $BASE/downloads ]; then
#recuperando ficheros downloads
mkdir -p $BASE/VDR-NG-EM/VDR-NG-FW
rm -f $BASE/VDR-NG-EM/VDR-NG-FW/downloads
ln -s $BASE/downloads $BASE/VDR-NG-EM/VDR-NG-FW/downloads
fi
}
#---------------------------------------------------------------------------------------------------------------
update_firmware() {
# Se informa de que no harán más preguntas, de los ficheros de log y de que tenga paciencia.
zenity --info --text "La compilación puede llevar 'bastante' tiempo. Paciencia.\nEl archivo de log se llama '$COMP_LOG'.\nEl archivo con los warnings y los errores es '$ERROR_LOG'"
###TODO
#info "Haciendo limpieza de ficheros..."
###rm -rf VDR-NG-EM/VDR-NG-FW | tee >(zenity --progress --auto-close --pulsate) #>> $COMP_LOG
#info "Actualizando VDR-NG-EM..."
if [ -e $BASE/VDR-NG-EM ]; then
svn update $BASE/VDR-NG-EM | tee -a >(zenity --progress --auto-close --pulsate --text "Actualizando VDR-NG-EM" ) #>> $COMP_LOG
fi
# Aquí se configura automáticamente si la versión es PRO o LITE.
sed -i "s/vdr_version=\".*\"/vdr_version=\"$version_firm\"/g" $BASE/VDR-NG-EM/make-fw
info "Recordatorio: compilando con la opción `grep ^vdr_version $BASE/VDR-NG-EM/make-fw`"
info "Preparando la compilación..."
cd $BASE/VDR-NG-EM
./make-fw 2>&1 | tee -a >(zenity --progress --auto-close --auto-kill --pulsate --text "Generando firmware base") #>> $COMP_LOG
# ((./make-fw 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) | zenity --progress --auto-close --pulsate --text "Generando firmware base"
debug "Estamos en el directorio `pwd`"
# Aquí se configura automáticamente el modelo del Siemens
if [ "$version_firm" = "lite" ]; then
echo $model_m7xx > ./VDR-NG-FW/buildin/base-lite/m740/etc/systemtype
fi
# VDR-NG-EM/VDR-NG-FW/buildin/base-pro/m740/etc/systemtype
if [ "$version_firm" = "pro" ]; then
echo $model_m7xx > ./VDR-NG-FW/buildin/base-pro/m740/etc/systemtype
fi
}
#---------------------------------------------------------------------------------------------------------------
create_firmware(){
info "Compilando el firmware..."
info "Se guardan las incidencias detalladas de la compilación en el fichero '$MAKE_LOG'"
rm -f $BASE/VDR-NG-EM/VDR-NG-FW/*.ofi
rm -f $BASE/VDR-NG-EM/VDR-NG-FW/*.wsw
load_general
backup_downloads
cd $BASE/VDR-NG-EM/VDR-NG-FW
export PATH=$PATH:./
# make
##((make $COMP_OPTS 3>&2 2>&1 1>&3 | tee $ERROR_LOG ) 3>&2 2>&1 1>&3) | zenity --progress --auto-close --pulsate --text "Creando fichero de firmware"
make $COMP_OPTS 2>&1 | tee -a >(zenity --progress --auto-close --pulsate --text "Creando fichero de firmware") #>> $COMP_LOG
info "Fin de la compilación"
exito="NO"
version=`svnversion $BASE/VDR-NG-EM/Addons | cut -d ":" -f 2`
mensaje="Firmware generado: "
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.ofi ]; then
cp $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.ofi $BASE/open7x0.org-m740-$version.ofi
mensaje=$mensaje"\n* $BASE/open7x0.org-m740-$version.ofi"
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.wsw ]; then
cp $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m740.wsw $BASE/open7x0.org-m740-$version.wsw
mensaje=$mensaje"\n* $BASE/open7x0.org-m740-$version.wsw"
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.ofi ]; then
cp $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.ofi $BASE/open7x0.org-m750s-$version.ofi
mensaje=$mensaje"\n* $BASE/open7x0.org-m750s-$version.ofi"
exito="SI"
fi
if [ -f $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.wsw ]; then
cp $BASE/VDR-NG-EM/VDR-NG-FW/open7x0.org-m750s.wsw $BASE/open7x0.org-m750s-$version.wsw
mensaje=$mensaje"\n* $BASE/open7x0.org-m750s-$version.wsw"
exito="SI"
fi
if [ "$exito" = "NO" ]; then
zenity --error --text "Ha habido un error. Eche un vistazo hacia el final del fichero 'errores.log' para tratar de averiguar el problema."
else
zenity --info --text "$mensaje\nPuede proceder a la instalación del firmware."
fi
echo "Fin de la compilación" #>> $COMP_LOG
date #>> $COMP_LOG
}
#---------------------------------------------------------------------------------------------------------------
main_menu() {
while true
do
ans=$(zenity --list --width 300 --height 275 --title "Generacion firmware VDR-EM" --text "" --column "" --column "" \
1 "Opciones del firmware" \
2 "Generar firmware" \
3 "Actualizar VDR" \
4 "Actualizar Plugins" \
5 "Actualizar Servidor Web" \
6 "Salir"
)
if [ -z $ans ] ; then return ; fi
case $ans in
1) net_menu;set_net;general_menu;set_general;;
2) update_firmware;create_firmware;;
3) update_vdr;create_firmware;;
4) update_plugins;create_firmware;;
5) update_webif;create_firmware;;
6) exit 0;;
esac
done
}
#--------------- MAIN -----------------------------------------------------------------------------
check_zenity
#Inicializar el fichero de log general
debug "Inicio de la compilación"
debug `date`
# Introducción e instrucciones generales
zenity --info --text ".- Debe ejecutar este script en el directorio que alojará al directorio de compilación 'VDR-NG-EM'.\n.- Va a descargar y compilar los fuentes del firmware para su VDR en su versión 'pro' o 'lite', según elija.\n.- Este archivo de lotes automatiza los pasos explicados en la página web: http://www.assembla.com/wiki/show/VDR-M7x0/Instalación_del_VDR-NG-EM#instalacion_linux.\n.- Si su distribución es una Ubuntu Karmic Koala (9.10), DEBE leer las instrucciones de esa página antes de seguir."
#Descargando fuentes del firmware si no existen
if [ ! -e "$BASE/VDR-NG-EM" ]; then
svn checkout http://svn.assembla.com/svn/VDR-M7x0/unstable $BASE/VDR-NG-EM 2>&1 | tee -a >(zenity --progress --auto-close --pulsate --text "Descargando fuentes") #>> $COMP_LOG
fi
#Cargando configuracion guardada por defecto
load_general
# El usuario debe elegir entre firmware 'PRO' y firmware 'LITE'
select_version
debug "Version: $version_firm"
# El usuario debe elegir el modelo de su Siemens entre m740 y m750t
select_model
debug "Modelo: $model_m7xx"
set_general
load_general
#Menu principal
main_menu
#fin de script
Última edición por zjuanma el Vie 5 Feb 2010 - 21:46, editado 1 vez (Razón : Añadido script)
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
Como decía antes, me ha dado un error, pero no sabía bien si era del script o de la compilación... Ahora ya estoy en casa y estoy revisando la salida y el error:
Para corregir el error hay que cambiar la línea
- Código:
...
skincurses.c:783: error: 'w' was not declared in this scope
skincurses.c:783: error: 'initscr' was not declared in this scope
make[2]: *** [skincurses.o] Error 1
Duplicate device table entry '/etc' in line 292
Duplicate device table entry '/lib' in line 322
Duplicate device table entry '/lib/modules' in line 344
Duplicate device table entry '/lib/modules/2.4.21-xfs' in line 345
Duplicate device table entry '/etc' in line 387
Duplicate device table entry '/etc' in line 424
Duplicate device table entry '/etc' in line 445
Duplicate device table entry '/sbin' in line 466
Duplicate device table entry '/bin' in line 467
Duplicate device table entry '/usr' in line 468
Duplicate device table entry '/usr/sbin' in line 469
Duplicate device table entry '/usr/bin' in line 470
Duplicate device table entry '/etc' in line 667
Duplicate device table entry '/etc/vdr' in line 668
rm: no s’ha pogut eliminar «/home/pjllaneras/vdr/VDR-NG-EM/VDR-NG-FW/downloads»: Is a directory
Para corregir el error hay que cambiar la línea
- Código:
rm $BASE/VDR-NG-EM/VDR-NG-FW/downloads
- Código:
rm -r $BASE/VDR-NG-EM/VDR-NG-FW/downloads
pjllaneras- Betatester
- Cantidad de envíos : 569
Fecha de inscripción : 29/01/2009
Edad : 52
Localización : Palma de Mallorca
Re: GUI script generacion de firmware
Pues esto es lo que tengo yo en un script y me genera 2 logs, uno con todo (make.log) y otro sólo con los errores (errores.log). Este script no me acuerdo quien lo hizo, pero lo copié de alguien que lo puso en el foro:zjuanma escribió:- revisar el tema de volcar toda la salida a un fichero de log para poder revisarlo luego, pero no doy con ello. (Los errores de compilacion no se porque tiene algo que ver con esto).
- Código:
((make 3>&2 2>&1 1>&3 | tee ../../errores.log) 3>&2 2>&1 1>&3) 2>&1 | tee ../../make.log
pjllaneras- Betatester
- Cantidad de envíos : 569
Fecha de inscripción : 29/01/2009
Edad : 52
Localización : Palma de Mallorca
Re: GUI script generacion de firmware
Ejecuté otra vez el script, en vez de darme un error al intentar borrar el directorio "downloads", me pidió confirmación para borrar cada subdirectorio (algunos estaban marcados como solo lectura)... así que para que no pida confirmación, la instrucción debería ser:
- Código:
rm -r -f $BASE/VDR-NG-EM/VDR-NG-FW/downloads
pjllaneras- Betatester
- Cantidad de envíos : 569
Fecha de inscripción : 29/01/2009
Edad : 52
Localización : Palma de Mallorca
Re: GUI script generacion de firmware
Aquí está la aportación de RainerW para hacer un backup de la configuración y restaurarla, aunque como los archivos .conf suelen cambiar de versión a versión sería mejor usar el script que está incluido en el firm (/etc/vdr/backup_vdr_conf).
Re: GUI script generacion de firmware
He subido la primera version totalmente operativa a assembla:
http://www.assembla.com/spaces/VDR-M7x0/documents/az9YPMfCCr37KCeJe5afGb/download/gui-build.sh
A ver cuando puedo añadir el script de los idiomas de nuestro amigo aleman.
Bittor, estaria bien arreglar lo de los links del sourceforge que han cambiado, pero he visto que se toma del svn de andreas. Habria que hacer algun tipo de parche? o añadir los .mk correctos a directorio de Addons?
http://www.assembla.com/spaces/VDR-M7x0/documents/az9YPMfCCr37KCeJe5afGb/download/gui-build.sh
A ver cuando puedo añadir el script de los idiomas de nuestro amigo aleman.
Bittor, estaria bien arreglar lo de los links del sourceforge que han cambiado, pero he visto que se toma del svn de andreas. Habria que hacer algun tipo de parche? o añadir los .mk correctos a directorio de Addons?
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
Esta muy chulo, me gusta un montón.
Enhorabuena por el trabajo.
Enhorabuena por el trabajo.
carcoco- Cantidad de envíos : 36
Fecha de inscripción : 24/01/2010
Krako- Moderador
- Cantidad de envíos : 415
Fecha de inscripción : 25/06/2008
Localización : Barcelona
Re: GUI script generacion de firmware
¡Muy buen trabajo zjuanma! Para mi desdicha estoy muy liado este mes y no he tenido tiempo ni de conectarme al foro. De hecho que si alguien que me sé me pilla de foros me llevo una buena colleja.
Pero ya que estamos aquí, sugiero que habría que revisar el resultado que devuelve cada línea de zenity para comprobar si el usuario le ha dado por cancelar.
Esto lo podemos ver en el Manual de zenity.
Luego comprobamos el exit code de zenity de forma similar a como se hace en este ejemplo.
Y si el usuario ha cancelado el diálogo se debería salir del script, a ser posible usando zenity con un mensaje de aviso de salida por cancelación a petición del usuario.
Pero ya que estamos aquí, sugiero que habría que revisar el resultado que devuelve cada línea de zenity para comprobar si el usuario le ha dado por cancelar.
Esto lo podemos ver en el Manual de zenity.
Luego comprobamos el exit code de zenity de forma similar a como se hace en este ejemplo.
Y si el usuario ha cancelado el diálogo se debería salir del script, a ser posible usando zenity con un mensaje de aviso de salida por cancelación a petición del usuario.
Última edición por naldoco el Miér 10 Feb 2010 - 2:36, editado 1 vez (Razón : Afinar del manual de zenity la entrada de los exit codes.)
naldoco- Cantidad de envíos : 25
Fecha de inscripción : 31/08/2008
Re: GUI script generacion de firmware
Es una primera version, faltan varias cosas por hacer:
- Traducir al ingles los textos (ahora tenemos visita de fuera de españa).
- Meter una seleccion del idioma y añadir el script que nos han pasado.
- Ver que variables mas hay que añadir al menu de opciones del firmware.
- Ver el tema del zenity que comentan por aqui a ver donde hace falta.
- Ideas nuevas que se aporten.
- Traducir al ingles los textos (ahora tenemos visita de fuera de españa).
- Meter una seleccion del idioma y añadir el script que nos han pasado.
- Ver que variables mas hay que añadir al menu de opciones del firmware.
- Ver el tema del zenity que comentan por aqui a ver donde hace falta.
- Ideas nuevas que se aporten.
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
Felicidades por el trabajo.
Por cierto ¿hace una copia de downloads en caso de que exista para ahorrar tiempo de descarga?
Por cierto ¿hace una copia de downloads en caso de que exista para ahorrar tiempo de descarga?
jb- Betatester
- Cantidad de envíos : 1193
Fecha de inscripción : 16/11/2008
Edad : 55
Localización : Lérida y Zaragoza
Re: GUI script generacion de firmware
¿sería sencillo hacerlo multi-idioma en inglés y español (seleccionando el idioma al principio) cogiendo los textos de algún archivo o sólo en inglés?
Respecto a las url's que no funcionan habría que hacer un parche al estilo de Addons/Patches/common/180-ssmtp.2.64.patch.
El ToolChain no se actualiza y también habría que mirar de usar los nuevos busybox, binutils, gcc, ... por lo que el trabajo es mayor, aunque corregir las urls no.
Respecto a las url's que no funcionan habría que hacer un parche al estilo de Addons/Patches/common/180-ssmtp.2.64.patch.
El ToolChain no se actualiza y también habría que mirar de usar los nuevos busybox, binutils, gcc, ... por lo que el trabajo es mayor, aunque corregir las urls no.
Re: GUI script generacion de firmware
jb escribió:Felicidades por el trabajo.
Por cierto ¿hace una copia de downloads en caso de que exista para ahorrar tiempo de descarga?
Si, bueno realmente crea un directorio downloads al mismo nivel que este script, copia ahi las cosas (si lo creas y lo copias tu antes mejor) y luego hace un link a este directorio para no andar copiando ficheros de un sitio a otro.
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
bittor escribió:¿sería sencillo hacerlo multi-idioma en inglés y español (seleccionando el idioma al principio) cogiendo los textos de algún archivo o sólo en inglés?
Parece ser que si se puede, si alguien me traduce los textos al ingles lo voy mirando.
zjuanma- Desarrollador
- Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008
Re: GUI script generacion de firmware
Este srcipt a mi no me funciona con karmic, al lanzarlo me sale esto:
- Código:
gui-build.sh: línea 231: error sintáctico cerca del elemento inesperado `('
gui-build.sh: línea 231: `svn update $BASE/VDR-NG-EM/Addons 2>&1 | tee -a >(zenity --progress --auto-close --auto-kill --pulsate --text "Actualizando codigo fuente de VDR") >> $COMP_LOG '
gatopardo- Cantidad de envíos : 73
Fecha de inscripción : 24/02/2009
Página 1 de 3. • 1, 2, 3
Temas similares
» Generación del firmware incompleta
» generacion fw con w7
» Script de compilación de VDR-NG-EM para GNU/Linux
» script compilación
» Script ejecutable para automatizar la compilación.
» generacion fw con w7
» Script de compilación de VDR-NG-EM para GNU/Linux
» script compilación
» Script ejecutable para automatizar la compilación.
Página 1 de 3.
Permisos de este foro:
No puedes responder a temas en este foro.