[markad] überarbeiteter Decoder

  • Guten Morgen,

    ich habe auf vdr-2.4.6 upgedatet und markad aus dem git aktualisiert.

    Beim Start erhalte ich


    Jan 17 11:19:15 vdr64 vdr[3183778]: [3183778] plugin /usr/local/src/VDR/PLUGINS/lib/libvdr-markad.so.2.4.6: missing symbol VDRPluginDestroyer(), please rebuild

    [...]

    Jan 17 11:19:15 vdr64 vdr[3183778]: [3183778] initializing plugin: markad (2.5.3 (0637192)): Markiere Werbung


    Ist das kritisch? Rebuild hat mich nicht wirklich weitergebracht.

    Christian

  • Da gab es eine Änderungen in 2.4.6 hier, die erfordert, dass markad neu gebaut werden muss. Da muss was an deiner Build Umgebung nicht stimmen.

    Prüfe mal, ob der make install von markad wirklich nach /usr/local/src/VDR/PLUGINS/lib/libvdr-markad.so.2.4.6 kopiert. Der Pfad ist doch etwas unüblich.

    Ich hätte hier /usr/lib/vdr/plugins/libvdr-markad.so.2.4.6 oder /usr/local/lib/vdr/plugins/libvdr-markad.so.2.4.6 erwartet.

  • alles nochmal mit make clean und make clean-plugins geputzt. Neu kompiliert, installiert, gestartet.

    Keine Änderung, weiterhin kommt die Meldung. Die Pfade passen so.

    -rwxr-xr-x 1 root root 310680 17. Jan 12:40 /usr/local/src/VDR/PLUGINS/lib/libvdr-markad.so.2.4.6


    Bis heute morgen hatte ich ja auch noch gar kein 2.4.6 auf Platte.


    Christian

  • So langsam gehen mir die Ideen aus. Da läuft irgendwas beim Bauen schief.

    Poste mal ein paar Fakten:

    - Welches Betriebssystem ?

    - baust du markad innerhalb des VDR Baums oder außerhalb ?

    - gibt es vielleicht noch alte VDR Sourcen auf dem Rechner (find -name plugin.h) ?

  • - gibt es vielleicht noch alte VDR Sourcen auf dem Rechner (find -name plugin.h) ?

    Das war's. Ich hatte unter /usr/local/include/ Dateien aus 2017 liegen. Die hat markad verwendet, andere Plugins hatten sich nie daran gestört.

    Gelöscht und ein

    ln -s /usr/local/src/VDR/libsi/ .

    ln -s /usr/local/src/VDR/include/vdr/ .

    in /usr/local/include hat das Problem behoben.

    Bleibt nur die Frage, warum markad die includes von dort verwendet und die anderen Plugins unterhalb VDRDIR suchen.


    Christian

  • Freut mich zu hören, dass dein Problem gelöst ist.

    Bleibt nur die Frage, warum markad die includes von dort verwendet und die anderen Plugins unterhalb VDRDIR suchen.

    Das sollte markad auch machen. Mein Makefile entspricht den vdr Plugin Mustern. Wenn der Build aus VDR gemacht wird, setzt der INCLUDES und die nutze ich auch. Wenn nicht, sucht der Compiler eh in den Standard Pfaden.

    Hast du vielleicht auch noch ein altes vdr.pc irgendwo rum liegen ? Wenn die Datei in einem der pkg-config Suchpfade liegt, würde die das überschreiben.


    Edit: Ich habe es mal bei mir ausprobiert: Wenn ich aus dem vdr im Source Verzeichnis /usr/src/vdr/vdr baue, hat der g++ Befehl bei markad den Parameter -I/usr/src/vdr/vdr/include mit drin. Also bei mir ist das genau so, wie du es erwartest.

  • Danke für die Antwort. Ich hatte hier auch immer ein korrektes '-I/usr/local/src/vdr-2.4.6/include' drin.

    Irgendwas war da wohl verwurschtelt. Jetzt läuft es ja. Ich kann's nicht mehr nachvollziehen.

    Wobei mir einfällt: wenn ich den Link auf die includes von /usr/local/include mittels

    ln -s /usr/local/src/VDR/include/vdr/ .

    nicht gesetzt habe, läuft zwar das make korrekt durch, nicht aber das make install. Da werden die fehlenden .h-Dateien reklamiert von markad.


    Christian

  • So, hat jetzt funktioniert ohne den Link auf die includes. Dafür habe ich in Make.config das INCDIR auf mein VDRDIR/includes gesetzt und mittels

    CFLAGS += -I$(INCDIR)

    CXXFLAGS += -I$(INCDIR)

    übergeben. Eigentlich sollte das ja auch ohne funktionieren. Aber so klappt's. Übrigens auch mit scraper2vdr, der hat auch die includes nicht im VDRDIR verwendet.

    Mir fehlen die Kenntnisse, das weiter zu untersuchen, für mich kompiliert es so.


    Christian