¿Hay una manera fácil de parchear automáticamente las fuentes de ubuntu a medida que estén disponibles y se carguen en un PPA?

9

Estoy buscando una herramienta para hacer lo siguiente:

  • Detecta automáticamente actualizaciones a un conjunto de paquetes fuente (específicamente gtk + 2 y gtk + 3)
  • descargar el paquete fuente
  • aplicar mis propios parches personalizados a la fuente
  • comprometer el parche correctamente ( dpkg-source --commit [something-or-other]?)
  • si tiene éxito, cárguelos en un PPA en Launchpad (que luego puedo apuntar a mi sistema de la manera habitual).

¿Puede Launchpad hacer todo eso por mí?

Si no, ¿hay una herramienta que automáticamente haga todo eso desde un trabajo cron?

Si no se cumple lo anterior, haré algo juntos, pero qué comandos necesito para:

  • detectar y descargar las actualizaciones del paquete fuente? (Prefiero algo como (bzr | git) pull en lugar de tener que obtener una nueva copia cada vez)
  • auto-confirmar el parche localmente (usaría la misma descripción de confirmación cada vez)?
  • cargar las fuentes de forma no interactiva a un PPA?

He encontrado una pregunta ( ¿Cuál es la forma correcta de parchear Wine para un PPA personalizado? ), Que es similar pero los pasos en la respuesta siguen siendo básicamente manuales e interactivos. Una versión completamente automática de eso más la detección automática de actualizaciones de fuentes ayudaría mucho.

Nick Booker
fuente

Respuestas:

2

Bueno, parece que las recetas de empaque son el camino a seguir aquí. Básicamente, las recetas de empaque pueden crear automáticamente paquetes fuente de Ubuntu y subirlos a un PPA siempre que cambie una rama bzr en Launchpad. La documentación en línea es bastante buena, pero daré un par de ejemplos ...

Primero, especifique una rama para rastrear (por ejemplo lp:gtk3) y luego agregue un comando para anidar su propia rama de empaquetado de Debian en esa rama. Eche un vistazo a esta receta que creé para las versiones diarias de Inkscape.

# bzr-builder format 0.4 deb-version 1:0.48+devel+{revno}+{revno:packaging}
lp:inkscape
nest packaging lp:~inkscape.dev/inkscape/debian-packaging debian

Esta receta crea un paquete de Ubuntu cada día utilizando la última fuente ascendente para Inkscape, pero copia las instrucciones de empaquetado Debian personalizadas de la lp:~inkscape.dev/inkscape/debian-packagingrama en una subcarpeta llamada " debian".

La página de recetas de empaque en Launchpad le permite especificar a qué PPA cargar automáticamente sus paquetes. En nuestro caso, se sube aquí .

Como enfoque alternativo, puede basar su receta en un paquete de Ubuntu existente en lugar de directamente en la fuente ascendente. Por ejemplo, lp:ubuntu/gtk+3.0. Luego deberá crear una rama de este código y confirmar las modificaciones que necesite. Llamémoslo lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build, por ejemplo. Luego crearía una receta para fusionar automáticamente sus cambios en lugar de anidar las instrucciones de empaque. La receta se vería así:

# bzr-builder format 0.4 deb-version {debversion}+{date}
lp:ubuntu/gtk+3.0
merge my-custom-build lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build

Esta receta, por lo tanto, crea automáticamente un paquete fuente de Ubuntu personalizado y lo carga a su PPA cada vez que hay un cambio en el paquete oficial de Ubuntu.

Si adopta este enfoque de "fusión", tiene dos opciones para aplicar sus parches. O simplemente edita el código fuente ascendente directamente en su rama y deja que bzr se encargue de fusionarlo, o puede crear archivos de parche dentro de la debian/carpeta usando quilt. Cada uno tiene sus propias ventajas / desventajas. El primer enfoque es un poco más inteligente ... si el desarrollador principal adopta uno de sus parches, entonces la fusión generalmente seguirá funcionando y el paquete Ubuntu se compilará bien. El último enfoque le permite manejar sus parches utilizando el enfoque estándar basado en Debian de mantener el código de empaquetado separado del código ascendente ... sin embargo, si el desarrollador ascendente adopta uno de sus parches, la colcha no podrá aplicar el (duplicado) parche y el paquete no se compilará.

Alex Valavanis
fuente
Pero, ¿qué versión de gtk-3 lp:ubuntu/gtk+3.0rastrea? ¿Versión estable o actual de desarrollo actual?
Khurshid Alam