hi,
es geht mir um die struktur der vdr ebuilds.
hier habe ich vorschläge, die doch sehr weit gehen, deshalb der thread ( Henning: hi henning *wink* )
also:
mein erster vorschlag betrifft die funktion src_compile():
ich würde vorschlagen, diesen teil des codes:
for i in $(ls ${S}/PLUGINS/src) ; do
cd ${S}/PLUGINS/src/${i}
durch folgenden zu ergänzen:
(cd include/vdr; for i in ../../*.h; do ln -sf $i .; done)
for i in $(ls ${S}/PLUGINS/src) ; do
nun, was passiert hier?
es werden headerfiles an eine stelle gelinkt, an der sie sämtliche plugins zur compiletime erwarten und einbinden können.
dadurch wird ein grosser teil des gentoo-patches überflüssig, der nämlich, der die headerlocations anpasst.
z.b.
-#include <vdr/plugin.h>
+#include <plugin.h>
sowie auch der gentoo-scanner-patch (der ja auch nichts anderes tut)
dann:
durch neue patchsets (neuer Komplettpatch z.b.) wird vielfach ein neuer gentoo patch fällig.
mein vorschlag ist, diesen durch eine reihe von sed befehlen zu ersetzen.
warum?
nun, eine neue patchversion ( s.o.) bewirkt, dass der gentoo patch wenn überhaupt nur noch mit versatz apliied wird;
ein sed komando ist hier vielseitiger;
ich schlage folgende vor:
sed -i 's:PLUGINDIR= ./PLUGINS:PLUGINDIR= /usr/lib/plugins:' Makefile
sed -i 's:$(PLUGINDIR= /usr/lib/vdr:PLUGINLIBDIR= $(PLUGINDIR): Makefile
sed -i '/Make.config/d' Makefile
sed -i '/DVBDIR/d' Makefile
diese befehle bewirken alles, was der gentoo patch auch tut.
ein anpassen der installationsroutine des Makefiles, wie es im patch noch geschieht, ist nicht nötig, da make install
nicht aufgerufen wird.
den patch bzgl der datei vdr.c würde ich durch folgendes ersetzen:
sed -i 's:*ConfigDirectory = NULL:*ConfigDirectory = CONFIGDIR:' vdr.c
hierbei gehe ich einen anderen weg als der patch;
folglich muss auch in Makefile:
sed -i '/DEFINES += -D_GNU_SOURCE/ a\
CONFIGDIR = /etc/vdr' Makefile
sed -i '/CONFIGDIR = /etc/vdr/ a\
DEFINES += -DCONFIGDIR="$(CONFIGDIR)"' Makefile
werden.
der pfad zur konfiguration wird dann als -D übergeben, wie es für /video, den lirc support, usw schon geschieht...
und ob die verwaltung der versionsnummern ( so sie zwingend beibenhalten werden muss ) über einen patch geschehen muss??? *grins*
sed -i 's:#define SO_INDICATOR ".so.":#define SO_INDICATOR ".so":' plugin.c
sed -i 's:"%s/%s%s%s%s":"%s/%s%s%s":' plugin.c
sed -i 's:LIBVDR_PREFIX, s, SO_INDICATOR, VDRVERSION);:LIBVDR_PREFIX, s, SO_INDICATOR);:' plugin.c
machts möglich... *grins*
fazit:
keine gentoo patches mehr nötig, auf ein neuerstellen und anpassen kann verzichtet werden.
bisherige funktion der ebuilds ist gegeben.
es ist nur weniger aufwand, wenn neue patches herauskommen und der gentoo-patch angepasst werden muss.
mit der bitte um eine rege diskussion
gruss
rootshell