(Erledigt) [vdr-2.1.6] Probleme beim Bauen vom live-Plugin

  • Hallo Zusammen,


    ich habe ein seltsames Problem beim Bauen vom live-Plugin:


    Baue ich live vom $VDRSOURCE_DIR aus mit "make plugins", erhalte ich beim Start des VDR folgenden Fehler:


    Code
    1. ....
    2. Apr 06 11:48:49 [vdr] [13421] loading plugin: /usr/lib/vdr/plugins/libvdr-femon.so.2.1.6
    3. Apr 06 11:48:49 [vdr] [13421] loading plugin: /usr/lib/vdr/plugins/libvdr-live.so.2.1.6
    4. Apr 06 11:48:49 [vdr] [13421] ERROR: /usr/lib/vdr/plugins/libvdr-live.so.2.1.6: undefined symbol: _ZN14cReplayControlC1Eb


    Wechsle ich nun ins $LIVE_SOURCE_DIR und mache dort,


    Code
    1. make clean
    2. make all


    und kopiere die "libvdr-live.so" von Hand, dann geht es.


    Hat Jemand eine Idee, wie man das fixen kann?

  • Sieht so aus als ob das eine auf andere VDR development header (unterschiedliche Patch-Level) zugreift als das andere ... ?

    HowTo: APT pinning

  • Mir ist noch etwas aufgefallen:


    Baue ich mit,


    Code
    1. make clean all


    erhalte ich folgenden Fehler:



    Baue ich mit.


    Code
    1. make clean
    2. make all


    geht es.


    Seltsam, oder?? ?(

  • Moin,


    ich habe ein ähnliches Problem beim Compile des Live-Plugins (0.3.0, VDR 2.0.3):


    Wenn ich aus dem Live-SRC_DIR 'make all' mache erhalte ich :



    Gibt es dafür schon einen Patch? :)

  • Ich habe auch ein Problem beim Bauen des live-plugin unter trusty


    Code
    1. tntconfig.cpp:11:30: fatal error: cxxtools/loginit.h: Datei oder Verzeichnis nicht gefunden
    2. #include <cxxtools/loginit.h>


    Die Header-Datei gibt es offenbar unter trusty nicht mehr

    Code
    1. dpkg -S loginit.h
    2. dpkg-query: Kein Pfad gefunden, der auf Muster *loginit.h* passt


    Es gibt nur eine log.h

    Code
    1. dpkg -S log*.h | grep cxx
    2. libcxxtools-dev: /usr/include/cxxtools/log/cxxtools.h
    3. libcxxtools-dev: /usr/include/cxxtools/log.h


    Code
    1. apt-cache policy libcxxtools9
    2. libcxxtools9:
    3. Installiert: 2.2.1-1
    4. Installationskandidat: 2.2.1-1
    5. Versionstabelle:
    6. *** 2.2.1-1 0
    7. 500 http://de.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
    8. 100 /var/lib/dpkg/status


    Gibt es hierfür bereits eine Lösung?

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Hast du die aktuelle Git-Version des Live-Plugin benutzt? Eigentlich sollte der genannte include gar nicht mit der neuen Version der cxxtools genutzt werden:
    http://projects.vdr-developer.…2294b1a6a1ea6f584d3f6c#n7

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • ...Um nochmal auf mein Problem zurückzukommen:


    Ich habe nicht das Problem, dass ich es nicht kompiliert bekomme, ich hab das Problem, dass es mit dem neuen "kupfernen" Weg nicht geht, bzw. dass auf dem "kupfernen" Weg anders kompiliert, als mit der guten alten Methode.

  • Wenn die Plugin-Sourcen in einem vdr-Sourcetree liegen, dann mit make aus dem vdr-Verzeichnis bauen.
    make direkt im Plugin-Verzeichnis geht nur, wenn die Sourcen nicht in einem vdr-Tree liegen und die vdr-header installiert sind.


    Lars

  • Mein Problem hat sich erledigt.


    In meinem Makefile patch fehlte
    CXXTOOLVER = $(shell cxxtools-config --version | sed -e's/\.//g' | sed -e's/pre.*//g' | awk '/^..$$/ { print $$1."000"} /^...$$/ { print $$1."00"} /^....$$/ { print $$1."0" } /^.....$$/ { print $$1 }')
    und
    DEFINES += -DCXXTOOLVER=$(CXXTOOLVER)


    Vielen Dank an seahawk

    HW: Gigabyte EP41-UD3L | Core2Duo 7400 | 2GB Kingston | MSI N220GT-MD1GZ (passiv) | L4M-Twin S2 ver 6.5 mit Flex S2 | Silverstone LC16M mit iMON VFD | Samsung LE46B750
    SW: Xubuntu 14.04 3.13.0-24 | NVIDIA 304.117 | vdr 2.1.6 | softhddevice | inputlirc | lcdproc

  • Dann wird irgendwas mit den include-Pfaden nicht passen.
    Hast du noch andere vdr-Header installiert oder schwirrt irgendwo noch eine vdr.pc herum?


    Lars

  • Dann wird irgendwas mit den include-Pfaden nicht passen. ...


    Das kann ich mir nicht vorstellen, da das bei mir immer Symlinks sind:



    Code
    1. vdr01_64 ~ # ll /usr/local/src/VDR
    2. lrwxrwxrwx 1 root root 9 16. Mär 15:30 /usr/local/src/VDR -> vdr-2.1.6
    3. vdr01_64 ~ #


    [...] Hast du noch andere vdr-Header installiert ...


    Nein.


    [...] oder schwirrt irgendwo noch eine vdr.pc herum? ...


    Nein, denn die wird ja immer neu erstellt.


    Ich baue mit einem Script, das im wesentlichem so aussieht:



    Das Komische ist, dass es ja schon mal ging. Außderdem ist es nur live, das nicht, bzw. falsch gebaut wird.


    Baue ich live aus dem live Verzeichnis heraus, ist das Kompilat 12854545 Byte groß:


    Code
    1. vdr01_64 ~ # ll /usr/local/src/vdr-2.1.6/PLUGINS/src/live-git/libvdr-live.so
    2. -rwxr-xr-x 1 root root 12854545 10. Apr 19:32 /usr/local/src/vdr-2.1.6/PLUGINS/src/live-git/libvdr-live.so
    3. vdr01_64 ~ #


    Baue ich aus dem $VDRSOUREDIR mit "make plugins", ist es 12855169 Byte groß:


    Code
    1. vdr01_64 ~ # ll /usr/local/src/vdr-2.1.6/PLUGINS/src/live-git/libvdr-live.so
    2. -rwxr-xr-x 1 root root 12855169 13. Apr 08:38 /usr/local/src/vdr-2.1.6/PLUGINS/src/live-git/libvdr-live.so
    3. vdr01_64 ~ #



    Es ist nicht so, dass ich nun unbedingt ein Problem damit habe, live einfach am Ende nochmal zu bauen, mich würde halt nur interessieren, weshalb das so ist, zumal es ja früher einmal ging....

  • Wenn du statt "make vdr" einfach nur "make" aufrufst, wird der vdr und alle plugins in einem Rutsch gebaut und alle Plugins nach PLUGINS/lib kopiert. Probier das doch mal.


    Lars

  • Um den Stress hier mal abzubremsen.


    Der Fehler liegt nicht im Makefile des VDRs, sondern vielmehr im Makefile von live bzw. genauer im Makefile für die pages.
    Zumindest was die Fehlermeldung mit der menu.cpp angeht. Irgendwo verschluckt sich make da.


    Anstatt den Fehler zu beseitigen, habe ich mich dazu entschlossen ein neues Makefile zu schreiben. Das funktioniert auch schon soweit, allerdings muss ich noch ein paar Kleinigkeiten verbessern.


    Ich werde das dann spätestens heute Nachmittag bei Github pushen.

  • Wenn du statt "make vdr" einfach nur "make" aufrufst, wird der vdr und alle plugins in einem Rutsch gebaut und alle Plugins nach PLUGINS/lib kopiert. Probier das doch mal.


    Lars


    Wenn ich nur "kupferfähige" Plugins hätte, dann würde das sicherlich so funktionieren.

  • Wenn ich nur "kupferfähige" Plugins hätte, dann würde das sicherlich so funktionieren.


    Ich hab hier auf meinem Test-vdr gemischte Makefiles und kein Problem mit "make".


    Lars.

  • Das eigentliche Problem ist das live Makefile


    bei make 'clean all' scheint 'clean' und 'all' parallel zu laufen. Und da bei 'all' die *.cpp Dateien erst durch ecppc erzeugt werden und bei 'clean' wieder gelöscht werden, wird dem Compiler bei 'clean all' der Sourcecode weggenommen.
    Kein Wunder, dass es dann nicht kompiliert.