vdr-2.4.6 kompiliert mit gcc-11.0.0 nicht

  • Auch das habe ich schon mal in einem Plugin gesehen: vdr-plugin-live

    Wobei da

    Code
    hours = string(std::max(0,(int)(2 - hours.size())), '0') + hours;
    mins = string(std::max(0,(int)(2 - mins.size())), '0') + mins;

    gemacht wird, sollte also doch eigentlich kein Problem sein.

    Ich würde jetzt mal vorschlagen, die Änderung von #12 zu machen (eventuell vielleicht sogar auch noch ohne DISABLE_TEMPLATES_COLLIDING_WITH_STL) und zu schauen, bei welchen Plugins Probleme auftreten. Dort sollte man dann schauen, ob sich das nicht einfach durch Voranstellen von "std::" lösen lässt. Wäre nett, wenn das jemand mal probieren könnte und hier Bescheid gibt.

    Wo kommt das her, doch nicht etwa aus einer speziellen Implementation der STL?

    Das kann durchaus sein. Hat aber jahrelang funktioniert. Ich gebe natürlich zu, dass das keine "saubere" Lösung war ;-).

    Ich hab jetzt einfach mal mitgenommen das das im VDR eben schon immer so war und dann "never change a running system".

    :thumbup:

  • Die Plugins, die ich nutze (epg2vdr, epgsearch, live, markad, satip) bauen unter Ubuntu 20.04 ohne Probleme.

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Nein, nicht drin, nur im vdr Source gefunden.

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Hi,

    vdr-plugin-vnsiserver-1.8.0/streamer.c:34:#define DISABLE_TEMPLATES_COLLIDING_WITH_STL 1

    Code
    // work-around for VDR's tools.h
    #if VDRVERSNUM < 20400
    #define __STL_CONFIG_H 1
    #else
    #define DISABLE_TEMPLATES_COLLIDING_WITH_STL 1
    #endif

    Die Plugins, die ich nutze (epg2vdr, epgsearch, live, markad, satip) bauen unter Ubuntu 20.04 ohne Probleme.

    Ubuntu 20.04 bringt gcc-7 mit max. lässt sich gcc-10 installieren.

    Es geht ja um gcc-11 ...Sorry,wenn ich was überlesen habe.

    Bye

    cu

    Hard & Software

    DVB-S: Silverstone LC17 mit 8,4" TFT Display, ASRock ALiveNF6G, AMD X2 3800+ (35W),4GB, GT 630 - nVidia-387, SSD 64GB, 2TB, TeVii S470, SkyStar S2, Cinergy T RC USB, Kodi-18.0, FB X10 Medion-Scroll, "easyVDR 3.5 (14.04 LTS) - Kernel-4.8.12 - VDR 2.3.8"
    -----------------------------

    DVB-C: ATC-620, Asrock K7S41GX, AMD Geode NX 1750, 2GB, picoPSU, Samsung 500GB 1x 1TB, LDW-851S, DVB-C Fujitsu-Siemens FF, Cinergy 1200, Nova T USB, Atric Rev.4, "easyVDR 0.8 - 2.6.35.10 VDR 1.7.16 "
    -----------------------------

    Client_1: Evo N600c, "Puppy-Slacko 6.3" VDR 2.2.0 - FB X10 Medion_OR25V
    -----------------------------

    Client_2: Himbeere-P2 - MLD-5.4 / LibreELEC-9.0-Milhouse(Kodi-18.0) (PVR-VNSI)

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • Es geht so wie ich das verstanden habe um beides: Geht nach der Änderung gcc-7 noch und auch gcc-11. Mein Beitrag bezog sich auf "gcc-7 noch".

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • Wäre es denn wirklich so schlimm das DEFINE als Option drin zu lassen?

    Ja, über "using namespace std" scheiden sich die Geister aber zumindest ich hab das genau so im Studium vermittelt bekommen. Beim "normalen" C++-Programmieren braucht man die "std"-Dinger halt ständig und immer ein "std::" davor schreiben kann man machen, muss man aber nicht.

    Ich bin und werde zwar nicht "hardcore Plugin-Entwickler", aber ich fände es trotzdem nicht verkehrt die Option, auch in einem Plugin "using namespace std" machen zu können, zu erhalten.

  • Viele Wege führen nach Rom..

    Selbst ein

    namespace vdr {

    #include <vdr/tools.h>

    }

    int n = vdr::max(..)


    oder

    {

    using vdr::max;

    int n = max(..)

    }

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Also probiert/compiliert hab ich's jetzt nicht. Ich sag nur macros sind eher C-style als C++ ..

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Ich hab hier ein Problem mit epgsearch mit gcc-11 (gcc-9 und -10 compilen epgsearch ohne Probleme). Bei gcc-11 (vdr-1.4.7 ist gcc-11 übersetzt und installiert) gibt es eine Meldung, mit deren Kontext ich so gar nichts anfangen kann.

    Es führt bereits das

    conflictcheck.h:30 #include <set>
    zu einem Abbruch.

    Ich hab schon mal probiert davor ein#define DISABLE_TEMPLATES_COLLIDING_WITH_STL zu setzen, ohne Veränderung.

    Hat jemand eine Idee?

    Source ist die neueste aus https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/
    Habe auch alle älteren Pakete durchprobiert, identischer Abbruch.

  • Hat jemand eine Idee?

    Ich würde mal zwei Dinge versuchen (ich habe noch keine Installation mit gcc-11):

    Code
    bool operator()(const cConflictCheckTimerObj* a, const cConflictCheckTimerObj* b) const {
            return (a->Compare(*b) < 0);
        }
    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich würde mal zwei Dinge versuchen (ich habe noch keine Installation mit gcc-11):

    Code
    bool operator()(const cConflictCheckTimerObj* a, const cConflictCheckTimerObj* b) const {
            return (a->Compare(*b) < 0);
        }

    Hi seahawk,

    Sehr guter Hinweis, so lässt es sich compilen!!! Vielen Dank!

    Nun muß es nur noch funktionieren, werde die nächsten Tage testen und dann "upstream" reporten.

    Hier nochmal als Patch:


  • kls

    Das hab ich auch noch aber das kompilieren läuft durch. Version 2.5.3

    util.c: In statischer Elementfunktion »static u_int32_t SI::CRC32::crc32(const char*, int, u_int32_t)«:

    util.c:269:17: Warnung: ISO-C++17 erlaubt Speicherklassenangabe »register« nicht [-Wregister]

    269 | register int i;

    | ^

  • Auch das habe ich schon mal in einem Plugin gesehen: vdr-plugin-live

    Hab dazu mal einen pull request bei MarkusE gestartet, dann ist es zumindest schon mal ein Plugin weniger.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!