You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Neil Conway (JIRA)" <ji...@apache.org> on 2016/03/16 23:22:33 UTC
[jira] [Updated] (MESOS-4963) Compile error with GCC 6
[ https://issues.apache.org/jira/browse/MESOS-4963?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Neil Conway updated MESOS-4963:
-------------------------------
Description:
{noformat}
$ head config.log
[...]
/mesos-2/configure --enable-optimize --disable-python CC=ccache /home/vagrant/local/gcc/bin/gcc CXX=ccache /home/vagrant/local/gcc/bin/g++
$ ~/local/gcc/bin/g++ --version
g++ (GCC) 6.0.0 20160227 (experimental)
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ make V=0
make[2]: Entering directory '/home/vagrant/build-mesos-2-gcc6/src'
CXX appc/libmesos_no_3rdparty_la-spec.lo
In file included from /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/shell.hpp:22:0,
from /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os.hpp:56,
from /mesos-2/src/appc/spec.cpp:17:
/mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp: In instantiation of ‘int os::execlp(const char*, T ...) [with T = {const char*, const char*, const char*, char*}]’:
/mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp:371:52: required from here
/mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp:151:18: error: missing sentinel in function call [-Werror=format=]
return ::execlp(file, t...);
~~~~~~~~^~~~~~~~~~~~
cc1plus: all warnings being treated as errors
Makefile:5584: recipe for target 'appc/libmesos_no_3rdparty_la-spec.lo' failed
{noformat}
I'll verify this with a more recent GCC6 snapshot, but assuming it repros, I think we have a few options:
* Have {{os::execlp}} *not* specify a NULL sentinel, and instead have the implementation of {{os::execlp}} always pass {{static_cast<T>(NULL)}} as the last argument to the {{execlp}} call.
* Disable the GCC warning via a pragma or similar means.
was:
{noformat}
$ ~/local/gcc/bin/g++ --version
g++ (GCC) 6.0.0 20160227 (experimental)
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ make V=0
make[2]: Entering directory '/home/vagrant/build-mesos-2-gcc6/src'
CXX appc/libmesos_no_3rdparty_la-spec.lo
In file included from /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/shell.hpp:22:0,
from /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os.hpp:56,
from /mesos-2/src/appc/spec.cpp:17:
/mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp: In instantiation of ‘int os::execlp(const char*, T ...) [with T = {const char*, const char*, const char*, char*}]’:
/mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp:371:52: required from here
/mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp:151:18: error: missing sentinel in function call [-Werror=format=]
return ::execlp(file, t...);
~~~~~~~~^~~~~~~~~~~~
cc1plus: all warnings being treated as errors
Makefile:5584: recipe for target 'appc/libmesos_no_3rdparty_la-spec.lo' failed
{noformat}
I'll verify this with a more recent GCC6 snapshot, but assuming it repros, I think we have a few options:
* Have {{os::execlp}} *not* specify a NULL sentinel, and instead have the implementation of {{os::execlp}} always pass {{static_cast<T>(NULL)}} as the last argument to the {{execlp}} call.
* Disable the GCC warning via a pragma or similar means.
> Compile error with GCC 6
> ------------------------
>
> Key: MESOS-4963
> URL: https://issues.apache.org/jira/browse/MESOS-4963
> Project: Mesos
> Issue Type: Bug
> Components: stout
> Reporter: Neil Conway
> Labels: mesosphere
>
> {noformat}
> $ head config.log
> [...]
> /mesos-2/configure --enable-optimize --disable-python CC=ccache /home/vagrant/local/gcc/bin/gcc CXX=ccache /home/vagrant/local/gcc/bin/g++
> $ ~/local/gcc/bin/g++ --version
> g++ (GCC) 6.0.0 20160227 (experimental)
> Copyright (C) 2016 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions. There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> $ make V=0
> make[2]: Entering directory '/home/vagrant/build-mesos-2-gcc6/src'
> CXX appc/libmesos_no_3rdparty_la-spec.lo
> In file included from /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/shell.hpp:22:0,
> from /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os.hpp:56,
> from /mesos-2/src/appc/spec.cpp:17:
> /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp: In instantiation of ‘int os::execlp(const char*, T ...) [with T = {const char*, const char*, const char*, char*}]’:
> /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp:371:52: required from here
> /mesos-2/3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp:151:18: error: missing sentinel in function call [-Werror=format=]
> return ::execlp(file, t...);
> ~~~~~~~~^~~~~~~~~~~~
> cc1plus: all warnings being treated as errors
> Makefile:5584: recipe for target 'appc/libmesos_no_3rdparty_la-spec.lo' failed
> {noformat}
> I'll verify this with a more recent GCC6 snapshot, but assuming it repros, I think we have a few options:
> * Have {{os::execlp}} *not* specify a NULL sentinel, and instead have the implementation of {{os::execlp}} always pass {{static_cast<T>(NULL)}} as the last argument to the {{execlp}} call.
> * Disable the GCC warning via a pragma or similar means.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)