LinuxTV Patchwork vdr-2.2.0 compilation fails with gcc7

login
register
mail settings
Submitter Martin Gansser
Date March 2, 2017, 10:25 a.m.
Message ID <trinity-998a3a5a-7246-45d1-8c6a-823fe8ec3a91-1488450302625@3capp-gmx-bs28>
Download mbox | patch
Permalink /patch/39667/
State New
Headers show

Comments

Martin Gansser - March 2, 2017, 10:25 a.m.
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.


Porting to GCC 7:
https://gcc.gnu.org/gcc-7/porting_to.html#cmath

can somebody help me to correct this ?

Patch

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

Privacy Policy