ZitatHast du dein Änderungen ein-gecheckt?
Mein letzter stand ist:
Vergiss es. Mein Fehler, nun geht es!
ZitatHast du dein Änderungen ein-gecheckt?
Mein letzter stand ist:
Vergiss es. Mein Fehler, nun geht es!
Der aktuelle Commit lässt sich bei mir nicht bauen
Also bei carel geht es und bei mir auch. Sowohl mit gcc 4.8.5 und 6.2.0.
carel:
Ich hab heute alle Includes durch den Wolf gedreht und verhandle gerade mit Klaus wg. einem Fix für das GCC 6.x Problem im VDR.
Könntest du bitte den letzten Git Stand ausprobieren. Aber ich habe die Commits durch ein rebase verändert (ja, sollte man nicht tun, ist aber mein work Branch und da darf ich das ) und du musst beim Git Pull aufpassen. Am besten zuerst mit einem
#> git reset --hard be4f333e60a6d992e11610d9918ca745db23902b
auf einen älteren Stand zurück und dann
#> git pull
Damit sollte es keine Problem geben.
3PO:
Bitte probier auch den letzten Git Stand aus. Das Problem muss irgendwo bei dir liegen. Vielleicht machst du auch obige Befehle.
Ich hab den Branch "vdr-2.3.x_work" auch nochmals upgedated, aber eigentlich will ich den sterben lassen,
weil das mit dem OSD ist kompatibel. Wäre also besser du verwendest auch den Branch "vdr-2.3.x_osd_work".
Wenn es wieder nicht geht, was sagt denn
#> g++ --version
Vielleicht ist dein Compiler noch neuer und ich muss mir was anderes einfallen lassen.
LG,
Jasmin
Kannst du in deinem GIT einen Branch anlegen, der mit VDR 2.2 noch geht?
Der Branch "vdr-2.3.x_work" compiliert jetzt mit VDR 2.2.0 und Branch "vdr-2.3.x_osd_work" auch. Solltest letzteren verwenden, weil der wird der neue Head.
Ich werde es anscheinend doch schaffen die Kompatibilität zu VDR 2.2.0 aufrecht zu erhalten. Wobei ich derzeit nicht mit VDR 2.2.0 testen kann. Also wundere dich ned, wenn irgendwas nicht funktioniert.
Ich könnte dort versuchen das mit Playlisten hinzubekommen.
Ja, das wäre fein, dann brauch ich das nicht machen.
LG,
Jasmin
guten morgen zusammen,
Also bei carel geht es und bei mir auch. Sowohl mit gcc 4.8.5 und 6.2.0.
bei mir klappt es auch noch nicht, folgender fehler:
In file included from ../grab.h:5:0,
from screenshot.ecpp:4:
../autoptr.h:11:25: error: ‘unique_ptr’ in namespace ‘std’ does not name a template type
# define AUTO_PTR std::unique_ptr
^
../grab.h:31:2: note: in expansion of macro ‘AUTO_PTR’
AUTO_PTR< GrabImageTask > m_task;
^
Makefile:29: die Regel für Ziel „screenshot.o“ scheiterte
make[2]: *** [screenshot.o] Fehler 1
Makefile:162: die Regel für Ziel „pages“ scheiterte
make[1]: *** [pages] Fehler 2
Alles anzeigen
bei g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
und
branch vdr-2.3.x_osd_work
gruss
beinhart
Alles anzeigen[...]
3PO:
Bitte probier auch den letzten Git Stand aus. Das Problem muss irgendwo bei dir liegen. Vielleicht machst du auch obige Befehle.
Ich hab den Branch "vdr-2.3.x_work" auch nochmals upgedated, aber eigentlich will ich den sterben lassen,
weil das mit dem OSD ist kompatibel. Wäre also besser du verwendest auch den Branch "vdr-2.3.x_osd_work".
Wenn es wieder nicht geht, was sagt denn
#> g++ --version
Vielleicht ist dein Compiler noch neuer und ich muss mir was anderes einfallen lassen. ...
Das hat sich sich im Grunde eh erledigt, ich bleibe dann halt auf dem master, ich wollte den work branch einfach nur mal testen und der osd branch beinhaltet so oder so nichts, was ich nutzte.
vdr01_64 ~ # g++ -v
Es werden eingebaute Spezifikationen verwendet.
COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/5.4.0/g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/5.4.0/lto-wrapper
Ziel: x86_64-pc-linux-gnu
Konfiguriert mit: /tmp/portage/sys-devel/gcc-5.4.0-r3/work/gcc-5.4.0/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/5.4.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/5.4.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/5.4.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/5.4.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/5.4.0/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 5.4.0-r3 p1.3, pie-0.6.5' --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --with-multilib-list=m64 --disable-altivec --disable-fixed-point --enable-targets=all --disable-libgcj --enable-libgomp --disable-libmudflap --disable-libssp --disable-libcilkrts --disable-libmpx --enable-vtable-verify --enable-libvtv --enable-lto --without-isl --enable-libsanitizer
Thread-Modell: posix
gcc-Version 5.4.0 (Gentoo 5.4.0-r3 p1.3, pie-0.6.5)
vdr01_64 ~ #
Nachtrag:
Der vdr-2.3.x_osd_work Branch lässt sich auch nicht bauen:
Commit:
Compile Error:
vdr01_64 live-git # LC_MESSAGES=C make
./buildutil/version-util gen_version_suffix.h || ./buildutil/version-util -F gen_version_suffix.h
make -C pages PLUGINFEATURES=" -DHAVE_LIBPCRECPP" all
make[1]: Entering directory '/usr/local/src/vdr-2.3.4/PLUGINS/src/live-git/pages'
c++ -Werror=overloaded-virtual -Wno-parentheses -march=core-avx2 -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/include/linux/dvb -I/usr/include -Wno-overloaded-virtual -Wno-unused-variable -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"live"' -DTNTVERSION=22100 -DCXXTOOLVER=22100 -DHAVE_LIBPCRECPP -I/include -I.. screenshot.cpp
In file included from ../grab.h:5:0,
from screenshot.ecpp:4:
../autoptr.h:11:25: error: ‘unique_ptr’ in namespace ‘std’ does not name a template type
# define AUTO_PTR std::unique_ptr
^
../grab.h:31:2: note: in expansion of macro ‘AUTO_PTR’
AUTO_PTR< GrabImageTask > m_task;
^
make[1]: *** [Makefile:29: screenshot.o] Error 1
make[1]: Leaving directory '/usr/local/src/vdr-2.3.4/PLUGINS/src/live-git/pages'
make: *** [Makefile:162: pages] Error 2
vdr01_64 live-git #
Alles anzeigen
gcc Version:
vdr01_64 ~ # gcc -v
Es werden eingebaute Spezifikationen verwendet.
COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/5.4.0/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/5.4.0/lto-wrapper
Ziel: x86_64-pc-linux-gnu
Konfiguriert mit: /tmp/portage/sys-devel/gcc-5.4.0-r3/work/gcc-5.4.0/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/5.4.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/5.4.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/5.4.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/5.4.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/5.4.0/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 5.4.0-r3 p1.3, pie-0.6.5' --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --with-multilib-list=m64 --disable-altivec --disable-fixed-point --enable-targets=all --disable-libgcj --enable-libgomp --disable-libmudflap --disable-libssp --disable-libcilkrts --disable-libmpx --enable-vtable-verify --enable-libvtv --enable-lto --without-isl --enable-libsanitizer
Thread-Modell: posix
gcc-Version 5.4.0 (Gentoo 5.4.0-r3 p1.3, pie-0.6.5)
vdr01_64 ~ #
Mit dem Makefile oder den compiler flags stimmt etwas nicht.
Einerseits schaltest du optimierung ein : -O2
Dann wieder aus in der gleichen Zeile : -O0
Du gibst -Werror=overloaded-virtual
und danach -Wno-overloaded-virtual
Du hast 2x -fPIC
sowie 2x -D_GNU_SOURCE
Und dann versuchst du c++11 code zu compilieren ohne -std=c++11
Entweder gibt es im Makefile ein echtes Problem oder deine make.config (oder wie dieses Teil der überkomplizierten build config von vdr heisst..) ist total durch den Wind.
Mit dem Makefile oder den compiler flags stimmt etwas nicht.
Einerseits schaltest du optimierung ein : -O2
Dann wieder aus in der gleichen Zeile : -O0
...
Das passt schon, das kommt von meinem buildscript, wenn "debug" gesetzt ist.
Aber das ist ganz bestimmt nicht das Problem.
Doch, ist es. Lesen musst du schon. *g*
Dir fehlt -std=c++11
Doch, ist es. Lesen musst du schon. *g* ...
Ich hatte nur geschrieben, dass es an den Optimierungen nicht liegt.
[...] Dir fehlt -std=c++11
Ich habe jetzt mal meine "plugin.mk" entsprechend angepasst, jetzt wird der vdr-2.3.x_osd_work bei mir gebaut.
Danke für den Tipp!
Anm: Die Option ist plugin-spezifisch. Code welcher nicht c++0x/c++1x ist, wird sonst falsch interpretiert.
Stimmt, daran hatte ich nicht gedacht.
Ich habe es wieder aus der "plugin.mk" entfernt und einen Patch für das Makefile vom live-Plugin gebastelt.
Mir ist gerade aufgefallen, dass sich der vdr-2.3.x_osd_work branch nicht mit Jobservern bauen lässt.
Wenn ich eine gecleante Version habe und mit -j10 baue, dann bleibt der Compiler bei folgender Stelle stehen:
c++ -Werror=overloaded-virtual -Wno-parentheses -march=core-avx2 -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/include/linux/dvb -std=c++11 -I/usr/include -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"live"' -DTNTVERSION=22100 -DCXXTOOLVER=22100 -DHAVE_LIBPCRECPP osd_status.cpp
make: *** Keine Regel vorhanden, um das Ziel „pages/libpages.a“,
benötigt von „libvdr-live.so“, zu erstellen. Schluss.
make: *** Es wird auf noch nicht beendete Prozesse gewartet....
Ohne Jobserver funktioniert es anstandslos.
Ich bekomme beim aktuellen _work (gcc 6.2, LE cross compile toolchain)
make: *** No rule to make target 'pages/libpages.a', needed by 'libvdr-live.so'. Stop.
make: *** Waiting for unfinished jobs....
Der Fehler kommt ab diesem Commit
https://github.com/jasmin-j/vd…6b2b5c6bc4a2a115c43ec58c7
ich bau im Endeffekt "make all"
Mit dem Makefile oder den compiler flags stimmt etwas nicht.
Einerseits schaltest du optimierung ein : -O2
Dann wieder aus in der gleichen Zeile : -O0
DAS kann ich nicht nachvollziehen:
g++-6 -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -fPIC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I/usr/include -std=c++11 -Wfatal-errors -Wall -Wno-overloaded-virtual -Wno-unused-variable -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"live"' -DTNTVERSION=22100 -DCXXTOOLVER=22100 -DHAVE_LIBPCRECPP -I/mnt/nfs/hoppel_home_hdd/jasmin/vdr/vdr/git/vdr/include -I/mnt/nfs/hoppel_home_hdd/jasmin/vdr/vdr/git/vdr/include -I.. osd.cpp
Du gibst -Werror=overloaded-virtual
und danach -Wno-overloaded-virtual ...
Das kommt sicher von
export CXXFLAGS = $(call PKGCFG,cxxflags)
und
CXXFLAGS += $(shell tntnet-config --cxxflags)
was ich nicht ändern werde, weil das schon immer so im Plugin war.
Und dann versuchst du c++11 code zu compilieren ohne -std=c++11
Das hab ich heute Nachmittag nochmal alles durchgeschaut und bin auch zu dem Schluss gekommen. "std::unique_ptr" erfordert zwingend C++11.
Ich habe auch alle Verwendungen nochmals überprüft, weil "std::unique_ptr" und "std::auto_ptr" nicht 100% gleich sind, in dem Plugin passt das aber.
Im Interface zu epgsearch hab ich aber den auto_ptr belassen, weil das in epgsearch geändert werden müsste. Gibt halt weiter ein Warning an der Stelle.
Ich habe beides Branches im Git upgedated.
[quote='CvH','index.php?page=Thread&postID=1292138#post1292138']
make: *** No rule to make target 'pages/libpages.a', needed by 'libvdr-live.so'. Stop.
make: *** Waiting for unfinished jobs....
Muss ich mir anschauen. Eigentlich hätten die Makefile Änderungen was besser machen sollen
LG,
Jasmin
[...] DAS kann ich nicht nachvollziehen: ...
Das kommt von meinem buildscipt.
Die Sache ist ganz simpel, wenn ich mit "debug" baue, werden die Optimieren ausgeschaltet, das sonst die corefiles verfälscht werden könnten, außerdem wir dann auch am Ende kein "stripe" ausgeführt.
Sicherlich könnte man das eleganter lösen, aber es stört ja nicht, ob er nun "-O2 -O0", oder mit "-O0" baut, das Ergebnis ist das Selbe.
Codemake: *** No rule to make target 'pages/libpages.a', needed by 'libvdr-live.so'. Stop. make: *** Waiting for unfinished jobs....
Der Fehler kommt ab diesem Commit
https://github.com/jasmin-j/vd…6b2b5c6bc4a2a115c43ec58c7
Dieser Commit hatte zum Ziel make schneller zu machen und das Subdir Handling mit make, statt mit der Shell zu implementieren. Jetzt behaupte ich ganz gut make zu sprechen, aber den Seiteneffekt, dass die Build-Order bei der Verwendung vom Jobserver nicht mehr stimmt, war mir nicht bewusst, weil make mit den geänderten Rules die Subdirs parallel bauen kann und noch dazu auch die Plugin lib. Letzteres ist schneller fertig als die Subdirs, was dann zu dem Fehler geführt hat. Ich verwende diesen Jobserver nie, weil das mit nur einem Core ned viel Sinn macht und deshalb ist mir das nicht aufgefallen.
Es war gar nicht so einfach die Build-Order wieder richtig zu stellen und dabei so viel wie möglich parallel zu bauen. Wer sich das Makefile anschaut, ned schrecken, ich hab jetzt ein paar make Recursions eingebaut und dieses mal hab ich es auch ausgiebig getestet. Hat bei mir in allen Lebenslagen und beim Verändern beliebiger Files problemlos funktioniert.
Ich habe noch einmal beides Branches im Git upgedated und bitte um Feedback, weil ich nur dann auf den Hauptbranch mergen möchte, wenn alle zufrieden sind.
Sicherlich könnte man das eleganter lösen, aber es stört ja nicht, ob er nun "-O2 -O0", oder mit "-O0" baut, das Ergebnis ist das Selbe.
Das passt schon. Man könnte schon das eine oder andere im VDR Makefile verbessern, aber es funktioniert ja.
Mich hat beim life Makefile nur das dauernde Neubauen der *.po/*.mo Files gestört, weil ich ja doch oft compilieren muss und deshalb hab ich das überhaupt angegriffen. Ich muss das beim epgsearch Makefile auch noch verbessern, weil das ist was das Neubauen betrifft noch dümmer.
LG,
Jasmin
bitte um Feedback
https://pastebin.com/PW4LHzHy
funktioniert bei mir
wirft zwar paar compiler Warnungen aber sonst alles okay, danke !
[...] bitte um Feedback, ...
- Der Makefile Patch für das std=c++11 Problem wird nach wie vor benötigt.
- Das Problem mit den Jobservern scheint behoben zu sein.
- live lässt sich bei mir nur innerhalb der Sourcen von live bauen. Wenn ich live aus den $VDR_SOURCE_DIR aus baue, kommt folgender Fehler:
pageelems.ecpp:8:32: schwerwiegender Fehler: gen_version_suffix.h: Datei oder Verzeichnis nicht gefunden
Des weiteren gibt es beim Bauen die folgenden Warnings:
In file included from epgsearch.cpp:4:0:
epgsearch/services.h:163:9: Warnung: »template<class> class std::auto_ptr« ist veraltet [-Wdeprecated-declarations]
std::auto_ptr<cServiceHandler> handler;
^
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5/memory:81:0,
from epgsearch/services.h:31,
from epgsearch.cpp:4:
/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5/bits/unique_ptr.h:49:28: Anmerkung: hier deklariert
template<typename> class auto_ptr;
^
In file included from epgsearch.cpp:4:0:
epgsearch/services.h:179:9: Warnung: »template<class> class std::auto_ptr« ist veraltet [-Wdeprecated-declarations]
std::auto_ptr<cServiceHandler_v1_1> handler;
^
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5/memory:81:0,
from epgsearch/services.h:31,
from epgsearch.cpp:4:
/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5/bits/unique_ptr.h:49:28: Anmerkung: hier deklariert
template<typename> class auto_ptr;
^
In file included from epgsearch.cpp:4:0:
epgsearch/services.h:195:9: Warnung: »template<class> class std::auto_ptr« ist veraltet [-Wdeprecated-declarations]
std::auto_ptr<cServiceHandler_v1_2> handler;
^
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5/memory:81:0,
from epgsearch/services.h:31,
from epgsearch.cpp:4:
/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/include/g++-v5/bits/unique_ptr.h:49:28: Anmerkung: hier deklariert
template<typename> class auto_ptr;
^
Alles anzeigen
wirft zwar paar compiler Warnungen aber sonst alles okay, danke !
Das freut mich!
Die Warnings kommen daher, dass epgsearch noch auto_ptr verwendet und ich kann ja nicht das Interface in live anders machen.
Ich denke dazu werde ich wohl einen Patch für epgsearch machen müssen.
- Der Makefile Patch für das std=c++11 Problem wird nach wie vor benötigt.
Das glaube ich nicht, sonst hätte es bei CvH nicht funktionieren können. Bist du dir sicher auf dem richtigen commit zu sein?
ae427bff8e8c5769ec7ed5b40b7530e8960fde4a bzw: a2a2425b518a82d116034ac8ba233f94cbe3c4e7:
Im Makefile steht das "CXXFLAGS += -std=c++11 -Wfatal-errors", also wird es garantiert mit C++11 übersetzt.
- live lässt sich bei mir nur innerhalb der Sourcen von live bauen. Wenn ich live aus den $VDR_SOURCE_DIR aus baue, kommt folgender Fehler:
Ja, das kann ich reproduzieren. Danke, ich werde es mir anschauen.
Bez. Warnings, siehe weiter oben.
LG,
Jasmin
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!