eit.c:394:13: error: 'stime' was not declared in this scope; did you mean 'ctime'?

  • Hallo,


    ich versuche gerade den vdr-2.4.1 für die zukünftige Fedora 32 Version zu kompilieren und bekomme die folgende Fehlermeldung:


    stime () ist in glibc 2.31 veraltet und wurde durch clock_settime () ersetzt. glibc-2.31


    Code
    g++ -O3 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -Werror=overloaded-virtual -Wno-parentheses -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -fPIC -c -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DREMOTE_KBD -DVDR_USER=\"vdr\" -DSDNOTIFY -DLIRC_DEVICE=\"/var/run/lirc/lircd\" -DVIDEODIR=\"/var/lib/vdr/video\" -DCONFDIR=\"/etc/vdr\" -DARGSDIR=\"/etc/vdr/conf.d\" -DCACHEDIR=\"/var/cache/vdr\" -DRESDIR=\"/usr/share/vdr\" -DPLUGINDIR=\"/usr/lib64/vdr\" -DLOCDIR=\"/usr/share/locale\" -I/usr/include/freetype2 -I/usr/include/libpng16    -o eit.o eit.c^M
    eit.c: In constructor 'cTDT::cTDT(const u_char*)':^M
    eit.c:394:13: error: 'stime' was not declared in this scope; did you mean 'ctime'?^M
    394 |         if (stime(&dvbtim) == 0)^M
    |             ^~~~~^M
    |             ctime^M


    Hat jemand eine Idee, wie ich das lösen kann ?

    Gruß Marco


    HW: TT6400-S2
    SW: Fedora 37, kernel-6.1.6-200.fc37.x86_64, vdr-2.6.1-2.fc37.x86_64


    Fedora37 x86_64 Gnome Desktop 42.2 Ausgabe über das vdr-softhddevice plugin

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400


    2 Mal editiert, zuletzt von marco ()

  • Hast du mal versucht zusätzlich zu #incude <sys/time.h> gemäß https://linux.die.net/man/2/stime #include <time.h> zu nutzen?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hast du mal versucht zusätzlich zu #incude <sys/time.h> gemäß https://linux.die.net/man/2/stime #include <time.h> zu nutzen?

    das hatte ich bereits mit folgendem Patch in der eit.c versucht, klappt aber nicht.


    Diff
    --- a/eit.c.orig        2019-12-12 16:23:42.231599228 +0100
    +++ b/eit.c     2019-12-12 16:24:09.093601411 +0100
    @@ -13,6 +13,7 @@
    
    #include "eit.h"
    #include <sys/time.h>
    +#include <time.h>
    #include "epg.h"
    #include "i18n.h"
    #include "libsi/section.h"

    Gruß Marco


    HW: TT6400-S2
    SW: Fedora 37, kernel-6.1.6-200.fc37.x86_64, vdr-2.6.1-2.fc37.x86_64


    Fedora37 x86_64 Gnome Desktop 42.2 Ausgabe über das vdr-softhddevice plugin

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400


  • der Unterschied zwischen der Fedora31 und Fedora31 header-Datei time.h ist folgende, es ist die stime() nicht mehr deklariert.


    Gruß Marco


    HW: TT6400-S2
    SW: Fedora 37, kernel-6.1.6-200.fc37.x86_64, vdr-2.6.1-2.fc37.x86_64


    Fedora37 x86_64 Gnome Desktop 42.2 Ausgabe über das vdr-softhddevice plugin

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400


  • Versuch mal in deinen compiler flags ein


    -D_SVID_SOURCE

    Alternativ im Quellcode vor dem #include <time.h> ein #define _SVID_SOURCE

  • ich hab's mal mit diesem Patch versucht, gleiche Fehlermeldung

    Gruß Marco


    HW: TT6400-S2
    SW: Fedora 37, kernel-6.1.6-200.fc37.x86_64, vdr-2.6.1-2.fc37.x86_64


    Fedora37 x86_64 Gnome Desktop 42.2 Ausgabe über das vdr-softhddevice plugin

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400


  • Im Fedora Forum wurde mir jetzt geantwortet, dass die stime() in glibc-2.31 durch clock_settime() ersetzt wurde.

    Siehe Link Use clock_settime to implement stime; withdraw stime.

    Gruß Marco


    HW: TT6400-S2
    SW: Fedora 37, kernel-6.1.6-200.fc37.x86_64, vdr-2.6.1-2.fc37.x86_64


    Fedora37 x86_64 Gnome Desktop 42.2 Ausgabe über das vdr-softhddevice plugin

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400


    2 Mal editiert, zuletzt von marco ()

  • ich habe mal mit folgendem Patch versucht, den vdr zu kompilieren, das schlägt leider mit folgender Fehlermeldung fehl.

    Zitat

    eit.c:25:18: error: missing binary operator before token "("

    25 | #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_31)

    | ^

    make: *** Deleting file '.dependencies'

    Gruß Marco


    HW: TT6400-S2
    SW: Fedora 37, kernel-6.1.6-200.fc37.x86_64, vdr-2.6.1-2.fc37.x86_64


    Fedora37 x86_64 Gnome Desktop 42.2 Ausgabe über das vdr-softhddevice plugin

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400


  • Prima, lässt sich sowohl bei der aktuellen glibc-2.30 und der neuen glibc-2.31 kompilieren. :tup


    Klaus meinte, ich solle ihm einen Patch dazu schicken, machst du das, oder soll ich ihm, deinen Patch schicken ?

    Gruß MartinKG

    Fedora37 kernel-6.1.6-200.fc37.x86_64 Gnome Desktop vdr 2.6.1 mit vdr-softhddevice plugin.

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400

    Einmal editiert, zuletzt von MartinKG ()

  • Habe den Patch an Klaus geschickt. Mal abwarten was er dazu sagt.

    Hallo Manuel,


    ein Mitglied der Fedora Mailingliste hat geschrieben, man so hier anstatt timespec ts = {0};

    timespec ts = {}; verwenden


    Gruß Marco


    HW: TT6400-S2
    SW: Fedora 37, kernel-6.1.6-200.fc37.x86_64, vdr-2.6.1-2.fc37.x86_64


    Fedora37 x86_64 Gnome Desktop 42.2 Ausgabe über das vdr-softhddevice plugin

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400


  • Guter Punkt. So lernt man immer noch etwas dazu.


    Mir war vor allem das saubere "Initialisieren mit Null" wichtig. Ich habe schonmal erlebt das die "struct" für eine API später um weitere Einträge erweitert wurde, die ich nicht in meinem Code berücksichtigt habe. Das hat echt lange gedauert bis ich drauf gekommen bin das diese Einträge mit Zufallswerten belegt waren und die API deshalb Murks gebaut hat.


    Ich habe ausnahmsweise mal einen Pull-Request zum inoffiziellen VDR-GIT-Repo erstellt um einen Patch ausleiten zu können:
    https://patch-diff.githubuserc…VDR4Arch/vdr/pull/1.patch


    Wenn das so tatsächlich im VDR-Core landen sollte akzeptiere ich dann ausnahmsweise den Pull-Request um das sauber mit Historie rein zu bekommen.

    Wir sind im Jahr 2019 und bald 2020. Ich werde keinen Patch mehr manuell erstellen wenn es einfacher und komfortabler inklusive sauberer Historie auch geht.

  • Fix ist im AUR. Ich habe pkgrel nicht hochgezählt. Es gibt keinen Grund bestehende Pakete neu zu bauen. Der Patch sorgt nur dafür das ein Kompilieren wieder möglich ist.


    BTW: Etwas schade das von Klaus in so einer Situation kein Bugfix-Release (VDR 2.4.2) kommt.

  • kls: sollte der Patch vdr-2.4.1-glibc-2.31-2.patch nicht zumindest in Dein git einfließen?

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

Jetzt mitmachen!

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