vdr-2.2.0 compilation fails with gcc7 on Fedora26.
g++ -O3 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -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 dvbdevice.o dvbdevice.c dvbdevice.c: In member function 'bool cDvbTuner::SetFrontend()': dvbdevice.c:851:31: error: call of overloaded 'abs(unsigned int&)' is ambiguous frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF ^ the full build.log file: https://kojipkgs.fedoraproject.org/work/tasks/3857/18133857/build.log
corrected with the following patch, but i know that's not a good solution, because i am not a software developer.
--- a/dvbdevice.c.orig 2017-02-15 15:46:26.642238239 +0100 +++ b/dvbdevice.c 2017-02-15 15:46:51.820575674 +0100 @@ -848,7 +848,7 @@ CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt)); CHECK(ioctl(fd_frontend, FE_SET_TONE, tone)); } - frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF + frequency = abs(int(frequency)); // Allow for C-band, where the frequency is less than the LOF
// DVB-S/DVB-S2 (common parts) SETCMD(DTV_FREQUENCY, frequency * 1000UL);
Porting to GCC 7: https://gcc.gnu.org/gcc-7/porting_to.html#cmath
can somebody help me to correct this ?
On 02.03.2017 11:25, Martin Gansser wrote:
vdr-2.2.0 compilation fails with gcc7 on Fedora26. ...
This will be fixed in version 2.3.3, where I have changed "unsigned" to "signed" in several places to avoid these problems. Attached are the respective changes, it still applies to version 2.2.0.
Klaus
Thanks for your patch, but then there are further error messages:
g++ -O3 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -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 osdbase.o osdbase.c osdbase.c: In member function 'eOSState cOsdMenu::HotKey(eKeys)': osdbase.c:513:38: error: ISO C++ forbids comparison between pointer and integer [-fpermissive] if (s && (s = skipspace(s)) != '\0' && '0' <= s[i] && s[i] <= '9') { ^~~~ make: *** [Makefile:126: osdbase.o] Error 1
I fixed this with this patch:
--- a/osdbase.c.orig 2017-02-15 15:55:34.555128665 +0100 +++ b/osdbase.c 2017-02-15 15:56:30.898068614 +0100 @@ -510,7 +510,7 @@ const char *s = item->Text(); i = 0; item_nr = 0; - if (s && (s = skipspace(s)) != '\0' && '0' <= s[i] && s[i] <= '9') { + if (s && (s = skipspace(s)) != NULL && '0' <= s[i] && s[i] <= '9') { do { item_nr = item_nr * 10 + (s[i] - '0'); }
it compiles fine, but I am not shure if this is correct ?
Gesendet: Donnerstag, 02. März 2017 um 11:35 Uhr Von: "Klaus Schmidinger" Klaus.Schmidinger@tvdr.de An: "VDR Mailing List" vdr@linuxtv.org Betreff: Re: [vdr] vdr-2.2.0 compilation fails with gcc7 On 02.03.2017 11:25, Martin Gansser wrote:
vdr-2.2.0 compilation fails with gcc7 on Fedora26. ...
This will be fixed in version 2.3.3, where I have changed "unsigned" to "signed" in several places to avoid these problems. Attached are the respective changes, it still applies to version 2.2.0.
Klaus _______________________________________________ vdr mailing list vdr@linuxtv.org https://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
On 02.03.2017 13:39, Martin Gansser wrote:
Thanks for your patch, but then there are further error messages:
g++ -O3 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -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 osdbase.o osdbase.c osdbase.c: In member function 'eOSState cOsdMenu::HotKey(eKeys)': osdbase.c:513:38: error: ISO C++ forbids comparison between pointer and integer [-fpermissive] if (s && (s = skipspace(s)) != '\0' && '0' <= s[i] && s[i] <= '9') { ^~~~ make: *** [Makefile:126: osdbase.o] Error 1
I fixed this with this patch:
--- a/osdbase.c.orig 2017-02-15 15:55:34.555128665 +0100 +++ b/osdbase.c 2017-02-15 15:56:30.898068614 +0100 @@ -510,7 +510,7 @@ const char *s = item->Text(); i = 0; item_nr = 0;
if (s && (s = skipspace(s)) != '\0' && '0' <= s[i] && s[i] <= '9') {
if (s && (s = skipspace(s)) != NULL && '0' <= s[i] && s[i] <= '9') { do { item_nr = item_nr * 10 + (s[i] - '0'); }
it compiles fine, but I am not shure if this is correct ?
From the code itself your patch appears to be correct. However, this is not part of plain vanilla VDR. Must have been introduced by some other patch...
Klaus