[Erledigt] Verständnisfrage zum neuen Buildsystem

  • Soweit ich das verstanden habe liest ein Plugin nach dem neuen Standard nicht mehr direkt aus der Make.config. Das Makefile des VDR generiert eine vdr.pc aus den Variablen der Make.config und die Plugins lesen daraus, wie es z.B. hier bei epg2vdr passiert:
    http://projects.vdr-developer.…Makefile.since-1.7.35#n14

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Dann müssten ja aber alle "FOO = 1", "BAR = 1", etc., die in der Make.config stehen, dann auch in der vdr.pc stehen?


    Nein, schau dir das Makefile doch mal an: http://projects.vdr-developer.…dr.git/tree/Makefile#n140
    Da soweit ich das sehen kann landet nur das in der vdr.pc was explizit reingeschrieben wird.
    Für Plugins kann man eine plugins.mk nutzten, wenn ich die Vorlage für die neue Make.config richtig verstehe: http://projects.vdr-developer.…/Make.config.template#n63

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Also jetzt verstehe ich überhaupt nichts mehr? ?(


    Früher, - also vor der Kupferzeit - hat man einfach im Makefile der Plugins,


    Code
    -include $(VDRDIR)/Make.config


    eingetragen und gut war es.


    Da es aber bei mir gar keine "plugins.mk" gibt, würde das ja bedeuten, dass alle Einträge in der Make.config, für alle Plugins wirkungslos sind??

  • Ich habe mal die Make.config wie folgt angepasst:


    Code
    # Use this if you want to have a central place where you configure compile time
    # parameters for plugins:
    PLGCFG = $(VDRDIR)/plugins.mk


    Dann habe ich eine "$(VDRDIR)/plugins.mk" angelegt:


    Code
    # MY PLG Parm
    FOO = 1


    Jetzt wir bei einem "make plugins" im "$(VDRDIR)" der Parameter genommen, leider aber nicht, wenn ich "make" in entsprechenden SourceDir des Plugins mache. :(


    Des weiteren habe ich u.A. in der Make.config noch z.B. so etwas stehen:



    Das würde ja bedeuten, diese Parameter überhaupt nicht gelesen/beachtet werden?? ?(

  • Jetzt wir bei einem "make plugins" im "$(VDRDIR)" der Parameter genommen, leider aber nicht, wenn ich "make" in entsprechenden SourceDir des Plugins mache.


    Das liegt dann eventuell am Makefile des Plugins. In den Release-Notes des VDR 1.7.35 stand es so drin: http://projects.vdr-developer.…dr.git/tree/HISTORY#n7483

    Code
    - Plugin Makefiles can now include a configuration file for compile time parameters
      (requested by Reinhard Nissl). The actual name of this file can be defined in
      Make.config (see "PLGCFG" in Make.config.template), and existing plugin Makefiles
      that have compile time parameters should add the lines
      PLGCFG = $(call PKGCFG,plgcfg)
      -include $(PLGCFG)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Nun, so steht es ja in fast allen Plugins drin:




    nur funktioniert das ja wohl nicht??

  • Steht denn ein absoluter Pfad für plgcfg in der vdr.pc?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Und pkgconfig liefert den auch so wenn es gefragt wird?

    Code
    $ pkg-config --variable=plgcfg vdr
    /usr/local/src/VDR/plugins.mk


    Denn VDRDIR ist ja soweit ich weiß nicht definiert, wenn man aus einem beliebigen Plugin-Verzeichnis heraus make aufruft.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • 3PO: bei gentoo 64bit liegt die benutzte vdr.pc unter


    Code
    /usr/lib64/pkgconfig/vdr.pc


    Bei mir steht da in plgcfg auch kein Wert, was wohl daran liegt, dass in der /usr/local/src/VDR/Make.config die Variable PLGCFG nicht definiert ist...


    Ciao Louis

  • BINGO!!


    Das war es. :tup


    Da ich ja immer via Script installiere, wurde nach der Änderung der Make.config kein "make install" im $VDRDIR gemacht und somit auch die "/usr/lib64/pkgconfig/vdr.pc" nicht geändert.


    Nun geht es aber :)



    Code
    vdr01_64 vdr-2.1.1 # pkg-config --variable=plgcfg vdr
    /usr/local/src/VDR/plugins.mk
    vdr01_64 vdr-2.1.1 #


    Wenn ich das aber nun richtig verstanden habe, müssen nun ALLE Einträge, die das Compilieren der Plugins betreffen, nun in die "plugins.mk"?

  • Ich muss den Thread nochmal hochholen. :)



    Ich habe gerade vdr-2.1.3 gebaut. Wenn ich im $VDRSOURCEDIR "make" ausführe, kommt am Ende folgender Fehler:


    Code
    *** failed plugins: burn yacoto
    
    
    make: *** [plugins] Fehler 1


    Mache nun, z.B. "make" direkt Verzeichnis von burn, oder yacoto, werden die jeweiligen Plugins anstandslos gebaut.


    Woran liegt das? ?(

  • burn:


    Code
    *** Plugin burn:
    g++ -Werror=overloaded-virtual -Wno-parentheses -march=corei7 -O2 -pipe -g -ggdb -O0 -D__STDC_CONSTANT_MACROS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -fPIC -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I/usr/local/src/media_build_experimental/linux/include/uapi -I/usr/local/src/vdr-2.1.3/include -c -DPLUGIN_NAME='"burn"' -DPLUGIN_NAME_I18N='"burn"' -D_LARGEFILE_SOURCE -DTMPDIR='"/tmp"' -DDVDDEV='"/dev/cdrom"' -DISODIR='"/film"' -I/usr/local/src/vdr-2.1.3/include -I/usr/local/src/vdr-2.1.3/include -I. -I/usr/include -o jobs.o jobs.c
    jobs.c: In Elementfunktion »std::string vdr_burn::recording::get_graft_point() const«:
    jobs.c:266:39: Fehler: »VideoDirectory« wurde in diesem Gültigkeitsbereich nicht definiert
    make[1]: *** [jobs.o] Fehler 1
    ls: Zugriff auf /usr/local/src/vdr-2.1.3/PLUGINS/src/burn/po/*.mo nicht möglich: Datei oder Verzeichnis nicht gefunden



    Hat sich erledigt. :)


    Habe den Fehler gefunden. ;)

Jetzt mitmachen!

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