You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by "Till Toenshoff (JIRA)" <ji...@apache.org> on 2014/02/14 00:20:23 UTC
[jira] [Comment Edited] (MESOS-1000) Clang build broken on 0.18.0
master
[ https://issues.apache.org/jira/browse/MESOS-1000?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13900852#comment-13900852 ]
Till Toenshoff edited comment on MESOS-1000 at 2/13/14 11:19 PM:
-----------------------------------------------------------------
Re 3) I think we are missing a deferred overload for C++11. Adding a const Future<Option<int>>& to the parameter list of "exited" as well as adding a lambda::_1 to the defer call mentioned above fixes this particular issue. In other words, defer on a future must have its type supplied in the list of parameters for the current C++11 version.
Clang nagging all around;
4) mesos_containerizer.cpp:818 needs to get some extra braces:
(future.isFailed() ? future.failure() : "discarded future")
5) ../../src/slave/containerizer/mesos_containerizer.cpp:397:6: note: in instantiation of function template specialization 'process::Future<Nothing>::then<process::_Deferred<std::__1::__bind<process::Future<int>
(std::__1::function<process::Future<int> (const mesos::ContainerID &, const mesos::ExecutorInfo &, std::__1::function<int ()> &, const mesos::SlaveID &, bool, int)>::*)(const mesos::ContainerID &, const
mesos::ExecutorInfo &, std::__1::function<int ()> &, const mesos::SlaveID &, bool, int) const, std::__1::function<process::Future<int> (const mesos::ContainerID &, const mesos::ExecutorInfo &,
std::__1::function<int ()> &, const mesos::SlaveID &, bool, int)>, mesos::ContainerID &, mesos::ExecutorInfo &, std::__1::function<int ()> &, mesos::SlaveID &, bool &, int &> > >' requested here
.then(defer(self(),
At this point I stopped patching, hoping that RR 18090 will fix things.
was (Author: tillt):
Re 3) I think we are missing a deferred overload for C++11. Adding a const Future<Option<int>>& to the parameter list of "exited" as well as adding a lambda::_1 to the defer call mentioned above fixes this particular issue. In other words, defer on a future must have its type supplied in the list of parameters for the current C++11 version.
Which then opens a hole new can of worms - clang nagging all around;
4) mesos_containerizer.cpp:818 needs to get some extra braces:
(future.isFailed() ? future.failure() : "discarded future")
5) ../../src/slave/containerizer/mesos_containerizer.cpp:397:6: note: in instantiation of function template specialization 'process::Future<Nothing>::then<process::_Deferred<std::__1::__bind<process::Future<int>
(std::__1::function<process::Future<int> (const mesos::ContainerID &, const mesos::ExecutorInfo &, std::__1::function<int ()> &, const mesos::SlaveID &, bool, int)>::*)(const mesos::ContainerID &, const
mesos::ExecutorInfo &, std::__1::function<int ()> &, const mesos::SlaveID &, bool, int) const, std::__1::function<process::Future<int> (const mesos::ContainerID &, const mesos::ExecutorInfo &,
std::__1::function<int ()> &, const mesos::SlaveID &, bool, int)>, mesos::ContainerID &, mesos::ExecutorInfo &, std::__1::function<int ()> &, mesos::SlaveID &, bool &, int &> > >' requested here
.then(defer(self(),
At this point I stopped patching, hoping that RR 18090 will fix things.
> Clang build broken on 0.18.0 master
> -----------------------------------
>
> Key: MESOS-1000
> URL: https://issues.apache.org/jira/browse/MESOS-1000
> Project: Mesos
> Issue Type: Bug
> Components: libprocess
> Affects Versions: 0.18.0
> Environment: Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
> Reporter: Till Toenshoff
> Labels: clang, stout
>
> There are at least three new issues preventing mesos to build on clang.
> 1. ../../src/slave/containerizer/mesos_containerizer.hpp:174:8: error: 'mesos::internal::slave::MesosContainerizerProcess::exited' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
> That one is rather easy to overcome; simply add something like the following to that header;
> // Prevent clang warning on hidden overloaded virtual function.
> using process::ProcessBase::exited;
> 2. ../../src/slave/containerizer/launcher.cpp:120:12: error: conversion from 'Unreachable' to 'Try<pid_t>' is ambiguous
> Can overcome by a nasty but simple disambiguation of the returned value by updating that line towards:
> static_cast<Try<int> >(UNREACHABLE());
> In this case, I guess it would be better to revisit the Unreachable implementation.
> 3. ../../src/slave/containerizer/mesos_containerizer.cpp:220:18: error: no matching function for call to 'defer'
> For that one, I am still trying to find out which overload of defer would be the best match and hence should possibly be updated accordingly.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)