Package: mgen
Version: 5.02+dfsg2-3
Severity: important
User: [email protected]
Usertags: ftbfs-gcc-6 gcc-6-cannot-convert
This package fails to build with GCC 6. GCC 6 has not been released
yet, but it's expected that GCC 6 will become the default compiler for
stretch.
Note that only the first error is reported; there might be more. You
can find a snapshot of GCC 6 in experimental. To build with GCC 6,
you can set CC=gcc-6 CXX=g++-6 explicitly.
> sbuild (Debian sbuild) 0.67.0 (26 Dec 2015) on dl580gen9-02.hlinux
...
>
> g++ -c -g -DPROTO_DEBUG -D_RAPR_JOURNAL -DHAVE_GPS -DUNIX -Wall -Wcast-align
> -pedantic -fPIC -DLINUX -DHAVE_PSELECT -DHAVE_SCHED -DHAVE_IPV6
> -DHAVE_GETLOGIN -DHAVE_LOCKF -DHAVE_DIRFD -DHAVE_ASSERT -I/usr/X11R6/include
> -I../makefiles -I../include -I../protolib/include -g -O2 -fPIE
> -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time
> -D_FORTIFY_SOURCE=2 -o ../src/common/mgen.o ../src/common/mgen.cpp
> In file included from ../protolib/include/protoSocket.h:4:0,
> from ../protolib/include/protokit.h:6,
> from ../include/mgen.h:4,
> from ../src/common/mgen.cpp:3:
> ../protolib/include/protoAddress.h: In member function 'const sockaddr&
> ProtoAddress::GetSockAddr() const':
> ../protolib/include/protoAddress.h:142:46: warning: dereferencing type-punned
> pointer will break strict-aliasing rules [-Wstrict-aliasing]
> {return ((const struct sockaddr&)addr);}
> ^~~~
>
> ../protolib/include/protoAddress.h: In member function 'sockaddr&
> ProtoAddress::AccessSockAddr()':
> ../protolib/include/protoAddress.h:149:40: warning: dereferencing type-punned
> pointer will break strict-aliasing rules [-Wstrict-aliasing]
> {return ((struct sockaddr&)addr);}
> ^~~~
>
> ../src/common/mgen.cpp: In member function 'MgenTransport*
> Mgen::JoinGroup(const ProtoAddress&, const char*, UINT16)':
> ../src/common/mgen.cpp:275:20: error: cannot convert 'bool' to
> 'MgenTransport*' in return
> return false;
> ^~~~~
>
> ../src/common/mgen.cpp: In member function 'MgenTransport*
> Mgen::FindMgenTransport(Protocol, UINT16, const ProtoAddress&, bool,
> MgenTransport*)':
> ../src/common/mgen.cpp:335:40: warning: suggest parentheses around '&&'
> within '||' [-Wparentheses]
> if ((next->GetProtocol() == theProtocol) &&
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> (next->srcPort == srcPort) &&
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
>
>
> // ignore events && unconnected udp sockets
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> // have invalid addrs and should match
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> (((!dstAddress.IsValid() &&
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
> !next->dstAddress.IsValid()) && theProtocol == UDP)
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ||
> ~~
> // For tcp ignore events we want to close the
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> // listening socket too which won't have a dst address
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> (theProtocol == TCP && !dstAddress.IsValid())
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ||
> ~~
> (dstAddress.IsValid() &&
> ~~~~~~~~~~~~~~~~~~~~~~~~
> next->dstAddress.IsEqual(dstAddress)))
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Makefile.common:30: recipe for target '../src/common/mgen.o' failed
> make[2]: *** [../src/common/mgen.o] Error 1
--
Martin Michlmayr
Linux for HPE Helion, Hewlett Packard Enterprise