Entwicklung - Hinweise für Plugin Entwickler

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K
 
(12 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt)
Zeile 18: Zeile 18:
 
  vdr-hello-0.0.1.tgz
 
  vdr-hello-0.0.1.tgz
  
im Quellcodeverzeichnis erstellt worden sein, wobei hello durch den aktuellen Plugin-Namen ersetzt wird
+
im Quellcodeverzeichnis erstellt worden sein, wobei '''hello''' durch den eigenen Plugin-Namen ersetzt wird und 0.0.1 durch die Versionsnummer des Plugins.
und 0.0.1 durch die Versionsnummer des Plugins.
+
  
==Übersetzungen / Internationalization==
+
==Übersetzungen / Internationalisieren==
* Finnisch -> http://www.saunalahti.fi/~rahrenbe/vdr/patches
+
* Finnisch
* Französisch -> http://vdrbox.free.fr/fichiers/traduction
+
** http://www.saunalahti.fi/~rahrenbe/vdr/patches
* Russisch -> http://www.allrussian.info/thread.php?threadid=42422
+
 
** http://gentoo.fh-luh.de/files/internationalization
+
* Französisch
 +
** http://vdrbox.free.fr/fichiers/traduction
 +
** http://mnival.free.fr/fichiers/VDR/patchs/trad
 +
 
 +
* Russisch
 +
** http://www.allrussian.info/thread.php?threadid=42422
  
 
==Wünschenswert==
 
==Wünschenswert==
 
Wie in der [[Struktur]] zu sehen ist, wird das '''$VDRCONFIG/plugins''' Verzeichnis mit der Anzahl der [[Plugins]] ''unübersichtlich''.
 
Wie in der [[Struktur]] zu sehen ist, wird das '''$VDRCONFIG/plugins''' Verzeichnis mit der Anzahl der [[Plugins]] ''unübersichtlich''.
  
Wäre schön, wenn wie bei einiegen Plugins schon geschehen, der Ort für Konfigurationsdateien mit einem neuen Verzeichnis eine ebene tiefer gesetzt wird.
+
Wäre schön, wenn wie bei einigen Plugins schon geschehen, der Ort für Konfigurationsdateien mit einem neuen Verzeichnis eine Ebene tiefer gesetzt wird.
  
 
  - VDRCONFIG/plugins
 
  - VDRCONFIG/plugins
 
  + VDRCONFIG/plugins/'''<PLUGIN>'''
 
  + VDRCONFIG/plugins/'''<PLUGIN>'''
  
Oder zwecks ''abwärtskompatibilität'', eine entsprechende Option bereit zu stellen. (siehe [[image-plugin]] / [[loadepg-plugin]])
+
Oder zwecks ''Abwärtskompatibilität'', eine entsprechende Option bereit zu stellen. (siehe [[image-plugin]] / [[loadepg-plugin]])
  
 
  -c <PATH>
 
  -c <PATH>
Zeile 48: Zeile 52:
 
  '''$VDRCONFIG/plugins/test'''
 
  '''$VDRCONFIG/plugins/test'''
  
So wäre in Zukunft sicher gestellt, das Konfigurations-Dateien nicht mit einnander ''kolidieren'', wie es zbs. schon beim [[mp3-plugin]] + [[mediamvp-plugin]] der Fall ist (explizit, nutzen beide [[Plugins]] die [[mp3sources.conf]], in ein und dem selben verzeichnis, so das hier ein ''sepereates'' zuweisen von verschiedenen Quellen, nicht mehr möglich ist).
+
So wäre in Zukunft sicher gestellt, dass Konfigurations-Dateien nicht miteinander ''kollidieren''.
 
+
Das wäre mit ... nicht passiert.
+
 
+
+-- [[Bild:Folder.png]] /plugins
+
    +-- [[Bild:Folder.png]] /[[mediamvp-plugin|mediamvp]]
+
        |--+ [[mp3sources.conf]]
+
    +-- [[Bild:Folder.png]] /[[mp3-plugin|mp3]]
+
        |--+ [[mp3sources.conf]]
+
  
 
Zum anderen dient es sicher der Übersichtlichkeit.
 
Zum anderen dient es sicher der Übersichtlichkeit.
Zeile 63: Zeile 59:
 
Warum steigen einige Plugins aus, mit der message '''"configfile not found..."''', könnte man nicht ein wenig ''Intelligenz'' von einem Plugin erwarten?
 
Warum steigen einige Plugins aus, mit der message '''"configfile not found..."''', könnte man nicht ein wenig ''Intelligenz'' von einem Plugin erwarten?
  
Zbs, wenn eine Konfigurations-Datei nicht vorhanden ist, das diese dann vom Plugin am passenden Ort erstellt wird?
+
Z.B., wenn eine Konfigurations-Datei nicht vorhanden ist, das diese dann vom Plugin am passenden Ort erstellt wird?
  
Glaube im [[eggtimer-plugin]] solch eine Routine gesehen zu haben.
+
Im [[eggtimer-plugin]] und [[systeminfo-plugin]] ist solch eine Routine zu sehen.
  
 
==Debugging==
 
==Debugging==
Zeile 84: Zeile 80:
 
Wäre nicht schlecht, wenn das die anderen Plugins ebenso halten könnten.
 
Wäre nicht schlecht, wenn das die anderen Plugins ebenso halten könnten.
  
==Links==
+
==Makefile Option(s)==
 +
Bsp.:
  
 +
# uncomment this, if you have ImageMagick ...
 +
HAVE_IMAGEMAGICK = 1
 +
 +
Sowas lässt sich besser (und vor allem automatisch) lösen:
 +
 +
# uncomment this, if you have ImageMagick ...
 +
ifeq (exists, $(shell pkg-config ImageMagick{,++} && echo exists))
 +
    HAVE_IMAGEMAGICK = 1
 +
endif
 +
 +
==Plugins==
 +
Es lässt sich auch Abfragen, ob andere Plugins vorhanden sind.
 +
 +
Bsp.:
 +
 +
USE_MAILBOX_PLUGIN = 1
 +
 +
Besser:
 +
 +
ifeq (exists, $(shell test -e ../mailbox && echo exists))
 +
    USE_MAILBOX_PLUGIN = 1
 +
endif
 +
 +
==Links==
 +
[[ru:Разработка - Примечание для разработчиков плагинов]]
 
[[Kategorie:Entwicklung]]
 
[[Kategorie:Entwicklung]]

Aktuelle Version vom 22. Oktober 2010, 23:09 Uhr

Inhaltsverzeichnis

[Bearbeiten] Beschreibung

[Bearbeiten] Plugins packen

Sinngemäß entsprechend ../VDR/PLUGINS.html:

Erstellen eines Plugin-Pakets

Wenn man als Entwickler sein Plugin anderen VDR-Nutzern verfügbar machen möchte, muss man ein Quellcode-Paket erstellen. Das Makefile welches beim Aufruf von newplugin erstellt wurde verfügt über das make Ziel dist, welches diese Funktion übernimmt.

In das Plugin Verzeichnis wechseln und make dist ausführen, hier am Beispiel von hello:

cd VDR/PLUGINS/src/hello
make dist

Anschließend sollte ein neu erstelltes Quellcode-Tarball

vdr-hello-0.0.1.tgz

im Quellcodeverzeichnis erstellt worden sein, wobei hello durch den eigenen Plugin-Namen ersetzt wird und 0.0.1 durch die Versionsnummer des Plugins.

[Bearbeiten] Übersetzungen / Internationalisieren

[Bearbeiten] Wünschenswert

Wie in der Struktur zu sehen ist, wird das $VDRCONFIG/plugins Verzeichnis mit der Anzahl der Plugins unübersichtlich.

Wäre schön, wenn wie bei einigen Plugins schon geschehen, der Ort für Konfigurationsdateien mit einem neuen Verzeichnis eine Ebene tiefer gesetzt wird.

- VDRCONFIG/plugins
+ VDRCONFIG/plugins/<PLUGIN>

Oder zwecks Abwärtskompatibilität, eine entsprechende Option bereit zu stellen. (siehe image-plugin / loadepg-plugin)

-c <PATH>
--config=<PATH>

PATH ist relativ zum VDR Plugin Konfigurationsverzeichnis, Bsp.

-c test

Entspricht.

$VDRCONFIG/plugins/test

So wäre in Zukunft sicher gestellt, dass Konfigurations-Dateien nicht miteinander kollidieren.

Zum anderen dient es sicher der Übersichtlichkeit.

[Bearbeiten] Intelligenz einiger Plugins

Warum steigen einige Plugins aus, mit der message "configfile not found...", könnte man nicht ein wenig Intelligenz von einem Plugin erwarten?

Z.B., wenn eine Konfigurations-Datei nicht vorhanden ist, das diese dann vom Plugin am passenden Ort erstellt wird?

Im eggtimer-plugin und systeminfo-plugin ist solch eine Routine zu sehen.

[Bearbeiten] Debugging

Viele nutzen.

DEBUG = 1

In den Makefiles, Problem.

make DEBUG=1 all plugins

Und alles würde mit Debug übersetzt, obwohl man explizit nur ein Plugin in diesen Modus haben möchte.

Das femon-plugin macht es richtig. (<NAME DES PLUGINS>_DEBUG)

FEMON_DEBUG = 1

Wäre nicht schlecht, wenn das die anderen Plugins ebenso halten könnten.

[Bearbeiten] Makefile Option(s)

Bsp.:

# uncomment this, if you have ImageMagick ...
HAVE_IMAGEMAGICK = 1

Sowas lässt sich besser (und vor allem automatisch) lösen:

# uncomment this, if you have ImageMagick ...
ifeq (exists, $(shell pkg-config ImageMagick{,++} && echo exists))
    HAVE_IMAGEMAGICK = 1
endif

[Bearbeiten] Plugins

Es lässt sich auch Abfragen, ob andere Plugins vorhanden sind.

Bsp.:

USE_MAILBOX_PLUGIN = 1

Besser:

ifeq (exists, $(shell test -e ../mailbox && echo exists))
   USE_MAILBOX_PLUGIN = 1
endif

[Bearbeiten] Links

In anderen Sprachen