Existe-t-il un moyen simple de corriger automatiquement les sources Ubuntu lorsqu'elles deviennent disponibles et téléchargées sur un PPA?

9

Je cherche un outil pour faire ce qui suit:

  • Détecter automatiquement les mises à jour d'un ensemble de packages source (spécifiquement gtk + 2 et gtk + 3)
  • télécharger le package source
  • appliquer mes propres correctifs personnalisés à la source
  • valider correctement le patch ( dpkg-source --commit [something-or-other]?)
  • en cas de succès, téléchargez-les sur un PPA sur Launchpad (sur lequel je peux ensuite pointer mon système de la manière habituelle).

Launchpad peut-il faire tout cela pour moi?

Sinon, existe-t-il un outil qui fera automatiquement tout cela à partir d'une tâche cron?

À défaut de ce qui précède, je vais associer quelque chose moi-même, mais de quelles commandes ai-je besoin pour:

  • détecter et télécharger les mises à jour du package source? (Je préférerais quelque chose comme (bzr | git) pull plutôt que d'avoir à obtenir une nouvelle copie à chaque fois)
  • valider automatiquement le patch localement (j'utiliserais la même description de commit à chaque fois)?
  • télécharger les sources de manière non interactive vers un PPA?

J'ai trouvé une question ( Quelle est la bonne façon de patcher Wine pour un PPA personnalisé? ), Qui est similaire mais les étapes de la réponse sont toujours essentiellement manuelles et interactives. Une version complètement simplifiée de cela, plus une détection automatique des mises à jour sources, serait très utile.

Nick Booker
la source

Réponses:

2

Eh bien, il semble que les recettes d'emballage soient la voie à suivre ici. Fondamentalement, les recettes de packaging peuvent créer automatiquement des packages source Ubuntu et les télécharger sur un PPA chaque fois qu'une branche bzr sur Launchpad change. La documentation en ligne est assez bonne, mais je vais vous donner quelques exemples ...

Tout d'abord, vous spécifiez une branche à suivre (par exemple, lp:gtk3) puis ajoutez une commande pour imbriquer votre propre branche d'empaquetage Debian dans cette branche. Jetez un œil à cette recette que j'ai créée pour les versions quotidiennes d'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

Cette recette crée un paquet Ubuntu chaque jour en utilisant la dernière source en amont pour Inkscape, mais copie les instructions de conditionnement Debian personnalisées de la lp:~inkscape.dev/inkscape/debian-packagingbranche dans un sous-dossier appelé " debian".

La page de recette d'emballage sur Launchpad vous permet de spécifier vers quel PPA télécharger automatiquement vos colis. Dans notre cas, il est téléchargé ici .

Comme approche alternative, vous pouvez baser votre recette sur un package Ubuntu existant plutôt que directement sur la source en amont. Par exemple lp:ubuntu/gtk+3.0,. Vous devez ensuite créer une branche de ce code et valider toutes les modifications dont vous avez besoin. Appelons-le lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build, par exemple. Vous devez ensuite créer une recette pour fusionner automatiquement vos modifications plutôt que d'imbriquer les instructions d'emballage. La recette ressemblerait à quelque chose comme:

# 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

Cette recette crée donc automatiquement un paquet source Ubuntu personnalisé et le télécharge sur votre PPA chaque fois qu'il y a un changement dans le paquet Ubuntu officiel.

Si vous adoptez cette approche de «fusion», vous avez deux options pour appliquer vos correctifs. Soit vous éditez simplement le code source en amont directement dans votre branche et laissez bzr se charger de le fusionner, soit vous pouvez créer des fichiers de patch dans le debian/dossier à l'aide de quilt. Chacun a ses propres avantages / inconvénients. L'ancienne approche est un peu plus intelligente ... si l'un de vos correctifs est adopté par le développeur en amont, alors la fusion fonctionnera généralement et le package Ubuntu se construira correctement. Cette dernière approche vous permet de gérer vos correctifs en utilisant l'approche standard basée sur Debian de garder le code de conditionnement séparé du code en amont ... cependant, si le développeur en amont adopte l'un de vos correctifs, quilt ne pourra pas appliquer le (duplicata) patch et le package ne parviendra pas à construire.

Alex Valavanis
la source
Mais quelle version de gtk-3 lp:ubuntu/gtk+3.0suit? Version actuelle stable ou en cours de développement?
Khurshid Alam