Buscar
 
 

Resultados por:
 


Rechercher Búsqueda avanzada

Navegación
 Índice
 Wiki
 FAQ del foro
 FAQ del VDR-NG-EM
 Funcionalidades del VDR
 Mejoras del VDR-NG-EM
 Primeros pasos FW-VDR
 Descargas VDR-NG-EM
Flujo RSS


Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 



GUI script generacion de firmware

Página 1 de 3. 1, 2, 3  Siguiente

Ver el tema anterior Ver el tema siguiente Ir abajo

Cambiar script que genera el firmware

Mensaje por bittor el Lun 25 Ene 2010 - 10:13

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.
avatar
bittor
Desarrollador

Cantidad de envíos : 3633
Fecha de inscripción : 25/06/2008
Localización : Zaragoza

Ver perfil de usuario http://bittor7x0.googlepages.com

Volver arriba Ir abajo

GUI script generacion de firmware

Mensaje por zjuanma el Miér 3 Feb 2010 - 21:09

Al hilo de este post de bittor http://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.

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

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por bittor el Jue 4 Feb 2010 - 9:27

Tiene buena pinta porque es más amigable, aunque ese modo de texto azul es prehistórico Smile

He mirado y está el xdialog para que sean ventanas de las X, pero no está disponible en los repositorios de Ubuntu 9.10 Sad
avatar
bittor
Desarrollador

Cantidad de envíos : 3633
Fecha de inscripción : 25/06/2008
Localización : Zaragoza

Ver perfil de usuario http://bittor7x0.googlepages.com

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por zjuanma el Jue 4 Feb 2010 - 12:40

xdialog no tiene paquete para Karmic, porque tiene zenity por defecto.
Quizas lo mire porque no creo que sea dificil de adaptar.

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por zjuanma el Jue 4 Feb 2010 - 22:00

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.

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

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por bittor el Vie 5 Feb 2010 - 9:10

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.


Última edición por bittor el Vie 5 Feb 2010 - 14:27, editado 1 vez
avatar
bittor
Desarrollador

Cantidad de envíos : 3633
Fecha de inscripción : 25/06/2008
Localización : Zaragoza

Ver perfil de usuario http://bittor7x0.googlepages.com

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por zjuanma el Vie 5 Feb 2010 - 11:06

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.

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por bittor el Vie 5 Feb 2010 - 14:30

¿alguien se anima a colaborar con este nuevo script para generar el firmware?
avatar
bittor
Desarrollador

Cantidad de envíos : 3633
Fecha de inscripción : 25/06/2008
Localización : Zaragoza

Ver perfil de usuario http://bittor7x0.googlepages.com

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por AzagraMac el Vie 5 Feb 2010 - 19:16

yo me apunto... he estado unos dias apartado por motivos personales. pero ya toy de nuevo.

Un saludo.
avatar
AzagraMac
Betatester

Cantidad de envíos : 121
Fecha de inscripción : 17/01/2010
Edad : 34
Localización : Madrid

Ver perfil de usuario http://azagramac.wordpress.com

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por pjllaneras el Vie 5 Feb 2010 - 20:16

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.
avatar
pjllaneras
Betatester

Cantidad de envíos : 569
Fecha de inscripción : 29/01/2009
Edad : 45
Localización : Palma de Mallorca

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por zjuanma el Vie 5 Feb 2010 - 21:03

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.
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)

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por pjllaneras el Vie 5 Feb 2010 - 21:34

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:

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
Hay muchos errores de "skincourses" (de momento no sé muy bien el porqué de este error), pero al final el error que da es del script, intentando borrar el directorio downloads.

Para corregir el error hay que cambiar la línea

Código:
rm $BASE/VDR-NG-EM/VDR-NG-FW/downloads
por

Código:
rm -r $BASE/VDR-NG-EM/VDR-NG-FW/downloads
La opción "-r" es necesaria para borrar directorios con todo su contenido.
avatar
pjllaneras
Betatester

Cantidad de envíos : 569
Fecha de inscripción : 29/01/2009
Edad : 45
Localización : Palma de Mallorca

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por pjllaneras el Vie 5 Feb 2010 - 21:39

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).
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:

Código:
((make 3>&2 2>&1 1>&3 | tee ../../errores.log) 3>&2 2>&1 1>&3) 2>&1 | tee ../../make.log
Espero te sirva.
avatar
pjllaneras
Betatester

Cantidad de envíos : 569
Fecha de inscripción : 29/01/2009
Edad : 45
Localización : Palma de Mallorca

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por pjllaneras el Sáb 6 Feb 2010 - 10:44

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
Como seguía sin generarme el firmware dándome los errores de antes (menos el de borrado), ejecuté mi otro script y no tuve ningún problema.
avatar
pjllaneras
Betatester

Cantidad de envíos : 569
Fecha de inscripción : 29/01/2009
Edad : 45
Localización : Palma de Mallorca

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por bittor el Lun 8 Feb 2010 - 9:02

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).
avatar
bittor
Desarrollador

Cantidad de envíos : 3633
Fecha de inscripción : 25/06/2008
Localización : Zaragoza

Ver perfil de usuario http://bittor7x0.googlepages.com

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por zjuanma el Mar 9 Feb 2010 - 23:07

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?

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por carcoco el Mar 9 Feb 2010 - 23:57

Esta muy chulo, me gusta un montón.

Enhorabuena por el trabajo. Smile

carcoco

Cantidad de envíos : 36
Fecha de inscripción : 24/01/2010

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por Krako el Miér 10 Feb 2010 - 1:40

Impresionante, buen trabajo zjuanma.

Salu2

_________________

M740: VDR-NG-EM 0.7 Pro (Última revisión) + Plugins
LAN 100Mbits + HDD USB WDElements 640Gb (3*ext2)

Wiki Foro Download
avatar
Krako
Moderador

Cantidad de envíos : 415
Fecha de inscripción : 25/06/2008
Localización : Barcelona

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por naldoco el Miér 10 Feb 2010 - 2:30

¡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.


Ú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

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por zjuanma el Miér 10 Feb 2010 - 8:14

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.

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por jb el Miér 10 Feb 2010 - 8:57

Felicidades por el trabajo.

Por cierto ¿hace una copia de downloads en caso de que exista para ahorrar tiempo de descarga?
avatar
jb
Betatester

Cantidad de envíos : 1192
Fecha de inscripción : 16/11/2008
Edad : 48
Localización : Lérida y Zaragoza

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por bittor el Miér 10 Feb 2010 - 9:22

¿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.
avatar
bittor
Desarrollador

Cantidad de envíos : 3633
Fecha de inscripción : 25/06/2008
Localización : Zaragoza

Ver perfil de usuario http://bittor7x0.googlepages.com

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por zjuanma el Miér 10 Feb 2010 - 9:43

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.

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por zjuanma el Miér 10 Feb 2010 - 9:48

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.

_________________
M740AV + VDR-NG-EM 0.5 - SVN EM 759 - SVN TC - o7o 410 - SVN plugins 744
Disco: Western Digital Elements mediante un NAS
Conectado a Internet
Plugin yaep 0.2.1: http://sites.google.com/site/yaepvdr
avatar
zjuanma
Desarrollador

Cantidad de envíos : 818
Fecha de inscripción : 27/06/2008

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por gatopardo el Sáb 13 Feb 2010 - 11:56

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

Ver perfil de usuario

Volver arriba Ir abajo

Re: GUI script generacion de firmware

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Página 1 de 3. 1, 2, 3  Siguiente

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.