1.0 Entwicklung

Aus easyVDR-Wiki
Zur Navigation springen Zur Suche springen
Easyvdr10-oneriric400x300.jpg

Zur Kategorie EasyVDR 1.0

Allgemeines

Diese Seite ist Bestandteil der internen Seiten.
Die Dokumentation für Enduser findet sich hier.

Basisinformationen

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

Libs-v10.png

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

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:

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