AutoPatcher

Con el tiempo se ha demostrado que mantener un repositorio SVN con todo el código de Asterisk no era tan buena idea como se pensaba. La aplicación de nuevos parches es cada vez más compleja y la migración a una nueva versión base de Asterisk requiere demasiado esfuerzo.

Para solucionar esto se ha creado el 'AutoPatcher' en Python. La idea es sencilla: en lugar de guardar en el repositorio SVN un Asterisk completo solo guardamos los parches (incluidos los nuevos ficheros, en formato de parche) y el script descargará la versión de Asterisk que corresponda y le aplicará todos los parches en orden, obteniendo como resultado el código fuente de Asterisk RSP listo para instalar.

Funcionamiento interno

A continuación se listan los pasos que sigue el AutoPatcher para obtener la versión RSP:

  • Checkout del TAG del SVN de la versión base para la RSP (actualmente Asterisk 1.4.24.1)
  • Se realiza un svn export a otro directorio: asterisk-1.4.24.1_rsp. De esta manera se eliminan los directorios .svn que pueden provocar errores de compilación.
  • Se elimina el directorio '_svn' una vez se ha realizado el svn export, ya que no es necesario.
  • Se aplican los parches (listados dentro del AutoPatcher) en el orden indicado.

El funcionamiento varía ligeramente al utilizar el 'developer mode', explicado más adelante.

Instalación

Pasos para la obtención del código fuente de Asterisk-ES-RSP listo para compilar:

1. Descargar el AutoPatcher del repositorio SVN:

  cd /usr/src
  svn co http://asterisk-es-rsp.irontec.com/svn/asterisk-es-rsp/branches/asterisk/1.4.24.1 asterisk-rsp

2. Ejecutar AutoPatcher, que descargará Asterisk y lo parcheará automáticamente:

  cd asterisk-rsp
  ./get_rsp.py

Tras ejecutar los comandos y esperar a su finalización se obtendrá el directorio 'asterisk-1.4.24.1_rsp' que contendrá las fuentes de Asterisk-ES-RSP listas para instalar.

Si ejecutamos el AutoPatcher por segunda vez nos preguntará si queremos eliminar los directorios existentes. Es necesario hacerlo, pero si queremos evitar las preguntas podemos ejecutar el AutoPatcher con la opción 'clean':

  ./get_rsp.py --clean

3. Instalar Asterisk-ES-RSP: El proceso a seguir es el mismo que con el Asterisk oficial:

  cd asterisk-1.4.24.1_rsp
  ./configure
  make
  make install
  make samples
  make config

Ejemplo:

[root@asterisk-es-rsp ~]# ./get_rsp.py
    Fetching Asterisk 1.4.24.1 from SVN repository
    Fetch complete!
    Exporting from SVN...
    Patching Asterisk...
    Patching complete, 59 patches applied
    Asterisk-ES-RSP (based on Asterisk 1.4.24.1) is ready to rock! 
[root@asterisk-es-rsp ~]#

Desarrolladores

AutoPatcher fue ideado para facilitar la vida a los desarrolladores, añadiendo opciones adicionales al proceso de parcheado que un usuario seguirá:

  • –dev-mode: Modo desarrollo. Crea 2 svn exports (_rsp y _dev) y les aplica los parches a los 2.
  • –patchlevel X: aplica solo los X primeros parches de la lista de parches.

Ambas opciones se pueden usar a la vez.

Creando parches

Una vez tenemos el entorno de desarrollo con AutoPatcher la idea es que hagamos los cambios que queramos (incluyendo la creación de nuevos ficheros) en el directorio _dev y luego se utilice el comando diff de la siguiente manera para obtener un parche:

  diff -uNr directorio_rsp directorio_dev > parche.patch

Unas pequeñas reglas para que el parche quede limpio y no de problemas en el futuro:

  • La extensión será .patch, no diff ni txt.
  • Una vez generado el parche se editará para que los archivos modificados tengan el path relativo correcto:

Antes:

--- asterisk-1.4.24.1_rsp/codecs/Makefile     (revision 175952)
+++ asterisk-1.4.24.1_dev/codecs/Makefile     (working copy)
@@ -31,6 +31,7 @@

 LIBILBC:=ilbc/libilbc.a
 LIBLPC10:=lpc10/liblpc10.a
+LIBG722:=g722/libg722.a

Después:

--- codecs/Makefile     (revision 175952)
+++ codecs/Makefile     (working copy)
@@ -31,6 +31,7 @@

 LIBILBC:=ilbc/libilbc.a
 LIBLPC10:=lpc10/liblpc10.a
+LIBG722:=g722/libg722.a
  • Para seguir un orden, los parches que simplemente sean un fichero nuevo (app_syslog por ejemplo) se listarán al final de la lista de parches dentro del AutoPatcher.

Experimentando con nuevas versiones

Una de las principales ventajas de AutoPatcher es que permite probar una nueva versión de Asterisk con los parches RSP de una manera sencilla. Si queremos probar Asterisk 1.4.30 haremos lo siguiente:

  • Editar get_rsp.py e indicar “1.4.30” como valor de la variable asterisk_version.
  • Comentar los parches que no queramos que se apliquen poniendo # delante, en la lista asterisk_patches.
 
instalacion/autopatcher.txt · Última modificación: 2010/08/18 11:26 por telecosilvia
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki