.. title: Bugfixes y paquetes
.. date: 2009-02-17 11:19:39
.. tags: bugs, paquetes, fixes, software libre, PPA, Launchpad, Ubuntu
En el lugar en donde estoy actualmente trabajando (Senior Software Developer, en `Canonical `_, programando Python), hacemos en general algún software que es propietario, y algún software que será liberado a la comunidad.
Este post es sin embargo acerca de otra faceta del laburo, faceta en la que incursioné durante estos días a raiz de un problema que tenía al hacer unos tests. Esta faceta es la de trabajar en un paquete que nosotros usamos pero que no es nuestro, e invertir tiempo del laburo (horas, días) en solucionar algo... en definitiva, devolver algo a la comunidad del software libre del que tanto uno toma.
Durante dichos tests, necesité levantar los `atributos extras `_ de un archivo. Como obviamente las pruebas las hago desde Python, lo primero que probé usar es la biblioteca `xattr `_, pero me tiraba un error extraño y feo.
Al principio dudé de la biblioteca en sí, y me puse a excavar desde la misma, hasta las llamadas del sistema directamente, con lo cual aprendí bastante de estos atributos extendidos. Pero vi que estaba todo bien.
Luego empecé a subir desde la llamada del kernel a la biblioteca `FUSE `_ (que es la que te permite codear vos mismo un sistema de archivos y usarlo sin tener que integrarlo al kernel). Acá es donde encontré un problema. Entendí cómo debería funcionar, vi que estaba mal, busqué el código fuente del proyecto, y verifiqué que incluso en lo más actualizado de ese código (en trunk) también estaba mal.
Así que me traje el código, lo compilé y empecé a probar nuestro sistema con la versión que iba corrigiendo, hasta que solucioné el problema. Una vez que verifiqué todo, generé el parche correspondiente y lo subí a Launchpad, en un bug que abrí por este problema, para que sea considerado su inclusión en futuras versiones y que esto esté resuelto para todos.
Por otro lado, en el laburo, para algunas cosas en desarrollo armamos Paquetes Privados de software, de manera que los desarrolladores nos suscribimos a ello y si hay actualizaciones estas son ofrecidas a nosotros a través del mismísimo Administrador de Actualizaciones del Ubuntu (este es una funcionalidad pública del Launchpad llamada `Personal Package Archives (PPA) `_).
Entonces, como nosotros para desarrollo necesitamos esto corregido, me puse a agregar a nuestro PPA una nueva versión de este paquete. Paso a comentarles cómo es este proceso.
Bajé las fuentes limpias del paquete (``apt-get source python-fuse``). Hice esto en un directorio vacío y ví que aparte del directorio con las fuentes, aparecieron unos archivos de control, los cuales borré prestamente porque no los iba a necesitar. Copié el parche que había creado al directorio correspondiente de las fuentes (``debian/patches``), agregando el nombre de ese parche en el archivo ``debian/patches/00list``. Finalmente anoté una entrada en el changelog de las fuentes (esto se hace con un programita auxiliar, ya que deben tener un formato específico; en mi caso hice ``dch -D -v "mensaje para el changelog"``).
Ya con las fuentes modificadas, armé los archivos de control y paquete como para subir, lo que se hace con la orden ``debuild --no-tgz-check -S``. Para saber que está todo bien, y que todo lo que armé se va a instalar bien, fui al directorio superior (donde antes tenía las fuentes, y ahora dejados por la orden anterior, nuevos archivos de control), y usamos un programita que arma un root falso e instala todo lo que tiene que instalar para ver que nuestro paquete se acopla bien al resto del sistema: ``sudo pbuilder --build *.dsc``.
Finalmente, para subir el paquete al Launchpad: ``dput -f *.changes``.
Luego, lo dejé reposar algunas horas a fuego lento, y al rato Ubuntu nos indica que hay una actualización disponible, y es efectivamente este paquete, :)