Plugins mit altem Makefile - Sammlung

  • Ich habe mich aus allem komplett zurückgezogen. Ich gebe zwar noch Tipps was die Makefiles angeht, aber aktiv mache ich aktuell erstmal GAR NICHTS MEHR.


    Ich denke du solltest das nicht so ernst nehmen :prost1 . Gerade bei großen Umbauten gibt es immer Leute, die sich gegen Neues sperren, speziell wenn man den Nutzen nicht direkt sieht, bzw. der Nutzen eher bei einer anderen Personengruppe liegt.


    Das einzige Problem sehe ich eigentlich darin, das sich die Leute mittlerweile zwangsweise daran gewöhnt haben, das es für den VDR defacto keine verwendbare Stable-Version mehr gibt und sich damit die Ansprüche an die Entwicklerversionen mittlerweile in die Nähe einer Stable-Version verschoben haben. Deswegen wäre es eigentlich schön, wenn sich Klaus mal öfter zu einer neuen Stable-Version durchringen könnte, speziell wenn er wieder ein schönes "Killer-Feature" wie z.B. Unterstützung von DVB-S2 eingebaut hat. Nach dem erscheinen einer Stable-Version ist die Akzeptanz größerer und druchgreifender Änderungen einfach größer und auch für die Plugin-Entwickler ist sowas einfacher zu handhaben, da der Druck zu einer sofortigen Anpassung nicht ganz so hoch ist.
    :lovevdr

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Ich denke du solltest das nicht so ernst nehmen


    Ja, ich habe jetzt auch wieder etwas weiter gemacht: https://github.com/CReimer?tab=repositories Ja, ich weiß vdr-developer wäre besser, aber da bekomme ich nicht mal eben schnell Push-Rechte.

    Deswegen wäre es eigentlich schön, wenn sich Klaus mal öfter zu einer neuen Stable-Version durchringen könnte


    Das habe ich auch schon öfter gesagt. Hoffentlich wird es nach Version 2.0 besser.

  • Ja, ich habe jetzt auch wieder etwas weiter gemacht: https://github.com/CReimer?tab=repositories


    Cool...Danke! :tup

  • Hallo,
    hier mein Makefile-patch für streamdev für vdr 1.7.36
    streamdev ist aktuell aus dem git.
    Ich kann damit Pakete außerhalb des vdr bauen. Was anderes habe ich nicht getestet.
    Bitte melden, wenn was nicht stimmt. Wie gesagt, kenne ich mich mit Makefiles nicht so gut aus.
    streamdev-makefile-vdr-1.7.36.diff

    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

  • Hallo,
    hier mein Makefile-patch für streamdev für vdr 1.7.36
    streamdev ist aktuell aus dem git.
    Ich kann damit Pakete außerhalb des vdr bauen. Was anderes habe ich nicht getestet.
    Bitte melden, wenn was nicht stimmt. Wie gesagt, kenne ich mich mit Makefiles nicht so gut aus.


    Ist doch schön, dass manche Arbeit mehrfach erledigt wird... :D


    Dummerweise hatte ich damals das StreamDev-Plugin mit seinen insgesamt sechs Makefiles beim Hochladen meiner Sammlung übersehen. Ich habe das gerade nachgeholt. Ihr findet das Makefile hier bei den anderen. Sorry für die verspätete Lieferung...


    Wegen der Frage der produktiven Nutzung: Ich nutze den VDR seit 1.7.35 mit den von mir adaptierten Makefiles schon seit Jahresanfang als Produktivsystem völlig ohne Probleme. Mit Erscheinen von 1.7.36 habe ich die Makefiles bezüglich des Handlings von DESTDIR nochmals angepasst, und somit sollten sie mit den Konventionen für die aktuelle Version eigentlich übereinstimmen.


    Inzwischen habe ich das Mlist-Plugin auch mal außerhalb des VDR-Baums gebaut. Bis auf das Problem, dass INCLUDES bzgl. der VDR-Include-Files nicht automatisch gesetzt wird und beim make auf der Kommandozeile mit angegeben werden muss (die VDR-Include-Files stehen bei mir nicht unter /usr/include bzw. /usr/local/include), hat Bauen und Installieren "von außen" auch wunderbar geklappt. Das ist ausgesprochen praktisch, wenn man beim "Basteln" wirklich nur mal ein einzelnes Plugin neu übersetzen möchte...


    Copperhead und kls: Müsste das VDR-Include-Verzeichnis eventuell noch in vdr.pc mit aufgenommen und INCLUDES in den Makefiles von dort gefüllt werden?


    Ciao,
    Stefan

    Dateien

    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)

    2 Mal editiert, zuletzt von shofmann ()


  • Ist doch schön, dass manche Arbeit mehrfach erledigt wird... :D


    Dummerweise hatte ich damals das StreamDev-Plugin mit seinen insgesamt sechs Makefiles beim Hochladen meiner Sammlung übersehen. Ich habe das gerade nachgeholt. Ihr findet das Makefile hier bei den anderen. Sorry für die verspätete Lieferung...


    Vielen Dank erst mal für die Arbeit an fremden Makefiles. Leider habe ich hier ein Problem. Irgendwas geht da mit den Includes schief.




    Ich baue gegen media_build_experimental und habe das in Make.config folgendermaßen eingetragen.


    Code
    DVBDIR = /usr/src/media_build_experimental/linux/include/uapi


    Das scheint auch irgendwie noch ein generelles Problem zu sein. Beim anderen Plugins (z.B. femon) habe ich die Meldung mit der DVB API Version auch, aber da bricht er nicht ab.


    Gruß,
    Christian

    VDR1: Debian 6.0.10, VDR 2.0.6, Kernel 3.2.36+mb_experimental, Zotac E350-ITX + TT6400 + DD DuoFlex-CTv2 Octopus mini PCIe + Noxon DAB Stick
    VDR2: Debian 6.0.10, VDR 2.0.6, Kernel 3.7.1+mb_experimental,, Zotac IONITX-S-E + TT6400 + DD DuoFlex-CTv2 mini PCIe

  • Hallo,
    ich habe noch eine kurze Frage.
    Wohin sollte ein Plugin-Paket jetzt die Datei lib*-*.so.$(APIVERSION) ablegen? Bzw. wie sollte LIBDIR gesetzt sein?
    In /usr/lib/vdr oder /usr/lib/vdr/plugins oder wo sonst?

    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

  • Hallo,
    ich habe noch eine kurze Frage.
    Wohin sollte ein Plugin-Paket jetzt die Datei lib*-*.so.$(APIVERSION) ablegen? Bzw. wie sollte LIBDIR gesetzt sein?
    In /usr/lib/vdr oder /usr/lib/vdr/plugins oder wo sonst?


    Enpacke mal den 1.7.36er VDR und generiere per "./newplugin test" ein Makefile, diese kannst du als Vorlage nutzen. Und da ist dieser Teil auch schon komplett fertig und korrekt drin.


    Aber um die Frage zu beantworten, das *.so landet in
    ---
    $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
    ---
    $(DESTDIR) wird dabei evtl. vom Paketbauwerkzeug gesetzt (kann also auch leer sein)
    $(LIBDIR) ist libdir aus der vdr.pc, und was da drin steht kann man in der Make.config des VDR konfigurieren. Unter Debian ist es üblicherweise /usr/lib/vdr


    cu

  • Genau so habe ich es ja auch gemacht.
    Ich meine es aber auch schon mal unter /usr/lib/vdr/plugins gesehen zu haben.
    Wollte nur kompatibel zum "Standard" sein.

    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

  • Hi,


    so, nach laaaanger Zeit habe ich mir meinen VDR auch mal wieder selbst kompilliert und muss sagen, dass die alten Plugins die ich so schon seit Jahren nutze, entweder gar nicht (bzw. nur über Umwege) aus den Quellen erhältlich sind (z. B. weatherng) - das vdr-wiki enthält nur tote Links -, bzw. gar nicht mehr bauen lassen wg. gettext, "ChannelSwitch hat einen vierten Bool-Parameter bekommen", etc. pp..
    Mein Vorschlag wäre für die Version 2.0 im wiki nur die Plugins aufzuzählen, die sich damit auch tatsächlich bauen lassen und alle anderen in einen Bereich 'obsolet' zu verschieben, um Verwirrungen zu vermeiden. Was dann fehlt, kann ja dann für den 2.0'er mit neuer Version flott gemacht werden ;) . Wahrscheinlich existiert für jedes meiner Plugin-Probleme irgendwo ein oder mehrere Patches um sie zum Laufen zu bekommen, aber in den unendlichen Weiten des VDR-Portals ist es eine Sisyphusarbeit die alle zu finden. Das Makefile-Problem ist für mich im Moment die kleinste Sorge...


    Grüße,
    j.

    HW VDR: Thermaltake DH102 | Gigabyte GA-M720-US3 | AMD 270u | 8GB RAM | 120GB SSD System + 3TB HDD Daten | L4M Cine CT V6 + Flex S2 | Zotac GT630 | Futaba MDM166A | Atric IR-Einschalter Rev. 5 | NEC P553 | SEDU + 96 PIX | Pioneer SC-LX85 | Jamo S606
    SW VDR: Debian Wheezy | Kernel 3.2.0-4-amd64 | Mate 1.6 | VDR 2.2.0 | nVidia 331.79 | LIRC 0.9.0 | media_build_experimental | Plugins: permashift 1.0.3, softhddevice 0.6.1rc1-git, menuorg 0.5.1, skinnopacity 0.1.3, tvscraper 0.2.0-git, seduatmo 0.0.2-git, mplayer 0.10.2-hg, fritzbox 1.5.3, vdradmin-am 3.6.9, femon 1.7.19, targavfd 0.3.0, span 0.0.7, dvd 0.3.6-cvs, graphtftng 0.4.10-git, extrecmenu 1.2.4-git, epgsearch 1.0.1-git, block 0.1.2-git, cpumon 0.0.6a, ac3mode 0.1, HD-- 1.0.0-hg, u. v. a. ...

    Einmal editiert, zuletzt von <kein> ()

  • Genau so habe ich es ja auch gemacht.
    Ich meine es aber auch schon mal unter /usr/lib/vdr/plugins gesehen zu haben.
    Wollte nur kompatibel zum "Standard" sein.


    Unter /usr/lib/vdr/plugins liegt es dann, wenn das LIBDIR auf /usr/lib/vdr/plugins gesetzt wird. Beispiel:


    https://github.com/CReimer/vdr…b/master/vdr/PKGBUILD#L39


    Wenn man es so macht, dann hat das den kleinen Vorteil, dass man, ohne mit den Plugins ins Gehege zu kommen, noch weiteres unter /usr/lib/vdr ablegen kann. Im konkreten Fall der Shutdown-Kram unter /usr/lib/vdr/bin.


    Wer den korrekten Pfad auf dem jeweiligen System wissen will, sollte ihn via pkg-config abrufen.

  • Ich verstehe nicht was du meinst? /usr/include ist standardmäßig included.


    Ich bin mir nicht sicher, ob ich das alles wirklich schon bis ins letzte Detail verstanden habe. Aber nehmen wir doch einmal mein MList-Makefile als Beispiel, das seinerseits auf dem Makefile des Demo-Plugins Hello basiert. Ganz oben holt sich das Makefile ein paar Verzeichnisse aus vdr.pc:


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


    Weiter unter können dann gegebenenfalls zusätzliche Include-Verzeichnisse ergänzt werden:


    Code
    ### Includes and Defines (add further entries here):
    
    
    INCLUDES +=


    Wo aber bekommt das Makefile die Referenz auf die VDR-Include-Dateien her, wenn man es von außerhalb des VDR-Baums (also nicht über make im VDR-Verzeichnis) kompilieren und installieren möchte? Dieser Use Case ist ja genau das, was die Package Builder explizit wollen und was die ganze Makefile-Umstellung ja erst in Gang gesetzt hat...


    Normalerweise speist das VDR-Makefile das VDR-Include-Verzeichnis als Environment-Variable in das untergeordnete Makefile ein, sodass es dort schon von Anfang an in INCLUDES enthalten ist. Das Makefile selbst kümmert sich deshalb bislang nicht darum. Ich frage mich also, wie das Makefile diese Informationen erhält, wenn es separat aufgerufen wird und nicht durch das VDR-Makefile. Derzeit muss man den Verweis auf das VDR-Include-Verzeichnis vorab per Environment-Variable übergeben, denn als Parameter des Make-Aufrufs müsste man sonst über die Direktive override die Modifikation der so übergebenen INCLUDES zulassen, was die Makefiles aber generell nicht tun.


    Deshalb meine Frage, ob das VDR-Inlcude-Verzeichnis nicht ebenfalls in vdr.,pc hinterlegt und von den Makefiles von dort ausgelesen werden müsste. Dies wäre umso wichtiger, wenn es sich eben nicht – wie ich geschrieben hatte – unter /usr/include bzw. /usr/local/include liegt. Was bei mir der Fall ist, denn damit ich schnell zwischen VDR-Verisonen hin- und herschalten kann, liegt alles, was eine VDR-Instanz betrifft, vollständig innerhalb eines Verzeichnisbaums unter /usr/local – auch deren Include-Files.


    Ist meine Frage damit verständlich geworden?
    Und haben wir diesbezüglich noch Handlungsbedarf?


    Danke & 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)

  • Jetzt bin ich aber auch verwirrt, das include Directory war doch mal in den cflags/cxxflags drin?


    cu

  • Ich baue gegen media_build_experimental und habe das in Make.config folgendermaßen eingetragen.


    Code
    DVBDIR = /usr/src/media_build_experimental/linux/include/uapi


    Das scheint auch irgendwie noch ein generelles Problem zu sein. Beim anderen Plugins (z.B. femon) habe ich die Meldung mit der DVB API Version auch, aber da bricht er nicht ab.


    Hi Christian,


    also ich habe DVBDIR überhaupt nicht gesetzt, bei mir liegt es aber unter /usr/local/src/dvb mit symlink auf media_build_experimental, wie in der Anleitung im VDR-Wiki beschrieben. Und ich habe auch /usr/local/src/dvb/linux/include/linux/compiler.h auf /usr/src/linux-headers-$(uname -r)/include/linux/compiler.h verlinkt. Damit übersetzt StreamDev mit dem geposteten Makefile ohne Murren.


    Ohne da wirklich Genaues zu wissen, würde ich vielleicht mal versuchen, DVBDIR wegzulassen oder nur auf /usr/src/media_build_experimental zu setzen. Danach unbedingt alle .dependencies-Dateien im VDR-Baum entfernen (die werden beim nächsten Mal dann neu aufgebaut):


    Code
    find . -name ".dependencies" | xargs rm


    Möglicherweise rühren deine Fehlermeldungen von veralteten Einträgen in diesen .dependencies her...


    Toi, toi, toi
    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)

  • Jetzt bin ich aber auch verwirrt, das include Directory war doch mal in den cflags/cxxflags drin?


    Die Datei vdr.pc schaut bei mir so aus:



    Wenn ich also keine Tomaten auf den Augen habe, findet sich dort kein einziges Include. :wow


    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)


  • Deshalb meine Frage, ob das VDR-Inlcude-Verzeichnis nicht ebenfalls in vdr.,pc hinterlegt und von den Makefiles von dort ausgelesen werden müsste. Dies wäre umso wichtiger, wenn es sich eben nicht – wie ich geschrieben hatte – unter /usr/include bzw. /usr/local/include liegt. Was bei mir der Fall ist, denn damit ich schnell zwischen VDR-Verisonen hin- und herschalten kann, liegt alles, was eine VDR-Instanz betrifft, vollständig innerhalb eines Verzeichnisbaums unter /usr/local – auch deren Include-Files.


    Hast du es schon mal mit 'make LCLBLD=1' versucht? Damit wird über HDRDIR das VDR-Include-Verzeichnis in die cxxflags der vdr.pc geschrieben.
    Siehe den entsprechenden Kommentar in Make.config.template.
    In deinem Plugin-Verzeichnis reicht es dann, wenn du 'make VDRDIR=/path/to/your/vdr/source' machst.


    Klaus

  • Hast du es schon mal mit 'make LCLBLD=1' versucht? Damit wird über HDRDIR das VDR-Include-Verzeichnis in die cxxflags der vdr.pc geschrieben.


    Klaus,


    danke für den Hinweis. Aus der Beschreibung in Make.config.template:


    Code
    # Use 'make LCLBLD=1' to build locale and plugin files under the source directory


    würde ich aber verstehen, dass ich LCLBLD=1 setzen muss, wenn ich den VDR samt Plugins ausschließlich von innerhalb des VDR-Sourcebaums (also ohne weiteres Umkopieren der produzierten Files im Rahmen eines Installatiosnvorgangs) betreiben will. Was bei mir aber nicht der Fall ist, da ich die produzierten Files alle von den Source-Verzeichnissen nach /usr/local/vdr-1.7.xy in eine entsprechende Baumstruktur kopiere (siehe meine vdr.pc weiter oben).


    Zumal im VDR-Makefile LCLBLD nur dazu führt, dass nach dem Bauen des Plugins eine Mini-Installation nach PLUGINS/lib und PLUGINS/locale durchgeführt wird. Sonst passiert nichts weiter...


    Oder habe ich die Bedeutung von LCLBLD komplett falsch interpretiert? Dein Hinweis würde ja das genaue Gegenteil meiner Interpretation nahelegen.


    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)

  • Du kannst ja das
    ---
    HDRDIR = $(CWD)/include
    ---
    in der Make.config setzen ohne LCLBLD zu nutzen. Schreibs einfach irgendwo hin wo es greift.


    Wobei du aber mindestens per
    ----
    make install-pc
    ----
    das vdr.pc irgendwo ins reale Filesystem kopieren musst (/usr/local/lib/pkgconfig/vdr.pc) damit pkg-config die findet.


    Für den Rest nutzt du dann DESTDIR an der Kommandozeile oder passt die Make.config entsprechend an. Es sollte sich ja alles so konfigurieren lassen das alles (bis auf die vdr.pc) unter /usr/local/vdr-1.7.xy landet.


    cu

Jetzt mitmachen!

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