Python App für Sailfish erstellen und bauen

Python App für Sailfish erstellen und bauen

Seit Beginn des Jahres ist Python im Jolla Store erlaubt. Vorher konnte man auch schon über openrepos.net Python Anwendungen veröffentlichen. Da ich selbst schon ein wenig mit Python/PyOtherSide experimentiert habe und auch schon ein kleines Spiel auf Openrepos veröffentlicht habe, wollte ich hier nochmal den Build-Prozess aufschreiben.

Dabei geht es mir im wesentlichen darum die für mich wichtigen Schritte nochmal ausführlicher zu notieren, da ich gemerkt habe, dass es nach ein paar Monaten doch wieder sehr mühsam ist, sich alles zusammenzusuchen. Da dies wahrscheinlich für viele Python-Entwickler auch eine Einstiegshürde darstellt, habe ich mich für eine Veröffentlichung entschieden, vielleicht hat ja jemand noch was davon ;)

Ich kann nicht garantieren, dass die Anleitung fehlerfrei ist, also wenn Fehler/Probleme auftreten sollten, darf man dies gerne in den Kommentaren kundtun, vielleicht kann ich helfen.

Ich habe für weitere Projekte eine Vorlage erstellt, die man auf GitHub findet.

Wer ein Jolla hat, kann direkt auf dem Gerät entwickeln und das Paket auch dort bauen. Da die nötigen Tools dort installiert werden können, erkläre ich das Vorgehen auf dem Jolla. Das ist natürlich auch auf jedem anderen Linux möglich, das die Tools für git und rpm-builds zur Verfügung stellt. Ich gehe davon aus, dass es auch im SDK von Jolla funktioniert, das habe ich aber nicht getestet.

Auf dem Jolla sollte man den Entwicklermodus unter den Systemeinstellungen freischalten und sich dann per SSH aufs Jolla einloggen. jolla_screenshot_10-01-2015_18-07-08Dort installiert man zunächst die benötigten Pakete git-minimal, rpm-build und meego-rpm-config:
devel-su pkcon install git-minimal rpm-build meego-rpm-config

Danach klont man sich meine Vorlage:
git clone https://github.com/Cermit/harbour-my-app.git

Diese Vorlage umfasst ein recht simple App mit dem kreativen Namen my-app ;), die die Verknüpfung zwischen Python/PyOtherSide und QML zeigen soll sowie die Benutzung der Elemente, die unter SailfishOS üblicherweise verwendet werden (Pulley-Menu (oben/unten), Cover-Page). Die App zählt bei der Berühung des Bildschirms einen Counter hoch. Alternativ kann man über die Cover-Aktionen auch hochzählen oder den Counter auf 0 zurücksetzen.jolla_screenshot_10-01-2015_18-08-28Normalerweise würde man jetzt seine eigenen Ideen umsetzen und sein eigenes Programm erstellen. Wenn man sein Programm aber dann veröffentlichen will, muss man daraus ein rpm-Paket bauen. Hierzu ist die zentrale Datei die specs-Datei, die man an seine Gegebenheiten anpassen muss. In der Vorlage heißt die Datei my-app.specs. Die specs Datei ist so angelegt, dass man aus der Vorlage direkt ein Paket bauen kann.

Für das Bauen mit rpmbuild wird eine bestimmte Verzeichnisstruktur vorausgesetzt, die man sich im Verzeichnis /home/nemo erstellt:
[nemo@Jolla ~]$ mkdir rpmbuild
[nemo@Jolla ~]$ cd rpmbuild/
[nemo@Jolla ~]$ mkdir SOURCES SPECS BUILD RPMS SRPMS

Um das Paket zu bauen packt man das gesamte Verzeichnis, in dem das Programm steckt, in ein Archiv und legt es im BUILD-Ordner ab:
[nemo@Jolla ~]$ tar -cf rpmbuild/SOURCES/harbour-my-app.tar.xz harbour-my-app/

Jetzt kann man das Paket bauen lassen:
rpmbuild -v -bb --clean harbour-my-app/my-app.specs

Wenn alles ohne Fehlermeldung durchläuft sollte man in rpmbuild/RPMS ein rpm-Paket finden:
[nemo@Jolla ~]$ ls -al rpmbuild/RPMS/noarch/
total 20
drwxr-xr-x 1 nemo nemo 62 Jan 10 17:57 .
drwxrwxr-x 1 nemo nemo 12 Jan 10 17:57 ..
-rw-rw-r-- 1 nemo nemo 20345 Jan 10 17:57 harbour-my-app-0.1-1.noarch.rpm

Dieses kann man jetzt auf seinem Jolla installieren, entweder über die Kommandozeile oder z.B. mit dem Filemanager:jolla_screenshot_10-01-2015_18-07-26jolla_screenshot_10-01-2015_18-07-46Have fun!

3 Gedanken zu „Python App für Sailfish erstellen und bauen

  1. Ciao Boris,
    ahhh super.Gerade habe ich angefangen Python zu lernen,abgesehen von meinen Übungen,denke ich natürlich so querfeldein.Dies war genau einer meiner Problemstellungen.Danke

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert