[VDR*ELEC] - LibreELEC/CoreELEC mit VDR Client

  • hier war es ebenfalls notwendig die neue Ordnerstruktur aus dem aktuellen Plugin/config an die entsprechende Stelle nach .config/vdropt/plugins... zu kopieren.

    Also brauche ich eine generelle Lösung für das Problem. Aber wie unterscheiden zwischen Konfigurationen, die durch den Benutzer geändert werden können und denen, die fix sind? Und wie bestimmen, welche Dateien in welchem Plugin aktualisiert werden müssen?

    Die ganzen Pluginkonfigurationen können nicht nach /usr/local gelegt werden, da diese dann read-only sind es auch keine Möglichkeit gibt, da irgendwas zu machen. Vielleicht könnte mit overlayfs da etwas versuchen, aber dann besteht das Problem mit den Bestandsinstallationen und einem evt. Migrationsscript.


    Ich muss da mein Testsystem wieder rausholen und Experimente durchführen...

  • Zabrimus: Würde es nicht einfach reichen, bei jedem Update vdropt-sample zu aktualisieren, wie es ./install.sh -i macht und dann im Prinzip ein ./install.sh -C zu machen?

  • Würde es nicht einfach reichen, bei jedem Update vdropt-sample zu aktualisieren, wie es ./install.sh -i macht und dann im Prinzip ein ./install.sh -C zu machen?

    Das funktioniert leider nicht, da install.sh -C die bestehenden Konfigurationen eben nicht überschreibt, sondern im Prinzip nur neue Dateien (z.B. neue Plugins) rüberkopiert. Die Grundidee war genau, den evt. schon geänderten Bestand nicht zu überschreiben, damit durch das Update eigene Änderungen nicht verloren gehen.

    Vielleicht wäre eine Whitelist mit Dateien/Verzeichnissen sinnvoll, die auf jeden Fall kopiert werden? Mit einem entsprechendes Update-Script, daß immer aufgerufen wird.

    Schwierig ist es, alle Updates im Auge zu behalten und zu entscheiden, ob irgendwas kopiert werden muss. Das ist mir z.B. bei live und eben epg2vdr/scraper2vdr komplett durch die Lappen gegangen.


    Edit:

    Aber vielleicht ist genau diese Stelle (install.sh -C) gut geeignet, bestimmte Dateien/Verzeichnisse auf jeden Fall zu kopieren. Dann müsste man nur noch irgendwo erwähnen, daß das Script nach einem Update aufgerufen werden sollte, oder es gibt irgendwie/irgendwo ein Flag, daß den Aufruf einmal nach einem Update erledigt.

  • Edit:

    Aber vielleicht ist genau diese Stelle (install.sh -C) gut geeignet, bestimmte Dateien/Verzeichnisse auf jeden Fall zu kopieren. Dann müsste man nur noch irgendwo erwähnen, daß das Script nach einem Update aufgerufen werden sollte, oder es gibt irgendwie/irgendwo ein Flag, daß den Aufruf einmal nach einem Update erledigt.

    Für die Plugin-"Beigaben" kann man das in jedem Fall machen. Bei den Conf-Dateien, die der User geändert hat und das Update grundlegende Änderungen oder Ergänzungen einführt, so dass diese Dateien angepasst werden müssen, muss wohl immer selbst nachgearbeitet werden.


    Ich sehe die Problematik ähnlich wie bei einenm Debian-Package-Update, wo man am Ende auch gefragt wird, ob die aktuelle oder die Maintainerdatei benutzt werden soll, oder man sich schließlich die Änderungen anzeigen lassen kann bzw. manuellen Merge durchführen kann.


    Evtl. könnte man sich ins install.sh eine Funktion einbauen, die prüft, ob sich neue Dateien aus der zip von der Version aus vdropt-sample unterscheiden und ob diese auch mit einer Änderung durch den Benutzer in vdropt liegt.


    Dann könnte man zumindest dem Benutzer eine Rückmeldung geben, dass hier manuell nachgearbeitet werden müsste und das Kopieren der Datei überspringen. Das wäre für den Anfang m.E. ok, da die Fälle überschaubar sein werden.

  • um auf die epg.dat zurück zu kommen, die gehört zur Auslieferung damit auch zwingend in das Paket der Distribution, immer passend zur Version des Plugins. Siehe als Beispiel yavdr

  • hi,

    irgendwas geht mit dem heutigen git stand und epg2vdr schief:

    loading plugin: /usr/local//lib/vdr/libvdr-epg2vdr.so.2.6.3

    vdr: /usr/local//lib/vdr/libvdr-epg2vdr.so.2.6.3: cannot open shared object file: No such file or directory


    tatsächlich finde ich die lib auch nicht in dem Verzeichnis..


    Das sollte doch eigentlich beim erstellen des .tar schon richtig reingelegt werden?


    Danke im Voraus für deine unermüdliche Unterstützung!

  • blöde Frage, welches tar?
    Wenn du es selbst compilierst das git clonen dann make und make install, dann ist die Lib an Ort und Stelle (vorausgesetzt die vdr.pc passt).

  • irgendwas geht mit dem heutigen git stand und epg2vdr schief:

    loading plugin: /usr/local//lib/vdr/libvdr-epg2vdr.so.2.6.3

    vdr: /usr/local//lib/vdr/libvdr-epg2vdr.so.2.6.3: cannot open shared object file: No such file or directory

    Ich musste das Makefile Patch für die neue Version von epg2vdr neu erstellen. Dabei ist mir eine Änderung durchgegangen und das Installatationverzeichnis für die shared Library war Unsinn.

    Das ist/sollte im Git wieder gefixed sein.


    Danke für die Meldung.

  • blöde Frage, welches tar?
    Wenn du es selbst compilierst das git clonen dann make und make install, dann ist die Lib an Ort und Stelle (vorausgesetzt die vdr.pc passt).

    Er meint das Update-Tar, das erstellt wird, wenn man mein Repo (VDRSternELEC, CoreELEC + VDR) neu kompiliert. Dieses wird verwendet, um die bestehende Installation zu aktualisieren. In dem tar befindet sich die vollständige Installation (System + Kodi + VDR + Plugins + Anpassungen).

  • Ich denke, das ist eine gute Gelegenheit mal die typischen Probleme aufzulisten, die ich bisher mit den Makefiles hatte. Dies ist keine Liste von Fehlern, sondern resultiert einfach daraus, daß im VDR*ELEC ein cross-compile gemacht wird und der Cross Compiler und die Tools in CoreELEC sich z.T. leicht anders verhalten, als auf dem Host.


    CE verwendet z.B. ein gepatches install und pkg-config. Damit sind die Pfade/Parameter anders, als man vielleicht erwarten würde. Das Buildverzeichnis ist natürlich beim cross-compile ein anderes, die Header und Libraries kommen auch woanders her.

    Code
    CC = g++

    Verwendet den Host Compiler und nicht den Cross Compiler.


    Anweisungen wie

    Code
     $(shell python3-config --includes)

    rufen das python3-config auf dem Host auf. Damit werden die Header vom Host verwendet und der Build schlägt fehl mit der interessanten Fehlermeldung: Cross compile badness... Header vom Host werden geladen.


    Austauschen in den Makefiles der Plugins muss ich immer

    Code
    -LIBDIR   = $(call PKGCFG,libdir)
    +LIBDIR   ?= $(call PKGCFG,libdir)

    Da kommt das pkg-config von CoreELEC zum tragen und das liefert Pfade, die (für mich) nicht brauchbar sind. Im Build wird das LIBDIR explizit an das make übergeben.


    Die Installation muss im makefile auch immer geändert werden

    Code
    -   install -D -m644 $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
    +  install -D -m644 $^ $(LIBDIR)/$^.$(APIVERSION)

    Und wieder macht das install von CoreELEC etwas spannendes. Da liegt übrigens das Problem, was gerade erst gemeldet wurde. Das DESTDIR wird von install geändert auf etwas unbrauchbares wie /home/user/..../VDRSternELEC/... Und dieses Installationsverzeichnis funktioniert seltsamerweise nicht richtig. An anderen Stellen im Makefile an denen DESTDIR verwendet wird, funktioniert es übrigens einwandfrei.


    Ich denke, das müssten so die typischen Probleme sein: Vom Host der compiler, die Header, die Libs. Und die Versionen von pkg-config und install.

    Verschiedene (wenige) Pakete haben Spezialprobleme, wie der Versuch, die erzeugten arm Binaries auf dem Host aufzurufen zu wollen. Hier besteht die Lösung dann darin, die Hilfstools speziell für den Host zu kompilieren und zu verwenden.

  • Das Thema habe ich schon länger im Kopf. Es muss doch einfacher gehen, als jedesmal das Makefile zu patchen. Das macht LE/CE bei den anderen packages ja auch nicht... Auch bei den mitgelieferten vdr-plugins nicht.

    Ich könnts mir beizeiten mal anschauen, wenn du willst... Am Ende würde es vieles entschlacken und einfacher machen.


    Gruß

    Andreas

  • Ich könnts mir beizeiten mal anschauen, wenn du willst... Am Ende würde es vieles entschlacken und einfacher machen.

    Klar. Wenn du eine Lösung dafür findest würde es die packages erheblich einfacher gestalten.

    Ich hatte mich schon gefragt, warum ich z.B. das DESTDIR bei der Installation der shared library rausgenommen hatte und ob das überhaupt sinnvoll war und ist.

    Die Frage stand allerdings nur bis heute morgen im Raum, bis ich den Fehlerbericht gelesen hatte :D

  • Hi, wie ist die Installation auf x86-Systemen gedacht? Das Image auf einen USB-Stick brennen und von diesem betreiben? Oder geht es auch klassisch von einer Festplatte oder einem System mit Betriebssystem-Platte und Medienplatte z. B.?

    MLD 5.5 mit VDR 2.6.4 & Kodi 19.4 - Gigabyte GA-F2A88XM-HD3 - AMD A8-7600 - 4 Gb RAM - Ausgabe via MSI N220GT-MD1GZ mit softhddevice & vdpau - 19.2E & 28.2E Empfang via Linux4Media L4M-Twin S2 ver 6.5 - Terratec Aureon 5.1 Fun TTP8 - Crucial m4 CT064M4SSD2 - Seagate Exos 7E8 in Scythe Quiet Drive SQD-1000 - Medion X10 RF Remote Control 20016398

  • Keine Ahnung :)

    So, wie es mit LibreELEC läuft, läufts auch hier. Google wird dir helfen... Es hat sich imo noch niemand getraut, x86 zu probieren.

  • Ok, danke. Ich werde mich dann mal tiefer in LibreELEC einlesen. Jahre zuvor hatte ich es kurz mal auf einem Wetek installiert, aber das System wurde dann einfach so benutzt, so daß ich es unter der Haube nie kennen gelernt habe.

    MLD 5.5 mit VDR 2.6.4 & Kodi 19.4 - Gigabyte GA-F2A88XM-HD3 - AMD A8-7600 - 4 Gb RAM - Ausgabe via MSI N220GT-MD1GZ mit softhddevice & vdpau - 19.2E & 28.2E Empfang via Linux4Media L4M-Twin S2 ver 6.5 - Terratec Aureon 5.1 Fun TTP8 - Crucial m4 CT064M4SSD2 - Seagate Exos 7E8 in Scythe Quiet Drive SQD-1000 - Medion X10 RF Remote Control 20016398

  • So, ich habe es jetzt auf einem x86-64 System getestet. Der LibreELEC-Teil funktionierte soweit getestet einwandfrei inkl. Installation von anderem Skin z. B.. Was jedoch nicht funktionierte war jegliche Installation von VDR-relevanten Paketen. Die Meldung jeweils ein simples "Installation fehlgeschlagen". Auffällig dabei, daß in den Listen hinter den VDR-relevanten Paketen schon keine Paketgrößen angezeigt werden im Gegensatz zu den LibreELEC-eigenen Paketen. War/ist jetzt einfach die VDR*ELEC-Paketquelle offline oder woran könnte es liegen?

    MLD 5.5 mit VDR 2.6.4 & Kodi 19.4 - Gigabyte GA-F2A88XM-HD3 - AMD A8-7600 - 4 Gb RAM - Ausgabe via MSI N220GT-MD1GZ mit softhddevice & vdpau - 19.2E & 28.2E Empfang via Linux4Media L4M-Twin S2 ver 6.5 - Terratec Aureon 5.1 Fun TTP8 - Crucial m4 CT064M4SSD2 - Seagate Exos 7E8 in Scythe Quiet Drive SQD-1000 - Medion X10 RF Remote Control 20016398

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!