Wo sagt denn einem Plugin, dass beim "make" die "$VDRDIR/Make.config" gelesen werden soll?
[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 -
Dann müssten ja aber alle "FOO = 1", "BAR = 1", etc., die in der Make.config stehen, dann auch in der vdr.pc stehen?
-
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 -
Also jetzt verstehe ich überhaupt nichts mehr?
Früher, - also vor der Kupferzeit - hat man einfach im Makefile der Plugins,
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:
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:
Code
Alles anzeigen#for xineliboutput XINELIBOUTPUT_X11 = 1 #XINELIBOUTPUT_FB = 1 XINELIBOUTPUT_XINEPLUGIN = 1 XINELIBOUTPUT_VDRPLUGIN = 1 #ENABLE_TEST_POSTPLUGINS = 1 # for burn DVDDEV = /dev/cdrom ISODIR = /film # for skinrnigmang SKINENIGMA_HAVE_EPGSEARCH = 1 # for graphtftng WITH_TOUCH = 1 WITH_X = 1 WITH_TCPCOM = 1 #for skinelchi HAVE_IMAGEMAGICK=1 # for extrecmenu EXTRECMENU_USE_VDR_CUTTER = 1 # for epgsearch USE_GRAPHTFT = 1
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#n7483Code- 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)
-
Nun, so steht es ja in fast allen Plugins drin:
Code
Alles anzeigen# Use package data if installed...otherwise assume we're under the VDR source directory: 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) PLGCFG = $(call PKGCFG,plgcfg) # TMPDIR ?= /tmp ### The compiler options: export CFLAGS = $(call PKGCFG,cflags) export CXXFLAGS = $(call PKGCFG,cxxflags) ### Allow user defined options to overwrite defaults: -include $(PLGCFG)
nur funktioniert das ja wohl nicht??
-
Steht denn ein absoluter Pfad für plgcfg in der vdr.pc?
-
-
-
-
-
BINGO!!
Das war es.
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
Alles anzeigenvdr01_64 vdr-2.1.1 # cat /usr/lib64/pkgconfig/vdr.pc bindir=/usr/bin mandir=/usr/share/man configdir=/etc/vdr videodir=/video cachedir=/var/cache/vdr resdir=/usr/share/vdr libdir=/usr/local/src/vdr-2.1.1/PLUGINS/lib locdir=/usr/local/src/vdr-2.1.1/locale plgcfg=/usr/local/src/VDR/plugins.mk apiversion=2.1.1 cflags=-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 -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.1/include cxxflags=-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.1/include Name: VDR Description: Video Disk Recorder URL: http://www.tvdr.de/ Version: 2.1.1 Cflags: ${cflags} vdr01_64 vdr-2.1.1 #
Codevdr01_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:
Mache nun, z.B. "make" direkt Verzeichnis von burn, oder yacoto, werden die jeweiligen Plugins anstandslos gebaut.
Woran liegt das?
-
Dann würde ich mal die Ausgabe untersuchen, was da bei burn/yacoto an Fehlern ausgegeben wird...
Lars.
-
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.
-
-
Moin,
darf ich fragen wie der Fehler behoben werden konnte bei der burn Complierung ?
Ich bekomme extakt den gleichen Fehler mit vdr-2.1.4
Danke
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!