You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Richard Lake (JIRA)" <ji...@apache.org> on 2014/12/11 05:34:12 UTC

[jira] [Created] (MESOS-2189) Build failure on Linux with clang/llvm and libc++

Richard Lake created MESOS-2189:
-----------------------------------

             Summary: Build failure on Linux with clang/llvm and libc++
                 Key: MESOS-2189
                 URL: https://issues.apache.org/jira/browse/MESOS-2189
             Project: Mesos
          Issue Type: Bug
          Components: build, libprocess
    Affects Versions: 0.21.0
         Environment: Centos 6.6, llvm 3.3 or 3.5 (builds fine with GCC 4.9.2)
            Reporter: Richard Lake
            Priority: Minor


Compile with:

CC=clang; CXX=clang++; CXXFLAGS="-stdlib=libc++"; ../configure --disable-java

/bin/sh ../libtool  --tag=CXX   --mode=compile clang++ -DPACKAGE_NAME=\"mesos\" -DPACKAGE_TARNAME=\"mesos\" -DPACKAGE_VERSION=\"0.21.0\" -DPACKAGE_STRING=\"mesos\ 0.21.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"mesos\" -DVERSION=\"0.21.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_PTHREAD=1 -DHAVE_LIBZ=1 -DHAVE_LIBCURL=1 -DHAVE_APR_POOLS_H=1 -DHAVE_LIBAPR_1=1 -DHAVE_SVN_VERSION_H=1 -DHAVE_LIBSVN_SUBR_1=1 -DHAVE_SVN_DELTA_H=1 -DHAVE_LIBSVN_DELTA_1=1 -DHAVE_LIBSASL2=1 -DHAVE_PYTHON=\"2.6\" -DMESOS_HAS_PYTHON=1 -I. -I../../src   -Wall -Werror -DLIBDIR=\"/usr/local/lib\" -DPKGLIBEXECDIR=\"/usr/local/libexec/mesos\" -DPKGDATADIR=\"/usr/local/share/mesos\" -I../../include -I../../3rdparty/libprocess/include -I../../3rdparty/libprocess/3rdparty/stout/include -I../include -I../include/mesos -I../3rdparty/libprocess/3rdparty/boost-1.53.0 -I../3rdparty/libprocess/3rdparty/picojson-4f93734 -I../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src -I../3rdparty/libprocess/3rdparty/glog-0.3.3/src -I../3rdparty/libprocess/3rdparty/glog-0.3.3/src -I../3rdparty/leveldb/include -I../3rdparty/zookeeper-3.4.5/src/c/include -I../3rdparty/zookeeper-3.4.5/src/c/generated  -I../3rdparty/libprocess/3rdparty/protobuf-2.5.0/src -I/usr/include/subversion-1 -I/usr/include/apr-1 -I/usr/include/apr-1.0   -stdlib=libc++ -std=c++11 -MT slave/containerizer/isolators/cgroups/libmesos_no_3rdparty_la-cpushare.lo -MD -MP -MF slave/containerizer/isolators/cgroups/.deps/libmesos_no_3rdparty_la-cpushare.Tpo -c -o slave/containerizer/isolators/cgroups/libmesos_no_3rdparty_la-cpushare.lo `test -f 'slave/containerizer/isolators/cgroups/cpushare.cpp' || echo '../../src/'`slave/containerizer/isolators/cgroups/cpushare.cpp

In file included from ../../src/slave/containerizer/isolators/cgroups/cpushare.cpp:26:
In file included from ../../3rdparty/libprocess/include/process/collect.hpp:7:
In file included from ../../3rdparty/libprocess/include/process/defer.hpp:2:
In file included from ../../3rdparty/libprocess/include/process/c++11/defer.hpp:7:
In file included from ../../3rdparty/libprocess/include/process/deferred.hpp:2:
../../3rdparty/libprocess/include/process/c++11/deferred.hpp:171:385: error: no matching conversion for functional-style cast from 'const
      std::__1::__bind<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > >
      (std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>::*)(const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &) const,
      std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>, mesos::ContainerID &, std::__1::placeholders::__ph<1> &>'
      to 'std::function<void (const Future<list<Nothing, allocator<Nothing> > > &)>'
../../3rdparty/libprocess/include/process/future.hpp:192:56: note: in instantiation of function template specialization
      'process::_Deferred<std::__1::__bind<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > >
      (std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>::*)(const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &) const,
      std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>, mesos::ContainerID &, std::__1::placeholders::__ph<1> &>
      >::operator function<const process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &>' requested here
    return onAny(std::function<void(const Future<T>&)>(deferred));
                                                       ^
../../src/slave/containerizer/isolators/cgroups/cpushare.cpp:506:6: note: in instantiation of function template specialization
      'process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> >
      >::onAny<std::__1::__bind<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > >
      (std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>::*)(const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &) const,
      std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>, mesos::ContainerID &, std::__1::placeholders::__ph<1> &>
      >' requested here
    .onAny(defer(PID<CgroupsCpushareIsolatorProcess>(this),
     ^
/usr/include/c++/v1/functional:1448:5: note: candidate constructor not viable: no known conversion from 'const
      std::__1::__bind<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > >
      (std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>::*)(const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &) const,
      std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>, mesos::ContainerID &, std::__1::placeholders::__ph<1> &>'
      to 'nullptr_t' for 1st argument
    function(nullptr_t) noexcept : __f_(0) {}
    ^
/usr/include/c++/v1/functional:1449:5: note: candidate constructor not viable: no known conversion from 'const
      std::__1::__bind<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > >
      (std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>::*)(const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &) const,
      std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>, mesos::ContainerID &, std::__1::placeholders::__ph<1> &>'
      to 'const std::__1::function<void (const process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>' for 1st argument
    function(const function&);
    ^
/usr/include/c++/v1/functional:1450:5: note: candidate constructor not viable: no known conversion from 'const
      std::__1::__bind<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > >
      (std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>::*)(const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &) const,
      std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>, mesos::ContainerID &, std::__1::placeholders::__ph<1> &>'
      to 'std::__1::function<void (const process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>' for 1st argument
    function(function&&) noexcept;
    ^
/usr/include/c++/v1/functional:1454:41: note: candidate template ignored: disabled by 'enable_if' [with _Fp =
      std::__1::__bind<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > >
      (std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>::*)(const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &) const,
      std::__1::function<process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > (const mesos::ContainerID &, const
      process::Future<std::__1::list<Nothing, std::__1::allocator<Nothing> > > &)>, mesos::ContainerID &, std::__1::placeholders::__ph<1> &>]
                                        __callable<_Fp>::value &&
                                        ^
/usr/include/c++/v1/functional:1460:7: note: candidate constructor template not viable: requires 2 arguments, but 1 was provided
      function(allocator_arg_t, const _Alloc&) noexcept : __f_(0) {}
      ^
/usr/include/c++/v1/functional:1463:7: note: candidate constructor template not viable: requires 3 arguments, but 1 was provided
      function(allocator_arg_t, const _Alloc&, nullptr_t) noexcept : __f_(0) {}
      ^
/usr/include/c++/v1/functional:1465:7: note: candidate constructor template not viable: requires 3 arguments, but 1 was provided
      function(allocator_arg_t, const _Alloc&, const function&);
      ^
/usr/include/c++/v1/functional:1467:7: note: candidate constructor template not viable: requires 3 arguments, but 1 was provided
      function(allocator_arg_t, const _Alloc&, function&&);
      ^
/usr/include/c++/v1/functional:1469:7: note: candidate constructor template not viable: requires at least 3 arguments, but 1 was provided
      function(allocator_arg_t, const _Alloc& __a, _Fp __f,
      ^
/usr/include/c++/v1/functional:1446:5: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
    function() noexcept : __f_(0) {}
    ^
1 error generated.

Note that with the intermediate source I can isolate the problem to the following expansion from deferred.hpp:

  template < typename P0> operator std::function<void( P0)> () const
  {
    if (pid.isNone()) {
      return std::function<void( P0)>(f);  // *** error
    }
    
    Option<UPID> pid_ = pid;
    F f_ = f;
    
    return std::function<void( P0)>(
        [=] ( P0 p0) {
          std::function<void()> f__([=] () { f_( p0); });
          dispatch(pid_.get(), f__);
        });
  }




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)