vdr, plugins und git (submodules)

  • Hi *,

    nachdem ich mich über die Feiertage endlich mal dem Thema git ein wenig weiter nähern konnte, hatte ich direkt überlegt, auch bzgl. vdr und seinen plugins alles mit git zu machen.
    Dabei sind natürlich direkt Fragen aufgekommen.

    Ich hatte so die Idee, das vdr Repo als sog. superproject zu clonen und dann die plugins als submodules hinzuzufügen.
    Das klappt zwar, wirft aber einige Probleme auf, z.B. wenn man ein plugin nicht mehr haben will, weil das Entfernen eines submodules - naja sagen wir - eine grenzwertige Aktion ist.

    Daher die folgenden Fragen:

    • Nutzt jemand von euch submodules für sowas? Und wenn ja, wie?
    • Und wenn nein, habt ihr euch bewusst dagegen entschieden? Wenn ja, warum?
    • Wie macht ihr das sonst, um die plugins in euer git Repo zu holen? In eigene Verzeichnisse parallel zum vdr holen und dann ins PLUGINS/src Verzeichnis linken z.B.?

    Danke und noch schöne Feiertage.
    Michael.

    VDR zwei drei
    • VDR 01 (Server): 2.7.4/6 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): 2.6.9 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - mpv - osd2web - osdteletext - skinnopacity - softhddevice - streamdev-client - svdrpservice]
    • Wie macht ihr das sonst, um die plugins in euer git Repo zu holen? In eigene Verzeichnisse parallel zum vdr holen und dann ins PLUGINS/src Verzeichnis linken z.B.?

    Genau so mache ich das...

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---

    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.2 mit streamdev, satip/vtuner-ng, vdrmanager, live, epgsearch, markad ---

    (Client 1+2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---

    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Dito. Der VDR und die Plugins liegen alle in einem Verzeichnis, sodass jede einzelne Komponente für sich gebaut werden kann. Der Bequemlichkeit halber habe ich dort noch ein Makefile hinterlegt, dass den VDR und alle vorhandenen Plugins in einem Rutsch baut bzw. installiert.

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.5 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Im Prinzip ist es auch durchaus machbar ein Submodule wieder rauszuhauen. Hatte da bisher keine Probleme mit. Zum Entwickeln ist das durchaus eine praktische Lösung das eigene Plugin-Repo (oder die Repos) als Submodul direkt in den VDR-Tree zu hängen.

  • Im Prinzip ist es auch durchaus machbar ein Submodule wieder rauszuhauen. Hatte da bisher keine Probleme mit. Zum Entwickeln ist das durchaus eine praktische Lösung das eigene Plugin-Repo (oder die Repos) als Submodul direkt in den VDR-Tree zu hängen.

    Da habe ich es nicht geschafft, branches zu erstellen.

    Meine Idee war ein lokales Repo auf einem lokalen Server mit dem vdr und allen plugins und davon dann branches für jeden eigentlichen vdr, die bei mir ja alle verschiedene plugins nutzen. Dann hätte ich auf einem vdr host nur den branch mit seinem Namen gecloned.
    Leider habe ich es nicht geschafft, submodule zu branchen - und wenn ich die Doku recht verstanden habe, geht das auch nicht.

    VDR zwei drei
    • VDR 01 (Server): 2.7.4/6 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): 2.6.9 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - mpv - osd2web - osdteletext - skinnopacity - softhddevice - streamdev-client - svdrpservice]
    • Wie macht ihr das sonst, um die plugins in euer git Repo zu holen? In eigene Verzeichnisse parallel zum vdr holen und dann ins PLUGINS/src Verzeichnis linken z.B.?

    Also ich hole mir die Plugins aus dem git und kopiere die derzeit noch um. Aber nicht ins PLUGINS/src, sondern ich baue dann debian-Pakete. Dafür liegt in jedem Plugin noch ein debian-Verzeichnis mit drin, das ich mir irgendwoher kopiert habe.
    Eventuell könnte ich mir das umkopieren sparen und einfach direkt mit dem git clone arbeiten und das debian-Verzeichnis lokal ignorieren...

  • Hi *,

    danke für Eure Antworten.
    Ich habe das jetzt auch mal mit getrennten repos für vdr und jedes plugin versucht - klappt bisher gut.
    Und weil ich (sinnig oder nicht) dazu neige, aus meinen Erkenntnissen immer direkt mördermäßige Scripten zu schnitzen, habe ich das hier auch getan. Ich hänge das Teil mal an - vielleicht besteht ja Interesse. Beschimpfungen, Fragen, Wünsche und Anregungen nehme ich gerne an ;)

    Das Script läuft sowohl für einen git server im lokalen Netz als auch für dahinter hängende clients. Es existiert daher einmal als "vdrgitprep" (server) und einmal als Link (oder Kopie) mit dem Namen "vdrgitbranch" (client).
    Für jeden client wird ein config file mit dem Namen des client definiert, das pro plugin für diesen client eine Zeile enthält (<plugin name>=<git url>). Die config files liegen unter <basedir>/vdr/PLUGINS/config. Irgendwann soll es noch <plugin name_post> Einträge in der config geben, über die nach dem Holen des repo ein Script definiert werden kann, das irgendwelche Nacharbeiten macht.
    Im initialen Lauf holt das Script am server den vdr (nach <basedir>/vdr/vdr) und die per config file definierten plugins (nach <basedir>/vdr/PLUGINS/src) aus ihren jeweiligen repos. Liegen für den vdr patches in <basedir>/vdr/patches vor, wird versucht, diese im passenden level per git patch einzufügen. Darüber hinaus werden alle Standardplugins bis auf skincurses und status gelöscht (das kann man aber auch gerne optional machen). Das Script verlinkt dann die plugin repo Verzeichnisse in das <basedir>/vdr/vdr/PLUGINS/src Verzeichnis.
    Danach wird für jeden client ein branch angelegt, in dem alle o.a. Links gelöscht werden, deren zugehörige plugins nicht für diesen client konfiguriert wurden.
    Ein client kann dann genau diesen branch samt aller verlinkten plugins abholen. Die Verzeichnisstruktur am client sieht genauso aus wie am server.
    Der make kann dann in <basedir>/vdr/vdr gestartet werden.
    In weiteren Läufen des Scripts sowohl am server wie an den clients wird nur noch geprüft, ob es neuere Versionen des vdr oder irgendwelcher plugins gibt und diese dann ggf. gemerged. Das Script kann also beliebig oft laufen, ohne weitere Aktionen manuell machen zu müssen.
    Wird ein plugin für einen oder alle clients aus den jeweiligen configs entfernt, werden auch die entsprechenden links aus allen client branches und/oder dem master entfernt. Die client repo Verzeichnisse bleiben derzeit am server und auch an den clients bestehen.

    ACHTUNG: Ich habe bisher nicht getestet, wie sich das Script verhält, wenn man dazwischen manuell etwas an den repos macht. Generell ist das eigentlich auch nicht für Entwickler gedacht, sondern für Nasen wie mich, die mit nur minimalem Aufwand immer die neuesten Versionen holen und dann übersetzen wollen.

    Ciao.
    Michael.

    Files

    VDR zwei drei
    • VDR 01 (Server): 2.7.4/6 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): 2.6.9 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - mpv - osd2web - osdteletext - skinnopacity - softhddevice - streamdev-client - svdrpservice]

    Edited 2 times, last by nobanzai (December 27, 2024 at 8:08 PM).

Participate now!

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