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.
A continuación se listan los pasos que sigue el AutoPatcher para obtener la versión RSP:
El funcionamiento varía ligeramente al utilizar el 'developer mode', explicado más adelante.
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 ~]#
AutoPatcher fue ideado para facilitar la vida a los desarrolladores, añadiendo opciones adicionales al proceso de parcheado que un usuario seguirá:
Ambas opciones se pueden usar a la vez.
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:
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
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: