Ein PPA für izulu mit Integration des Github-Repos einzurichten war komplizierter als nötig. Man merkt, dass die ganze Infrastruktur nicht für kleine, sondern für große Projekte gemacht ist, alles ist unheimlich mächtig und hinter tausend Wrappern versteckt, und auch die sind potentiell ziemlich kompliziert.
Daher nun die Quintessenz der Arbeit meiner letzten Tage, neben dem PPA: Eine kleine Anleitung zur Integration von Github für daily builds in PPAs auf Launchpad.
Vorbedingung
Egal was das für ein Projekt ist, du kannst dir Unmengen an Arbeit mit Nutzung eines Makefiles sparen. Selbst wenn es gar nichts zu kompilieren gibt!
Makefiles sind einfach. Ignoriere einfach autotools und was es sonst alles gibt. Als Start für Skripts empfehle ich das Makefile von izulu (das auf dem Makefile von pass basiert). Wenn Code kompiliert werden muss, ist diese Anleitung nicht verkehrt (kennt jemand eine bessere?)
Edit: Hervorragend ist auch die Anleitung von Dirk bei den Adminstories.
Edit2: hiltmon beschreibt in dieser Anleitung eine sinnvolle Makefile für C++, samt Projektstruktur.
Achte darauf, dass dein Makefile auch wirklich alle Ordner anlegt, die Zeile mit install -d
.
PPA manuell füllen
Vorbedingung: Dein Programm baut sich sauber per Makefile. Du hast dir auf Launchpad ein PPA angelegt, und in deinem Profil deinen SSH-Key hochgeladen. Das Paket packaging-dev ist installiert.
Workflow: Wir erstellen mithilfe von Debian/Ubuntu-Tools ein reguläres .deb. Das Sourcefile dieses .deb, *_source.changes, wird auf Launchpad hochgeladen.
Zuerst musste ein vollständiges debian-Verzeichnis angelegt und die Dateien darin entfernt oder konfiguriert werden.
- Anlegen:
dh_make --createorig -p NAME_VERSIONUMMER
- Jetzt muss debian/ kontrolliert werden. Alle ex und EX-Dateien können gelöscht werden, und auch ein paar andere, in denen das drin steht. Dabei immer auf das Target (bei mir war das trusty, aber dh_make setzte unstable ein) in debian/changelog(!) achten. In debian/control die Abhängigkeiten eintragen, und unbedingt die Section von unknown auf eine aus dieser Liste (auf die URL für die ID achten) ändern.
- Die im Elternverzeichnis erstellte NAME_VERSIONUMMER.orig.tar.gz muss nun wahrscheinlich noch in NAME_HAUPTVERSIONUMMER.orig.tar.gz umbenannt werden (also ohne -ppa1, aber debuild warnt sonst auch).
- Dann das Paket bauen:
debuild -S -sa -kKEYID
- Wenn das gut ging, wurde im Elternordner die Komponenten hingelegt, also kannst du das Quellpaket hochladen:
dput -f ppa:USER/PPA ../PAKETNAME_VERSIONSNUMMER_source.changes
Nun auf die Email warten, die über Erfolg oder etwaige Baufehler berichtet. Etwaige Fehler berichtigen und alles wiederholen (debian/ einfach behalten, aber beim dh_make-Schritt und in der changelog die Versionsummer erhöhen).
Integration mit Github und Daily Builds
Vorbedingung: Du hast ein Programm auf Github, mit debian-Ordner, dessen Debianpaket auf Launchpad gebaut werden kann.
Workflow: Projekt anlegen, Codeimport einrichten, recipe erstellen, dieses dann eintragen.
Aber ein PPA manuell zu befüllen ist ja gar nicht, was wir als Entwickler typischerweise wollen. Sondern daily snapshots aus dem Github-Repo in dem PPA haben ist das Ziel.
- Dafür muss zuerst der Code nach Launchpad importiert werden. Dafür, jeweils den Links folgen, ein Projekt angelegen, und dann den Import erbeten. Dieser Import läuft danach automatisch, mit etwas Verzögerung, bei jeder Änderung im Github-Repo.
- Dann ein Rezept anlegen. Das ist einfach: Ein Rezept sagt einfach nur, welche bzr-branches und Repos genutzt werden sollen. Also bzr-builder installieren und eine Datei PROJEKTNAME.recipe anlegen. Die Anleitung erklärt das ganz gut, aber als Beispiel hier izulu.recipe (der debian-Ordner ist Teil des Repos):
# bzr-builder format 0.3 deb-version {debupstream}+{date}+{revno} lp:izulu
- Dies mit pbuilder testen:
bzr dailydeb --allow-fallback-to-native PROJEKTNAME.recipe working-dir sudo apt-get install pbuilder echo 'COMPONENTS="main universe multiverse restricted"' >> ~/.pbuilderrc sudo pbuilder create sudo pbuilder build working-dir/PROJEKTNAME_VERSIONSUMMER.dsc
Dabei darauf achten, dass das Target in debian/changelog identisch mit der derzeit genutzten Ubuntuversion ist. - Das Rezept musst du nun einfach im Projekt eintragen und das PPA als Ziel eingeben, sollte direkt vorgeschlagen werden.
Letzter Tipp: Stelle sicher, dass die Versionsnummer passt, sonst erst die alten Dateien aus dem PPA löschen. Bei mir war die nämlich kleiner als die des händisch gebauten im PPA, wodurch es nicht hochgeladen werden konnte. Das Uploadlog hab ich natürlich erstmal übersehen, und mich über den Fehler angesichts des einwandfrei aussehenden Buildlogs gewundert.
Das wars. Änderungen in Github werden automatisch nach Launchpad importiert, und fallls sich der Code ändert, wird täglich das .deb im PPA neu gebaut.
onli blogging am : PPA für simdock
Vorschau anzeigen
onli blogging am : Overlays sind Klasse!
Vorschau anzeigen