Redundanz in der Make.config und Make.global

  • Wer für ein Plugin bestimmte compiler flags setzen will, für den ist hier nichts redundant.


    Ich glaube wir reden aneinander vorbei. Es ist doch im Moment auch so das alle Plugins ihre compiler Flags vorgegeben bekommen, weil im Moment ist es so das in der Make.config DIESES steht
    ----
    ### The C compiler and options:


    CC = gcc
    CFLAGS = -g -O3 -Wall


    CXX = g++
    CXXFLAGS = -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses
    ----


    und in den Plugin Makefiles steht dieses
    ----
    ### The C++ compiler and options:


    CXX ?= g++
    CXXFLAGS ?= -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses


    ### The directory environment:


    VDRDIR ?= ../../..
    LIBDIR ?= ../../lib
    TMPDIR ?= /tmp


    ### Make sure that necessary options are included:


    include \$(VDRDIR)/Make.global
    ----


    Beachte die letzte Zeile, also was macht das CXXFLAGS im Pluginmakefile überhaupt? Ist es dir wirklich wichtig das es dort bleibt? Übersehe ich hier den Sinn dahinter?



    Also mal anderst formuliert, wer seine Make.config.template in Make.config umbenennt um dort ne epgsearch Option zu setzen (z.B. "PLUGIN_EPGSEARCH_SEP_ITEMS=---") bekommt die compiler flags (für ALLE Plugins) die zufällig dort als default definiert sind, wer das nicht tut bekommt die compiler flags die zufällig im Plugin Makefile definiert sind.
    Das kann nicht der Sinn der Sache sein. Und das ist redundant.


    cu

  • Jup genau, und diese Möglichkeit will den Pluginentwicklern ja niemand nehmen.
    Im Moment ist der Default für CXXFLAGS bei mir an 48 Stellen definiert, und je nach dem wie ich ein Plugin baue wird das von einer dieser 48 Stellen genommen. Ändert sich das Default (weil z.B. rauskommt das es sinnig wäre eine Option hinzuzufügen) muss ich das an 48 Stellen ändern. Das kann nicht richtig sein ;)


    cu

  • Danke, dass ihr alle so fleißig testet und dabei nicht mal merkt das beim Plugin kompilieren tonnenweise Fehlermeldungen kommen.
    Euch ist schon bewusst, dass der Patch früher oder später im VDR landen soll. Wenn dann nacher irgendwas nicht geht ist das geheule wieder groß.


    Mit diesem Patch funktioniert es jetzt.

  • Moin!


    Ich hab erst nächste Woche Urlaub, dann wollte ich in Ruhe mal ganz viel vdr-Krams machen.
    Ich lese hier sehr interessiert mit. :)


    Danke für eure Arbeite!


    Lars.

  • ...hmm, also ich finde es sinnvoll, und für die Plugins, die ich benutze, funktioniert es. Aber mal ganz ehrlich, ich habe hier nur staunend und lernend mitgelesen, über was sich Distributoren alles Gedanken machen müssen - deshalb hatte ich die Klappe gehalten, und glaube auch, dass es nicht relevant ist, wie ich das finde... Aber ich verfolge was Du änderst.


    Gruß, Ingo

  • VDR ist für Distributoren ein "Spezialfall" ;)


    Der Buildvorgang läuft hier in vielerlei Hinsicht ganz anders als bei anderen Programmen.


    VDR selber bauen ist dabei noch relativ simpel, aber bei Plugins ist das schon knifflig. Plugins sind so geplant, dass diese eigentlich aus dem VDR-Source-Tree gebaut werden sollten. Der Distributor will aber eigentlich weder den VDR-Source komplett irgendwo ablegen noch den Plugin-Source an eine bestimmte Stelle ablegen um diesen bauen zu können.


    Man kann aber auch nicht sagen "Plugins sollten besser abseits vom VDR-Source gebaut werden und sollten ihre Umgebung soweit möglich selber erkennen (pkg-config)" weil es zig Leute geben würde, die dann aufschreien, weil man ihnen ihre gewohnte Möglichkeit zum Installieren von Plugins nehmen würde.


    So wird man beim VDR, und vor allem beim Anpassen dessen Buildsystem, immer zwei Wege im Blick behalten müssen und geht dabei auf beiden Wegen Kompromisse ein...


    Was den Thread hier angeht: Würde mich freuen, wenn aus dem yaVDR-Lager auch jemand mal ein paar Kommentare abgeben würde. Ist schließlich eine der größten VDR-Distributionen.

  • VDR ist für Distributoren ein "Spezialfall" ;)


    ...vor allem für Distributoren einer VDR-Distribution... :lol: SCNR


    Danke, für Deine Erklärung - genau deshalb meinte ich ja, dass meine Meinung hier eher irrelevant ist. Aber copperhead hängt hier schon ganz schön in der Luft, während er versucht die von Dir erwähnten Kompromisse in geordnete Bahnen zu lenken...


    Gruß, Ingo

  • Was den Thread hier angeht: Würde mich freuen, wenn aus dem yaVDR-Lager auch jemand mal ein paar Kommentare abgeben würde.


    Generell ist der Vorschlag von Copperhead mit dem pkg-config sehr gut, aber wir haben uns mit dem aktuellen Verfahren schon arrangiert. Käme eine neue Vorgehensweise, dann würden wir sie höchstens bei neuen Plugins verwenden, wenn überhaupt. Neue Plugins kommen aber eher selten. Das gilt auch für die Unterstützung des FHS durch den VDR. Wir kommen eben auch so klar und keiner von uns hat genug Zeit und Lust hunderte Plugin-Pakete anzupassen. Deswegen haben wir uns auch aus der Diskussion damals auf der VDR-Mailingliste zurückgehalten.

    Ist schließlich eine der größten VDR-Distributionen.


    Ist das so?


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Ahh es nimmt wieder Fahrt auf :D


    Mir ist schon klar, dass keiner von jetzt auf nachher das neue System benutzt. Ich werde aber für die wichtigsten Plugins Patches bereitstellen, die den Übergang einfacher machen.



    Ich denke ich werde den Abruf der APIVERSION so lassen wie er jetzt ist, da es mit pkg-config länger ist


    Code
    APIVERSION = $(shell pkg-config --variable=apiversion $(VDRDIR)/vdr.pc || pkg-config --variable=apiversion vdr)


    als ohne


    Code
    APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h)


    Wenn es dazu keine Einwände mehr gibt, kann ich es ja an Klaus abschicken.

  • pkg-config ist auf jedem Fall die bessere und logischere Lösung. Hat zudem zur Folge, dass man die "Make.config" nicht im include-dir braucht (wo sie eigentlich nichts verloren hat).


    Ganz wichtig dürfte halt sein, dass alle "alten Buildmethoden" nach wie vor problemlos funktionieren. Also sowohl bauen aus dem VDR-Source als auch "make VDRDIR....". Da sehe ich, wenn ich den Patch genauer betrachte, aber aktuell keine Probleme.


    Gut finde ich, dass die komische "Make.global" wieder rausfliegt.

Jetzt mitmachen!

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