vdr-plugin-live für VDR 2.3.x ...

  • 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 :wow ) 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:



    bei g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
    und
    branch vdr-2.3.x_osd_work



    gruss
    beinhart


  • 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.


    Code
    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:


    gcc Version:

  • 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

  • Anm: Die Option ist plugin-spezifisch. Code welcher nicht c++0x/c++1x ist, wird sonst falsch interpretiert.

  • 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:


    Code
    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.

  • 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']

    Code
    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. ;)

  • Code
    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

    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, ...


    - 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:


    Code
    pageelems.ecpp:8:32: schwerwiegender Fehler: gen_version_suffix.h: Datei oder Verzeichnis nicht gefunden


    Des weiteren gibt es beim Bauen die folgenden Warnings:


  • 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

Jetzt mitmachen!

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