[Announce] VDR developer version 1.7.35

  • Hallo zusammen,

    Zitat

    P.P.S.:
    So groß, wie das Geschrei nach der Umstellung war, verstehe ich nicht, dass hier nicht viel mehr Leute versuch Copperhead zu unterstützen. Ich sehe es schon kommen: irgendwann kommt eine 1.7.36, und das große Heulen setzt wieder ein.

    dann will ich dem Aufruf mal Folge leisten... ;D


    Ich verfolge die Diskussion schon seit Weihnachten (also praktisch vom ersten Tag an) und habe seidem versucht, auf Basis eurer Gedanken mit meiner eigenen Installation ein wenig voranzukommen. Grundsätzlich stimme ich Klaus zu, dass das Make-System überschaubar gehalten sein sollte. Deshalb bin ich kein Fan von noch mehr Make-Include-Dateien und im Grunde genommen auch nicht von etlichen Schaltern (LCLBLD etc.).


    Gestern habe ich auf Basis von "vdr-1.7.35-makefilefix6.diff" endlich eine Lösung gefunden, die zumindest bei mir schon ganz ansehnliche Ergebnisse liefert. Ihr findet alle Makefiles meines VDR-Trees als Attachment, damit man sich das Zusammenspiel mal ansehen kann:


    vdr-1.7.35-makefiles.tgz


    Im Prinzip habe ich – bis auf softhddevice und xineliboutput, die mir für den Moment zu kompliziert waren – bei allen Plugins das Makefile von "hello" genommen und passend "aufgebohrt", sprich: die Teile aus dem "alten" Makefile eingefügt, die noch rein mussten. Auf die Details von "clean" und "dist" habe ich allerdings nicht ganz so viel Sorgfalt verwendet, die können also noch unvollständig adaptiert sein.


    Grundsätzlich lässt sich mit diesem Satz der VDR aus seinem Source-Verzeichnis heraus per "make" und "sudo make install" übersetzen und installieren. Plugins mit neuen Makefiles legen bei "make" ihre Ergebnisse in ihrem eigenen Verzeichnisbaum ab, alte Makefiles wie gewohnt in "./locale" und "./PLUGINS/lib". Das folgende "make install" sammelt die Ergebnisse auf, indem es die Dateien neuer Makefiles aus den Plugin-Verzeichnissen in die Installationsverzeichnisse kopiert, während es für alte die Dateien aus "./locale" und "./PLUGINS/lib" kopiert. Dies hat u.a. den angenehmen Nebeneffekt, dass sich z.B. das Binary "markad" (aus dem "command"-Verzeichnis) auch gleich richtig mitinstalliert.


    Abweichend vom bisherigen Prinzip muss man allerdings auch "make install" aufrufen, wenn die Plugins ihre Ergebnisse in "./locale" und "./PLUGINS/lib" ablegen sollen. Aber wäre das ein Problem – außer dass es anders ist als bisher, dafür aber konsequent ohne Fummeleien und problematischen Sonderbehandlungen innerhalb des Makefiles?


    Prinzipiell sollten sich Plugins mit neuem Makefile auch in ihren Verzeichnissen übersetzen und von dort aus installieren lassen, sofern sie "vdr.pc" finden. Leider greifen sie bei mir ins Leere, aber vielleicht hat ja jemand den richtigen Kniff, wie dazu die folgende Zeile geändert werden müsste:


    Code
    PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc))


    Auch wenn ich das nur mit einem Plugin exemplarisch getestet habe, sollte das Ganze auch außerhalb des VDR-Baums funktionieren, sofern man dem Makefile beim Aufruf das VDRDIR explizit mit übergibt, sodass "vdr.pc" gefunden werden kann. Denn mehr wird auch beim "normalen" Build nicht übergeben.


    Der folgende Codeteil wäre im VDR-Makefile dann prinzipiell verzichtbar, zumindest wenn man die implizite Installation innerhalb des VDR-Baums (dessen sichere Erkennung nicht trivial ist) nicht benötigt:


    Code
    if [ "$(LIBDIR)" = "$(CWD)/PLUGINS/lib" ] && [ "$(LOCDIR)" = "$(CWD)/locale" ]; then\
               	target="install";\
               	fi;\


    Mir ist schon klar, dass ich mit solchen Gedanken recht spät dran bin – zumal als "Neuer" im Thread. Aber vielleicht noch nicht zu spät...?


    Danke an dieser Stelle an alle, die sich so rührig um den VDR kümmern. Was täte ich nur ohne dieses geniale Teil? 8)


    Viele Grüße
    Stefan

    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.5 und VDR 2.6.7 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    5 Mal editiert, zuletzt von shofmann ()


  • Ja, so habe ich das hier auch (alles schön in lokalen branches verpackt) - nur habe ich mit ufos Treiber erst passend zu 1.7.34 angefangen... Lass uns das so machen: die "nicht im Source Installierer testen jetzt, und morgen oder übrrmorgen gucke ich mir in Ruhe die media_build Geschichte an. Vieleicht hilft ja auch ufo.


    Ich habe im Zusammenhang mit OS-Headern und MAKEDEP noch ein paar grundsätzliche Fragen - dafür mache ich aber einen eigenen Thread auf.


    Feierabend für heute,
    Gruß, Ingo

  • Hallo,


    habe ich die Antwort auf meine letzte Frage richtig verstanden, das hier zuerst einmal ein neues Makefile erarbeitet wird, mit dem kls danach auch Arbeitet?
    Wenn das so ist dann teste ich gerne mit. Immerhin baue ich meinen VDR auch immer selbst.


    Git es für den VDR Devel ein git Server?


    Gruß

  • Jain und ja.


    Natürlich wird sich kls das letzte Wort vorbehalten, aber Chopperhead hat ganz klar den Auftrag das Make-System wieder in Pandorras hermetisch abgeschlossenes Behältnis zu packen.


    git://projects.vdr-developer.org/vdr.git


    Gruß, Ingo

  • Ich habe jetzt auch mal angefangen den neunen Makefilecode zu testen und habe mit V13 ein Problem beim rpmbuild-Install. Im Spec-File steht:

    Code
    make    DESTDIR=%{buildroot} \
            MANDIR=%{_mandir} \
            BINDIR=%{_sbindir} \
            CONFDIR=%{_sysconfdir}/vdr \
            INCDIR=%{_includedir} \
            VIDEODIR=/var/spool/video \
            PLUGINLIBDIR=%{_libdir}/vdr \
            LOCDIR=%{_datadir}/vdr/locale \
            install

    so das im Eneffekt folgendes ausgeführt wird:


    Wie üblich wird ja beim rpmbuild-Install alles unter BUILDROOT installiert und dort gepackt (alles unter dem User, nicht unter root).
    Was muss ich angeben, damit er es wieder packt?

  • Es gibt kein PLUGINLIBDIR mehr. Das hat Klaus umbenannt und heißt jetzt LIBDIR.


    Wenn du RPMs erstellst ist es grundsätzlich falsch die Plugins in den VDR-Source zu kopieren.


    VDR --> eine RPM
    Plugin 1 --> eine RPM
    Plugin 2 --> eine RPM


    Hingegen die Plugins, die beim VDR beiliegen können mitpaketiert werden. Ist aber nur mit neuem Makefile getestet.
    Theoretisch natürlich auch jedes andere Plugin mit neuem Makefile.


    Edit: Das alte Makefiles noch (bedingt) funktionieren ist reine Freundlichkeit. Wenn stattdessen endlich mal jemand eine Liste aufstellen würde, für welche Plugins noch das neue Makefile fehlt, hätte man schon längst mal reagieren können. ABER nicht in diesem Thread.
    So ein Makefile auf neusten Stand zu bringen ist im Idealfall eine Sache von 5min.

  • Hingegen die Plugins, die beim VDR beiliegen können mitpaketiert werden. Ist aber nur mit neuem Makefile getestet.
    Theoretisch natürlich auch jedes andere Plugin mit neuem Makefile.

    Das ist dann aber inkonsequent: entweder alle oder keins


    Edit: Das alte Makefiles noch (bedingt) funktionieren ist reine Freundlichkeit. Wenn stattdessen endlich mal jemand eine Liste aufstellen würde, für welche Plugins noch das neue Makefile fehlt, hätte man schon längst mal reagieren können.

    Gibts denn überhaupt schon welche? Außer remote-0.5.0 und softhddevice (git) sind mir keine bekannt, habe die letzten Tage hier aber auch nicht alles gelesen. Außerdem halte ich das nicht für eine Freundlichkeit sondern für eine Notwendigkeit - VDR 1.7.34 stand ja praktisch ganz ohne Plugins da (von den mitgelieferten mal abgesehen)

    So ein Makefile auf neusten Stand zu bringen ist im Idealfall eine Sache von 5min.

    Ja, wenn es keine Besonderheiten gibt und man aufs Kompilieren unter älteren Versionen verzichtet, aber ich möchte nicht zwei Versionen (stable und unstable) jedes meiner Plugins pflegen. Im remote-Plugin ist das ganz gut für beide Versionen gemeinsam gelöst (hint). Außerdem wirst Du nicht jeden Plugin-Author dazu bekommen, das upzudaten, da viele Plugins nicht mehr aktiv betreut werden. Ich werde meine Plugins aktualisieren, wenn sich das ganze stabilisiert hat und das rpmbuild wieder funktioniert damit ich sie vorher testen kann.

  • Bis 1.7.89 würde ich die Kompatibilität für alte Makefiles drin lassen.
    Für 2.0 würde ich die rausschmeissen, sonst findet sich nie einer, der die alten Plugins anpasst.


    Und für Plugin Makefiles für alte und neue Version;
    Wenn ich es richtig verstehe, arbeiten die neuen Makefiles nur noch über pkg-config,
    also braucht man nur für die alten VDR ein vdr.pc zu erstellen
    und braucht nirgends in den Makefiles altes berücksichtigen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Das ist dann aber inkonsequent: entweder alle oder keins


    Nein, nur die neuen.

    Ja, wenn es keine Besonderheiten gibt und man aufs Kompilieren unter älteren Versionen verzichtet, aber ich möchte nicht zwei Versionen (stable und unstable) jedes meiner Plugins pflegen. Im remote-Plugin ist das ganz gut für beide Versionen gemeinsam gelöst (hint). Außerdem wirst Du nicht jeden Plugin-Author dazu bekommen, das upzudaten, da viele Plugins nicht mehr aktiv betreut werden. Ich werde meine Plugins aktualisieren, wenn sich das ganze stabilisiert hat und das rpmbuild wieder funktioniert damit ich sie vorher testen kann.


    Schön, dass das bei remote so gelöst ist. Merkt ihr nicht, dass ich hier zwischen zwei Stühlen sitze?? Klaus will keine Rückwärtskompatibilität. Mit VDR 1.7.35 fällt der Support für alle alten Versionen.


    Anbei ein Patch, der hoffentlich auch deine Sonderlocke repariert.

  • Hallo Leute.

    Zitat von »Firefly«


    Gibts denn überhaupt schon welche? Außer remote-0.5.0 und softhddevice (git) sind mir keine bekannt, habe die letzten Tage hier aber auch nicht alles gelesen. Außerdem halte ich das nicht für eine Freundlichkeit sondern für eine Notwendigkeit - VDR 1.7.34 stand ja praktisch ganz ohne Plugins da (von den mitgelieferten mal abgesehen)

    In dem Archiv, das ich meinem obigen Beitrag beigefügt habe, sind eine ganze Reihe angepasster Makefiles drin. Die Plugin-Maintainer können diese nach Prüfung gerne übernehmen.


    Beste Grüße
    Stefan

    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.5 und VDR 2.6.7 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinenigmang, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • also braucht man nur für die alten VDR ein vdr.pc zu erstellen
    und braucht nirgends in den Makefiles altes berücksichtigen.


    Fast. Die neuen Makefiles kopieren aber die *.so und *.mo nicht mehr beim "make all", also wird man beim alten VDR (mit vdr.pc) die *.so und die *.mo nicht an den erwarteten Stellen finden. Da muss also noch das alte VDR Makefile gepatcht werden.



    Man kann bei den Plugins ein Makefile.1.6 und ein Makefile.1.7.x mitliefern. Die Selberbauer erstellen nach dem Entpacken der Pluginquellen einen Link (ln -s Makefile.1.7.x Makefile) und die Paketbauer geben das Makefile in ihren Paketen an. z.B. bei Debian

    Code
    override_dh_auto_build:
    	make -f Makefile.1.7.x all $(MAKE_OPTIONS)


    Ist eine mögliche Lösung.


    cu

  • Für 2.0 würde ich die rausschmeissen, sonst findet sich nie einer, der die alten Plugins anpasst.


    Deal? BTW: Ich habe mich mehrfach bereit erklärt für jedes erdenkliche Plugin einen Patch zu Verfügung zu stellen. Am Anfang des 1.7.34er Threads habe ich auch schon einige Patches gepostet.
    Sammelt diese in einem weiteren Thread und ich kümmere mich persönlich darum. Anfragen habe ich bisher aber interessanterweise nur für das böse Plugin bekommen.

    Da muss also noch das alte VDR Makefile gepatcht werden.


    Nicht unbedingt. Ziel der neuen Makefiles ist es ja eigentlich in einem Plugin-Source make und make install ausführen zu können.


    Es sollte möglich sein ein Plugin nur gegen die VDR-Header zu bauen.



    Im vdr4arch-Repo lässt sich auch schön ablesen, wie bereits jetzt jedes X-beliebige Plugin gegen 1.7.35 gebaut werden kann und das ohne installiertem VDR-Source.


  • Nicht unbedingt. Ziel der neuen Makefiles ist es ja eigentlich in einem Plugin-Source make und make install ausführen zu können.


    Es sollte möglich sein ein Plugin nur gegen die VDR-Header zu bauen.


    Stimmt, das geht. Man braucht nur die passende /usr/lib/pkgconfig/vdr.pc für den 1.6er VDR und die neuen Pluginmakefiles bauen. Hatte ich bei mir auch schon ausprobiert.



    Nur für die "VDR Methode" (also eigentlich die offizielle) brauchts nen altes Makefile oder nen gepatchtes VDR Makefile.


    cu

  • Habe 14 noch nicht getestet, aber 13 ist - was soll ich sagen? - perfekt! (Für mich!) Willst Du evtl. noch den debuggin-Block (ist ja eine Entwicklerversion) mit einbauen?

    Code
    #remove Comment to get Debug information
    #GDB_DEBUG = 1
    ifdef GDB_DEBUG
    CFLAGS += -g -ggdb -O0
    CXXFLAGS += -ggdb -O0
    LDFLAGS += -g -ggdb -O0
    endif


    Ich brauche auch immer noch das REMOTE = LIRC, sollte das evtl. kommentiert mit rein?


    Insgesamt finde ich das seht sehr rund für alle Selberbauer mit und ohne install.


    Zu DVBDIR: in dem anderen Thread gibts einen Vorschlag von ufo und einen von mir - bei beiden müssen die neuen Makefiles nocheinmal angefasst werden. Vieleicht gibts aber ja auch noche eine andere Lösung, die ich gerade nicht sehe. Sobald Du mir sagst welche Lösung Du willst, kann ich das gerne einbauen.


    Gruß, Ingo


  • Ich zitiere das mal hier in diesen Thread rein.


    Mir gefällt der Gedanke, dass statt "--variable=cxxflags" und "--variable=cflags" nur noch "--cflags" bzw. "--cflags-I-only" genutzt wird.



    Wenn du das ordentlich hinbekommst, sehe ich da keine Probleme.

  • Eine Kleinigkeit ist mir noch aufgefallen.
    Im Makefile sollte es

    Code
    install: install-pc install-bin install-dirs install-conf install-doc install-plugins install-i18n install-includes

    heißen und nicht

    Code
    install: install-bin install-dirs install-conf install-doc install-plugins install-i18n install-includes install-pc

    .


    Ansonsten wird beim install eine zuvor im System installierte vdr.pc genutzt, was zu vielen unschönen Effekten führen kann.

    Dr. Brömme grübelt:
    Acht Wochen, nachdem man ihm beim Kölner Straßenkarneval einen Gratiskorn angeboten hatte,
    dämmert ihm langsam, dass er einem hinterlistigen Alaafisten aufgesessen ist.

  • Die Plugin-Makefiles sollte mit dem DVBDIR nichts zu tun haben müssen. Wenn das gesetzt ist, dann bitte einfach in die CFLAGS integrieren und gut ist.


    Ja, mir gefiehl die Ide von ufo auch, weil sie minimalinvasiv ist, aber dann mußt Du trotzdem die PLUGIN-Makefiles anfassen... guck' Dir mal die beiden MAKEDEP-Zeilen an. Wenn Du die Makefiles der Plugins nicht anfassen willst, dann mußt Du es CXX reinpressen - hässlich, hässlich, hässlich.


    Gruß, Ingo

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!