facebook / wangle

Wangle is a framework providing a set of common client/server abstractions for building services in a consistent, modular, and composable way.
Apache License 2.0
3.05k stars 539 forks source link

Build fail on Mac OS X #7

Open evanmeng opened 9 years ago

evanmeng commented 9 years ago

On Mac OS X 10.10.5, when calling make to build wangle, errors generated like:

/Users/yimmeng/repos/devlibs/wangle/wangle/../wangle/channel/HandlerContext-inl.h:413:14: error: no viable conversion from 'Future<void>' to 'Future<folly::Unit>'
      return folly::makeFuture();

I am building wangle with homebrew installed folly (folly: stable 0.48.0 (bottled))

fugalh commented 9 years ago

I'm not sure what homebrew's "stable 0.48.0" corresponds to, but it's likely too old to build wangle. Try building folly from master. You need folly to be newer than this commit https://github.com/facebook/folly/commit/e845ef57f1f368944123e4a50bd4d1616a363efa

evanmeng commented 8 years ago

Hmm, I built folly against master branch according to its instructions in README and got different errors when building wangle.

In file included from /Users/yimmeng/repos/devlibs/wangle/wangle/acceptor/Acceptor.cpp:10:
In file included from /Users/yimmeng/repos/devlibs/wangle/wangle/../wangle/acceptor/Acceptor.h:14:
/Users/yimmeng/repos/devlibs/wangle/wangle/../wangle/acceptor/ConnectionManager.h:63:12: error: no matching function for call to 'make_unique'
    return folly::make_unique<ConnectionManager, Destructor>(
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/yimmeng/repos/devlibs/wangle/wangle/acceptor/Acceptor.cpp:86:53: note: in instantiation of function template specialization
      'wangle::ConnectionManager::makeUnique<folly::EventBase *&, const std::__1::chrono::duration<long long, std::__1::ratio<1, 1000> > &, wangle::Acceptor *>' requested here
  downstreamConnectionManager_ = ConnectionManager::makeUnique(
                                                    ^
/usr/local/include/folly/Memory.h:49:1: note: candidate function [with T = wangle::ConnectionManager, Args = <folly::DelayedDestruction::Destructor, const
      std::__1::chrono::duration<long long, std::__1::ratio<1, 1000> > &, wangle::Acceptor *>] not viable: no known conversion from 'folly::EventBase *' to
      'folly::DelayedDestruction::Destructor' for 1st argument
make_unique(Args&&... args) {
^
/usr/local/include/folly/Memory.h:63:3: note: candidate template ignored: disabled by 'enable_if' [with T = wangle::ConnectionManager, Args =
      <folly::DelayedDestruction::Destructor>]
  std::extent<T>::value != 0, std::unique_ptr<T>>::type
  ^
/usr/local/include/folly/Memory.h:56:1: note: candidate function template not viable: requires single argument 'n', but 3 arguments were provided
make_unique(const size_t n) {
^
4 warnings and 1 error generated.
make[2]: *** [CMakeFiles/wangle.dir/acceptor/Acceptor.cpp.o] Error 1
make[1]: *** [CMakeFiles/wangle.dir/all] Error 2
make: *** [all] Error 2

Some new folly incompatibility?

oh-its-jimjam commented 8 years ago

Don't use folly from homebrew. Always build from master and make sure to remove it from homebrew: brew remove folly. I think I might change this brew recipe to always build from master.