1.0 Entwicklung
Inhaltsverzeichnis
- 1 Allgemeines
- 2 Basisinformationen
- 3 Aktuelle Designprinzipien
- 4 Filessystem-Struktur
- 5 Basisskripte - Libs
- 6 Einrichtung einer Entwicklungsumgebung
- 7 Links
- 8 Ablauf der Entwicklung
- 9 Konventionen beim Paketbau
- 10 Addonlist
- 11 GIT
- 12 Manuell
- 13 Pfui
- 14 Pakete manuell bauen
- 15 PBuilder
- 16 PPA
- 17 VDR-Plugins
- 18 Updates
- 19 Installation von USB-Stick
- 20 Ubuntu CD remastern
- 21 Partman erstellen bzw. verändern
- 22 Preseeding
- 23 Details
- 24 Links
- 25 XBMC
Allgemeines
Diese Seite ist Bestandteil der internen Seiten.
Die Dokumentation für Enduser findet sich hier.
Basisinformationen
- www.debian.org/doc/maint-guide/
- http://wiki.ubuntuusers.de/Paketbau
- http://wiki.ubuntuusers.de/Grundlagen_der_Paketerstellung
Aktuelle Designprinzipien
Es gelten nach wie vor die allgemeinen easyVDR Ziele und Standards wie z.B. "easy" und "offline". Vor allem auch der Allgemeine Entwicklerguide.
Filessystem-Struktur
Erfolgt nach den FHS-Vorgaben: Details siehe Filessystem-Struktur
Basisskripte - Libs
Einrichtung einer Entwicklungsumgebung
Der Befehl dazu lautet
apt-get install easyvdr-dev
Mit der Installation wird man gefragt, ob man Sourcen im Git einchecken möchte, Pakete ins PPA laden möchte oder eine lokale PPA-Testumgebung = pbuilder installieren möchte. Diese Fragen sind zu beantworten. Wer nicht weiß, was das bedeutet, sollte bei den Entwicklern nachfragen, oder die Fragen mit "Nein" beantworten.
Links
- Paketeupload ins PPA
- Pakete ändern und in PPA schieben
- Weitere Infos zu Git: Gituse
- Weitere Infos zu PPA: Launchpad
- Weitere Infos zu pbuilder pbuilder
Ablauf der Entwicklung
Konventionen beim Paketbau
Beispiel Versionsnummer "0.0.5b-0easyVDR0~raring"
- erste Version des debian-Verzeichnisses (0 vor easyVDR)
- erster build (0 nach easyVDR), Plattform raring".
Beispiele:
A) Vdr-Plugin soll wegen neuem VDR unverändert neu gebaut werden, wird die Versionsnummer geändert zu "0.0.5b-0easyVDR1~raring"
B) Bei Änderungen am debian-Verzeichnis (z.B. neue build-deps) wird die erste Zahl hochgezählt und die zweite wieder auf Null
gesetzt: "0.0.5b-1easyVDR0~raring"
C) Wenn es einen neuen upstream-Release gibt, werden beide Zahlen wieder auf Null gesetzt: "0.0.5c-0easyVDR0~raring"
Hinweis: Alles nach dem letzten Minuszeichen einer Versionsnummer gehört nicht mehr zur Original-Versionsnummer.
Versioning ... If your package does need to be recompiled to support multiple Ubuntu series, then you should add a suffix of a tilde and the series name to the version number. So a package for the Intrepid Ibex could be named myapp_1.0-1ubuntu3ppa1~intrepid1 and for the Hardy Heron myapp_1.0-1ubuntu3ppa1~hardy1.
Addonlist
Neue Plugins müssem in easyvdr-setup/setup/addonlist.v3
eingetragen werden. Eigentlich soweit selbsterklärend.
Conflictmatrix ist binär
O bedeutet wird nicht angezeigt (das ist ein O, keine Null)
X bedeutet wird angezeigt
- 1. Stelle - FF
- 2. Stelle - FF-HD
- 3. Stelle - eHD
- 4. Stelle - NVidia
- 5. Stelle - PVR350
- 6. Stelle - X
- 7. Stelle - ATI
- 8. Stelle - frei
GIT
Die nötigen Dateien werden im GIT gesammelt und daraus dann Pakete im PPA gebaut.
Struktur in unserem Lucid-GIT-Repository
meta | Metapakete für die wichtigsten Dinge, aber auch z.B. das Setup |
vdr | wie der Name sagt |
plugins | Plugins zum VDR |
dvb | Kernel Erweiterung: v4l oder Liplianin |
libs | wie der Name sagt |
addon | Addons wie noad, motd, lirc... |
iso | Root Verzeichniss des ISO inkl angeopasster Installer |
easyportal | wie der Name sagt |
Manuell
...am Beispiel EPG-Daemon
cd /tmp sudo apt-get install devscripts build-essential sudo apt-get build-dep vdr-epg-daemon apt-get source vdr-epg-daemon #oder anderweitig beschaffen cd vdr-epg-daemon* mkdir -p debian/patches wget http://www.bild.de/tvm.diff -O debian/patches/tvm.diff echo "tvm.diff" >> debian/patches/series dch -i "added patch for tvm plugin" dpkg-buildpackage -us -uc -tc -b cd .. sudo dpkg -i vdr-epg-daemon*.deb
Pfui
So sollte man es nicht machen (geht aber auch für manche Fälle):
apt-get install easyvdr-dev #apt-get build-dep vdr #weitere basispakete je nachdem sudo aptitude install gettext libssl-dev libcurl4-openssl-dev mercurial -y cd /usr/local/src apt-get source vdr cd vdr-1.7.18 dpatch apply-all
euer Plugin wie z.B. "rotor" nach PLUGINS/src legen
make make plugins ~strip vdr ~strip im PLUGINS/lib dir ...
Pakete manuell bauen
1. den Tarball des Plugins entpacken und die Version mit "-" getrennt hinten anstellen. z.B. blub-1.0.0
2. danach in das Verzeichnis blub-1.0.0 wechseln
3. im Verzeichnis folgenden Befehl aufrufen debianize-vdrplugin
4. jetzt im gleichen Verzeichnis dpkg-buildpackage -tc
aufrufen
Und schon ist ein Debian - Paket erzeugt.
PBuilder
noch nicht beschrieben
PPA
Der Upload ins PPA erfolgt mit dput.
Die nötige .dput.cf
wird automatisch erstellt, wenn easyvdr-dev
installiert wird.
easyvdr-dev
muss per apt-get install
installiert werden und kann nun mit den folgenden Parametern auch in unsere anderen PPA laden.
dput testing paketname_version_source.changes dput stable paketname_version_source.changes dput unstable paketname_version_source.changes
Anzulesen folgende Artikel:
- http://wiki.ubuntuusers.de/Launchpad/PPA
- http://wiki.ubuntuusers.de/Ubuntero
- http://wiki.ubuntuusers.de/Grundlagen_der_Paketerstellung
- http://wiki.ubuntuusers.de/GnuPG
- http://wiki.ubuntuusers.de/umgebungsvariable
- http://wiki.ubuntuusers.de/pbuilder
- http://www.tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/
Paketquellen / Nutzung der PPAs
Ist hier beschrieben.
Paketbau
1. Sourcen holen
apt-get source paketname
changelog
mit dch -i
ändern (Achtung - hängt an den Paketnamen immer unbuntu1 an - entspr. editieren - Versionsnummer erste Zeile eins nach oben setzen)
2. Paketsourcen bauen - debuild -S -sa
3. Testlauf in pbuilder - sudo pbuilder build paketname.dsc
4. Upload - dput repo paketname_version_source.changes
Beispiel:
dput ppa:easyvdr-team/testing-vdr <paketname.changes>
Quilt
Mögliches Problem:
Die entpackten Sourcen im Git sind schon gepatcht. Es wird beim dput der letzte Zustand gespeichert.
Merker für die Zukunft:
Quilt-Pakete nie aus den alten Sourcen hochladen.
Immer die entstandenen .orig und das ...debian.tar.bz2 frisch entpacken, ändern und dann hochladen.
Man erkennt gepachte Sourcen auch an dem .pc-Ordner. Den zu löschen bringt da nichts, da schon gepatcht ist.
Mit einem
quilt pull -a
sollten die wieder resumed werden, aber die andere Methode ist sicherer.
VDR-Plugins
in alle rules einfügen:
override_dh_gencontrol: sh /usr/share/vdr-dev/dependencies.sh dh_gencontrol
Damit wird immer mit unserer ABI-Version gebaut.Ist dann auch im Build-log zu sehen -> vdr-abi-2.0.6-easyvdr2
Updates
erfolgen als Debs
Wer auf dem Server + GIT als Entwickler Zugang hat kann Inhalte zum Update direkt hochladen.
Dies geht z.B. so: (Laptop mit Debian Etch)
git clone ssh://[email protected]:9022/git/lucid
cd /lucid ...
Es kann auch sein das der eine oder der andere Entwickler die selbe Datei ändern will. Dann müßt ihr euch eben kurzschließen. Komunikation ist alles..!
git add * //werden alle geänderten Dateien aufgenommen git commit -m „so ich habe dies und jenes gemacht“ // so werden Kommentare eingefügt git push //jetzt wird alles auf den Server geladen und das update steht zur Verfügung.
Das git clone muß nur einmal gemacht werden.
Um das Verzeichniß auf den neusten Stand zu bringen braucht man nur einzugeben dann wird synchronisiert:
git pull
ISO Erstellen:
Das Alternate ISO wird bevorzugt mit UCK bearbeitet.
Installation von USB-Stick
Siehe 1.0_Installation#Installation_von_USB-Stick
Ubuntu CD remastern
Vorbereitung: gpg --list-keys
uck-remaster-unpack-iso xxxx.iso
uck-remaster-prepare-alternate
STATUS="testing" PART="vdr" mkdir $PART cd $PART wget -r -nd -A deb http://ppa.launchpad.net/easyvdr-team/$PART-$STATUS/ubuntu/pool/main/ rm *amd64* cd .. PART="base" mkdir $PART cd $PART wget -r -nd -A deb http://ppa.launchpad.net/easyvdr-team/$PART-$STATUS/ubuntu/pool/main/ rm *amd64* cd .. PART="others" mkdir $PART cd $PART wget -r -nd -A deb http://ppa.launchpad.net/easyvdr-team/$PART-$STATUS/ubuntu/pool/main/ rm *amd64* cd ..
- partman-base gegen easyPart tauschen isolinux+preseed "anpassen"
/u/ubuntu-keyring
alte Version löschen- uck-remaster-finalize-alternate 03EEE71C (mein Server Key)
- Beim ersten Bearbeiten
/u/ubuntu-keyring
alte version löschen (und dann nochmals "...finalize..."
- uck-remaster-pack-iso -h
Anmerkung: Bei uck wird das Paket ubuntu-keyring als source runtergeladen, der gpg key hinzugefügt und neu erstellt. Wenn dieses z.B. aufgrund fehlender Quellen nicht passieren kann, dann scheitert das spätere Iso mit der Meldung: "Konnte keine Apt-Quelle für Kernel finden".
Preseeding:
"XkbLayout" definiert das Tastaturlayout. Also: Option "XkbLayout" "de_DE" => Deutschland
Partman erstellen bzw. verändern
Quellen aus dem Git oder per apt-get source xxx
holen
in das Verzeichnis wechseln
Änderungen vornehmen
dpkg-buildpackage
sudo bash apt-get build-dep partman-base apt-get install dpkg-dev cd /usr/local/src apt-get source partman-base #apt-get source partman-utils
Preseeding
echo "debconf-get-selections --installer" > debconf.txt echo "=============== starts here ===================" >> debconf.txt debconf-get-selections --installer >> debconf.txt echo "" >> debconf.txt echo "" >> debconf.txt echo "" >> debconf.txt echo "" >> debconf.txt echo "" >> debconf.txt echo "" >> debconf.txt echo "" >> debconf.txt echo "debconf-get-selections" >> debconf.txt echo "=============== starts here ===================" >> debconf.txt debconf-get-selections >> debconf.txt
Details
Fernbedienungen / Receiver
Infos gibt es hier: 1.0 Fernbedienungen, 2.0 Fernbedienungen
VDR-Paket
BasisPaket z.B. von eTobi nehmen und alle Patches entfernen, dann dir -> debian durch unseres erseten und dir -> debian/patches vom Basispaket übernehmen menuorg entfernen, alle patches angewenden und unsere patches hinzugefügen
Links
XBMC
/debian/postinst /lib/*css Ordner Löschen /lib/libdvd/Makefile.in editieren Russian-keyboard Patch deaktivieren