Bitacora MOTU – Entrada #15: Por donde empezar y un sync truculento

Una vez que tengas tus herramientas de lista, es probable que pienses, ¿Qué hago ahora? Para entender tu papel, sería bueno que leas la Guía de Empaquetado y luego echar un vistazo a las recetas que empaquetado que te darán una demostración de cómo emplear las herramientas de desarrollo. Esto es esencial si usted apenas está comenzando a contribuir con el empaquetado en Ubuntu. Una vez que haya la suficiente confianza con las herramientas que puede saltar hacia actividades más rutinarias para Ubuntu Developers, como lo son  que sincronización y fusión, o Sync y Merge como les haré referencia de ahora en adelante .

Merges y Syncs son necesarios ya que derivamos de Debian. A menudo encontramos  cambios con respecto a debian, ya sea para corrección de errores, o diferentes versiones de python o gcc. Una vez que Debian implemente estos cambios, yo diría que todos los días, los desarrolladores de Ubuntu comprueban la relevancia de  los cambios específicos de Ubuntu después de una nueva versión del paquete base en Debian inestable. Si los cambios son necesarios, hay una fusión (merge) entre el paquete de Debian y el paquete de Ubuntu. Para ver un ejemplo de un merge  se puedes ver la sesión Nathan Handler de empaquetado hablando sobre fusiones (merges)  y leer un poco más, tambien puedes chequear la entrada de fusiones (merges) o de un documento mucho más antiguo en las fusiones y Sincronizaciones (Merges and Syncs). Si los cambios no son necesarios estamos listos para sincronizar el paquete de Debian a Ubuntu. Le daré un ejemplo de una que estaba haciendo ayer.

El proceso de fusión y la sincronización comienza contigo revisando la lista en http://merges.ubuntu.com/universe.html. Una vez allí, podrás ver una lista de paquetes que tienen cambios ubuntu en la subida anterior al archivo de Ubuntu y Debian ha actualizado el paquete. Una vez que Ubuntu  hereda paquetes de Debian, El paquete Ubuntu con los cambios o “deltas” tiene que ser verificado contra el nuevo paquete de debian. Encontrar un paquete que este disponible para que tu puedas trabajar puede ser un poquito intimidante ya que con muchos  no estarás familiarizados con ellos, y esto no está mal. Tu objetivo es ayudar en el repositorio “Universe”. Sientete libre de escoger uno que no tenga a naide asignado.

Paquete “nstx” disponible para ser trabajado

En la imagen anterior se puede ver claramente las versiones y la oportunidad que tienes. La última versión fue subida a los repos por Stepfan Potyra es 1.1-beta6-5ubuntu2 y que tiene cambios de la base de Debian 1.1-beta6-5, pero ahora debian tiene una nueva versión del paquete de 1.1-beta6-6. Una característica de mezcla-o-Matic tiene ahora es la habilidad hacer comentarios en línea, así que siéntase libre de escribir que tu estarás trabajando en esto en el resto del espacio en la línea, justo al lado de la versión de Debian.

Me decidí a trabajar en “ONTV”, escribí “Effie-jayx” en el espacio de comentario y aquí están los detalles:

  • En primer lugar, elaboró un directorio específico para esta tarea. En mi carpeta de motu he creado una vez llamó dev y luego el nombre del paquete. Así que parece que este /home/keffie-jayx/motu/dev/ontv.
  • Tengo el script para tomar todo lo necesario para este sync o merge como se describe en http://merges.ubuntu.com/. Grabe  grab-merge.sh en /home/keffie-jayx/motu/dev
  • He cambiado su permiso para que pudiera ser ejecutado:

chmod +x ~/motu/dev/grab-merge.sh

  • En /home/keffie-jayx/motu/dev/ontv, ejecuto el script:

../grab-merge.sh ontv

  • Una vez allí he comprobado el contenido en el “Informe” de archivos para ver si hay algún conflicto entre los paquetes.

less REPORT

  • Este es el fichero te da un informe de los paquetes descritos (ONTV en Debian y Ubuntu), y las diferencias y los parches de cada uno. Hay una sección de este archivo a la derecha al final, que enumera los conflictos que puedes encontrar.

Generated Result
================

No problems were encountered during the merge, so a source package has been produced along with a patch containing the differences from the Debian version to the new version.

(No se encontraron problemas durante la fusión)

Esta es una buena señal de que los cambios en el paquete de Ubuntu pueden no ser necesarios. Hay que comprobarlo en  el registro de cambios situado en  ontv-3.0.0/debian/changelog.

ontv (3.0.0-4) unstable; urgency=low

* debian/rules:
– Don’t install *.la and *.a files.
* debian/control.in:
– Build depend on python-dev rather than on python2.5-dev.
– Standards-Version is 3.8.4, no changes needed.
* debian/patches/01_shebang.patch:
– Don’t hardcode python2.5 in the shebang to avoid a dependency on
python2.5.

— Emilio Pozuelo Monfort <pochu@debian.org>  Sat, 06 Mar 2010 21:36:07 +0100

ontv (3.0.0-3ubuntu2) lucid; urgency=low

* Use the unversioned python interpreter in the ontv script.

— Matthias Klose <doko@ubuntu.com>  Thu, 04 Feb 2010 02:19:00 +0100

ontv (3.0.0-3ubuntu1) lucid; urgency=low

* Build-depend on python-dev instead of python2.5-dev.

— Matthias Klose <doko@ubuntu.com>  Tue, 02 Feb 2010 02:02:01 +0100

ontv (3.0.0-3build1) lucid; urgency=low

puedes ver los dos cambios realizados por Matthias Klose::

  • Build-depend on python-dev instead of python2.5-dev (que las dependencias de construccion dependan de python-dev en vez de python2.5-dev)
  • Use the unversioned python interpreter in the ontv script (usar el interprete sin versión en el script de ontv)

Y entonces los cambios de los cambios que propone el desarrollador de Debian.

* debian/rules:
– Don’t install *.la and *.a files.
* debian/control.in:
– Build depend on python-dev rather than on python2.5-dev.
– Standards-Version is 3.8.4, no changes needed.
* debian/patches/01_shebang.patch:
– Don’t hardcode python2.5 in the shebang to avoid a dependency on python2.5.

Las entradas marcadas nos indican se han tomado los cambios que Matías había hecho antes. Entonces, los cambios en Ubuntu ya no son necesarios. Esto indica que podemos Sync.

En mi aprendizaje, me sentí un poco confundido. Traté de hacer un nuvo paquete fuente para ubuntu. y el dsc se había creado. Sin embargo, cuando traté de compilar el paquete deb, obtuve un error con el parche que añade el desarrollador/mantenedor de  debian y los cambios realizados por el desarrollador de Ubuntu, el error es  FTBFS  (Falla al construir desde las fuentes / Failed To Build From Source en sus siglas en Inglés).

Emmet Hickory me señaló a una herramienta que me permite ver el archivo diferencias  ‘lsdiff ‘ entre cada uno de los paquetes. la opción-z es para ficheros diff con compreción gzip.
Esta es la lista de archivos modificados en el paquete de debian

$ lsdiff -z ontv_3.0.0-4.diff.gz
ontv-3.0.0/debian/compat
ontv-3.0.0/debian/rules
ontv-3.0.0/debian/changelog
ontv-3.0.0/debian/control
ontv-3.0.0/debian/copyright
ontv-3.0.0/debian/control.in
ontv-3.0.0/debian/watch
ontv-3.0.0/debian/patches/01_shebang.patch

Esta es la lista de archivos modificados en el paquete de Ubuntu

$ lsdiff -z ontv_3.0.0-3ubuntu2.diff.gz
ontv-3.0.0/scripts/ontv.in
ontv-3.0.0/debian/compat
ontv-3.0.0/debian/watch
ontv-3.0.0/debian/control
ontv-3.0.0/debian/copyright
ontv-3.0.0/debian/rules
ontv-3.0.0/debian/control.in
ontv-3.0.0/debian/changelog

El archivo resaltado indica que el cambio se realizó en el código fuente directamente, y que entraría en conflicto con el parche de debian y que resulta en FTBFS. El parche en ontv-3.0.0/debian/patches 01_shebang.patch estaba tratando de remendar un código que el desarrollador de Ubuntu había cambiado sin un sistema de parches. El desarrollador de Ubuntu no estaba en condiciones de incluir un sistema de parches y realizar los cambios directamente en el código fuente.

Scott Kitterman me sugirió probar si se trataba de una sincronización (sync), crear el paquete debian usando el paquete fuente en debian:

sudo DIST=maverick pbuilder build ontv_3.0.0-4.dsc –logfile debiansync.buildlog

Después de este compilado he seguido los pasos de la página https: //wiki.ubuntu.com/SyncRequestProcess sobre cómo utilizar la secuencia de comandos requestsync de ubuntu-dev-tools. Era muy simple y estoy impresionado por la belleza de estea herramienta. En algún momento te pediran que agregues una descripción para tu sinchonización ( en Inlgés, google translate puede ayudar aquí, o buscame por IRC y te ayudo😉 )

Después de hacer esto usted tendrá un bug reportado en Launchpad, la requestsync automaticamente suscribe a ubuntu-sponsors al bug para que revisen el proceso. Si usted es un desarrollador de Ubuntu, ubuntu-archive tiene que estar suscrito. no cambie la asignación o el estado del error.

De vuelta en el MoM (http://merges.ubuntu.com/universe.html), tienes que actualizar la situación del paquete que estas fusionen o  sincronizando. Cambiar el comentario en la línea a algo así como Bug # <numberofyourbug> Sync. en mi caso fue:

Sync Bug #583624

Así se ve la línea después de asignar el numero de bug, se conecta automáticamente a Launchpad.

Lo que aprendí:

  • Comprobar cuidadosamente los cambios en el paquete.
  • Reforzar el uso de Merge-o-Matic.
  • El uso de nuevas herramientas:
    • lsdif -z: para el control de differneces en los archivos en un paquete.
    • requestsync: un script de ubuntu-dev-tools para automatizar la generación del informe de sincronización.

Objetivos alcanzados:

  • Ayudar a el repositorio “Universe” actualizando cambios que ya Debian ha tomado y que no son necesarios en Ubuntu.

Recomendations:

  • PREGUNTA, yo no sabía la mitad de las cosas que sé ahora hace 24 horas. Usted tiene que preguntar. Me siento como si hubiese gastado mis preguntas😛. Ahora que he aprendido estoy disponible en #ubuntu-motu (Inglés), #ubuntu-es y #ubuntu-ve (en español).
  • Cuando preguntes,  asegurarse de que está listo para entender las respuestas. una vez que se recibas contestación lee un poco sobre el tema antes de hacer preguntas de seguimiento.
  • No espere para arreglar todas las cuestiones en su primer intento, puede ser que tome varios intentos diferentes para hacer la fusión antes de que usted puede completar una. Este es probablemente mi intento 5🙂.
  • No te desmotives, mantente en la misma, poco a poco estas cosas se ponen sencillas.

About effiejayx

Ubuntu enthusiast... need I say more? :)
This entry was posted in Español, planetalinux. Bookmark the permalink.

One Response to Bitacora MOTU – Entrada #15: Por donde empezar y un sync truculento

  1. chilicuil says:

    Ohh, genial, esto es justamente lo que andaba buscando, puedo preguntar cual es tu nick y que canales frecuentas?, pasa que estoy intentado fusionar un paquete pero estoy algo liado, me gustaria hacerte algunas preguntas, lo aria en #ubuntu-motu pero mi Ingles es muy malo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s