GithubHelp home page GithubHelp logo

facebook / proxygen Goto Github PK

View Code? Open in Web Editor NEW
8.0K 485.0 1.5K 22.3 MB

A collection of C++ HTTP libraries including an easy to use HTTP server.

License: Other

C++ 90.21% Shell 0.51% Python 6.37% C 0.12% CMake 2.78% Dockerfile 0.02%

proxygen's Introduction

Proxygen: Facebook's C++ HTTP Libraries

Support Ukraine Linux Build Status macOS Build Status

This project comprises the core C++ HTTP abstractions used at Facebook. Internally, it is used as the basis for building many HTTP servers, proxies, and clients. This release focuses on the common HTTP abstractions and our simple HTTPServer framework. Future releases will provide simple client APIs as well. The framework supports HTTP/1.1, SPDY/3, SPDY/3.1, HTTP/2, and HTTP/3. The goal is to provide a simple, performant, and modern C++ HTTP library.

We have a Google group for general discussions at https://groups.google.com/d/forum/facebook-proxygen.

The original blog post also has more background on the project.

Learn More in This Intro Video

Explain Like Iโ€™m 5: Proxygen

Installing

Note that currently this project has been tested on Ubuntu 18.04 and Mac OSX although it likely works on many other platforms.

You will need at least 3 GiB of memory to compile proxygen and its dependencies.

Easy Install

Just run ./build.sh from the proxygen/ directory to get and build all the dependencies and proxygen. You can run the tests manually with cd _build/ && make test. Then run ./install.sh to install it. You can remove the temporary build directory (_build) and ./build.sh && ./install.sh to rebase the dependencies, and then rebuild and reinstall proxygen.

Other Platforms

If you are running on another platform, you may need to install several packages first. Proxygen and folly are all Autotools based projects.

Introduction

Directory structure and contents:

Directory Purpose
proxygen/external/ Contains non-installed 3rd-party code proxygen depends on.
proxygen/lib/ Core networking abstractions.
proxygen/lib/http/ HTTP specific code. (including HTTP/2 and HTTP/3)
proxygen/lib/services/ Connection management and server code.
proxygen/lib/utils/ Miscellaneous helper code.
proxygen/httpserver/ Contains code wrapping proxygen/lib/ for building simple C++ http servers. We recommend building on top of these APIs.

Architecture

The central abstractions to understand in proxygen/lib are the session, codec, transaction, and handler. These are the lowest level abstractions, and we don't generally recommend building off of these directly.

When bytes are read off the wire, the HTTPCodec stored inside HTTPSession parses these into higher-level objects and associates with it a transaction identifier. The codec then calls into HTTPSession which is responsible for maintaining the mapping between transaction identifier and HTTPTransaction objects. Each HTTP request/response pair has a separate HTTPTransaction object. Finally, HTTPTransaction forwards the call to a handler object which implements HTTPTransaction:: Handler. The handler is responsible for implementing business logic for the request or response.

The handler then calls back into the transaction to generate egress (whether the egress is a request or response). The call flows from the transaction back to the session, which uses the codec to convert the higher-level semantics of the particular call into the appropriate bytes to send on the wire.

The same handler and transaction interfaces are used to both create requests and handle responses. The API is generic enough to allow both. HTTPSession is specialized slightly differently depending on whether you are using the connection to issue or respond to HTTP requests.

Core Proxygen Architecture

Moving into higher levels of abstraction, proxygen/HTTP server has a simpler set of APIs and is the recommended way to interface with proxygen when acting as a server if you don't need the full control of the lower level abstractions.

The basic components here are HTTPServer, RequestHandlerFactory, and RequestHandler. An HTTPServer takes some configuration and is given a RequestHandlerFactory. Once the server is started, the installed RequestHandlerFactory spawns a RequestHandler for each HTTP request. RequestHandler is a simple interface users of the library implement. Subclasses of RequestHandler should use the inherited protected member ResponseHandler* downstream_ to send the response.

Using it

Proxygen is a library. After installing it, you can build your C++ server. Try cd ing to the directory containing the echo server at proxygen/httpserver/samples/echo/.

After building proxygen you can start the echo server with _build/proxygen/httpserver/proxygen_echo and verify it works using curl in a different terminal:

$ curl -v http://localhost:11000/
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 11000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:11000
> Accept: */*
>
< HTTP/1.1 200 OK
< Request-Number: 1
< Date: Thu, 30 Oct 2014 17:07:36 GMT
< Connection: keep-alive
< Content-Length: 0
<
* Connection #0 to host localhost left intact

You can find other samples:

  • a simple server that supports HTTP/2 server push (_build/proxygen/httpserver/proxygen_push),
  • a simple server for static files (_build/proxygen/httpserver/proxygen_static)
  • a simple fwdproxy (_build/proxygen/httpserver/proxygen_proxy)
  • a curl-like client (_build/proxygen/httpclient/samples/curl/proxygen_curl)

QUIC and HTTP/3

Proxygen supports HTTP/3!

It depends on Facebook's mvfst library for the IETF QUIC transport implementation.

This comes with a handy command-line utility that can be used as an HTTP/3 server and client.

Sample usage:

_build/proxygen/httpserver/hq --mode=server
_build/proxygen/httpserver/hq --mode=client --path=/

The utility supports the qlog logging format; just start the server with the --qlogger_path option and many knobs to tune both the quic transport and the http layer.

Documentation

We use Doxygen for Proxygen's internal documentation. You can generate a copy of these docs by running doxygen Doxyfile from the project root. You'll want to look at html/namespaceproxygen.html to start. This will also generate folly documentation.

License

See LICENSE.

Contributing

Contributions to Proxygen are more than welcome. Read the guidelines in CONTRIBUTING.md. Make sure you've signed the CLA before sending in a pull request.

Whitehat

Facebook has a bounty program for the safe disclosure of security bugs. If you find a vulnerability, please go through the process outlined on that page and do not file a public issue.

proxygen's People

Contributors

afrind avatar ahornby avatar benyl avatar bolekk avatar bschlinker avatar chadaustin avatar claudiugh avatar dcsommer avatar fanzeyi avatar hanidamlaj avatar jbeshay avatar junqiwang avatar knekritz avatar kvtsoy avatar lnicco avatar lukaspiatkowski avatar mjoras avatar oesh avatar orvid avatar r-barnes avatar shri-khare avatar simpkins avatar siyengar avatar snarkmaster avatar viswanathgs avatar w-o-o avatar wez avatar xavierd avatar yangchi avatar yfeldblum avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

proxygen's Issues

SSL errors

proxygen: fe1070f
wangle: e15b84fd02ba8135927d54e8e586e6d8cc275f96
folly: 47f0d3846c949a085da9dc3e33062b4537172edb

When I modified the sample echo server to except ssl i get the following:

F1028 12:32:43.463060 5326 Acceptor.cpp:74] Check failed: sslCtxManager_->>getDefaultSSLCtx()
*** Check failure stack trace: ***
@ 0x7f886d763d9d (unknown)
@ 0x7f886d765c50 (unknown)
@ 0x7f886d763972 (unknown)
@ 0x7f886d76666e (unknown)
@ 0x7f886e13a664 wangle::Acceptor::init()
@ 0x7f886e0b9783 proxygen::HTTPAcceptor::init()
@ 0x7f886e0b7336 proxygen::AcceptorFactory::newAcceptor()
@ 0x7f886e150d20 wangle::ServerWorkerPool::threadStarted()
@ 0x7f886e15270e wangle::ServerWorkerPool::threadPreviouslyStarted()
@ 0x7f886e160cf5 wangle::ThreadPoolExecutor::addObserver()
@ 0x7f886e0b257e wangle::ServerBootstrap<>::group()
@ 0x7f886e0a32af proxygen::HTTPServer::start()
@ 0x4195f6 _ZZ4mainENKUlvE_clEv
@ 0x41afc6 >_ZNSt12_Bind_simpleIFZ4mainEUlvE_vEE9_M_invokeIIEEEvSt12_Index_tupleIIXspT_EEE
@ 0x41aef8 _ZNSt12_Bind_simpleIFZ4mainEUlvE_vEEclEv
@ 0x41ae66 _ZNSt6thread5_ImplISt12_Bind_simpleIFZ4mainEUlvE_vEEE6_M_runEv
@ 0x7f886d0abc00 (unknown)
@ 0x7f886c8c7444 (unknown)
@ 0x7f886c60d36d (unknown)
Aborted

here is what I did to the echo server:

  std::vector<HTTPServer::IPConfig> IPs;
  IPs.push_back(HTTPServer::IPConfig(SocketAddress(FLAGS_ip, FLAGS_http_port, true), Protocol::HTTP));
  IPs.push_back(HTTPServer::IPConfig(SocketAddress(FLAGS_ip, FLAGS_spdy_port, true), Protocol::SPDY));
  HTTPServer::IPConfig http2Test(SocketAddress(FLAGS_ip, FLAGS_spdy_port, true), Protocol::HTTP2);
  SSLContextConfig sslCC;
  sslCC.setCertificate("server.crt", "server.key","server.csr");
  http2Test.sslConfigs.push_back(sslCC);
  IPs.push_back(http2Test);

and this is what i used to create the certificate key and password

openssl genrsa -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 366 -in server.csr -signkey server.key -out server.crt

is this a bug or am I doing it wrong?

It's impossible to upgrade connection asynchroniously

If the response wasn't sent inside RequestHandler::onRequest and is sent later, RequestHandler will recieve EOM instead of upgrade.

I. e. this scenario does not work as expected:

void EchoHandler::onRequest(std::unique_ptr<HTTPMessage> headers) noexcept {
    auto ev = folly::EventBaseManager::get()->getExistingEventBase();
    std::thread([=](){
        //Do some logic here
        ev->runInEventBaseThread([=](){
            auto builder = make_unique<ResponseBuilder>(downstream_);
            builder->acceptUpgradeRequest(ResponseBuilder::UpgradeType::HTTP_UPGRADE, "websocket");
        });
    }).detach();
}

boost_thread not found

Hi, I am trying to compile proxygen on ubuntu64 with boost installed. I am having a problem with boost_thread. This library is there in /usr/lib however the building system cmake does not find it.
I set BOOST_ROOT but the same error occured.
Can you help me?

Thanks

Here is the output:

Reading package lists...
Building dependency tree...
Reading state information...
autoconf-archive is already the newest version.
bison is already the newest version.
cmake is already the newest version.
flex is already the newest version.
g++ is already the newest version.
gperf is already the newest version.
libcap-dev is already the newest version.
libevent-dev is already the newest version.
libnuma-dev is already the newest version.
libsasl2-dev is already the newest version.
libsnappy-dev is already the newest version.
libtool is already the newest version.
pkg-config is already the newest version.
wget is already the newest version.
libboost-all-dev is already the newest version.
libjemalloc-dev is already the newest version.
libkrb5-dev is already the newest version.
libssl-dev is already the newest version.
unzip is already the newest version.
The following packages were automatically installed and are no longer required:
  linux-headers-4.2.0-22 linux-headers-4.2.0-22-generic
  linux-image-4.2.0-22-generic linux-image-extra-4.2.0-22-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libgoogle-glog-dev is already the newest version.
The following packages were automatically installed and are no longer required:
  linux-headers-4.2.0-22 linux-headers-4.2.0-22-generic
  linux-image-4.2.0-22-generic linux-image-extra-4.2.0-22-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libgflags-dev is already the newest version.
The following packages were automatically installed and are no longer required:
  linux-headers-4.2.0-22 linux-headers-4.2.0-22-generic
  linux-image-4.2.0-22-generic linux-image-extra-4.2.0-22-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libdouble-conversion-dev is already the newest version.
The following packages were automatically installed and are no longer required:
  linux-headers-4.2.0-22 linux-headers-4.2.0-22-generic
  linux-image-4.2.0-22-generic linux-image-extra-4.2.0-22-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Already on 'master'
Your branch is up-to-date with 'origin/master'.
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking if g++ supports C++0x features without additional flags... no
checking if g++ supports C++0x features with -std=c++0x... yes
checking if g++ supports C++0x features with -std=gnu++0x... yes
checking for main in -lglog... yes
checking for glog viability... yes
checking for main in -lgflags... yes
checking for gflags viability... yes
checking for SSL_ctrl in -lssl... yes
checking for boostlib >= 1.51.0... yes
checking whether the Boost::Context library is available... yes
checking for exit in -lboost_context... yes
checking whether the Boost::Program_Options library is available... yes
checking for exit in -lboost_program_options... yes
checking whether the Boost::Thread library is available... yes
checking for exit in -lboost_thread... yes
checking whether the Boost::Regex library is available... yes
checking for exit in -lboost_regex... yes
checking whether the Boost::System library is available... yes
checking for exit in -lboost_system... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... yes
checking whether the Boost::Chrono library is available... yes
checking for exit in -lboost_chrono... yes
checking for python... /usr/bin/python
checking for python version... 2.7
checking for python platform... linux2
checking for python script directory... ${prefix}/lib/python2.7/dist-packages
checking for python extension module directory... ${exec_prefix}/lib/python2.7/dist-packages
checking for ANSI C header files... (cached) yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking features.h usability... yes
checking features.h presence... yes
checking for features.h... yes
checking for inttypes.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking mutex.h usability... no
checking mutex.h presence... no
checking for mutex.h... no
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking byteswap.h usability... yes
checking byteswap.h presence... yes
checking for byteswap.h... yes
checking bits/functexcept.h usability... yes
checking bits/functexcept.h presence... yes
checking for bits/functexcept.h... yes
checking bits/c++config.h usability... yes
checking bits/c++config.h presence... yes
checking for bits/c++config.h... yes
checking double-conversion/double-conversion.h usability... yes
checking double-conversion/double-conversion.h presence... yes
checking for double-conversion/double-conversion.h... yes
checking for ceil in -ldouble-conversion... yes
checking for event_set in -levent... yes
checking for xallocx in -ljemalloc... yes
checking for stdbool.h that conforms to C99... no
checking for _Bool... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for working volatile... yes
checking for __int128... yes
checking for ptrdiff_t... yes
checking for pthread_spinlock_t... yes
checking for ifunc support... yes
checking for final and override support... yes
checking for std::this_thread::sleep_for... yes
checking for constexpr strlen... yes
checking for libc++... no
checking for c++11 atomic support without GNU Atomic library... yes
checking for usable std::is_trivially_copyable... yes
checking gflags namespace... gflags
checking for weak symbol support... yes
checking for unaligned reads support... yes
checking for vsnprintf reporting bad format strings... no
checking for library containing cplus_demangle_v3_callback... -liberty
checking for library containing clock_gettime... none required
checking for pthread_atfork support... yes
checking for XSI style strerror_r support... no
checking for ext/random and __gnu_cxx::sfmt19937... yes
checking for VLA (variable-length array) support... yes
checking for getdelim... yes
checking for gettimeofday... yes
checking for memmove... yes
checking for memset... yes
checking for pow... yes
checking for strerror... yes
checking for pthread_yield... no
checking for malloc_size... no
checking for malloc_usable_size... yes
checking for memrchr... yes
checking for pipe2... yes
checking sched.h usability... yes
checking sched.h presence... yes
checking for sched.h... yes
checking for sched_yield... yes
checking lz4.h usability... yes
checking lz4.h presence... yes
checking for lz4.h... yes
checking for LZ4_decompress_safe in -llz4... yes
checking snappy.h usability... yes
checking snappy.h presence... yes
checking for snappy.h... yes
checking for main in -lsnappy... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for main in -lz... yes
checking lzma.h usability... yes
checking lzma.h presence... yes
checking for lzma.h... yes
checking for main in -llzma... yes
checking zstd.h usability... no
checking zstd.h presence... no
checking for zstd.h... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating test/Makefile
config.status: creating test/function_benchmark/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing folly-config.h commands
config.status: creating folly-config.h - prefix FOLLY for config.h defines
config.status: folly-config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
make  all-recursive
make[1]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly'
Making all in .
make[2]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly'
make[2]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly'
Making all in test
make[2]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
Making all in .
make[3]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
Making all in function_benchmark
make[3]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test/function_benchmark'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test/function_benchmark'
make[2]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
make[1]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly'
Making install in .
make[1]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly'
make[2]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly'
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ./libtool   --mode=install /usr/bin/install -c   libfolly.la libfollybenchmark.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libfolly.so.57.0.0 /usr/local/lib/libfolly.so.57.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libfolly.so.57.0.0 libfolly.so.57 || { rm -f libfolly.so.57 && ln -s libfolly.so.57.0.0 libfolly.so.57; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libfolly.so.57.0.0 libfolly.so || { rm -f libfolly.so && ln -s libfolly.so.57.0.0 libfolly.so; }; })
libtool: install: /usr/bin/install -c .libs/libfolly.lai /usr/local/lib/libfolly.la
libtool: install: warning: relinking `libfollybenchmark.la'
libtool: install: (cd /home/marcos/project/cpp/proxygen/proxygen/folly/folly; /bin/bash /home/marcos/project/cpp/proxygen/proxygen/folly/folly/libtool  --tag CXX --mode=relink g++ -std=gnu++0x -g -O2 -lboost_context -lboost_program_options -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -lboost_chrono -version-info 57:0:0 -o libfollybenchmark.la -rpath /usr/local/lib Benchmark.lo libfolly.la -llzma -lz -lsnappy -llz4 -liberty -ljemalloc -levent -ldouble-conversion -lssl -lgflags -lglog )
libtool: relink: g++  -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginS.o  .libs/Benchmark.o   -lboost_context -lboost_program_options -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -lboost_chrono -L/usr/local/lib -lfolly -llzma -lz -lsnappy -llz4 -liberty -ljemalloc -levent -ldouble-conversion -lssl -lgflags -lglog -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/5/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o  -O2   -Wl,-soname -Wl,libfollybenchmark.so.57 -o .libs/libfollybenchmark.so.57.0.0
libtool: install: /usr/bin/install -c .libs/libfollybenchmark.so.57.0.0T /usr/local/lib/libfollybenchmark.so.57.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libfollybenchmark.so.57.0.0 libfollybenchmark.so.57 || { rm -f libfollybenchmark.so.57 && ln -s libfollybenchmark.so.57.0.0 libfollybenchmark.so.57; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libfollybenchmark.so.57.0.0 libfollybenchmark.so || { rm -f libfollybenchmark.so && ln -s libfollybenchmark.so.57.0.0 libfollybenchmark.so; }; })
libtool: install: /usr/bin/install -c .libs/libfollybenchmark.lai /usr/local/lib/libfollybenchmark.la
libtool: install: /usr/bin/install -c .libs/libfolly.a /usr/local/lib/libfolly.a
libtool: install: chmod 644 /usr/local/lib/libfolly.a
libtool: install: ranlib /usr/local/lib/libfolly.a
libtool: install: /usr/bin/install -c .libs/libfollybenchmark.a /usr/local/lib/libfollybenchmark.a
libtool: install: chmod 644 /usr/local/lib/libfollybenchmark.a
libtool: install: ranlib /usr/local/lib/libfollybenchmark.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
 /bin/mkdir -p '/usr/local/include/folly'
 /usr/bin/install -c -m 644  ApplyTuple.h Arena.h Arena-inl.h Assume.h AtomicBitSet.h AtomicHashArray.h AtomicHashArray-inl.h AtomicHashMap.h AtomicHashMap-inl.h AtomicLinkedList.h AtomicStruct.h AtomicUnorderedMap.h CppAttributes.h Baton.h Benchmark.h Bits.h Checksum.h ConcurrentSkipList.h ConcurrentSkipList-inl.h ContainerTraits.h Conv.h CpuId.h CPortability.h Demangle.h DiscriminatedPtr.h DynamicConverter.h dynamic.h dynamic-inl.h Exception.h ExceptionWrapper.h Executor.h EvictingCacheMap.h SparseByteSet.h FBString.h FBVector.h File.h FileUtil.h Fingerprint.h folly-config.h Foreach.h '/usr/local/include/folly/.'
 /usr/bin/install -c -m 644  FormatArg.h FormatTraits.h Format.h Format-inl.h GroupVarint.h Hash.h IPAddress.h IPAddressV4.h IPAddressV6.h IPAddressException.h IndexedMemPool.h IntrusiveList.h json.h Lazy.h LifoSem.h Likely.h Logging.h MacAddress.h Malloc.h MapUtil.h Memory.h MemoryMapping.h MicroSpinLock.h MoveWrapper.h MPMCPipeline.h MPMCQueue.h Optional.h PackedSyncPtr.h Padded.h PicoSpinLock.h Portability.h Preprocessor.h ProducerConsumerQueue.h Random.h Random-inl.h Range.h RWSpinLock.h ScopeGuard.h SharedMutex.h Singleton.h '/usr/local/include/folly/.'
 /bin/mkdir -p '/usr/local/include/folly/futures'
 /usr/bin/install -c -m 644  futures/Barrier.h futures/ThreadedExecutor.h futures/DrivableExecutor.h futures/Future-pre.h futures/helpers.h futures/Future.h futures/Future-inl.h futures/FutureException.h futures/InlineExecutor.h futures/ManualExecutor.h futures/OpaqueCallbackShunt.h futures/Promise-inl.h futures/Promise.h futures/QueuedImmediateExecutor.h futures/ScheduledExecutor.h futures/SharedPromise.h futures/SharedPromise-inl.h futures/ThreadWheelTimekeeper.h futures/Timekeeper.h futures/Try-inl.h futures/Try.h futures/Unit.h '/usr/local/include/folly/futures'
 /bin/mkdir -p '/usr/local/include/folly/experimental'
 /usr/bin/install -c -m 644  experimental/AutoTimer.h experimental/Bits.h experimental/BitVectorCoding.h experimental/ExecutionObserver.h experimental/EliasFanoCoding.h experimental/EventCount.h experimental/Instructions.h experimental/FunctionScheduler.h experimental/FutureDAG.h experimental/JSONSchema.h experimental/LockFreeRingBuffer.h experimental/NestedCommandLineApp.h experimental/ProgramOptions.h experimental/ReadMostlySharedPtr.h experimental/Select64.h experimental/StringKeyedCommon.h experimental/StringKeyedUnorderedMap.h experimental/StringKeyedUnorderedSet.h experimental/TestUtil.h experimental/TLRefCount.h experimental/TupleOps.h '/usr/local/include/folly/experimental'
 /bin/mkdir -p '/usr/local/include/folly/experimental/fibers'
 /usr/bin/install -c -m 644  experimental/fibers/AddTasks.h experimental/fibers/AddTasks-inl.h experimental/fibers/Baton.h experimental/fibers/Baton-inl.h experimental/fibers/BoostContextCompatibility.h experimental/fibers/EventBaseLoopController.h experimental/fibers/EventBaseLoopController-inl.h experimental/fibers/Fiber.h experimental/fibers/Fiber-inl.h experimental/fibers/FiberManager.h experimental/fibers/FiberManager-inl.h experimental/fibers/FiberManagerMap.h experimental/fibers/ForEach.h experimental/fibers/ForEach-inl.h experimental/fibers/GenericBaton.h experimental/fibers/GuardPageAllocator.h experimental/fibers/LoopController.h experimental/fibers/Promise.h experimental/fibers/Promise-inl.h experimental/fibers/SimpleLoopController.h experimental/fibers/TimedMutex.h experimental/fibers/TimedMutex-inl.h experimental/fibers/TimeoutController.h experimental/fibers/traits.h experimental/fibers/WhenN.h experimental/fibers/WhenN-inl.h '/usr/local/include/folly/experimental/fibers'
 /bin/mkdir -p '/usr/local/include/folly/futures/detail'
 /usr/bin/install -c -m 644  futures/detail/Core.h futures/detail/FSM.h futures/detail/Types.h '/usr/local/include/folly/futures/detail'
 /bin/mkdir -p '/usr/local/include/folly/experimental/io'
 /usr/bin/install -c -m 644  experimental/io/FsUtil.h experimental/io/HugePages.h '/usr/local/include/folly/experimental/io'
 /bin/mkdir -p '/usr/local/include/folly/test'
 /usr/bin/install -c -m 644  test/FBStringTestBenchmarks.cpp.h test/FBVectorTestBenchmarks.cpp.h test/SynchronizedTestLib.h test/SynchronizedTestLib-inl.h test/TestUtils.h '/usr/local/include/folly/test'
 /bin/mkdir -p '/usr/local/include/folly/gen'
 /usr/bin/install -c -m 644  gen/Base.h gen/Base-inl.h gen/Combine.h gen/Combine-inl.h gen/Core.h gen/Core-inl.h gen/File.h gen/File-inl.h gen/Parallel.h gen/Parallel-inl.h gen/ParallelMap.h gen/ParallelMap-inl.h gen/String.h gen/String-inl.h '/usr/local/include/folly/gen'
 /bin/mkdir -p '/usr/local/include/folly/io/async/test'
 /usr/bin/install -c -m 644  io/async/test/AsyncSSLSocketTest.h io/async/test/BlockingSocket.h io/async/test/MockAsyncSocket.h io/async/test/MockAsyncServerSocket.h io/async/test/MockAsyncSSLSocket.h io/async/test/MockAsyncTransport.h io/async/test/MockAsyncUDPSocket.h io/async/test/SocketPair.h io/async/test/TimeUtil.h io/async/test/UndelayedDestruction.h io/async/test/Util.h '/usr/local/include/folly/io/async/test'
 /bin/mkdir -p '/usr/local/include/folly/io/async'
 /usr/bin/install -c -m 644  io/async/AsyncPipe.h io/async/AsyncTimeout.h io/async/AsyncTransport.h io/async/AsyncUDPServerSocket.h io/async/AsyncUDPSocket.h io/async/AsyncServerSocket.h io/async/AsyncSignalHandler.h io/async/AsyncSocket.h io/async/AsyncSocketBase.h io/async/AsyncSSLSocket.h io/async/AsyncSocketException.h io/async/DelayedDestructionBase.h io/async/DelayedDestruction.h io/async/EventBase.h io/async/EventBaseLocal.h io/async/EventBaseManager.h io/async/EventFDWrapper.h io/async/EventHandler.h io/async/EventUtil.h io/async/NotificationQueue.h io/async/HHWheelTimer.h io/async/Request.h io/async/SSLContext.h io/async/ScopedEventBaseThread.h io/async/TimeoutManager.h '/usr/local/include/folly/io/async'
 /bin/mkdir -p '/usr/local/include/folly/stats'
 /usr/bin/install -c -m 644  stats/BucketedTimeSeries-defs.h stats/BucketedTimeSeries.h stats/Histogram-defs.h stats/Histogram.h stats/MultiLevelTimeSeries-defs.h stats/MultiLevelTimeSeries.h stats/TimeseriesHistogram-defs.h stats/TimeseriesHistogram.h '/usr/local/include/folly/stats'
 /bin/mkdir -p '/usr/local/include/folly/detail'
 /usr/bin/install -c -m 644  detail/AtomicHashUtils.h detail/AtomicUnorderedMapUtils.h detail/BitIteratorDetail.h detail/BitsDetail.h detail/CacheLocality.h detail/ChecksumDetail.h detail/Clock.h detail/DiscriminatedPtrDetail.h detail/ExceptionWrapper.h detail/FileUtilDetail.h detail/FingerprintPolynomial.h detail/FunctionalExcept.h detail/Futex.h detail/GroupVarintDetail.h detail/IPAddress.h detail/Malloc.h detail/MemoryIdler.h detail/MPMCPipelineDetail.h detail/RangeCommon.h detail/RangeSse42.h detail/Sleeper.h detail/SlowFingerprint.h detail/SpinLockImpl.h detail/Stats.h detail/ThreadLocalDetail.h detail/TurnSequencer.h detail/UncaughtExceptionCounter.h '/usr/local/include/folly/detail'
 /usr/bin/install -c -m 644  Singleton-inl.h SmallLocks.h small_vector.h SocketAddress.h sorted_vector_types.h SpinLock.h SpookyHashV1.h SpookyHashV2.h String.h String-inl.h Subprocess.h Synchronized.h ThreadCachedArena.h ThreadCachedInt.h ThreadLocal.h ThreadName.h TimeoutQueue.h Traits.h Unicode.h Uri.h Uri-inl.h Varint.h VersionCheck.h '/usr/local/include/folly/.'
 /bin/mkdir -p '/usr/local/include/folly/io'
 /usr/bin/install -c -m 644  io/Compression.h io/Cursor.h io/IOBuf.h io/IOBufQueue.h io/RecordIO.h io/RecordIO-inl.h io/TypedIOBuf.h io/ShutdownSocketSet.h '/usr/local/include/folly/io'
 /bin/mkdir -p '/usr/local/include/folly/portability'
 /usr/bin/install -c -m 644  portability/Syscall.h '/usr/local/include/folly/portability'
 /bin/mkdir -p '/usr/local/include/folly/test/function_benchmark'
 /usr/bin/install -c -m 644  test/function_benchmark/benchmark_impl.h test/function_benchmark/test_functions.h '/usr/local/include/folly/test/function_benchmark'
make[2]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly'
make[1]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly'
Making install in test
make[1]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
Making install in .
make[2]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
make[3]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
make[2]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
Making install in function_benchmark
make[2]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test/function_benchmark'
make[3]: Entering directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test/function_benchmark'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test/function_benchmark'
make[2]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test/function_benchmark'
make[1]: Leaving directory '/home/marcos/project/cpp/proxygen/proxygen/folly/folly/test'
Already on 'master'
Your branch is up-to-date with 'origin/master'.
-- The C compiler identification is GNU 5.2.1
-- The CXX compiler identification is GNU 5.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at /usr/local/share/cmake-3.4/Modules/FindBoost.cmake:1247 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.55.0

  Boost include path: /usr/local/include

  Could not find the following Boost libraries:

          boost_thread

  Some (but not all) of the required Boost libraries were found.  You may
  need to install these additional Boost libraries.  Alternatively, set
  BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT
  to the location of Boost.
Call Stack (most recent call first):
  CMakeLists.txt:18 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/marcos/project/cpp/proxygen/proxygen/wangle/wangle/CMakeFiles/CMakeOutput.log".
See also "/home/marcos/project/cpp/proxygen/proxygen/wangle/wangle/CMakeFiles/CMakeError.log".

Include files missed during install

In proxygen/proxygen/lib/http/Makefile.am:
nobase_libproxygenhttp_HEADERS is missing the following two headers:
session/AckLatencyEvent.h
session/TTLBAStats.h

I am trying to build a HTTPClient using the low level Proxygen APIs (HTTPTransaction, HTTPUpstreamSession, HTTPConnect) and my build fails due to those missing headers.

Connection reset problem on Echo sample

After compiling latest master branch, I ran echo server and got connection reset.
Perviously it was OK.
Below is the response.

* About to connect() to localhost port 11000 (#0)
*   Trying 127.0.0.1...
* Adding handle: conn: 0x87e5ad8
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x87e5ad8) send_pipe: 1, recv_pipe: 0
* Connected to localhost (127.0.0.1) port 11000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.33.0
> Host: localhost:11000
> Accept: */*
> 
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer

PIC register clobbered by 'ebx' in 'asm'

This maybe a dup issue:

In file included from Bits.cpp:19:0:
./../folly/CpuId.h: In function 'int (* {anonymous}::folly_popcount_ifunc())(unsigned int)':
./../folly/CpuId.h:49:62: error: PIC register clobbered by 'ebx' in 'asm'
asm("cpuid" : "=a"(n) : "a"(0) : "ebx", "edx", "ecx");
^
./../folly/CpuId.h:51:65: error: PIC register clobbered by 'ebx' in 'asm'
asm("cpuid" : "=c"(f1c_), "=d"(f1d_) : "a"(1) : "ebx");

DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17
DISTRIB_CODENAME=qiana
DISTRIB_DESCRIPTION="Linux Mint 17 Qiana"
NAME="Ubuntu"
VERSION="14.04, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04 LTS"
VERSION_ID="14.04"

gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2

deps.sh meet compile error in Ubuntu 14.10

at folly/folly/io/async/EventBase.cpp

Error message:

depbase=echo io/async/EventBase.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventBase.lo -MD -MP -MF $depbase.Tpo -c -o io/async/EventBase.lo io/async/EventBase.cpp &&
mv -f $depbase.Tpo $depbase.Plo
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventBase.lo -MD -MP -MF io/async/.deps/EventBase.Tpo -c io/async/EventBase.cpp -fPIC -DPIC -o io/async/.libs/EventBase.o

io/async/EventBase.cpp: In member function 'virtual void folly::EventBase::FunctionRunner::messageAvailable(std::pair<void (*)(void*), void*>&&)':
io/async/EventBase.cpp:77:46:  error: 'event_base_loopbreak' was not declared in this scope
     **event_base_loopbreak(getEventBase()->evb_);**
                                              ^

io/async/EventBase.cpp: In constructor 'folly::EventBase::EventBase(bool)':
io/async/EventBase.cpp:170:10: error: invalid conversion from 'void_' to 'event_base_' [-fpermissive]
evb_ = (ev.ev_base) ? event_base_new() : event_init();
^
io/async/EventBase.cpp: In member function 'void folly::EventBase::terminateLoopSoon()':
io/async/EventBase.cpp:477:28: error: 'event_base_loopbreak' was not declared in this scope
event_base_loopbreak(evb_);
^
Makefile:1241: recipe for target 'io/async/EventBase.lo' failed
make[2]: *** [io/async/EventBase.lo] Error 1
make[2]: Leaving directory '/root/software/proxygen/proxygen/folly/folly'
Makefile:1298: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/root/software/proxygen/proxygen/folly/folly'
Makefile:822: recipe for target 'all' failed
make: *** [all] Error 2

Run curl/echo sample ERROR

ubuntu 14.04 / gcc-4.9
when run httpclient/samples/curl Or httpserver/samples/echo, OUTPUT:

curl: ./../folly/io/async/NotificationQueue.h:749: void folly::NotificationQueue::Consumer::init(folly::EventBase_, folly::NotificationQueue_) [with MessageT = std::pair<void ()(void), void*>]: Assertion `!isHandlerRegistered()' failed.
*** Aborted at 1450194832 (unix time) try "date -d @1450194832" if you are using GNU date ***
PC: @ 0x7f0770125cc9 (unknown)
*** SIGABRT (@0xc9e) received by PID 3230 (TID 0x7f0771c59880) from PID 3230; stack trace: ***
@ 0x7f0771422340 (unknown)
@ 0x7f0770125cc9 (unknown)
@ 0x7f07701290d8 (unknown)
@ 0x7f077011eb86 (unknown)
@ 0x7f077011ec32 (unknown)
@ 0x7f07710659d1 folly::NotificationQueue<>::Consumer::init()
@ 0x7f07710619dd folly::EventBase::initNotificationQueue()
@ 0x7f07710625e5 folly::EventBase::EventBase()
@ 0x40ea2b main
@ 0x7f0770110ec5 (unknown)
@ 0x410727 (unknown)
@ 0x0 (unknown)
Aborted (core dumped)

folly undefined reference link error

When I try to build proxygen on Ubuntu 15.04 I get the following link errors.

Making uninstall in .
make[1]: Entering directory '/home/james/proxygen/proxygen/folly/folly'
/bin/bash ./libtool --mode=uninstall rm -f '/usr/local/lib/libfolly.la'
libtool: uninstall: rm -f /usr/local/lib/libfolly.la /usr/local/lib/libfolly.so.42.0.0 /usr/local/lib/libfolly.so.42 /usr/local/lib/libfolly.so /usr/local/lib/libfolly.a
/bin/bash ./libtool --mode=uninstall rm -f '/usr/local/lib/libfollybenchmark.la'
libtool: uninstall: rm -f /usr/local/lib/libfollybenchmark.la /usr/local/lib/libfollybenchmark.so.42.0.0 /usr/local/lib/libfollybenchmark.so.42 /usr/local/lib/libfollybenchmark.so /usr/local/lib/libfollybenchmark.a
( cd '/usr/local/include/folly' && rm -f ApplyTuple.h Arena.h Arena-inl.h AtomicBitSet.h AtomicHashArray.h AtomicHashArray-inl.h AtomicHashMap.h AtomicHashMap-inl.h AtomicLinkedList.h AtomicStruct.h Baton.h Benchmark.h Bits.h Checksum.h Chrono.h ConcurrentSkipList.h ConcurrentSkipList-inl.h Conv.h CpuId.h CPortability.h detail/AtomicHashUtils.h detail/BitIteratorDetail.h detail/BitsDetail.h detail/CacheLocality.h detail/ChecksumDetail.h detail/Clock.h detail/DiscriminatedPtrDetail.h detail/ExceptionWrapper.h detail/FileUtilDetail.h detail/FingerprintPolynomial.h detail/FunctionalExcept.h detail/Futex.h detail/GroupVarintDetail.h detail/IPAddress.h detail/Malloc.h detail/MemoryIdler.h detail/MPMCPipelineDetail.h detail/SlowFingerprint.h detail/SpinLockImpl.h detail/Stats.h detail/ThreadLocalDetail.h detail/TurnSequencer.h detail/UncaughtExceptionCounter.h Demangle.h DiscriminatedPtr.h DynamicConverter.h dynamic.h dynamic-inl.h Exception.h ExceptionWrapper.h Executor.h EvictingCacheMap.h experimental/AutoTimer.h experimental/Bits.h experimental/ExecutionObserver.h experimental/EliasFanoCoding.h experimental/EventCount.h experimental/fibers/AddTasks.h experimental/fibers/AddTasks-inl.h experimental/fibers/Baton.h experimental/fibers/Baton-inl.h experimental/fibers/BoostContextCompatibility.h experimental/fibers/EventBaseLoopController.h experimental/fibers/EventBaseLoopController-inl.h experimental/fibers/Fiber.h experimental/fibers/Fiber-inl.h experimental/fibers/FiberManager.h experimental/fibers/FiberManager-inl.h experimental/fibers/FiberManagerMap.h experimental/fibers/ForEach.h experimental/fibers/ForEach-inl.h experimental/fibers/GenericBaton.h experimental/fibers/GuardPageAllocator.h experimental/fibers/GuardPageAllocator-inl.h experimental/fibers/LoopController.h experimental/fibers/Promise.h experimental/fibers/Promise-inl.h experimental/fibers/SimpleLoopController.h experimental/fibers/TimeoutController.h experimental/fibers/traits.h experimental/fibers/WhenN.h experimental/fibers/WhenN-inl.h experimental/FunctionScheduler.h experimental/FutureDAG.h experimental/io/FsUtil.h experimental/JSONSchema.h experimental/LockFreeRingBuffer.h experimental/Select64.h experimental/SharedMutex.h experimental/StringKeyedCommon.h experimental/StringKeyedUnorderedMap.h experimental/StringKeyedUnorderedSet.h experimental/TestUtil.h experimental/TupleOps.h FBString.h FBVector.h File.h FileUtil.h Fingerprint.h folly-config.h Foreach.h FormatArg.h Format.h Format-inl.h futures/Deprecated.h futures/DrivableExecutor.h futures/Future-pre.h futures/helpers.h futures/Future.h futures/Future-inl.h futures/FutureException.h futures/InlineExecutor.h futures/ManualExecutor.h futures/OpaqueCallbackShunt.h futures/Promise-inl.h futures/Promise.h futures/QueuedImmediateExecutor.h futures/ScheduledExecutor.h futures/SharedPromise.h futures/SharedPromise-inl.h futures/Timekeeper.h futures/Try-inl.h futures/Try.h futures/Unit.h futures/detail/Core.h futures/detail/FSM.h futures/detail/ThreadWheelTimekeeper.h futures/detail/Types.h gen/Base.h gen/Base-inl.h gen/Combine.h gen/Combine-inl.h gen/Core.h gen/Core-inl.h gen/File.h gen/File-inl.h gen/Parallel.h gen/Parallel-inl.h gen/ParallelMap.h gen/ParallelMap-inl.h gen/String.h gen/String-inl.h GroupVarint.h Hash.h IPAddress.h IPAddressV4.h IPAddressV6.h IPAddressException.h IndexedMemPool.h IntrusiveList.h io/Compression.h io/Cursor.h io/IOBuf.h io/IOBufQueue.h io/RecordIO.h io/RecordIO-inl.h io/TypedIOBuf.h io/ShutdownSocketSet.h io/async/AsyncTimeout.h io/async/AsyncTransport.h io/async/AsyncUDPServerSocket.h io/async/AsyncUDPSocket.h io/async/AsyncServerSocket.h io/async/AsyncSignalHandler.h io/async/AsyncSocket.h io/async/AsyncSocketBase.h io/async/AsyncSSLSocket.h io/async/AsyncSocketException.h io/async/DelayedDestruction.h io/async/EventBase.h io/async/EventBaseManager.h io/async/EventFDWrapper.h io/async/EventHandler.h io/async/EventUtil.h io/async/NotificationQueue.h io/async/HHWheelTimer.h io/async/Request.h io/async/SSLContext.h io/async/TimeoutManager.h io/async/test/AsyncSSLSocketTest.h io/async/test/BlockingSocket.h io/async/test/MockAsyncSocket.h io/async/test/MockAsyncServerSocket.h io/async/test/MockAsyncSSLSocket.h io/async/test/MockAsyncTransport.h io/async/test/TimeUtil.h io/async/test/UndelayedDestruction.h io/async/test/Util.h json.h Lazy.h LifoSem.h Likely.h Logging.h MacAddress.h Malloc.h MapUtil.h Memory.h MemoryMapping.h MoveWrapper.h MPMCPipeline.h MPMCQueue.h Optional.h PackedSyncPtr.h Padded.h Portability.h Preprocessor.h ProducerConsumerQueue.h Random.h Random-inl.h Range.h RWSpinLock.h ScopeGuard.h Singleton.h Singleton-inl.h SmallLocks.h small_vector.h SocketAddress.h sorted_vector_types.h SpinLock.h SpookyHashV1.h SpookyHashV2.h stats/BucketedTimeSeries-defs.h stats/BucketedTimeSeries.h stats/Histogram-defs.h stats/Histogram.h stats/MultiLevelTimeSeries-defs.h stats/MultiLevelTimeSeries.h String.h String-inl.h Subprocess.h Synchronized.h test/FBStringTestBenchmarks.cpp.h test/FBVectorTestBenchmarks.cpp.h test/function_benchmark/benchmark_impl.h test/function_benchmark/test_functions.h test/SynchronizedTestLib.h test/SynchronizedTestLib-inl.h ThreadCachedArena.h ThreadCachedInt.h ThreadLocal.h ThreadName.h TimeoutQueue.h Traits.h Unicode.h Uri.h Uri-inl.h Varint.h VersionCheck.h wangle/acceptor/Acceptor.h wangle/acceptor/ConnectionCounter.h wangle/acceptor/ConnectionManager.h wangle/acceptor/DomainNameMisc.h wangle/acceptor/LoadShedConfiguration.h wangle/acceptor/ManagedConnection.h wangle/acceptor/NetworkAddress.h wangle/acceptor/ServerSocketConfig.h wangle/acceptor/SocketOptions.h wangle/acceptor/TransportInfo.h wangle/bootstrap/ServerBootstrap.h wangle/bootstrap/ServerBootstrap-inl.h wangle/bootstrap/ServerSocketFactory.h wangle/bootstrap/ClientBootstrap.h wangle/channel/AsyncSocketHandler.h wangle/channel/EventBaseHandler.h wangle/channel/Handler.h wangle/channel/HandlerContext.h wangle/channel/HandlerContext-inl.h wangle/channel/OutputBufferingHandler.h wangle/channel/Pipeline.h wangle/channel/Pipeline-inl.h wangle/channel/StaticPipeline.h wangle/concurrent/BlockingQueue.h wangle/concurrent/Codel.h wangle/concurrent/CPUThreadPoolExecutor.h wangle/concurrent/FiberIOExecutor.h wangle/concurrent/FutureExecutor.h wangle/concurrent/IOExecutor.h wangle/concurrent/IOThreadPoolExecutor.h wangle/concurrent/GlobalExecutor.h wangle/concurrent/LifoSemMPMCQueue.h wangle/concurrent/NamedThreadFactory.h wangle/concurrent/ThreadFactory.h wangle/concurrent/ThreadPoolExecutor.h wangle/rx/Observable.h wangle/rx/Observer.h wangle/rx/Subject.h wangle/rx/Subscription.h wangle/rx/types.h wangle/ssl/ClientHelloExtStats.h wangle/ssl/DHParam.h wangle/ssl/PasswordInFile.h wangle/ssl/SSLCacheOptions.h wangle/ssl/SSLCacheProvider.h wangle/ssl/SSLContextConfig.h wangle/ssl/SSLContextManager.h wangle/ssl/SSLSessionCacheManager.h wangle/ssl/SSLStats.h wangle/ssl/SSLUtil.h wangle/ssl/TLSTicketKeyManager.h wangle/ssl/TLSTicketKeySeeds.h experimental/io/HugePages.h )
make[1]: Leaving directory '/home/james/proxygen/proxygen/folly/folly'
Making uninstall in test
make[1]: Entering directory '/home/james/proxygen/proxygen/folly/folly/test'
Making uninstall in .
make[2]: Entering directory '/home/james/proxygen/proxygen/folly/folly/test'
make[2]: Nothing to be done for 'uninstall-am'.
make[2]: Leaving directory '/home/james/proxygen/proxygen/folly/folly/test'
Making uninstall in function_benchmark
make[2]: Entering directory '/home/james/proxygen/proxygen/folly/folly/test/function_benchmark'
make[2]: Nothing to be done for 'uninstall'.
make[2]: Leaving directory '/home/james/proxygen/proxygen/folly/folly/test/function_benchmark'
make[1]: Leaving directory '/home/james/proxygen/proxygen/folly/folly/test'
Making install in .
make[1]: Entering directory '/home/james/proxygen/proxygen/folly/folly'
make[2]: Entering directory '/home/james/proxygen/proxygen/folly/folly'
/bin/mkdir -p '/usr/local/lib'
/bin/bash ./libtool --mode=install /usr/bin/install -c libfolly.la libfollybenchmark.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libfolly.so.42.0.0 /usr/local/lib/libfolly.so.42.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libfolly.so.42.0.0 libfolly.so.42 || { rm -f libfolly.so.42 && ln -s libfolly.so.42.0.0 libfolly.so.42; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libfolly.so.42.0.0 libfolly.so || { rm -f libfolly.so && ln -s libfolly.so.42.0.0 libfolly.so; }; })
libtool: install: /usr/bin/install -c .libs/libfolly.lai /usr/local/lib/libfolly.la
libtool: install: warning: relinking `libfollybenchmark.la'
libtool: install: (cd /home/james/proxygen/proxygen/folly/folly; /bin/bash /home/james/proxygen/proxygen/folly/folly/libtool --tag CXX --mode=relink g++ -std=gnu++0x -g -O2 -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -version-info 42:0:0 -o libfollybenchmark.la -rpath /usr/local/lib Benchmark.lo libfolly.la -llzma -lz -lsnappy -llz4 -liberty -ljemalloc -levent -ldouble-conversion -lssl -lgflags -lglog )
libtool: relink: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.9/crtbeginS.o .libs/Benchmark.o -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -L/usr/local/lib -lfolly -llzma -lz -lsnappy -llz4 -liberty -ljemalloc -levent -ldouble-conversion -lssl -lgflags -lglog -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crtn.o -O2 -Wl,-soname -Wl,libfollybenchmark.so.42 -o .libs/libfollybenchmark.so.42.0.0
libtool: install: /usr/bin/install -c .libs/libfollybenchmark.so.42.0.0T /usr/local/lib/libfollybenchmark.so.42.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libfollybenchmark.so.42.0.0 libfollybenchmark.so.42 || { rm -f libfollybenchmark.so.42 && ln -s libfollybenchmark.so.42.0.0 libfollybenchmark.so.42; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libfollybenchmark.so.42.0.0 libfollybenchmark.so || { rm -f libfollybenchmark.so && ln -s libfollybenchmark.so.42.0.0 libfollybenchmark.so; }; })
libtool: install: /usr/bin/install -c .libs/libfollybenchmark.lai /usr/local/lib/libfollybenchmark.la
libtool: install: /usr/bin/install -c .libs/libfolly.a /usr/local/lib/libfolly.a
libtool: install: chmod 644 /usr/local/lib/libfolly.a
libtool: install: ranlib /usr/local/lib/libfolly.a
libtool: install: /usr/bin/install -c .libs/libfollybenchmark.a /usr/local/lib/libfollybenchmark.a
libtool: install: chmod 644 /usr/local/lib/libfollybenchmark.a
libtool: install: ranlib /usr/local/lib/libfollybenchmark.a

libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib

Libraries have been installed in:
/usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:

  • add LIBDIR to the `LD_LIBRARY_PATH' environment variable
    during execution
  • add LIBDIR to the `LD_RUN_PATH' environment variable
    during linking
  • use the `-Wl,-rpath -Wl,LIBDIR' linker flag
  • have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

/bin/mkdir -p '/usr/local/include/folly'
/usr/bin/install -c -m 644 ApplyTuple.h Arena.h Arena-inl.h AtomicBitSet.h AtomicHashArray.h AtomicHashArray-inl.h AtomicHashMap.h AtomicHashMap-inl.h AtomicLinkedList.h AtomicStruct.h Baton.h Benchmark.h Bits.h Checksum.h Chrono.h ConcurrentSkipList.h ConcurrentSkipList-inl.h Conv.h CpuId.h CPortability.h Demangle.h DiscriminatedPtr.h DynamicConverter.h dynamic.h dynamic-inl.h Exception.h ExceptionWrapper.h Executor.h EvictingCacheMap.h FBString.h FBVector.h File.h FileUtil.h Fingerprint.h folly-config.h Foreach.h FormatArg.h Format.h Format-inl.h GroupVarint.h '/usr/local/include/folly/.'
/usr/bin/install -c -m 644 Hash.h IPAddress.h IPAddressV4.h IPAddressV6.h IPAddressException.h IndexedMemPool.h IntrusiveList.h json.h Lazy.h LifoSem.h Likely.h Logging.h MacAddress.h Malloc.h MapUtil.h Memory.h MemoryMapping.h MoveWrapper.h MPMCPipeline.h MPMCQueue.h Optional.h PackedSyncPtr.h Padded.h Portability.h Preprocessor.h ProducerConsumerQueue.h Random.h Random-inl.h Range.h RWSpinLock.h ScopeGuard.h Singleton.h Singleton-inl.h SmallLocks.h small_vector.h SocketAddress.h sorted_vector_types.h SpinLock.h SpookyHashV1.h SpookyHashV2.h '/usr/local/include/folly/.'
/bin/mkdir -p '/usr/local/include/folly/wangle/ssl'
/usr/bin/install -c -m 644 wangle/ssl/ClientHelloExtStats.h wangle/ssl/DHParam.h wangle/ssl/PasswordInFile.h wangle/ssl/SSLCacheOptions.h wangle/ssl/SSLCacheProvider.h wangle/ssl/SSLContextConfig.h wangle/ssl/SSLContextManager.h wangle/ssl/SSLSessionCacheManager.h wangle/ssl/SSLStats.h wangle/ssl/SSLUtil.h wangle/ssl/TLSTicketKeyManager.h wangle/ssl/TLSTicketKeySeeds.h '/usr/local/include/folly/wangle/ssl'
/bin/mkdir -p '/usr/local/include/folly/futures'
/usr/bin/install -c -m 644 futures/Deprecated.h futures/DrivableExecutor.h futures/Future-pre.h futures/helpers.h futures/Future.h futures/Future-inl.h futures/FutureException.h futures/InlineExecutor.h futures/ManualExecutor.h futures/OpaqueCallbackShunt.h futures/Promise-inl.h futures/Promise.h futures/QueuedImmediateExecutor.h futures/ScheduledExecutor.h futures/SharedPromise.h futures/SharedPromise-inl.h futures/Timekeeper.h futures/Try-inl.h futures/Try.h futures/Unit.h '/usr/local/include/folly/futures'
/bin/mkdir -p '/usr/local/include/folly/experimental'
/usr/bin/install -c -m 644 experimental/AutoTimer.h experimental/Bits.h experimental/ExecutionObserver.h experimental/EliasFanoCoding.h experimental/EventCount.h experimental/FunctionScheduler.h experimental/FutureDAG.h experimental/JSONSchema.h experimental/LockFreeRingBuffer.h experimental/Select64.h experimental/SharedMutex.h experimental/StringKeyedCommon.h experimental/StringKeyedUnorderedMap.h experimental/StringKeyedUnorderedSet.h experimental/TestUtil.h experimental/TupleOps.h '/usr/local/include/folly/experimental'
/bin/mkdir -p '/usr/local/include/folly/experimental/fibers'
/usr/bin/install -c -m 644 experimental/fibers/AddTasks.h experimental/fibers/AddTasks-inl.h experimental/fibers/Baton.h experimental/fibers/Baton-inl.h experimental/fibers/BoostContextCompatibility.h experimental/fibers/EventBaseLoopController.h experimental/fibers/EventBaseLoopController-inl.h experimental/fibers/Fiber.h experimental/fibers/Fiber-inl.h experimental/fibers/FiberManager.h experimental/fibers/FiberManager-inl.h experimental/fibers/FiberManagerMap.h experimental/fibers/ForEach.h experimental/fibers/ForEach-inl.h experimental/fibers/GenericBaton.h experimental/fibers/GuardPageAllocator.h experimental/fibers/GuardPageAllocator-inl.h experimental/fibers/LoopController.h experimental/fibers/Promise.h experimental/fibers/Promise-inl.h experimental/fibers/SimpleLoopController.h experimental/fibers/TimeoutController.h experimental/fibers/traits.h experimental/fibers/WhenN.h experimental/fibers/WhenN-inl.h '/usr/local/include/folly/experimental/fibers'
/bin/mkdir -p '/usr/local/include/folly/futures/detail'
/usr/bin/install -c -m 644 futures/detail/Core.h futures/detail/FSM.h futures/detail/ThreadWheelTimekeeper.h futures/detail/Types.h '/usr/local/include/folly/futures/detail'
/bin/mkdir -p '/usr/local/include/folly/experimental/io'
/usr/bin/install -c -m 644 experimental/io/FsUtil.h experimental/io/HugePages.h '/usr/local/include/folly/experimental/io'
/bin/mkdir -p '/usr/local/include/folly/wangle/bootstrap'
/usr/bin/install -c -m 644 wangle/bootstrap/ServerBootstrap.h wangle/bootstrap/ServerBootstrap-inl.h wangle/bootstrap/ServerSocketFactory.h wangle/bootstrap/ClientBootstrap.h '/usr/local/include/folly/wangle/bootstrap'
/bin/mkdir -p '/usr/local/include/folly/wangle/acceptor'
/usr/bin/install -c -m 644 wangle/acceptor/Acceptor.h wangle/acceptor/ConnectionCounter.h wangle/acceptor/ConnectionManager.h wangle/acceptor/DomainNameMisc.h wangle/acceptor/LoadShedConfiguration.h wangle/acceptor/ManagedConnection.h wangle/acceptor/NetworkAddress.h wangle/acceptor/ServerSocketConfig.h wangle/acceptor/SocketOptions.h wangle/acceptor/TransportInfo.h '/usr/local/include/folly/wangle/acceptor'
/bin/mkdir -p '/usr/local/include/folly/test'
/usr/bin/install -c -m 644 test/FBStringTestBenchmarks.cpp.h test/FBVectorTestBenchmarks.cpp.h test/SynchronizedTestLib.h test/SynchronizedTestLib-inl.h '/usr/local/include/folly/test'
/bin/mkdir -p '/usr/local/include/folly/gen'
/usr/bin/install -c -m 644 gen/Base.h gen/Base-inl.h gen/Combine.h gen/Combine-inl.h gen/Core.h gen/Core-inl.h gen/File.h gen/File-inl.h gen/Parallel.h gen/Parallel-inl.h gen/ParallelMap.h gen/ParallelMap-inl.h gen/String.h gen/String-inl.h '/usr/local/include/folly/gen'
/bin/mkdir -p '/usr/local/include/folly/wangle/channel'
/usr/bin/install -c -m 644 wangle/channel/AsyncSocketHandler.h wangle/channel/EventBaseHandler.h wangle/channel/Handler.h wangle/channel/HandlerContext.h wangle/channel/HandlerContext-inl.h wangle/channel/OutputBufferingHandler.h wangle/channel/Pipeline.h wangle/channel/Pipeline-inl.h wangle/channel/StaticPipeline.h '/usr/local/include/folly/wangle/channel'
/bin/mkdir -p '/usr/local/include/folly/wangle/concurrent'
/usr/bin/install -c -m 644 wangle/concurrent/BlockingQueue.h wangle/concurrent/Codel.h wangle/concurrent/CPUThreadPoolExecutor.h wangle/concurrent/FiberIOExecutor.h wangle/concurrent/FutureExecutor.h wangle/concurrent/IOExecutor.h wangle/concurrent/IOThreadPoolExecutor.h wangle/concurrent/GlobalExecutor.h wangle/concurrent/LifoSemMPMCQueue.h wangle/concurrent/NamedThreadFactory.h wangle/concurrent/ThreadFactory.h wangle/concurrent/ThreadPoolExecutor.h '/usr/local/include/folly/wangle/concurrent'
/bin/mkdir -p '/usr/local/include/folly/wangle/rx'
/usr/bin/install -c -m 644 wangle/rx/Observable.h wangle/rx/Observer.h wangle/rx/Subject.h wangle/rx/Subscription.h wangle/rx/types.h '/usr/local/include/folly/wangle/rx'
/bin/mkdir -p '/usr/local/include/folly/io/async/test'
/usr/bin/install -c -m 644 io/async/test/AsyncSSLSocketTest.h io/async/test/BlockingSocket.h io/async/test/MockAsyncSocket.h io/async/test/MockAsyncServerSocket.h io/async/test/MockAsyncSSLSocket.h io/async/test/MockAsyncTransport.h io/async/test/TimeUtil.h io/async/test/UndelayedDestruction.h io/async/test/Util.h '/usr/local/include/folly/io/async/test'
/bin/mkdir -p '/usr/local/include/folly/io/async'
/usr/bin/install -c -m 644 io/async/AsyncTimeout.h io/async/AsyncTransport.h io/async/AsyncUDPServerSocket.h io/async/AsyncUDPSocket.h io/async/AsyncServerSocket.h io/async/AsyncSignalHandler.h io/async/AsyncSocket.h io/async/AsyncSocketBase.h io/async/AsyncSSLSocket.h io/async/AsyncSocketException.h io/async/DelayedDestruction.h io/async/EventBase.h io/async/EventBaseManager.h io/async/EventFDWrapper.h io/async/EventHandler.h io/async/EventUtil.h io/async/NotificationQueue.h io/async/HHWheelTimer.h io/async/Request.h io/async/SSLContext.h io/async/TimeoutManager.h '/usr/local/include/folly/io/async'
/bin/mkdir -p '/usr/local/include/folly/stats'
/usr/bin/install -c -m 644 stats/BucketedTimeSeries-defs.h stats/BucketedTimeSeries.h stats/Histogram-defs.h stats/Histogram.h stats/MultiLevelTimeSeries-defs.h stats/MultiLevelTimeSeries.h '/usr/local/include/folly/stats'
/bin/mkdir -p '/usr/local/include/folly/detail'
/usr/bin/install -c -m 644 detail/AtomicHashUtils.h detail/BitIteratorDetail.h detail/BitsDetail.h detail/CacheLocality.h detail/ChecksumDetail.h detail/Clock.h detail/DiscriminatedPtrDetail.h detail/ExceptionWrapper.h detail/FileUtilDetail.h detail/FingerprintPolynomial.h detail/FunctionalExcept.h detail/Futex.h detail/GroupVarintDetail.h detail/IPAddress.h detail/Malloc.h detail/MemoryIdler.h detail/MPMCPipelineDetail.h detail/SlowFingerprint.h detail/SpinLockImpl.h detail/Stats.h detail/ThreadLocalDetail.h detail/TurnSequencer.h detail/UncaughtExceptionCounter.h '/usr/local/include/folly/detail'
/usr/bin/install -c -m 644 String.h String-inl.h Subprocess.h Synchronized.h ThreadCachedArena.h ThreadCachedInt.h ThreadLocal.h ThreadName.h TimeoutQueue.h Traits.h Unicode.h Uri.h Uri-inl.h Varint.h VersionCheck.h '/usr/local/include/folly/.'
/bin/mkdir -p '/usr/local/include/folly/io'
/usr/bin/install -c -m 644 io/Compression.h io/Cursor.h io/IOBuf.h io/IOBufQueue.h io/RecordIO.h io/RecordIO-inl.h io/TypedIOBuf.h io/ShutdownSocketSet.h '/usr/local/include/folly/io'
/bin/mkdir -p '/usr/local/include/folly/test/function_benchmark'
/usr/bin/install -c -m 644 test/function_benchmark/benchmark_impl.h test/function_benchmark/test_functions.h '/usr/local/include/folly/test/function_benchmark'
make[2]: Leaving directory '/home/james/proxygen/proxygen/folly/folly'
make[1]: Leaving directory '/home/james/proxygen/proxygen/folly/folly'
Making install in test
make[1]: Entering directory '/home/james/proxygen/proxygen/folly/folly/test'
Making install in .
make[2]: Entering directory '/home/james/proxygen/proxygen/folly/folly/test'
make[3]: Entering directory '/home/james/proxygen/proxygen/folly/folly/test'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/james/proxygen/proxygen/folly/folly/test'
make[2]: Leaving directory '/home/james/proxygen/proxygen/folly/folly/test'
Making install in function_benchmark
make[2]: Entering directory '/home/james/proxygen/proxygen/folly/folly/test/function_benchmark'
make[3]: Entering directory '/home/james/proxygen/proxygen/folly/folly/test/function_benchmark'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/james/proxygen/proxygen/folly/folly/test/function_benchmark'
make[2]: Leaving directory '/home/james/proxygen/proxygen/folly/folly/test/function_benchmark'
make[1]: Leaving directory '/home/james/proxygen/proxygen/folly/folly/test'
Making uninstall in lib
make[1]: Entering directory '/home/james/proxygen/proxygen/lib'
Making uninstall in test
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/test'
Making uninstall in .
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/test'
( cd '/usr/local/include/proxygen/lib/test' && rm -f TestAsyncTransport.h )
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/test'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/test'
Making uninstall in utils
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/utils'
Making uninstall in .
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/utils'
( cd '/usr/local/include/proxygen/lib/utils' && rm -f AsyncTimeoutSet.h ChromeUtils.h CobHelper.h CryptUtil.h DestructorCheck.h Exception.h FilterChain.h HTTPTime.h ParseURL.h Result.h StateMachine.h TestUtils.h Time.h TraceEvent.h TraceEventContext.h TraceEventObserver.h TraceEventType.h TraceFieldType.h UtilInl.h Logging.h ZlibStreamCompressor.h ZlibStreamDecompressor.h )
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/utils'
Making uninstall in test
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/utils/test'
Making uninstall in .
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/utils/test'
make[4]: Nothing to be done for 'uninstall-am'.
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/utils/test'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/utils/test'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/utils'
Making uninstall in ssl
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/ssl'
Making uninstall in .
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/ssl'
( cd '/usr/local/include/proxygen/lib/ssl' && rm -f SSLContextConfig.h )
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/ssl'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/ssl'
Making uninstall in services
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/services'
Making uninstall in .
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/services'
( cd '/usr/local/include/proxygen/lib/services' && rm -f AcceptorConfiguration.h HTTPAcceptor.h RequestWorker.h Service.h ServiceConfiguration.h ServiceWorker.h WorkerThread.h )
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/services'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/services'
Making uninstall in http
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/http'
Making uninstall in .
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/http'
( cd '/usr/local/include/proxygen/lib/http' && rm -f HTTPCommonHeaders.h HTTPConnector.h HTTPConstants.h HTTPException.h HTTPHeaderSize.h HTTPHeaders.h HTTPMessage.h HTTPMessageFilters.h HTTPMethod.h ProxygenErrorEnum.h RFC2616.h Window.h codec/CodecDictionaries.h codec/CodecProtocol.h codec/ErrorCode.h codec/FlowControlFilter.h codec/HTTP1xCodec.h codec/HTTPChecks.h codec/HTTPCodec.h codec/HTTPCodecFilter.h codec/HTTPSettings.h codec/SPDYCodec.h codec/SPDYConstants.h codec/SPDYUtil.h codec/SPDYVersion.h codec/SPDYVersionSettings.h codec/SettingsId.h codec/TransportDirection.h codec/compress/GzipHeaderCodec.h codec/compress/HPACKCodec.h codec/compress/HPACKConstants.h codec/compress/HPACKContext.h codec/compress/HPACKDecodeBuffer.h codec/compress/HPACKDecoder.h codec/compress/HPACKEncodeBuffer.h codec/compress/HPACKEncoder.h codec/compress/HPACKHeader.h codec/compress/Header.h codec/compress/HeaderCodec.h codec/compress/HeaderPiece.h codec/compress/HeaderTable.h codec/compress/Huffman.h codec/compress/Logging.h codec/compress/StaticHeaderTable.h codec/compress/experimental/hpack9/HPACKCodec.h codec/compress/experimental/hpack9/HPACKConstants.h codec/compress/experimental/hpack9/HPACKContextImpl.h codec/compress/experimental/hpack9/HPACKDecoder.h codec/compress/experimental/hpack9/HPACKEncoder.h codec/compress/experimental/hpack9/Huffman.h codec/compress/experimental/hpack9/StaticHeaderTable.h codec/experimental/HTTPRequestVerifier.h codec/experimental/HTTP2Codec.h codec/experimental/HTTP2Constants.h codec/experimental/HTTP2Framer.h session/AckLatencyEvent.h session/ByteEventTracker.h session/ByteEvents.h session/CodecErrorResponseHandler.h session/HTTPDirectResponseHandler.h session/HTTPDownstreamSession.h session/HTTPErrorPage.h session/HTTPEvent.h session/HTTPSession.h session/HTTPSessionAcceptor.h session/HTTPSessionController.h session/HTTPSessionStats.h session/HTTPTransaction.h session/HTTPTransactionEgressSM.h session/HTTPTransactionIngressSM.h session/HTTPUpstreamSession.h session/SimpleController.h session/TTLBAStats.h session/TransportFilter.h )
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/http'
Making uninstall in codec
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec'
Making uninstall in .
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec'
make[4]: Nothing to be done for 'uninstall-am'.
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec'
Making uninstall in test
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec/test'
Making uninstall in .
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec/test'
( cd '/usr/local/include/proxygen/lib/http/codec/test' && rm -f TestUtils.h )
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec/test'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec/test'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec'
Making uninstall in session
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/http/session'
Making uninstall in .
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http/session'
make[4]: Nothing to be done for 'uninstall-am'.
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session'
Making uninstall in test
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http/session/test'
Making uninstall in .
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/http/session/test'
make[5]: Nothing to be done for 'uninstall-am'.
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session/test'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session/test'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session'
Making uninstall in test
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/http/test'
Making uninstall in .
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http/test'
make[4]: Nothing to be done for 'uninstall-am'.
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http/test'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/http/test'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/http'
make[2]: Entering directory '/home/james/proxygen/proxygen/lib'
/bin/bash ../libtool --mode=uninstall rm -f '/usr/local/lib/libproxygenlib.la'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib'
make[1]: Leaving directory '/home/james/proxygen/proxygen/lib'
Making uninstall in httpserver
make[1]: Entering directory '/home/james/proxygen/proxygen/httpserver'
Making uninstall in .
make[2]: Entering directory '/home/james/proxygen/proxygen/httpserver'
/bin/bash ../libtool --mode=uninstall rm -f '/usr/local/lib/libproxygenhttpserver.la'
( cd '/usr/local/include/proxygen/httpserver' && rm -f Filters.h HTTPServer.h HTTPServerAcceptor.h HTTPServerOptions.h Mocks.h RequestHandler.h RequestHandlerAdaptor.h RequestHandlerFactory.h ResponseBuilder.h ResponseHandler.h ScopedHTTPServer.h SignalHandler.h )
make[2]: Leaving directory '/home/james/proxygen/proxygen/httpserver'
Making uninstall in samples
make[2]: Entering directory '/home/james/proxygen/proxygen/httpserver/samples'
Making uninstall in echo
make[3]: Entering directory '/home/james/proxygen/proxygen/httpserver/samples/echo'
Making uninstall in .
make[4]: Entering directory '/home/james/proxygen/proxygen/httpserver/samples/echo'
make[4]: Nothing to be done for 'uninstall-am'.
make[4]: Leaving directory '/home/james/proxygen/proxygen/httpserver/samples/echo'
make[3]: Leaving directory '/home/james/proxygen/proxygen/httpserver/samples/echo'
make[3]: Entering directory '/home/james/proxygen/proxygen/httpserver/samples'
make[3]: Nothing to be done for 'uninstall-am'.
make[3]: Leaving directory '/home/james/proxygen/proxygen/httpserver/samples'
make[2]: Leaving directory '/home/james/proxygen/proxygen/httpserver/samples'
Making uninstall in tests
make[2]: Entering directory '/home/james/proxygen/proxygen/httpserver/tests'
Making uninstall in .
make[3]: Entering directory '/home/james/proxygen/proxygen/httpserver/tests'
make[3]: Nothing to be done for 'uninstall-am'.
make[3]: Leaving directory '/home/james/proxygen/proxygen/httpserver/tests'
make[2]: Leaving directory '/home/james/proxygen/proxygen/httpserver/tests'
make[1]: Leaving directory '/home/james/proxygen/proxygen/httpserver'
make[1]: Entering directory '/home/james/proxygen/proxygen'
make[1]: Nothing to be done for 'uninstall-am'.
make[1]: Leaving directory '/home/james/proxygen/proxygen'
Making install in lib
make[1]: Entering directory '/home/james/proxygen/proxygen/lib'
Making install in test
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/test'
make install-recursive
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/test'
Making install in .
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/test'
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/test'
make[5]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/usr/local/include/proxygen/lib/test'
/usr/bin/install -c -m 644 TestAsyncTransport.h '/usr/local/include/proxygen/lib/test/.'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/test'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/test'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/test'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/test'
Making install in utils
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/utils'
make install-recursive
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/utils'
Making install in .
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/utils'
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/utils'
make[5]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/usr/local/include/proxygen/lib/utils'
/usr/bin/install -c -m 644 AsyncTimeoutSet.h ChromeUtils.h CobHelper.h CryptUtil.h DestructorCheck.h Exception.h FilterChain.h HTTPTime.h ParseURL.h Result.h StateMachine.h TestUtils.h Time.h TraceEvent.h TraceEventContext.h TraceEventObserver.h TraceEventType.h TraceFieldType.h UtilInl.h Logging.h ZlibStreamCompressor.h ZlibStreamDecompressor.h '/usr/local/include/proxygen/lib/utils/.'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/utils'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/utils'
Making install in test
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/utils/test'
Making install in .
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/utils/test'
make[6]: Entering directory '/home/james/proxygen/proxygen/lib/utils/test'
make[6]: Nothing to be done for 'install-exec-am'.
make[6]: Nothing to be done for 'install-data-am'.
make[6]: Leaving directory '/home/james/proxygen/proxygen/lib/utils/test'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/utils/test'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/utils/test'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/utils'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/utils'
Making install in ssl
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/ssl'
Making install in .
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/ssl'
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/ssl'
make[4]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/usr/local/include/proxygen/lib/ssl'
/usr/bin/install -c -m 644 SSLContextConfig.h '/usr/local/include/proxygen/lib/ssl/.'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/ssl'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/ssl'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/ssl'
Making install in services
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/services'
Making install in .
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/services'
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/services'
make[4]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/usr/local/include/proxygen/lib/services'
/usr/bin/install -c -m 644 AcceptorConfiguration.h HTTPAcceptor.h RequestWorker.h Service.h ServiceConfiguration.h ServiceWorker.h WorkerThread.h '/usr/local/include/proxygen/lib/services/.'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/services'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/services'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/services'
Making install in http
make[2]: Entering directory '/home/james/proxygen/proxygen/lib/http'
make install-recursive
make[3]: Entering directory '/home/james/proxygen/proxygen/lib/http'
Making install in .
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http'
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/http'
make[5]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/usr/local/include/proxygen/lib/http'
/bin/mkdir -p '/usr/local/include/proxygen/lib/http/codec'
/usr/bin/install -c -m 644 codec/CodecDictionaries.h codec/CodecProtocol.h codec/ErrorCode.h codec/FlowControlFilter.h codec/HTTP1xCodec.h codec/HTTPChecks.h codec/HTTPCodec.h codec/HTTPCodecFilter.h codec/HTTPSettings.h codec/SPDYCodec.h codec/SPDYConstants.h codec/SPDYUtil.h codec/SPDYVersion.h codec/SPDYVersionSettings.h codec/SettingsId.h codec/TransportDirection.h '/usr/local/include/proxygen/lib/http/codec'
/bin/mkdir -p '/usr/local/include/proxygen/lib/http/session'
/usr/bin/install -c -m 644 session/AckLatencyEvent.h session/ByteEventTracker.h session/ByteEvents.h session/CodecErrorResponseHandler.h session/HTTPDirectResponseHandler.h session/HTTPDownstreamSession.h session/HTTPErrorPage.h session/HTTPEvent.h session/HTTPSession.h session/HTTPSessionAcceptor.h session/HTTPSessionController.h session/HTTPSessionStats.h session/HTTPTransaction.h session/HTTPTransactionEgressSM.h session/HTTPTransactionIngressSM.h session/HTTPUpstreamSession.h session/SimpleController.h session/TTLBAStats.h session/TransportFilter.h '/usr/local/include/proxygen/lib/http/session'
/bin/mkdir -p '/usr/local/include/proxygen/lib/http/codec/compress/experimental/hpack9'
/usr/bin/install -c -m 644 codec/compress/experimental/hpack9/HPACKCodec.h codec/compress/experimental/hpack9/HPACKConstants.h codec/compress/experimental/hpack9/HPACKContextImpl.h codec/compress/experimental/hpack9/HPACKDecoder.h codec/compress/experimental/hpack9/HPACKEncoder.h codec/compress/experimental/hpack9/Huffman.h codec/compress/experimental/hpack9/StaticHeaderTable.h '/usr/local/include/proxygen/lib/http/codec/compress/experimental/hpack9'
/usr/bin/install -c -m 644 HTTPCommonHeaders.h HTTPConnector.h HTTPConstants.h HTTPException.h HTTPHeaderSize.h HTTPHeaders.h HTTPMessage.h HTTPMessageFilters.h HTTPMethod.h ProxygenErrorEnum.h RFC2616.h Window.h '/usr/local/include/proxygen/lib/http/.'
/bin/mkdir -p '/usr/local/include/proxygen/lib/http/codec/experimental'
/usr/bin/install -c -m 644 codec/experimental/HTTPRequestVerifier.h codec/experimental/HTTP2Codec.h codec/experimental/HTTP2Constants.h codec/experimental/HTTP2Framer.h '/usr/local/include/proxygen/lib/http/codec/experimental'
/bin/mkdir -p '/usr/local/include/proxygen/lib/http/codec/compress'
/usr/bin/install -c -m 644 codec/compress/GzipHeaderCodec.h codec/compress/HPACKCodec.h codec/compress/HPACKConstants.h codec/compress/HPACKContext.h codec/compress/HPACKDecodeBuffer.h codec/compress/HPACKDecoder.h codec/compress/HPACKEncodeBuffer.h codec/compress/HPACKEncoder.h codec/compress/HPACKHeader.h codec/compress/Header.h codec/compress/HeaderCodec.h codec/compress/HeaderPiece.h codec/compress/HeaderTable.h codec/compress/Huffman.h codec/compress/Logging.h codec/compress/StaticHeaderTable.h '/usr/local/include/proxygen/lib/http/codec/compress'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/http'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http'
Making install in codec
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec'
Making install in .
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec'
make[6]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec'
make[6]: Nothing to be done for 'install-exec-am'.
make[6]: Nothing to be done for 'install-data-am'.
make[6]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec'
Making install in test
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec/test'
Making install in .
make[6]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec/test'
make[7]: Entering directory '/home/james/proxygen/proxygen/lib/http/codec/test'
make[7]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/usr/local/include/proxygen/lib/http/codec/test'
/usr/bin/install -c -m 644 TestUtils.h '/usr/local/include/proxygen/lib/http/codec/test/.'
make[7]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec/test'
make[6]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec/test'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec/test'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http/codec'
Making install in session
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http/session'
Making install in .
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/http/session'
make[6]: Entering directory '/home/james/proxygen/proxygen/lib/http/session'
make[6]: Nothing to be done for 'install-exec-am'.
make[6]: Nothing to be done for 'install-data-am'.
make[6]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session'
Making install in test
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/http/session/test'
Making install in .
make[6]: Entering directory '/home/james/proxygen/proxygen/lib/http/session/test'
make[7]: Entering directory '/home/james/proxygen/proxygen/lib/http/session/test'
make[7]: Nothing to be done for 'install-exec-am'.
make[7]: Nothing to be done for 'install-data-am'.
make[7]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session/test'
make[6]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session/test'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session/test'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http/session'
Making install in test
make[4]: Entering directory '/home/james/proxygen/proxygen/lib/http/test'
Making install in .
make[5]: Entering directory '/home/james/proxygen/proxygen/lib/http/test'
make[6]: Entering directory '/home/james/proxygen/proxygen/lib/http/test'
make[6]: Nothing to be done for 'install-exec-am'.
make[6]: Nothing to be done for 'install-data-am'.
make[6]: Leaving directory '/home/james/proxygen/proxygen/lib/http/test'
make[5]: Leaving directory '/home/james/proxygen/proxygen/lib/http/test'
make[4]: Leaving directory '/home/james/proxygen/proxygen/lib/http/test'
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib/http'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib/http'
make[2]: Entering directory '/home/james/proxygen/proxygen/lib'
make[3]: Entering directory '/home/james/proxygen/proxygen/lib'
/bin/mkdir -p '/usr/local/lib'
/bin/bash ../libtool --mode=install /usr/bin/install -c libproxygenlib.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libproxygenlib.lai /usr/local/lib/libproxygenlib.la
libtool: install: /usr/bin/install -c .libs/libproxygenlib.a /usr/local/lib/libproxygenlib.a
libtool: install: chmod 644 /usr/local/lib/libproxygenlib.a
libtool: install: ranlib /usr/local/lib/libproxygenlib.a

libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib

Libraries have been installed in:
/usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:

  • add LIBDIR to the `LD_LIBRARY_PATH' environment variable
    during execution
  • add LIBDIR to the `LD_RUN_PATH' environment variable
    during linking
  • use the `-Wl,-rpath -Wl,LIBDIR' linker flag
  • have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/james/proxygen/proxygen/lib'
make[2]: Leaving directory '/home/james/proxygen/proxygen/lib'
make[1]: Leaving directory '/home/james/proxygen/proxygen/lib'
Making install in httpserver
make[1]: Entering directory '/home/james/proxygen/proxygen/httpserver'
Making install in .
make[2]: Entering directory '/home/james/proxygen/proxygen/httpserver'
make[3]: Entering directory '/home/james/proxygen/proxygen/httpserver'
/bin/mkdir -p '/usr/local/lib'
/bin/bash ../libtool --mode=install /usr/bin/install -c libproxygenhttpserver.la '/usr/local/lib'
libtool: install: warning: relinking `libproxygenhttpserver.la'
libtool: install: (cd /home/james/proxygen/proxygen/httpserver; /bin/bash /home/james/proxygen/proxygen/libtool --tag CXX --mode=relink g++ -DLIBMC_FBTRACE_DISABLE -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -L/home/james/proxygen/proxygen/folly/folly/.libs/ -o libproxygenhttpserver.la -rpath /usr/local/lib HTTPServer.lo HTTPServerAcceptor.lo RequestHandlerAdaptor.lo SignalHandler.lo ../lib/libproxygenlib.la -liberty -lfolly -lz -lssl -lcrypto -lcap -levent -lgflags -lglog -L/usr/lib64 -lpthread -pthread -lfolly -lglog -ldouble-conversion -lboost_system -lboost_thread )
libtool: relink: g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.9/crtbeginS.o .libs/HTTPServer.o .libs/HTTPServerAcceptor.o .libs/RequestHandlerAdaptor.o .libs/SignalHandler.o -L/home/james/proxygen/proxygen/folly/folly/.libs/ ../lib/.libs/libproxygenlib.a -liberty -lz -lssl -lcrypto -lcap -levent -lgflags -L/usr/lib64 -lpthread -L/usr/local/lib -lfolly -lglog -ldouble-conversion -lboost_system -lboost_thread -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.9/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crtn.o -O3 -O2 -pthread -pthread -Wl,-soname -Wl,libproxygenhttpserver.so.0 -o .libs/libproxygenhttpserver.so.0.0.0
libtool: install: /usr/bin/install -c .libs/libproxygenhttpserver.so.0.0.0T /usr/local/lib/libproxygenhttpserver.so.0.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libproxygenhttpserver.so.0.0.0 libproxygenhttpserver.so.0 || { rm -f libproxygenhttpserver.so.0 && ln -s libproxygenhttpserver.so.0.0.0 libproxygenhttpserver.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libproxygenhttpserver.so.0.0.0 libproxygenhttpserver.so || { rm -f libproxygenhttpserver.so && ln -s libproxygenhttpserver.so.0.0.0 libproxygenhttpserver.so; }; })
libtool: install: /usr/bin/install -c .libs/libproxygenhttpserver.lai /usr/local/lib/libproxygenhttpserver.la
libtool: install: /usr/bin/install -c .libs/libproxygenhttpserver.a /usr/local/lib/libproxygenhttpserver.a
libtool: install: chmod 644 /usr/local/lib/libproxygenhttpserver.a
libtool: install: ranlib /usr/local/lib/libproxygenhttpserver.a

libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib

Libraries have been installed in:
/usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:

  • add LIBDIR to the `LD_LIBRARY_PATH' environment variable
    during execution
  • add LIBDIR to the `LD_RUN_PATH' environment variable
    during linking
  • use the `-Wl,-rpath -Wl,LIBDIR' linker flag
  • have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

/bin/mkdir -p '/usr/local/include/proxygen/httpserver'
/usr/bin/install -c -m 644 Filters.h HTTPServer.h HTTPServerAcceptor.h HTTPServerOptions.h Mocks.h RequestHandler.h RequestHandlerAdaptor.h RequestHandlerFactory.h ResponseBuilder.h ResponseHandler.h ScopedHTTPServer.h SignalHandler.h '/usr/local/include/proxygen/httpserver/.'
make[3]: Leaving directory '/home/james/proxygen/proxygen/httpserver'
make[2]: Leaving directory '/home/james/proxygen/proxygen/httpserver'
Making install in samples
make[2]: Entering directory '/home/james/proxygen/proxygen/httpserver/samples'
Making install in echo
make[3]: Entering directory '/home/james/proxygen/proxygen/httpserver/samples/echo'
Making install in .
make[4]: Entering directory '/home/james/proxygen/proxygen/httpserver/samples/echo'
/bin/bash ../../../libtool --tag=CXX --mode=link g++ -DLIBMC_FBTRACE_DISABLE -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -L/home/james/proxygen/proxygen/folly/folly/.libs/ -o echo_server EchoHandler.o EchoServer.o ../../libproxygenhttpserver.la -liberty -lfolly -lz -lssl -lcrypto -lcap -levent -lgflags -lglog -L/usr/lib64 -lpthread -pthread -lfolly -lglog -ldouble-conversion -lboost_system -lboost_thread
libtool: link: g++ -DLIBMC_FBTRACE_DISABLE -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -o .libs/echo_server EchoHandler.o EchoServer.o -pthread -L/home/james/proxygen/proxygen/folly/folly/.libs/ ../../.libs/libproxygenhttpserver.so -liberty -lz -lssl -lcrypto -lcap -levent -lgflags -L/usr/lib64 -lpthread /home/james/proxygen/proxygen/folly/folly/.libs//libfolly.so -lglog -ldouble-conversion -lboost_system -lboost_thread -pthread
/home/james/proxygen/proxygen/folly/folly/.libs//libfolly.so: undefined reference to jump_fcontext' /home/james/proxygen/proxygen/folly/folly/.libs//libfolly.so: undefined reference tomake_fcontext'
collect2: error: ld returned 1 exit status
Makefile:389: recipe for target 'echo_server' failed
make[4]: *** [echo_server] Error 1
make[4]: Leaving directory '/home/james/proxygen/proxygen/httpserver/samples/echo'
Makefile:438: recipe for target 'install-recursive' failed
make[3]: *** [install-recursive] Error 1
make[3]: Leaving directory '/home/james/proxygen/proxygen/httpserver/samples/echo'
Makefile:351: recipe for target 'install-recursive' failed
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory '/home/james/proxygen/proxygen/httpserver/samples'
Makefile:541: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/james/proxygen/proxygen/httpserver'
Makefile:404: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1

The use of __attribute__((__constructor__))

Is there a specific reason that __attribute__((__constructor__)) is used rather than a dynamic initializer like:

static struct Example {
Example() { /* Do some assembly construction logic here */ }
} s_example;

I ask because, although I can provide the same thing with MSVC, it's not exactly pretty, and it would be much cleaner to switch to initializers.

Failure in session test suite (DanglingQueueTest.max)

[----------] 5 tests from DanglingQueueTest
[ RUN      ] DanglingQueueTest.basic
[       OK ] DanglingQueueTest.basic (47 ms)
[ RUN      ] DanglingQueueTest.chain
[       OK ] DanglingQueueTest.chain (139 ms)
[ RUN      ] DanglingQueueTest.drop
[       OK ] DanglingQueueTest.drop (0 ms)
[ RUN      ] DanglingQueueTest.refresh
[       OK ] DanglingQueueTest.refresh (92 ms)
[ RUN      ] DanglingQueueTest.max
HTTP2PriorityQueueTest.cpp:648: Failure
Value of: IDList()
  Actual: {}
Expected: nodes_
Which is: { (3, '2' (50, 0x32)), (5, '2' (50, 0x32)) }
*** Aborted at 1454449202 (unix time) try "date -d @1454449202" if you are using GNU date ***
PC: @     0x2b7f14178cc9 (unknown)
*** SIGABRT (@0x62d1) received by PID 25297 (TID 0x2b7f121cd740) from PID 25297; stack trace: ***
    @     0x2b7f13069340 (unknown)
    @     0x2b7f14178cc9 (unknown)
    @     0x2b7f1417c0d8 (unknown)
    @           0x53920d proxygen::DanglingQueueTest_max_Test::~DanglingQueueTest_max_Test()
    @           0x58b753 testing::internal::HandleExceptionsInMethodIfSupported<>()
    @           0x584cc0 testing::TestInfo::Run()
    @           0x584de5 testing::TestCase::Run()
    @           0x58579f testing::internal::UnitTestImpl::RunAllTests()
    @           0x58bc63 testing::internal::HandleExceptionsInMethodIfSupported<>()
    @           0x584eb7 testing::UnitTest::Run()
    @           0x41ac71 main
    @     0x2b7f14163ec5 (unknown)
    @           0x41cb17 (unknown)
    @                0x0 (unknown)

I am running:

  • Ubuntu 14.04
  • Boost 1.60
  • Current Folly, Wangle, and Proxygen HEADs as of 2016/02/02 4:46 PM EST
  • GCC 5.3.0

[Mac] gen_HTTPCommonHeaders.*.sh require GNU sed

The gen_HTTPCommonHeaders.h.sh and gen_HTTPCommonHeaders.cpp.sh shell scripts both require GNU sed, and don't work with the default BSD sed on Mac OS X. Context is that I'm poking at HHVM building on OS X again, and this is a blocker.

The problems I've seen so far:

  • BSD sed doesn't support \U or \0.
    | sed 's/.*/\0, HTTP_HEADER_\U\0/' \
    can be replaced with awk '{ print $0", HTTP_HEADER_"toupper($0) }' without too much trouble though.
  • BSD sed doesn't understand or deal with \n the same way as GNU sed, leading there to being the character n in the data passed to gperf when there should be a newline there. Example on my Mac:
$ echo "foo" | sed 's/foo/bar\nbaz/'
barnbaz
$ echo "foo" | gsed 's/foo/bar\nbaz/'
bar
baz
$

I see a couple of options here.

  • Have some configuration that lets you specify what sed you want. This is annoying but doable. Are you cool with this? The HHVM build scripts can detect this and set the right one -- though each project using proxygen would have to do this. Not sure how to do it more generally.
  • This used to be a ruby or python script or something. Is taking a dependency on one of those really that big of a deal? It's much much more likely to be portable than shell script / sed / awk shenanigans -- and we'd end up taking a dependency on gsed on BSD/Mac systems anyways, it does not come preinstalled. This isn't the first portability issue FWIW, cf. 4126e09, in which the scripts originally weren't even portable to a different Linux distribution.

Host header

In HTTP GET request, if Host header contains port number (hostname:port), the server doesnt responds with data. For example HTTP request containing following host header will fail

Host: scontent.cdninstagram.com:443

Requests with following host header will succeed

Host: scontent.cdninstagram.com

Most http clients(I tested curl, chrome, and IE) will strip port number if it is default port for the protocol (80 for http ,or 443 for https). However, as per HTTP RFC host header may include port number if it is specified in URI.

14.23 Host
The Host request-header field specifies the Internet host and port number of the resource being requested, as obtained from the original URI given by the user or referring resource (generally an HTTP URL, as described in section 3.2.2).

deps.sh needs to pull in unzip

Just tried to do a build on a fresh minimal install of ubuntu server. ./deps.sh failed on unzipping gmock.zip as zip was not installed. Need an apt-get install unzip in your deps.sh somewhere.

Mac OSX support incomplete

As per the readme, OS X support is incomplete. What work needs to be done to achieve full compatibility?

Make fails gen_HTTPCommonHeaders.cpp.sh: command not found

Clean checkout of proxygen (72622b8) fails to build.

Checked out the latest proxygen and was unable to build it.

Ran ./deps.sh which makes its way to this error:

Making all in services
make[3]: Entering directory `/home/ajt/libs/proxygen/proxygen/lib/services'
Making all in .
make[4]: Entering directory `/home/ajt/libs/proxygen/proxygen/lib/services'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/home/ajt/libs/proxygen/proxygen/lib/services'
make[3]: Leaving directory `/home/ajt/libs/proxygen/proxygen/lib/services'
Making all in http
make[3]: Entering directory `/home/ajt/libs/proxygen/proxygen/lib/http'
FBCODE_DIR=../../.. INSTALL_DIR=. HEADERS_LIST=./HTTPCommonHeaders.txt gen_HTTPCommonHeaders.cpp.sh
/bin/bash: gen_HTTPCommonHeaders.cpp.sh: command not found
make[3]: *** [HTTPCommonHeaders.cpp] Error 127
make[3]: Leaving directory `/home/ajt/libs/proxygen/proxygen/lib/http'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/ajt/libs/proxygen/proxygen/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ajt/libs/proxygen/proxygen'
make: *** [all] Error 2

I drilled down to the specific makefile and tried to run it independently:

ajt@xps15:~/libs/proxygen/proxygen$ cd lib/http/
ajt@xps15:~/libs/proxygen/proxygen/lib/http$ make
FBCODE_DIR=../../.. INSTALL_DIR=. HEADERS_LIST=./HTTPCommonHeaders.txt gen_HTTPCommonHeaders.cpp.sh
/bin/bash: gen_HTTPCommonHeaders.cpp.sh: command not found
make: *** [HTTPCommonHeaders.cpp] Error 127

Even modified the path to include that directory but the sed command in the script fails as well, which is where I gave up (not a sed or makefile expert and was really just going to play around with proxygen).

ajt@xps15:~/libs/proxygen/proxygen/lib/http$ export PATH=$PATH:$(pwd)
ajt@xps15:~/libs/proxygen/proxygen/lib/http$ make
FBCODE_DIR=../../.. INSTALL_DIR=. HEADERS_LIST=./HTTPCommonHeaders.txt gen_HTTPCommonHeaders.cpp.sh
sed: -e expression #1, char 10: unterminated `s' command
(standard input): The input file is empty!
make: *** [HTTPCommonHeaders.cpp] Error 1

I had built proxygen a few months ago with no difficulty, looks like the build process related to this may have changed recently in this commit:
12b0212

Built on:
Ubuntu 14.04
g++ 4.8.2

Let me know if you need anything else if it is in fact an issue.

-Aaron

Calling deps.sh twice causes an error.

Hi, thank you for your great product proxygen. Nowadays I am in the middle of reviewing feature of proxygen, and have a question.

No error occurs when I call deps.sh for the first time. But calling twice "deps.sh" causes and error as follows.

"fatal: destination path 'fbthrift' already exists and is not an empty directory.
Cannot rebase: You have unstaged changes.
Please commit or stash them."

I think installing other modules(fbthrift, folly and many other libraries) and building should be separated in shell command line.

Thank you in advance.

./deps.sh hangs up on libevent

I've cloned proxygen and launched deps.sh from proxygen dir.
It stops after a while as follows:

configure: WARNING: folly/String.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: folly/String.h: proceeding with the compiler's result
checking for folly/String.h... yes
checking for libevent >= 1.0... no
configure: error: Please install libevent
make: *** No targets specified and no makefile found.  Stop.

By the way, libevent is still there having a version greater than 1.0, as follows:

skypjack@cynnycube:~/projects/proxygen/proxygen (master)$ dpkg -l libevent*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                           Version                      Architecture                 Description
+++-==============================================-============================-============================-==================================================================================================
ii  libevent-2.0-5:amd64                           2.0.21-stable-1.1            amd64                        Asynchronous event notification library
ii  libevent-core-2.0-5:amd64                      2.0.21-stable-1.1            amd64                        Asynchronous event notification library (core)
ii  libevent-dev                                   2.0.21-stable-1.1            amd64                        Asynchronous event notification library (development files)
ii  libevent-extra-2.0-5:amd64                     2.0.21-stable-1.1            amd64                        Asynchronous event notification library (extra)
ii  libevent-openssl-2.0-5:amd64                   2.0.21-stable-1.1            amd64                        Asynchronous event notification library (openssl)
ii  libevent-pthreads-2.0-5:amd64                  2.0.21-stable-1.1            amd64                        Asynchronous event notification library (pthreads)
ii  libeventviews4                                 4:4.14.1-1                   amd64                        event viewing library

Could it be the multiarch environment the problem?
I cannot figure out how to proceed, I'm sorry.
Let me know if I can help you providing more details.

Thank you,
Michele

Body sent on HEAD request

As noted at https://reviews.facebook.net/D38373 , Proxygen does not suppress the sending of the response body when the request is a HEAD request. In fact, even if the application sends no response data, if the HTTPMessage::chunked_ flag is set, HTTP1xCodec::generateEOM() will send an empty chunk "0\r\n", which is a protocol violation.

It's arguable whether a Transfer-Encoding header should be sent on HEAD, but either way, the policy should be Proxygen's responsibility, rather than the application's, which means that the application should be allowed to call HTTPMessage::setIsChunked() on the response to a HEAD request without causing a protocol violation.

I'm not sure how much help Proxygen should give to applications wishing to implement HEAD handling. Certainly, it should not require applications to send a response body to Proxygen to be discarded, since that is inefficient, but maybe Proxygen could automatically discard a response body if one is given.

build error on ubuntu 14.04

Here is the trace:

make[1]: Leaving directory `/data/src/test/proxygen/proxygen/folly/folly'
Cloning wangle
Cloning into 'wangle'...
remote: Counting objects: 703, done.
remote: Total 703 (delta 0), reused 0 (delta 0), pack-reused 703
Receiving objects: 100% (703/703), 258.86 KiB | 267.00 KiB/s, done.
Resolving deltas: 100% (399/399), done.
Checking connectivity... done.
Note: checking out '0fb27ca8d270b906eed795059ed772cf9015c62f'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new_branch_name

HEAD is now at 0fb27ca... [wangle] sync from internal repo
-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found Folly: /usr/local/include
-- Boost version: 1.54.0
-- Found the following Boost libraries:
-- system
-- thread
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.0.1f")
-- Configuring done
-- Generating done
-- Build files have been written to: /data/src/test/proxygen/proxygen/wangle/wangle
Scanning dependencies of target wangle
[ 4%] [ 8%] Building CXX object CMakeFiles/wangle.dir/acceptor/Acceptor.cpp.o
[ 13%] [ 17%] [ 21%] Building CXX object CMakeFiles/wangle.dir/acceptor/ConnectionManager.cpp.o
[ 26%] Building CXX object CMakeFiles/wangle.dir/acceptor/SocketOptions.cpp.o
Building CXX object CMakeFiles/wangle.dir/acceptor/LoadShedConfiguration.cpp.o
[ 30%] [ 34%] Building CXX object CMakeFiles/wangle.dir/acceptor/ManagedConnection.cpp.o
Building CXX object CMakeFiles/wangle.dir/channel/Pipeline.cpp.o
Building CXX object CMakeFiles/wangle.dir/bootstrap/ServerBootstrap.cpp.o
Building CXX object CMakeFiles/wangle.dir/acceptor/TransportInfo.cpp.o
[ 39%] Building CXX object CMakeFiles/wangle.dir/codec/ByteToMessageCodec.cpp.o
[ 43%] Building CXX object CMakeFiles/wangle.dir/codec/LengthFieldBasedFrameDecoder.cpp.o
[ 47%] Building CXX object CMakeFiles/wangle.dir/codec/LengthFieldPrepender.cpp.o
[ 52%] Building CXX object CMakeFiles/wangle.dir/codec/LineBasedFrameDecoder.cpp.o
[ 56%] Building CXX object CMakeFiles/wangle.dir/concurrent/CPUThreadPoolExecutor.cpp.o
[ 60%] Building CXX object CMakeFiles/wangle.dir/concurrent/Codel.cpp.o
[ 65%] Building CXX object CMakeFiles/wangle.dir/concurrent/GlobalExecutor.cpp.o
[ 69%] Building CXX object CMakeFiles/wangle.dir/concurrent/IOThreadPoolExecutor.cpp.o
[ 73%] Building CXX object CMakeFiles/wangle.dir/concurrent/ThreadPoolExecutor.cpp.o
[ 78%] Building CXX object CMakeFiles/wangle.dir/deprecated/rx/Dummy.cpp.o
[ 82%] Building CXX object CMakeFiles/wangle.dir/ssl/PasswordInFile.cpp.o
[ 86%] Building CXX object CMakeFiles/wangle.dir/ssl/SSLContextManager.cpp.o
[ 91%] Building CXX object CMakeFiles/wangle.dir/ssl/SSLSessionCacheManager.cpp.o
[ 95%] Building CXX object CMakeFiles/wangle.dir/ssl/SSLUtil.cpp.o
[100%] Building CXX object CMakeFiles/wangle.dir/ssl/TLSTicketKeyManager.cpp.o
Linking CXX static library lib/libwangle.a
[100%] Built target wangle
autoreconf: Entering directory .' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force autoreconf: configure.ac: tracing autoreconf: configure.ac: creating directory build-aux autoreconf: running: libtoolize --copy --force libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR,build-aux'.
libtoolize: copying file build-aux/ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR,m4'.
libtoolize: copying file m4/libtool.m4' libtoolize: copying filem4/ltoptions.m4'
libtoolize: copying file m4/ltsugar.m4' libtoolize: copying filem4/ltversion.m4'
libtoolize: copying file m4/lt~obsolete.m4' libtoolize: Consider adding-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
libtoolize: AC_PROG_RANLIB' is rendered obsolete byLT_INIT'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:23: installing 'build-aux/compile'
configure.ac:23: installing 'build-aux/config.guess'
configure.ac:23: installing 'build-aux/config.sub'
configure.ac:17: installing 'build-aux/install-sh'
configure.ac:17: installing 'build-aux/missing'
httpserver/Makefile.am: installing 'build-aux/depcomp'
parallel-tests: installing 'build-aux/test-driver'
autoreconf: Leaving directory `.'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '1000' is supported by ustar format... yes
checking whether GID '1000' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @file support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking if g++ supports C++0x features without additional flags... no
checking if g++ supports C++0x features with -std=c++0x... yes
checking if g++ supports C++0x features with -std=gnu++0x... yes
checking for ranlib... (cached) ranlib
checking for openlog in -lglog... yes
checking for getenv in -lgflags... yes
checking for boostlib >= 1.51.0... yes
checking for ANSI C header files... (cached) yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking for stdint.h... (cached) yes
checking for string.h... (cached) yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking for event_set in -levent... yes
checking for cap_get_proc in -lcap... yes
checking for MD5_Init in -lcrypto... yes
checking for SSL_library_init in -lssl... yes
checking for gzread in -lz... yes
checking for getenv in -lfolly... yes
checking for getenv in -lwangle... no
configure: error: Please install the wangle library from https://github.com/facebook/wangle

HAR export support

There exists a very handy tool for performance analysis called BrowserMob Proxy. It allows you to capture HAR files for any browser by acting as a simple MITM proxy. It does not support SPDY, HTTP 2, or TLS, though. Proxygen could be an ideal replacement, if it had the ability of recording requests and outputting them as HAR. I see that there already exists code for reading / replaying HAR files in the test suite code, so I'm wondering if recording HAR files is on the horizon.

Build failing with error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared

I pulled the latest sources from github. I am building this on Ubuntu with the following version info:

Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty

I then ran ./deps.sh and I see the build failing with the following error:

libtool: compile:  g++ -DHAVE_CONFIG_H -I../../.. -I../../lib/test/gmock-1.7.0/include -I../../lib/test/gmock-1.7.0/gtest/include -I/usr/include -DLIBMC_FBTRACE_DISABLE -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -MT session/CodecErrorResponseHandler.lo -MD -MP -MF session/.deps/CodecErrorResponseHandler.Tpo -c session/CodecErrorResponseHandler.cpp -o session/CodecErrorResponseHandler.o
In file included from HTTPConnector.cpp:16:0:
../../../proxygen/lib/http/session/HTTPTransaction.h:391:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:394:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1042:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1050:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
In file included from ../../../proxygen/lib/http/session/HTTPUpstreamSession.h:13:0,
                 from HTTPConnector.cpp:17:
../../../proxygen/lib/http/session/HTTPSession.h:47:55: error: expected class-name before '{' token
   private folly::AsyncTransport::ReplaySafetyCallback {
                                                       ^
../../../proxygen/lib/http/session/HTTPSession.h:1089:7: error: 'ReplaySafetyCallback' has not been declared
       ReplaySafetyCallback* callback) noexcept override {
       ^
../../../proxygen/lib/http/session/HTTPSession.h:1102:7: error: 'ReplaySafetyCallback' has not been declared
       ReplaySafetyCallback* callback) noexcept override {
       ^
../../../proxygen/lib/http/session/HTTPSession.h:1112:13: error: 'ReplaySafetyCallback' was not declared in this scope
   std::list<ReplaySafetyCallback*> waitingForReplaySafety_;
             ^
../../../proxygen/lib/http/session/HTTPSession.h:1112:34: error: template argument 1 is invalid
   std::list<ReplaySafetyCallback*> waitingForReplaySafety_;
                                  ^
../../../proxygen/lib/http/session/HTTPSession.h:1112:34: error: template argument 2 is invalid
../../../proxygen/lib/http/session/HTTPSession.h:1110:8: error: 'void proxygen::HTTPSession::onReplaySafe()' marked override, but does not override
   void onReplaySafe() noexcept override;
        ^
../../../proxygen/lib/http/session/HTTPSession.h: In member function 'virtual void proxygen::HTTPSession::addWaitingForReplaySafety(int*)':
../../../proxygen/lib/http/session/HTTPSession.h:1090:16: error: 'class folly::AsyncTransportWrapper' has no member named 'isReplaySafe'
     if (sock_->isReplaySafe()) {
                ^
../../../proxygen/lib/http/session/HTTPSession.h:1091:17: error: request for member 'onReplaySafe' in '* callback', which is of non-class type 'int'
       callback->onReplaySafe();
                 ^
../../../proxygen/lib/http/session/HTTPSession.h:1093:31: error: request for member 'push_back' in '((proxygen::HTTPSession*)this)->proxygen::HTTPSession::waitingForReplaySafety_', which is of non-class type 'int'
       waitingForReplaySafety_.push_back(callback);
                               ^
../../../proxygen/lib/http/session/HTTPSession.h: In member function 'virtual void proxygen::HTTPSession::removeWaitingForReplaySafety(int*)':
../../../proxygen/lib/http/session/HTTPSession.h:1103:29: error: request for member 'remove' in '((proxygen::HTTPSession*)this)->proxygen::HTTPSession::waitingForReplaySafety_', which is of non-class type 'int'
     waitingForReplaySafety_.remove(callback);
                             ^
HTTPConnector.cpp: In member function 'void proxygen::HTTPConnector::connectSSL(folly::EventBase*, const folly::SocketAddress&, const std::shared_ptr<folly::SSLContext>&, SSL_SESSION*, std::chrono::milliseconds, const OptionMap&, const folly::SocketAddress&, const string&)':
HTTPConnector.cpp:116:12: error: 'class folly::AsyncSSLSocket' has no member named 'forceCacheAddrOnFailure'
   sslSock->forceCacheAddrOnFailure(true);
            ^
depbase=`echo session/HTTPDefaultSessionCodecFactory.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
    /bin/bash ../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I../../.. -I../../lib/test/gmock-1.7.0/include -I../../lib/test/gmock-1.7.0/gtest/include  -I/usr/include   -DLIBMC_FBTRACE_DISABLE  -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -MT session/HTTPDefaultSessionCodecFactory.lo -MD -MP -MF $depbase.Tpo -c -o session/HTTPDefaultSessionCodecFactory.lo session/HTTPDefaultSessionCodecFactory.cpp &&\
    mv -f $depbase.Tpo $depbase.Plo
depbase=`echo session/HTTPDirectResponseHandler.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
    /bin/bash ../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I../../.. -I../../lib/test/gmock-1.7.0/include -I../../lib/test/gmock-1.7.0/gtest/include  -I/usr/include   -DLIBMC_FBTRACE_DISABLE  -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -MT session/HTTPDirectResponseHandler.lo -MD -MP -MF $depbase.Tpo -c -o session/HTTPDirectResponseHandler.lo session/HTTPDirectResponseHandler.cpp &&\
    mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  g++ -DHAVE_CONFIG_H -I../../.. -I../../lib/test/gmock-1.7.0/include -I../../lib/test/gmock-1.7.0/gtest/include -I/usr/include -DLIBMC_FBTRACE_DISABLE -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -MT session/HTTPDefaultSessionCodecFactory.lo -MD -MP -MF session/.deps/HTTPDefaultSessionCodecFactory.Tpo -c session/HTTPDefaultSessionCodecFactory.cpp -o session/HTTPDefaultSessionCodecFactory.o
libtool: compile:  g++ -DHAVE_CONFIG_H -I../../.. -I../../lib/test/gmock-1.7.0/include -I../../lib/test/gmock-1.7.0/gtest/include -I/usr/include -DLIBMC_FBTRACE_DISABLE -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -MT session/HTTPDirectResponseHandler.lo -MD -MP -MF session/.deps/HTTPDirectResponseHandler.Tpo -c session/HTTPDirectResponseHandler.cpp -o session/HTTPDirectResponseHandler.o
depbase=`echo session/HTTPDownstreamSession.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
    /bin/bash ../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I../../.. -I../../lib/test/gmock-1.7.0/include -I../../lib/test/gmock-1.7.0/gtest/include  -I/usr/include   -DLIBMC_FBTRACE_DISABLE  -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -MT session/HTTPDownstreamSession.lo -MD -MP -MF $depbase.Tpo -c -o session/HTTPDownstreamSession.lo session/HTTPDownstreamSession.cpp &&\
    mv -f $depbase.Tpo $depbase.Plo
libtool: compile:  g++ -DHAVE_CONFIG_H -I../../.. -I../../lib/test/gmock-1.7.0/include -I../../lib/test/gmock-1.7.0/gtest/include -I/usr/include -DLIBMC_FBTRACE_DISABLE -Wno-missing-field-initializers -Wno-deprecated -O3 -g -W -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -std=gnu++0x -g -O2 -MT session/HTTPDownstreamSession.lo -MD -MP -MF session/.deps/HTTPDownstreamSession.Tpo -c session/HTTPDownstreamSession.cpp -o session/HTTPDownstreamSession.o
make[5]: *** [HTTPConnector.lo] Error 1
make[5]: *** Waiting for unfinished jobs....
In file included from ../../../proxygen/lib/http/session/CodecErrorResponseHandler.h:12:0,
                 from session/CodecErrorResponseHandler.cpp:10:
../../../proxygen/lib/http/session/HTTPTransaction.h:391:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:394:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1042:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1050:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
In file included from ../../../proxygen/lib/http/session/ByteEvents.h:13:0,
                 from session/ByteEvents.cpp:10:
../../../proxygen/lib/http/session/HTTPTransaction.h:391:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:394:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1042:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1050:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
make[5]: *** [session/CodecErrorResponseHandler.lo] Error 1
make[5]: *** [session/ByteEvents.lo] Error 1
In file included from ../../../proxygen/lib/http/session/ByteEvents.h:13:0,
                 from ../../../proxygen/lib/http/session/ByteEventTracker.h:13,
                 from ../../../proxygen/lib/http/session/HTTPSession.h:23,
                 from ../../../proxygen/lib/http/session/HTTPDownstreamSession.h:12,
                 from session/HTTPDownstreamSession.cpp:10:
../../../proxygen/lib/http/session/HTTPTransaction.h:391:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:394:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1042:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1050:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
In file included from ../../../proxygen/lib/http/session/HTTPDownstreamSession.h:12:0,
                 from session/HTTPDownstreamSession.cpp:10:
../../../proxygen/lib/http/session/HTTPSession.h:47:55: error: expected class-name before '{' token
   private folly::AsyncTransport::ReplaySafetyCallback {
                                                       ^
../../../proxygen/lib/http/session/HTTPSession.h:1089:7: error: 'ReplaySafetyCallback' has not been declared
       ReplaySafetyCallback* callback) noexcept override {
       ^
../../../proxygen/lib/http/session/HTTPSession.h:1102:7: error: 'ReplaySafetyCallback' has not been declared
       ReplaySafetyCallback* callback) noexcept override {
       ^
../../../proxygen/lib/http/session/HTTPSession.h:1112:13: error: 'ReplaySafetyCallback' was not declared in this scope
   std::list<ReplaySafetyCallback*> waitingForReplaySafety_;
             ^
../../../proxygen/lib/http/session/HTTPSession.h:1112:34: error: template argument 1 is invalid
   std::list<ReplaySafetyCallback*> waitingForReplaySafety_;
                                  ^
../../../proxygen/lib/http/session/HTTPSession.h:1112:34: error: template argument 2 is invalid
../../../proxygen/lib/http/session/HTTPSession.h:1110:8: error: 'void proxygen::HTTPSession::onReplaySafe()' marked override, but does not override
   void onReplaySafe() noexcept override;
        ^
In file included from ../../../proxygen/lib/http/session/HTTPDirectResponseHandler.h:12:0,
                 from session/HTTPDirectResponseHandler.cpp:10:
../../../proxygen/lib/http/session/HTTPTransaction.h:391:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:394:32: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
         folly::AsyncTransport::ReplaySafetyCallback* callback) noexcept = 0;
                                ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1042:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
../../../proxygen/lib/http/session/HTTPTransaction.h:1050:30: error: 'folly::AsyncTransport::ReplaySafetyCallback' has not been declared
       folly::AsyncTransport::ReplaySafetyCallback* callback) {
                              ^
../../../proxygen/lib/http/session/HTTPSession.h: In member function 'virtual void proxygen::HTTPSession::addWaitingForReplaySafety(int*)':
../../../proxygen/lib/http/session/HTTPSession.h:1090:16: error: 'class folly::AsyncTransportWrapper' has no member named 'isReplaySafe'
     if (sock_->isReplaySafe()) {
                ^
../../../proxygen/lib/http/session/HTTPSession.h:1091:17: error: request for member 'onReplaySafe' in '* callback', which is of non-class type 'int'
       callback->onReplaySafe();
                 ^
../../../proxygen/lib/http/session/HTTPSession.h:1093:31: error: request for member 'push_back' in '((proxygen::HTTPSession*)this)->proxygen::HTTPSession::waitingForReplaySafety_', which is of non-class type 'int'
       waitingForReplaySafety_.push_back(callback);
                               ^
../../../proxygen/lib/http/session/HTTPSession.h: In member function 'virtual void proxygen::HTTPSession::removeWaitingForReplaySafety(int*)':
../../../proxygen/lib/http/session/HTTPSession.h:1103:29: error: request for member 'remove' in '((proxygen::HTTPSession*)this)->proxygen::HTTPSession::waitingForReplaySafety_', which is of non-class type 'int'
     waitingForReplaySafety_.remove(callback);
                             ^
make[5]: *** [session/HTTPDirectResponseHandler.lo] Error 1
make[5]: *** [session/HTTPDownstreamSession.lo] Error 1

Add HTTP routing

I have written a HTTP router by extending RequestHandlerFactory to multiplex paths to RequestHandler implementations. The routing uses a compacted prefix tree.

Is this something you are interested in having in your repo or should I create a separate repo for it? If you are interested then I will merge it with tests into a public fork and then submit a PR.

CMake!

I'm really interested in this project for some personal stuff I'm doing, but I think it would make the project more accessible if it used CMake instead of interfacing directly with Autotools. You might also leverage some free portability, too, as CMake emits VS and XCode projects, all from one configuration.

Create a ./deps.sh option to compile using a certain number of threads

I've had problems compiling proxygen because of the amount of RAM proxygens compilation takes. I've noticed that 8 cc1plus instances were running and as my computer has limited capacity, those instances were just taking up too much RAM for the system resulting in a failed compilation.

I've solved that problem by increasing my swap.

Specifying how many processes should run at the same time could greatly help in the future though, for all who have limited computers.

patches for centos

Hi,

Has someone already tried to build proxygen for centos/rhel style systems?

Gitter chat room

While google groups offer great open forums, a channel for bouncing ideas around would be great. Having a gitter channel for this repository would support immediate correspondence and be beneficial for the community aspect of this project.

The example 'echo' code does not compile.

The provided example code in /proxygen/httpserver/samples/echo.
This is on a current Archlinux installation with all the dependencies satisfied.
The makefile build fails the same as with ' g++ -std=c++11 -o my_echo EchoServer.cpp EchoHandler.cpp -lproxygenhttpserver -lfolly -lglog -lgflags -pthread'
The compiler errors given are as follows:

EchoServer.cpp:29:13: error: expected constructor, destructor, or type conversion before โ€˜(โ€™ token
DEFINE_int32(http_port, 11000, "Port to listen on with HTTP protocol");
^
EchoServer.cpp:30:13: error: expected constructor, destructor, or type conversion before โ€˜(โ€™ token
DEFINE_int32(spdy_port, 11001, "Port to listen on with SPDY protocol");
^
EchoServer.cpp:31:14: error: expected constructor, destructor, or type conversion before โ€˜(โ€™ token
DEFINE_string(ip, "localhost", "IP/Hostname to bind to");
^
EchoServer.cpp:32:13: error: expected constructor, destructor, or type conversion before โ€˜(โ€™ token
DEFINE_int32(threads, 0, "Number of threads to listen on. Numbers <= 0 "
^
EchoServer.cpp: In function โ€˜int main(int, char**)โ€™:
EchoServer.cpp:54:3: error: โ€˜gflagsโ€™ has not been declared
gflags::ParseCommandLineFlags(&argc, &argv, true);
^
EchoServer.cpp:59:20: error: โ€˜FLAGS_ipโ€™ was not declared in this scope
{SocketAddress(FLAGS_ip, FLAGS_http_port, true), Protocol::HTTP},
^
EchoServer.cpp:59:30: error: โ€˜FLAGS_http_portโ€™ was not declared in this scope
{SocketAddress(FLAGS_ip, FLAGS_http_port, true), Protocol::HTTP},
^
EchoServer.cpp:60:30: error: โ€˜FLAGS_spdy_portโ€™ was not declared in this scope
{SocketAddress(FLAGS_ip, FLAGS_spdy_port, true), Protocol::SPDY},
^
EchoServer.cpp:61:3: error: could not convert โ€˜{{, HTTP}, {, SPDY}}โ€™ from โ€˜โ€™ to โ€˜std::vectorproxygen::HTTPServer::IPConfigโ€™
};
^
EchoServer.cpp:63:7: error: โ€˜FLAGS_threadsโ€™ was not declared in this scope
if (FLAGS_threads <= 0) {
^
EchoServer.cpp:69:41: error: โ€˜FLAGS_threadsโ€™ was not declared in this scope
options.threads = static_cast<size_t>(FLAGS_threads);

build error on ubuntu 15.04

I haven't looked into why this happens at all yet but here is the output of the build

Reading package lists...
Building dependency tree...
Reading state information...
bison is already the newest version.
flex is already the newest version.
g++ is already the newest version.
gperf is already the newest version.
libcap-dev is already the newest version.
libevent-dev is already the newest version.
libkrb5-dev is already the newest version.
libsasl2-dev is already the newest version.
libsnappy-dev is already the newest version.
libtool is already the newest version.
pkg-config is already the newest version.
wget is already the newest version.
autoconf-archive is already the newest version.
libboost-all-dev is already the newest version.
libjemalloc-dev is already the newest version.
libnuma-dev is already the newest version.
libssl-dev is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
Reading package lists...
Building dependency tree...
Reading state information...
libgoogle-glog-dev is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
Reading package lists...
Building dependency tree...
Reading state information...
libgflags-dev is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
Reading package lists...
Building dependency tree...
Reading state information...
libdouble-conversion-dev is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
HEAD is now at 1b62ef8... Bump version to 42:0
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @file support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking if g++ supports C++0x features without additional flags... no
checking if g++ supports C++0x features with -std=c++0x... yes
checking if g++ supports C++0x features with -std=gnu++0x... yes
checking for openlog in -lglog... yes
checking for getenv in -lgflags... yes
checking for SSL_ctrl in -lssl... yes
checking for boostlib >= 1.51.0... yes
checking whether the Boost::Context library is available... no
checking whether the Boost::Thread library is available... yes
checking for exit in -lboost_thread... yes
checking whether the Boost::Regex library is available... yes
checking for exit in -lboost_regex... yes
checking whether the Boost::System library is available... yes
checking for exit in -lboost_system... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... yes
checking for ANSI C header files... (cached) yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking features.h usability... yes
checking features.h presence... yes
checking for features.h... yes
checking for inttypes.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking mutex.h usability... no
checking mutex.h presence... no
checking for mutex.h... no
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking emmintrin.h usability... yes
checking emmintrin.h presence... yes
checking for emmintrin.h... yes
checking byteswap.h usability... yes
checking byteswap.h presence... yes
checking for byteswap.h... yes
checking bits/functexcept.h usability... yes
checking bits/functexcept.h presence... yes
checking for bits/functexcept.h... yes
checking bits/c++config.h usability... yes
checking bits/c++config.h presence... yes
checking for bits/c++config.h... yes
checking double-conversion/double-conversion.h usability... yes
checking double-conversion/double-conversion.h presence... yes
checking for double-conversion/double-conversion.h... yes
checking for ceil in -ldouble-conversion... yes
checking for event_set in -levent... yes
checking for xallocx in -ljemalloc... yes
checking for stdbool.h that conforms to C99... yes
checking for Bool... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking for working volatile... yes
checking for __int128... yes
checking for ptrdiff_t... yes
checking for pthread_spinlock_t... yes
checking for ifunc support... yes
checking for final and override support... yes
checking for std::this_thread::sleep_for... yes
checking for constexpr strlen... yes
checking for libc++... no
checking for usable std::is_trivially_copyable... no
checking gflags namespace... google
checking for weak symbol support... yes
checking for library containing cplus_demangle_v3_callback... no
checking for library containing clock_gettime... none required
checking for pthread_atfork support... yes
checking for getdelim... yes
checking for gettimeofday... yes
checking for memmove... yes
checking for memset... yes
checking for pow... yes
checking for strerror... yes
checking for pthread_yield... no
checking for malloc_size... no
checking for malloc_usable_size... yes
checking for memrchr... yes
checking for pipe2... yes
checking sched.h usability... yes
checking sched.h presence... yes
checking for sched.h... yes
checking for sched_yield... yes
checking lz4.h usability... no
checking lz4.h presence... no
checking for lz4.h... no
checking snappy.h usability... yes
checking snappy.h presence... yes
checking for snappy.h... yes
checking for main in -lsnappy... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for main in -lz... yes
checking lzma.h usability... yes
checking lzma.h presence... yes
checking for lzma.h... yes
checking for main in -llzma... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating test/Makefile
config.status: creating test/function_benchmark/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing folly-config.h commands
config.status: creating folly-config.h - prefix FOLLY for config.h defines
config.status: folly-config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
make all-recursive
make[1]: Entering directory '/home/james/proxygen/proxygen/folly/folly'
Making all in .
make[2]: Entering directory '/home/james/proxygen/proxygen/folly/folly'
/bin/bash ./libtool --tag=CXX --mode=link g++ -std=gnu++0x -g -O2 -lboost_thread -lboost_filesystem -lboost_system -lboost_regex -lpthread -version-info 42:0:0 -o libfollybase.la Conv.lo Demangle.lo EscapeTables.lo Format.lo FormatTables.lo Malloc.lo Range.lo StringBase.lo String.lo Unicode.lo -llzma -lz -lsnappy -ljemalloc -levent -ldouble-conversion -lssl -lgflags -lglog
depbase=echo io/async/AsyncTimeout.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncTimeout.lo -MD -MP -MF $depbase.Tpo -c -o io/async/AsyncTimeout.lo io/async/AsyncTimeout.cpp &&
mv -f $depbase.Tpo $depbase.Plo
depbase=echo io/async/AsyncUDPSocket.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncUDPSocket.lo -MD -MP -MF $depbase.Tpo -c -o io/async/AsyncUDPSocket.lo io/async/AsyncUDPSocket.cpp &&
mv -f $depbase.Tpo $depbase.Plo
depbase=echo io/async/AsyncServerSocket.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncServerSocket.lo -MD -MP -MF $depbase.Tpo -c -o io/async/AsyncServerSocket.lo io/async/AsyncServerSocket.cpp &&
mv -f $depbase.Tpo $depbase.Plo
depbase=echo io/async/AsyncSocket.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncSocket.lo -MD -MP -MF $depbase.Tpo -c -o io/async/AsyncSocket.lo io/async/AsyncSocket.cpp &&
mv -f $depbase.Tpo $depbase.Plo
depbase=echo io/async/AsyncSSLSocket.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncSSLSocket.lo -MD -MP -MF $depbase.Tpo -c -o io/async/AsyncSSLSocket.lo io/async/AsyncSSLSocket.cpp &&
mv -f $depbase.Tpo $depbase.Plo
depbase=echo io/async/EventBase.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventBase.lo -MD -MP -MF $depbase.Tpo -c -o io/async/EventBase.lo io/async/EventBase.cpp &&
mv -f $depbase.Tpo $depbase.Plo
depbase=echo io/async/EventBaseManager.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventBaseManager.lo -MD -MP -MF $depbase.Tpo -c -o io/async/EventBaseManager.lo io/async/EventBaseManager.cpp &&
mv -f $depbase.Tpo $depbase.Plo
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventBaseManager.lo -MD -MP -MF io/async/.deps/EventBaseManager.Tpo -c io/async/EventBaseManager.cpp -fPIC -DPIC -o io/async/.libs/EventBaseManager.o
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncSocket.lo -MD -MP -MF io/async/.deps/AsyncSocket.Tpo -c io/async/AsyncSocket.cpp -fPIC -DPIC -o io/async/.libs/AsyncSocket.o
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncTimeout.lo -MD -MP -MF io/async/.deps/AsyncTimeout.Tpo -c io/async/AsyncTimeout.cpp -fPIC -DPIC -o io/async/.libs/AsyncTimeout.o
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncUDPSocket.lo -MD -MP -MF io/async/.deps/AsyncUDPSocket.Tpo -c io/async/AsyncUDPSocket.cpp -fPIC -DPIC -o io/async/.libs/AsyncUDPSocket.o
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncServerSocket.lo -MD -MP -MF io/async/.deps/AsyncServerSocket.Tpo -c io/async/AsyncServerSocket.cpp -fPIC -DPIC -o io/async/.libs/AsyncServerSocket.o
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventBase.lo -MD -MP -MF io/async/.deps/EventBase.Tpo -c io/async/EventBase.cpp -fPIC -DPIC -o io/async/.libs/EventBase.o
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/AsyncSSLSocket.lo -MD -MP -MF io/async/.deps/AsyncSSLSocket.Tpo -c io/async/AsyncSSLSocket.cpp -fPIC -DPIC -o io/async/.libs/AsyncSSLSocket.o
libtool: link: warning: -version-info/-version-number' is ignored for convenience libraries libtool: link: ar cru .libs/libfollybase.a .libs/Conv.o .libs/Demangle.o .libs/EscapeTables.o .libs/Format.o .libs/FormatTables.o .libs/Malloc.o .libs/Range.o .libs/StringBase.o .libs/String.o .libs/Unicode.o libtool: link: ranlib .libs/libfollybase.a libtool: link: ( cd ".libs" && rm -f "libfollybase.la" && ln -s "../libfollybase.la" "libfollybase.la" ) depbase=echo io/async/EventHandler.lo | sed 's|[^/]
$|.deps/&amp;|;s|.lo$||'`;
/bin/bash ./libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventHandler.lo -MD -MP -MF $depbase.Tpo -c -o io/async/EventHandler.lo io/async/EventHandler.cpp &&
mv -f $depbase.Tpo $depbase.Plo
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventHandler.lo -MD -MP -MF io/async/.deps/EventHandler.Tpo -c io/async/EventHandler.cpp -fPIC -DPIC -o io/async/.libs/EventHandler.o
In file included from ./../folly/io/async/EventHandler.h:24:0,
from ./../folly/io/async/AsyncServerSocket.h:20,
from io/async/AsyncServerSocket.cpp:21:
./../folly/io/async/EventUtil.h: In static member function 'static bool folly::EventUtil::isEventRegistered(const event_)':
./../folly/io/async/EventUtil.h:38:17: error: 'const struct event' has no member named 'ev_flags'
return (ev->ev_flags & EVLIST_REGISTERED);
^
In file included from ./../folly/io/async/EventHandler.h:24:0,
from io/async/EventHandler.cpp:21:
./../folly/io/async/EventUtil.h: In static member function 'static bool folly::EventUtil::isEventRegistered(const event_)':
./../folly/io/async/EventUtil.h:38:17: error: 'const struct event' has no member named 'ev_flags'
return (ev->ev_flags & EVLIST_REGISTERED);
^
In file included from io/async/AsyncTimeout.cpp:23:0:
./../folly/io/async/EventUtil.h: In static member function 'static bool folly::EventUtil::isEventRegistered(const event_)':
./../folly/io/async/EventUtil.h:38:17: error: 'const struct event' has no member named 'ev_flags'
return (ev->ev_flags & EVLIST_REGISTERED);
^
In file included from io/async/AsyncTimeout.cpp:26:0:
io/async/AsyncTimeout.cpp: In static member function 'static void folly::AsyncTimeout::libeventCallback(int, short int, void*)':
io/async/AsyncTimeout.cpp:147:27: error: 'struct event' has no member named 'ev_flags'
assert((timeout->event_.ev_flags & ~EVLIST_INTERNAL) == EVLIST_INIT);
^
io/async/EventHandler.cpp: In member function 'bool folly::EventHandler::registerImpl(uint16_t, bool)':
io/async/EventHandler.cpp:53:34: error: 'struct event' has no member named 'ev_flags'
static_cast(event_.ev_flags & EVLIST_INTERNAL) == internal) {
^
io/async/EventHandler.cpp:70:12: error: 'struct event' has no member named 'ev_flags'
event_.ev_flags |= EVLIST_INTERNAL;
^
io/async/EventHandler.cpp: In member function 'bool folly::EventHandler::isPending() const':
io/async/EventHandler.cpp:171:14: error: 'const struct event' has no member named 'ev_flags'
if (event_.ev_flags & EVLIST_ACTIVE) {
^
In file included from ./../folly/io/async/EventHandler.h:24:0,
from ./../folly/io/async/NotificationQueue.h:23,
from io/async/EventBase.cpp:24:
./../folly/io/async/EventUtil.h: In static member function 'static bool folly::EventUtil::isEventRegistered(const event_)':
./../folly/io/async/EventUtil.h:38:17: error: 'const struct event' has no member named 'ev_flags'
return (ev->ev_flags & EVLIST_REGISTERED);
^
io/async/EventBase.cpp: In member function 'virtual void folly::EventBase::attachTimeoutManager(folly::AsyncTimeout_, folly::TimeoutManager::InternalEnum)':
io/async/EventBase.cpp:777:9: error: 'struct event' has no member named 'ev_flags'
ev->ev_flags |= EVLIST_INTERNAL;
^
Makefile:1381: recipe for target 'io/async/AsyncTimeout.lo' failed
make[2]: *** [io/async/AsyncTimeout.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
Makefile:1381: recipe for target 'io/async/EventHandler.lo' failed
make[2]: *** [io/async/EventHandler.lo] Error 1
In file included from ./../folly/io/async/EventHandler.h:24:0,
from ./../folly/io/async/AsyncSocket.h:28,
from io/async/AsyncSocket.cpp:17:
./../folly/io/async/EventUtil.h: In static member function 'static bool folly::EventUtil::isEventRegistered(const event_)':
./../folly/io/async/EventUtil.h:38:17: error: 'const struct event' has no member named 'ev_flags'
return (ev->ev_flags & EVLIST_REGISTERED);
^
Makefile:1381: recipe for target 'io/async/EventBase.lo' failed
make[2]: ** [io/async/EventBase.lo] Error 1
In file included from ./../folly/io/async/EventHandler.h:24:0,
from ./../folly/io/async/AsyncUDPSocket.h:23,
from io/async/AsyncUDPSocket.cpp:17:
./../folly/io/async/EventUtil.h: In static member function 'static bool folly::EventUtil::isEventRegistered(const event
)':
./../folly/io/async/EventUtil.h:38:17: error: 'const struct event' has no member named 'ev_flags'
return (ev->ev_flags & EVLIST_REGISTERED);
^
Makefile:1381: recipe for target 'io/async/AsyncServerSocket.lo' failed
make[2]: ** [io/async/AsyncServerSocket.lo] Error 1
In file included from ./../folly/io/async/EventHandler.h:24:0,
from ./../folly/io/async/AsyncSocket.h:28,
from ./../folly/io/async/AsyncSSLSocket.h:25,
from io/async/AsyncSSLSocket.cpp:17:
./../folly/io/async/EventUtil.h: In static member function 'static bool folly::EventUtil::isEventRegistered(const event
)':
./../folly/io/async/EventUtil.h:38:17: error: 'const struct event' has no member named 'ev_flags'
return (ev->ev_flags & EVLIST_REGISTERED);
^
Makefile:1381: recipe for target 'io/async/AsyncSocket.lo' failed
make[2]: *_* [io/async/AsyncSocket.lo] Error 1
Makefile:1381: recipe for target 'io/async/AsyncUDPSocket.lo' failed
make[2]: *** [io/async/AsyncUDPSocket.lo] Error 1
libtool: compile: g++ -DHAVE_CONFIG_H -I./.. -pthread -I/usr/include -std=gnu++0x -g -O2 -MT io/async/EventBaseManager.lo -MD -MP -MF io/async/.deps/EventBaseManager.Tpo -c io/async/EventBaseManager.cpp -o io/async/EventBaseManager.o >/dev/null 2>&1
Makefile:1381: recipe for target 'io/async/AsyncSSLSocket.lo' failed
make[2]: *** [io/async/AsyncSSLSocket.lo] Error 1
make[2]: Leaving directory '/home/james/proxygen/proxygen/folly/folly'
Makefile:1442: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/james/proxygen/proxygen/folly/folly'
Makefile:898: recipe for target 'all' failed
make: *** [all] Error 2

Builds are failing on ubuntu

Here is the trace:

vagrant@vagrant-ubuntu-trusty-64:/proxygen/proxygen/proxygen$ ./deps.sh
Reading package lists...
Building dependency tree...
Reading state information...
libssl-dev is already the newest version.
wget is already the newest version.
The following extra packages will be installed:
autoconf automake autotools-dev libbison-dev libevent-core-2.0-5
libevent-extra-2.0-5 libevent-openssl-2.0-5 libevent-pthreads-2.0-5
libfl-dev m4
Suggested packages:
autoconf2.13 gnu-standards autoconf-doc libtool gettext bison-doc
build-essential krb5-doc
The following NEW packages will be installed:
autoconf autoconf-archive automake autotools-dev bison flex gperf
libbison-dev libcap-dev libevent-core-2.0-5 libevent-dev
libevent-extra-2.0-5 libevent-openssl-2.0-5 libevent-pthreads-2.0-5
libfl-dev libkrb5-dev libnuma-dev libsasl2-dev m4 pkg-config
0 upgraded, 20 newly installed, 0 to remove and 26 not upgraded.
Need to get 3,558 kB of archives.
After this operation, 15.2 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe autoconf-archive all 20131101-1 [710 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main m4 amd64 1.4.17-2ubuntu1 [195 kB]
Get:3 http://archive.ubuntu.com/ubuntu/ trusty/main libfl-dev amd64 2.5.35-10.1ubuntu2 [17.2 kB]
Get:4 http://archive.ubuntu.com/ubuntu/ trusty/main flex amd64 2.5.35-10.1ubuntu2 [211 kB]
Get:5 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libevent-core-2.0-5 amd64 2.0.21-stable-1ubuntu1.14.04.1 [78.3 kB]
Get:6 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libevent-extra-2.0-5 amd64 2.0.21-stable-1ubuntu1.14.04.1 [57.8 kB]
Get:7 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libevent-openssl-2.0-5 amd64 2.0.21-stable-1ubuntu1.14.04.1 [12.6 kB]
Get:8 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libevent-pthreads-2.0-5 amd64 2.0.21-stable-1ubuntu1.14.04.1 [6,126 B]
Get:9 http://archive.ubuntu.com/ubuntu/ trusty/main autoconf all 2.69-6 [322 kB]
Get:10 http://archive.ubuntu.com/ubuntu/ trusty/main autotools-dev all 20130810.1 [44.3 kB]
Get:11 http://archive.ubuntu.com/ubuntu/ trusty/main automake all 1:1.14.1-2ubuntu1 [510 kB]
Get:12 http://archive.ubuntu.com/ubuntu/ trusty/main libbison-dev amd64 2:3.0.2.dfsg-2 [338 kB]
Get:13 http://archive.ubuntu.com/ubuntu/ trusty/main bison amd64 2:3.0.2.dfsg-2 [257 kB]
Get:14 http://archive.ubuntu.com/ubuntu/ trusty/main gperf amd64 3.0.4-1 [111 kB]
Get:15 http://archive.ubuntu.com/ubuntu/ trusty/main libcap-dev amd64 1:2.24-0ubuntu2 [21.6 kB]
Get:16 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libevent-dev amd64 2.0.21-stable-1ubuntu1.14.04.1 [269 kB]
Get:17 http://archive.ubuntu.com/ubuntu/ trusty/main libsasl2-dev amd64 2.1.25.dfsg1-17build1 [311 kB]
Get:18 http://archive.ubuntu.com/ubuntu/ trusty/main pkg-config amd64 0.26-1ubuntu4 [40.9 kB]
Get:19 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libkrb5-dev amd64 1.12+dfsg-2ubuntu5.1 [14.4 kB]
Get:20 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libnuma-dev amd64 2.0.9
rc5-1ubuntu3 [31.7 kB]
Fetched 3,558 kB in 9s (381 kB/s)
Selecting previously unselected package autoconf-archive.
(Reading database ... 77921 files and directories currently installed.)
Preparing to unpack .../autoconf-archive_20131101-1_all.deb ...
Unpacking autoconf-archive (20131101-1) ...
Selecting previously unselected package m4.
Preparing to unpack .../m4_1.4.17-2ubuntu1_amd64.deb ...
Unpacking m4 (1.4.17-2ubuntu1) ...
Selecting previously unselected package libfl-dev:amd64.
Preparing to unpack .../libfl-dev_2.5.35-10.1ubuntu2_amd64.deb ...
Unpacking libfl-dev:amd64 (2.5.35-10.1ubuntu2) ...
Selecting previously unselected package flex.
Preparing to unpack .../flex_2.5.35-10.1ubuntu2_amd64.deb ...
Unpacking flex (2.5.35-10.1ubuntu2) ...
Selecting previously unselected package libevent-core-2.0-5:amd64.
Preparing to unpack .../libevent-core-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb ...
Unpacking libevent-core-2.0-5:amd64 (2.0.21-stable-1ubuntu1.14.04.1) ...
Selecting previously unselected package libevent-extra-2.0-5:amd64.
Preparing to unpack .../libevent-extra-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb ...
Unpacking libevent-extra-2.0-5:amd64 (2.0.21-stable-1ubuntu1.14.04.1) ...
Selecting previously unselected package libevent-openssl-2.0-5:amd64.
Preparing to unpack .../libevent-openssl-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb ...
Unpacking libevent-openssl-2.0-5:amd64 (2.0.21-stable-1ubuntu1.14.04.1) ...
Selecting previously unselected package libevent-pthreads-2.0-5:amd64.
Preparing to unpack .../libevent-pthreads-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb ...
Unpacking libevent-pthreads-2.0-5:amd64 (2.0.21-stable-1ubuntu1.14.04.1) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../autoconf_2.69-6_all.deb ...
Unpacking autoconf (2.69-6) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../autotools-dev_20130810.1_all.deb ...
Unpacking autotools-dev (20130810.1) ...
Selecting previously unselected package automake.
Preparing to unpack .../automake_1%3a1.14.1-2ubuntu1_all.deb ...
Unpacking automake (1:1.14.1-2ubuntu1) ...
Selecting previously unselected package libbison-dev:amd64.
Preparing to unpack .../libbison-dev_2%3a3.0.2.dfsg-2_amd64.deb ...
Unpacking libbison-dev:amd64 (2:3.0.2.dfsg-2) ...
Selecting previously unselected package bison.
Preparing to unpack .../bison_2%3a3.0.2.dfsg-2_amd64.deb ...
Unpacking bison (2:3.0.2.dfsg-2) ...
Selecting previously unselected package gperf.
Preparing to unpack .../gperf_3.0.4-1_amd64.deb ...
Unpacking gperf (3.0.4-1) ...
Selecting previously unselected package libcap-dev:amd64.
Preparing to unpack .../libcap-dev_1%3a2.24-0ubuntu2_amd64.deb ...
Unpacking libcap-dev:amd64 (1:2.24-0ubuntu2) ...
Selecting previously unselected package libevent-dev.
Preparing to unpack .../libevent-dev_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb ...
Unpacking libevent-dev (2.0.21-stable-1ubuntu1.14.04.1) ...
Selecting previously unselected package libsasl2-dev.
Preparing to unpack .../libsasl2-dev_2.1.25.dfsg1-17build1_amd64.deb ...
Unpacking libsasl2-dev (2.1.25.dfsg1-17build1) ...
Selecting previously unselected package pkg-config.
Preparing to unpack .../pkg-config_0.26-1ubuntu4_amd64.deb ...
Unpacking pkg-config (0.26-1ubuntu4) ...
Selecting previously unselected package libkrb5-dev.
Preparing to unpack .../libkrb5-dev_1.12+dfsg-2ubuntu5.1_amd64.deb ...
Unpacking libkrb5-dev (1.12+dfsg-2ubuntu5.1) ...
Selecting previously unselected package libnuma-dev:amd64.
Preparing to unpack .../libnuma-dev_2.0.9rc5-1ubuntu3_amd64.deb ...
Unpacking libnuma-dev:amd64 (2.0.9
rc5-1ubuntu3) ...
Processing triggers for install-info (5.2.0.dfsg.1-2) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up autoconf-archive (20131101-1) ...
Setting up m4 (1.4.17-2ubuntu1) ...
Setting up libfl-dev:amd64 (2.5.35-10.1ubuntu2) ...
Setting up flex (2.5.35-10.1ubuntu2) ...
Setting up libevent-core-2.0-5:amd64 (2.0.21-stable-1ubuntu1.14.04.1) ...
Setting up libevent-extra-2.0-5:amd64 (2.0.21-stable-1ubuntu1.14.04.1) ...
Setting up libevent-openssl-2.0-5:amd64 (2.0.21-stable-1ubuntu1.14.04.1) ...
Setting up libevent-pthreads-2.0-5:amd64 (2.0.21-stable-1ubuntu1.14.04.1) ...
Setting up autoconf (2.69-6) ...
Setting up autotools-dev (20130810.1) ...
Setting up automake (1:1.14.1-2ubuntu1) ...
update-alternatives: using /usr/bin/automake-1.14 to provide /usr/bin/automake (automake) in auto mode
Setting up libbison-dev:amd64 (2:3.0.2.dfsg-2) ...
Setting up bison (2:3.0.2.dfsg-2) ...
update-alternatives: using /usr/bin/bison.yacc to provide /usr/bin/yacc (yacc) in auto mode
Setting up gperf (3.0.4-1) ...
Setting up libcap-dev:amd64 (1:2.24-0ubuntu2) ...
Setting up libevent-dev (2.0.21-stable-1ubuntu1.14.04.1) ...
Setting up libsasl2-dev (2.1.25.dfsg1-17build1) ...
Setting up pkg-config (0.26-1ubuntu4) ...
Setting up libkrb5-dev (1.12+dfsg-2ubuntu5.1) ...
Setting up libnuma-dev:amd64 (2.0.9~rc5-1ubuntu3) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libgflags-dev libgflags2 libgoogle-glog0 libunwind8
The following NEW packages will be installed:
libgflags-dev libgflags2 libgoogle-glog-dev libgoogle-glog0 libunwind8
0 upgraded, 5 newly installed, 0 to remove and 26 not upgraded.
Need to get 353 kB of archives.
After this operation, 1,757 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main libgflags2 amd64 2.0-1.1ubuntu1 [65.9 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main libunwind8 amd64 1.1-2.2ubuntu3 [48.3 kB]
Get:3 http://archive.ubuntu.com/ubuntu/ trusty/main libgoogle-glog0 amd64 0.3.3-1 [61.3 kB]
Get:4 http://archive.ubuntu.com/ubuntu/ trusty/main libgflags-dev amd64 2.0-1.1ubuntu1 [72.7 kB]
Get:5 http://archive.ubuntu.com/ubuntu/ trusty/main libgoogle-glog-dev amd64 0.3.3-1 [105 kB]
Fetched 353 kB in 7s (49.4 kB/s)
Selecting previously unselected package libgflags2.
(Reading database ... 79615 files and directories currently installed.)
Preparing to unpack .../libgflags2_2.0-1.1ubuntu1_amd64.deb ...
Unpacking libgflags2 (2.0-1.1ubuntu1) ...
Selecting previously unselected package libunwind8.
Preparing to unpack .../libunwind8_1.1-2.2ubuntu3_amd64.deb ...
Unpacking libunwind8 (1.1-2.2ubuntu3) ...
Selecting previously unselected package libgoogle-glog0.
Preparing to unpack .../libgoogle-glog0_0.3.3-1_amd64.deb ...
Unpacking libgoogle-glog0 (0.3.3-1) ...
Selecting previously unselected package libgflags-dev.
Preparing to unpack .../libgflags-dev_2.0-1.1ubuntu1_amd64.deb ...
Unpacking libgflags-dev (2.0-1.1ubuntu1) ...
Selecting previously unselected package libgoogle-glog-dev.
Preparing to unpack .../libgoogle-glog-dev_0.3.3-1_amd64.deb ...
Unpacking libgoogle-glog-dev (0.3.3-1) ...
Setting up libgflags2 (2.0-1.1ubuntu1) ...
Setting up libunwind8 (1.1-2.2ubuntu3) ...
Setting up libgoogle-glog0 (0.3.3-1) ...
Setting up libgflags-dev (2.0-1.1ubuntu1) ...
Setting up libgoogle-glog-dev (0.3.3-1) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
libgflags-dev is already the newest version.
libgflags-dev set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libdouble-conversion1
The following NEW packages will be installed:
libdouble-conversion-dev libdouble-conversion1
0 upgraded, 2 newly installed, 0 to remove and 26 not upgraded.
Need to get 78.9 kB of archives.
After this operation, 344 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe libdouble-conversion1 amd64 2.0.1-1 [31.5 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty/universe libdouble-conversion-dev amd64 2.0.1-1 [47.3 kB]
Fetched 78.9 kB in 5s (15.5 kB/s)
Selecting previously unselected package libdouble-conversion1:amd64.
(Reading database ... 79668 files and directories currently installed.)
Preparing to unpack .../libdouble-conversion1_2.0.1-1_amd64.deb ...
Unpacking libdouble-conversion1:amd64 (2.0.1-1) ...
Selecting previously unselected package libdouble-conversion-dev.
Preparing to unpack .../libdouble-conversion-dev_2.0.1-1_amd64.deb ...
Unpacking libdouble-conversion-dev (2.0.1-1) ...
Setting up libdouble-conversion1:amd64 (2.0.1-1) ...
Setting up libdouble-conversion-dev (2.0.1-1) ...
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
Cloning folly
Cloning into 'folly'...
remote: Counting objects: 12096, done.
remote: Total 12096 (delta 0), reused 0 (delta 0), pack-reused 12096
Receiving objects: 100% (12096/12096), 5.31 MiB | 7.14 MiB/s, done.
Resolving deltas: 100% (9373/9373), done.
Checking connectivity... done.
Note: checking out 'v0.34.0'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new_branch_name

HEAD is now at 7c9f263... Bump version to 34:0
configure.ac:32: warning: macro 'AM_PROG_LIBTOOL' not found in library
configure.ac:32: error: possibly undefined macro: AM_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1

Build Issues

Hi,
When I was trying to build the proxygen, I got the "fbthrift +folly Build failed" error.
After digging into it, I found out that proxygen is building the older version of fbthrift and also fbthrift is trying to build older version of folly. So I cloned the latest fbthrift/folly and build it separately and commented out the fbthrift /folly build script in "proxygen/deps.sh". Now it worked !

Can we set the proxygen to use the latest fbthrift/folly rather than the older versions? (same goes for fbthrift)

Missing ax_prefix_config_h.m4

Installation fails with:
./configure: line 2672: syntax error near unexpected token `proxygen-config.h,'

./configure: line 2672: `AX_PREFIX_CONFIG_H(proxygen-config.h, proxygen, config.h)'

Can be fixed by copying ax_prefix_config_h.m4 to proxygen/proxygen/m4

Update comment

proxygen/external/http_parser/http_parser_cpp.cpp
1974 /*
1975 * just ignore this shit. TODO check for overflow

Suggest something like: "Ignore chunk parameters. They're not used in any HTTP implementation."

SPDYCodecTest.HeaderWithManyValues test fails on Ubuntu > 14

...
[ RUN ] SPDYCodecTest.HeaderWithManyValues
SPDYCodecTest.cpp:538: Failure
Value of: 1
Expected: callbacks.headersComplete
Which is: 0
SPDYCodecTest.cpp:540: Failure
Value of: 0
Expected: callbacks.streamErrors
Which is: 1
F1226 18:08:32.613636 22638 SPDYCodecTest.cpp:542] Check failed: 'callbacks.msg.get()' Must be non NULL
*** Check failure stack trace: ***
@ 0x7fd80b3f45cd google::LogMessage::Fail()
@ 0x7fd80b3f6433 google::LogMessage::SendToLog()
@ 0x7fd80b3f415b google::LogMessage::Flush()
@ 0x7fd80b3f6e1e google::LogMessageFatal::~LogMessageFatal()
@ 0x45639e SPDYCodecTest_HeaderWithManyValues_Test::TestBody()
@ 0x4f9613 testing::internal::HandleExceptionsInMethodIfSupported<>()
@ 0x4f1e0a testing::Test::Run()
@ 0x4f1f58 testing::TestInfo::Run()
@ 0x4f2035 testing::TestCase::Run()
@ 0x4f22ff testing::internal::UnitTestImpl::RunAllTests()
@ 0x4f9af3 testing::internal::HandleExceptionsInMethodIfSupported<>()
@ 0x4f2624 testing::UnitTest::Run()
@ 0x40f1d1 main
@ 0x7fd80a881a40 __libc_start_main
@ 0x40f689 _start
@ (nil) (unknown)
FAIL CodecTests (exit status: 134)
...

Support for Windows (Server)

Hey,

First of all, thanks for opensource proxygen. It seems to be an interesting project.

At the moment proxygen works on linux only,but support for windows would be nice to have. I know that facebooks main focus are linux distros but windows support would be a good way to make proxgen platform independent.

Greetings
Tonka

Check failed: worker != workers_.end() when using SSLContextConfig

I'm trying to setup TLS using proxygen tag 0.28.0. However, when I run the program, I get the following:

F0703 10:53:44.163373  2344 ServerBootstrap.cpp:40] Check failed: worker != workers_.end()
*** Check failure stack trace: ***
    @     0x7fc7d294cdaa  (unknown)
    @     0x7fc7d294cce4  (unknown)
    @     0x7fc7d294c6e6  (unknown)
    @     0x7fc7d294f687  (unknown)
    @     0x7fc7d2fea282  folly::ServerWorkerPool::threadStopped()
    @     0x7fc7d2ff143c  folly::wangle::IOThreadPoolExecutor::stopThreads()
    @     0x7fc7d2ffe4aa  folly::wangle::ThreadPoolExecutor::removeThreads()
    @     0x7fc7d2ffe632  folly::wangle::ThreadPoolExecutor::stop()
    @     0x7fc7d2ff2a94  folly::wangle::IOThreadPoolExecutor::~IOThreadPoolExecutor()
    @           0x40911a  std::_Sp_counted_base<>::_M_release()
    @     0x7fc7d336d85e  proxygen::HTTPServer::start()
    @           0x4059aa  _ZZ4mainENKUlvE_clEv
    @           0x40704c  _ZNSt12_Bind_simpleIFZ4mainEUlvE_vEE9_M_invokeIIEEEvSt12_Index_tupleIIXspT_EEE
    @           0x406fa3  _ZNSt12_Bind_simpleIFZ4mainEUlvE_vEEclEv
    @           0x406f3c  _ZNSt6thread5_ImplISt12_Bind_simpleIFZ4mainEUlvE_vEEE6_M_runEv
    @     0x7fc7d26e9a40  (unknown)
    @     0x7fc7d1c2e182  start_thread
    @     0x7fc7d215747d  (unknown)
    @              (nil)  (unknown)
Aborted (core dumped)`

Here's the function that I'm using to build the IPConfig object:

HTTPServer::IPConfig buildIpConfig(const string &ip, const uint32_t &port, const Protocol &protocol)
{
    SSLContextConfig sslCfg;
    sslCfg.isDefault = true;
    sslCfg.setCertificate(FLAGS_sslcrt, FLAGS_sslkey, FLAGS_sslkeypass);
    sslCfg.sslVersion = folly::SSLContext::SSLVersion::TLSv1;

    HTTPServer::IPConfig ipCfg(SocketAddress(ip, port, true), protocol);
    ipCfg.sslConfigs.push_back(std::move(sslCfg));

    return std::move(ipCfg);
}

where FLAGS_sslcrt is the certificate, FLAGS_sslkey is the private key in PEM format, and FLAGS_sslkeypass is the password to the private key.

Below is the code that I use to create the parameter passed to HTTPServer::bind():

std::vector<HTTPServer::IPConfig> IPs;
IPs.push_back(buildIpConfig(FLAGS_ip, FLAGS_http_port, Protocol::HTTP));
IPs.push_back(buildIpConfig(FLAGS_ip, FLAGS_spdy_port, Protocol::SPDY));

I based my code on proxygen/httpserver/tests/HTTPServerTest.cpp

Cannot build echo server (ubuntu 14.04)

This is same as #73
shivam@shivam-PC:~/proxygen/proxygen/httpserver/samples/echo$ g++ -std=c++11 -o my_echo EchoServer.cpp EchoHandler.cpp -lproxygenhttpserver -lfolly -lglog -lgflags -pthread
EchoServer.cpp:14:44: fatal error: proxygen/httpserver/HTTPServer.h: No such file or directory
#include <proxygen/httpserver/HTTPServer.h>
^
compilation terminated.
In file included from EchoHandler.cpp:10:0:
EchoHandler.h:13:48: fatal error: proxygen/httpserver/RequestHandler.h: No such file or directory
#include <proxygen/httpserver/RequestHandler.h>
^
compilation terminated.

Got this after running ./deps.sh && ./reinstall.sh

Wrong namespace of gflags (in test code).

I've built on CentOS7, everything seems OK but "make check" doesn't work because of the wrong namespace of gflags. (I used gflags-2.1.1.)

--- lib/test/TestMain.cpp-      2014-11-09 09:39:41.214275717 +0900
+++ lib/test/TestMain.cpp       2014-11-09 12:09:51.171483219 +0900
@@ -14,7 +14,7 @@

 int main(int argc, char* argv[]) {
   testing::InitGoogleTest(&argc, argv);
-  google::ParseCommandLineFlags(&argc, &argv, true);
+  gflags::ParseCommandLineFlags(&argc, &argv, true);
   google::InitGoogleLogging(argv[0]);
   google::InstallFailureSignalHandler();
   LOG(INFO) << "Running tests from TestMain.cpp";
--- lib/ssl/test/SSLCacheTest.cpp-      2014-11-09 09:39:41.214275717 +0900
+++ lib/ssl/test/SSLCacheTest.cpp       2014-11-09 12:11:30.324706817 +0900
@@ -96,10 +96,10 @@
 int
 main(int argc, char* argv[])
 {
-  google::SetUsageMessage(std::string("\n\n"
+  gflags::SetUsageMessage(std::string("\n\n"
 "usage: sslcachetest [options] -c <clients> -t <threads> servers\n"
 ));
-  google::ParseCommandLineFlags(&argc, &argv, true);
+  gflags::ParseCommandLineFlags(&argc, &argv, true);
   int reqs = 0;
   int hits = 0;
   int miss = 0;

HTTP2 Support

Tracking bug for HTTP2. Post on here when there's a progress.

Testsuite for proxygen 19.0 fails

Fresh checkout of proxygen 19.0 fails during testsuite

make[8]: Entering directory '/proxygen/proxygen/lib/http/codec/test'
*** Error in `/proxygen/proxygen/lib/http/codec/test/.libs/lt-CodecTests': free(): invalid size: 0x0000000001a46f50 ***
../../../../build-aux/test-driver: line 107: 15806 Aborted (core dumped) "$@" > $log_file 2>&1
FAIL: CodecTests
make[9]: Entering directory '/proxygen/proxygen/lib/http/codec/test'
Making all in .
make[10]: Entering directory '/proxygen/proxygen/lib/http/codec/test'
make[10]: Nothing to be done for 'all-am'.
make[10]: Leaving directory '/proxygen/proxygen/lib/http/codec/test'

make[9]: Leaving directory '/proxygen/proxygen/lib/http/codec/test'

Testsuite summary for proxygen 19.0

TOTAL: 1

PASS: 0

SKIP: 0

XFAIL: 0

FAIL: 1

XPASS: 0

ERROR: 0

See lib/http/codec/test/test-suite.log

Makefile:806: recipe for target 'test-suite.log' failed
make[8]: *** [test-suite.log] Error 1
make[8]: Leaving directory '/proxygen/proxygen/lib/http/codec/test'
Makefile:912: recipe for target 'check-TESTS' failed
make[7]: *** [check-TESTS] Error 2
make[7]: Leaving directory '/proxygen/proxygen/lib/http/codec/test'
Makefile:1010: recipe for target 'check-am' failed
make[6]: *** [check-am] Error 2
make[6]: Leaving directory '/proxygen/proxygen/lib/http/codec/test'
Makefile:699: recipe for target 'check-recursive' failed
make[5]: *** [check-recursive] Error 1
make[5]: Leaving directory '/proxygen/proxygen/lib/http/codec/test'
Makefile:351: recipe for target 'check-recursive' failed
make[4]: *** [check-recursive] Error 1
make[4]: Leaving directory '/proxygen/proxygen/lib/http/codec'
Makefile:865: recipe for target 'check-recursive' failed
make[3]: *** [check-recursive] Error 1
make[3]: Leaving directory '/proxygen/proxygen/lib/http'
Makefile:1014: recipe for target 'check' failed
make[2]: *** [check] Error 2
make[2]: Leaving directory '/proxygen/proxygen/lib/http'
Makefile:499: recipe for target 'check-recursive' failed
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory '/proxygen/proxygen/lib'
Makefile:404: recipe for target 'check-recursive' failed
make: *** [check-recursive] Error 1

lib/http/codec/test/test-suite.log:

proxygen 19.0: lib/http/codec/test/test-suite.log

TOTAL: 1

PASS: 0

SKIP: 0

XFAIL: 0

FAIL: 1

XPASS: 0

ERROR: 0

.. contents:: :depth: 2

FAIL: CodecTests

[==========] Running 51 tests from 5 test cases.
[----------] Global test environment set-up.
[----------] 2 tests from DefaultFlowControl
[ RUN ] DefaultFlowControl.flow_control_construct

[WARNING] gmock-1.6.0/gtest/src/gtest-death-test.cc:789:: Death tests use fork(), which is unsafe particularly in a threaded context. For this test, Google Test couldn't detect the number of threads.
[ OK ] DefaultFlowControl.flow_control_construct (177 ms)
[ RUN ] DefaultFlowControl.send_update
[ OK ] DefaultFlowControl.send_update (0 ms)
[----------] 2 tests from DefaultFlowControl (177 ms total)

[----------] 2 tests from BigWindow
[ RUN ] BigWindow.recv_too_much
[ OK ] BigWindow.recv_too_much (7 ms)
[ RUN ] BigWindow.remote_increase
[ OK ] BigWindow.remote_increase (1 ms)
[----------] 2 tests from BigWindow (8 ms total)

[----------] 3 tests from HTTPChecksTest
[ RUN ] HTTPChecksTest.send_trace_body_death

[WARNING] gmock-1.6.0/gtest/src/gtest-death-test.cc:789:: Death tests use fork(), which is unsafe particularly in a threaded context. For this test, Google Test couldn't detect the number of threads.
*** Aborted at 1428583805 (unix time) try "date -d @1428583805" if you are using GNU date ***
PC: @ 0x7f60c715bd27 (unknown)
*** SIGABRT (@0x3e800003dbe) received by PID 15806 (TID 0x7f60c8ae4840) from PID 15806; stack trace: ***
@ 0x7f60c82abc90 (unknown)
@ 0x7f60c715bd27 (unknown)
@ 0x7f60c715d418 (unknown)
@ 0x7f60c719d9f4 (unknown)
@ 0x7f60c71a5006 (unknown)
@ 0x48b4b3 proxygen::HTTPHeaders::disposeOfHeaderNames()
@ 0x48b564 proxygen::HTTPHeaders::~HTTPHeaders()
@ 0x4903a4 proxygen::HTTPMessage::~HTTPMessage()
@ 0x40eca1 HTTPChecksTest_send_trace_body_death_Test::TestBody()
@ 0x4ef543 testing::internal::HandleExceptionsInMethodIfSupported<>()
@ 0x4e7f0a testing::Test::Run()
@ 0x4e8058 testing::TestInfo::Run()
@ 0x4e8135 testing::TestCase::Run()
@ 0x4e8438 testing::internal::UnitTestImpl::RunAllTests()
@ 0x4e8707 testing::UnitTest::Run()
@ 0x40e3b1 main
@ 0x7f60c7146ec5 (unknown)
@ 0x40e869 (unknown)
@ 0x0 (unknown)

reinstall then fails with:
./reinstall.sh: line 15: cd: fbthrift/thrift/folly/folly: No such file or directory

System:

Ubuntu 14.10
gcc (Ubuntu 4.9.1-16ubuntu6) 4.9.1
Linux MacBookPro 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Cannot build the echo server on Ubuntu 14.04.3

david@david-VirtualBox:~/Documents/Proxigen/proxygen-master/proxygen/httpserver/samples/echo$ g++ -std=c++11 -o my_echo EchoServer.cpp EchoHandler.cpp -lproxygenhttpserver -lfolly -lglog -lgflags -pthread
EchoServer.cpp:14:44: fatal error: proxygen/httpserver/HTTPServer.h: No such file or directory
#include <proxygen/httpserver/HTTPServer.h>
^
compilation terminated.
In file included from EchoHandler.cpp:10:0:
EchoHandler.h:13:48: fatal error: proxygen/httpserver/RequestHandler.h: No such file or directory
#include <proxygen/httpserver/RequestHandler.h>
^
compilation terminated.

This was after I built the dependencies with the suggested ./deps.sh && ./reinstall.sh command

Error building CurlClient

I am trying to create a HTTPClient, but get a error building CurlClient provided in samples.

shivam@shivam-PC:~/proxygen/proxygen/httpclient/samples/curl$ g++ -std=c++11 -o my_echo CurlClient.cpp CurlClientMain.cpp -lproxygenhttpserver -lfolly -lglog -lgflags -pthread
/tmp/cc4U1LxS.o: In function CurlService::CurlClient::connectSuccess(proxygen::HTTPUpstreamSession*)': CurlClient.cpp:(.text+0x6cc): undefined reference toproxygen::HTTPUpstreamSession::newTransaction(proxygen::HTTPTransactionHandler_)'
/tmp/cc7ZOsgn.o: In function main': CurlClientMain.cpp:(.text+0x41e): undefined reference toproxygen::HTTPConnector::HTTPConnector(proxygen::HTTPConnector::Callback_, folly::HHWheelTimer_)'
CurlClientMain.cpp:(.text+0x5b4): undefined reference to proxygen::HTTPConnector::connectSSL(folly::EventBase_, folly::SocketAddress const&, std::shared_ptrfolly::SSLContext const&, ssl_session_st_, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::less<folly::AsyncSocket::OptionKey>, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&, std::string const&)' CurlClientMain.cpp:(.text+0x60e): undefined reference to proxygen::HTTPConnector::connect(folly::EventBase_, folly::SocketAddress const&, std::chrono::duration<long, std::ratio<1l, 1000l> >, std::map<folly::AsyncSocket::OptionKey, int, std::lessfolly::AsyncSocket::OptionKey, std::allocator<std::pair<folly::AsyncSocket::OptionKey const, int> > > const&, folly::SocketAddress const&)'
CurlClientMain.cpp:(.text+0x631): undefined reference to proxygen::HTTPConnector::~HTTPConnector()' CurlClientMain.cpp:(.text+0x842): undefined reference toproxygen::HTTPConnector::~HTTPConnector()'
collect2: error: ld returned 1 exit status

Build error

c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.8/README.Bugs for instructions.
make[2]: *** [CMakeFiles/BootstrapTest.dir/bootstrap/BootstrapTest.cpp.o] Error 4
make[1]: *** [CMakeFiles/BootstrapTest.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Linking CXX executable bin/PeekingAcceptorHandshakeHelperTest
Linking CXX executable bin/OutputBufferingHandlerTest
[ 91%] Built target CodecTest
[ 91%] [ 91%] Built target PeekingAcceptorHandshakeHelperTest
Built target OutputBufferingHandlerTest
Linking CXX executable bin/AsyncSocketHandlerTest
[ 91%] Built target AsyncSocketHandlerTest
Linking CXX executable bin/ObservingHandlerTest
[ 91%] Built target ObservingHandlerTest
Linking CXX executable bin/BroadcastHandlerTest
[ 91%] Built target BroadcastHandlerTest
Linking CXX executable bin/BroadcastPoolTest
[ 91%] Built target BroadcastPoolTest
make: *** [all] Error 2

Installation is not copying HTTP2PriorityQueue.h to /usr/local/include

If you build the EchoServer example outside of Proxygen the following error happens:

In file included from /usr/local/include/proxygen/httpserver/RequestHandler.h:12:0,
                 from /usr/local/include/proxygen/httpserver/Filters.h:12,
                 from /usr/local/include/proxygen/httpserver/HTTPServerOptions.h:13,
                 from /usr/local/include/proxygen/httpserver/HTTPServer.h:16,
                 from EchoServer.cpp:14:
/usr/local/include/proxygen/lib/http/session/HTTPTransaction.h:26:58: fatal error: proxygen/lib/http/session/HTTP2PriorityQueue.h: No such file or directory
 #include <proxygen/lib/http/session/HTTP2PriorityQueue.h>

Manually copying the header fixes the issue

Getting errors with compression set to true

The offending class is in ZLibServerFilter.h and the offending line is in the sendHeaders method:

void sendHeaders(HTTPMessage& msg) noexcept override {
    DCHECK(compressor_ == nullptr);
    DCHECK(header_ == false); //This is the offending line

    chunked_ = msg.getIsChunked();

    // Make final determination of whether to compress
    compress_ = isCompressibleContentType(msg) &&
      (chunked_ || isMinimumCompressibleSize(msg));

    // Add the gzip header
    if (compress_) {
      auto& headers = msg.getHeaders();
      headers.set(HTTP_HEADER_CONTENT_ENCODING, "gzip");
    }

    // If it's chunked or not being compressed then the headers can be sent
    // if it's compressed and one body, then need to calculate content length.
    if (chunked_ || !compress_) {
      Filter::sendHeaders(msg);
      header_ = true;
    } else {
      responseMessage_ = folly::make_unique<HTTPMessage>(msg);
    }
  }

This is the code for my onEOM method:

void whod::server::file_server::file_handler::onEOM() noexcept
{
    if (file_container_->contains(path_))
    {
        ResponseBuilder(downstream_)
                .status(200, "OK")
                .body(file_container_->get(path_))
                .sendWithEOM();
    }
    ResponseBuilder(downstream_)
            .status(404, "NOT FOUND")
            .body(file_container_->get("/404.html"))
            .sendWithEOM();
}

the stack trace:
F0308 09:19:55.967344 12264 ZlibServerFilter.h:39] Check failed: header_ == false
*** Check failure stack trace: ***
@ 0x7f097fd47daa (unknown)
@ 0x7f097fd47ce4 (unknown)
@ 0x7f097fd476e6 (unknown)
@ 0x7f097fd4a687 (unknown)
@ 0x7f09806d6709 proxygen::ZlibServerFilter::sendHeaders()
@ 0x44cd29 proxygen::ResponseBuilder::send()
@ 0x44cb62 proxygen::ResponseBuilder::sendWithEOM()
@ 0x44bca3 whod::server::file_server::file_handler::onEOM()
@ 0x7f0980718583 proxygen::HTTPTransaction::processIngressEOM()
@ 0x7f098071991d proxygen::HTTPTransaction::onIngressEOM()
@ 0x7f098070c26f proxygen::HTTPSession::onMessageComplete()
@ 0x7f098073c2e5 proxygen::HTTP1xCodec::onMessageComplete()
@ 0x7f098073d44a proxygen::HTTP1xCodec::onMessageCompleteCB()
@ 0x7f09806ffe80 proxygen::http_parser_execute()
@ 0x7f098073c919 proxygen::HTTP1xCodec::onIngress()
@ 0x7f0980704b67 proxygen::HTTPSession::processReadData()
@ 0x7f0980706645 proxygen::HTTPSession::readDataAvailable()
@ 0x7f0980145180 folly::AsyncSocket::handleRead()
@ 0x7f0980141edb folly::AsyncSocket::ioReady()
@ 0x7f097d7ccf24 (unknown)
@ 0x7f09801537ee folly::EventBase::loopBody()
@ 0x7f0980154a84 folly::EventBase::loopForever()
@ 0x7f0980787cef wangle::IOThreadPoolExecutor::threadRun()
@ 0x7f098079ad83 ZNKSt7_Mem_fnIMN6wangle18ThreadPoolExecutorEFvSt10shared_ptrINS1_6ThreadEEEEclIJRS4_EvEEvPS1_DpOT
@ 0x7f098079960d _ZNSt5_BindIFSt7_Mem_fnIMN6wangle18ThreadPoolExecutorEFvSt10shared_ptrINS2_6ThreadEEEEPS2_S5_EE6__callIvIEILm0ELm1EEEET_OSt5tupleIIDpT0_EESt12_Index_tupleIIXspT1_EEE
@ 0x7f0980796f88 std::_Bind<>::operator()<>()
@ 0x7f0980794d93 std::_Function_handler<>::_M_invoke()
@ 0x7f097f8c4a60 (unknown)
@ 0x7f097f3e7182 start_thread
@ 0x7f097f11438d (unknown)
@ (nil) (unknown)

Testsuite for folly (master HEAD) fails

latest commit:
commit ed8ed6fa2bcf2effd98f2db132bd147da358ab52
Author: Alan Frindell <[email protected]>
Date:   Tue Jan 26 13:19:10 2016 -0800

    More detail in HTTPCodecPrinter

    Summary: Print the URL or status code.

    Reviewed By: yfeldblum

    Differential Revision: D2851996

    fb-gh-sync-id: eed874f88164be7387de23a381bd78f8bbab1f52




=======================================================
   proxygen 32.0: lib/http/codec/test/test-suite.log
=======================================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: CodecTests
================

[==========] Running 55 tests from 5 test cases.
[----------] Global test environment set-up.
[----------] 2 tests from DefaultFlowControl
[ RUN      ] DefaultFlowControl.flow_control_construct

[WARNING] gmock-1.7.0/gtest/src/gtest-death-test.cc:825:: Death tests use fork(), which is unsafe particularly in a threaded context. For this test, Google Test couldn't detect the number of threads.
[       OK ] DefaultFlowControl.flow_control_construct (98 ms)
[ RUN      ] DefaultFlowControl.send_update
[       OK ] DefaultFlowControl.send_update (1 ms)
[----------] 2 tests from DefaultFlowControl (99 ms total)

[----------] 2 tests from BigWindow
[ RUN      ] BigWindow.recv_too_much
[       OK ] BigWindow.recv_too_much (2 ms)
[ RUN      ] BigWindow.remote_increase
[       OK ] BigWindow.remote_increase (0 ms)
[----------] 2 tests from BigWindow (2 ms total)

[----------] 3 tests from HTTPChecksTest
[ RUN      ] HTTPChecksTest.send_trace_body_death

[WARNING] gmock-1.7.0/gtest/src/gtest-death-test.cc:825:: Death tests use fork(), which is unsafe particularly in a threaded context. For this test, Google Test couldn't detect the number of threads.
[       OK ] HTTPChecksTest.send_trace_body_death (91 ms)
[ RUN      ] HTTPChecksTest.send_get_body
[       OK ] HTTPChecksTest.send_get_body (0 ms)
[ RUN      ] HTTPChecksTest.recv_trace_body
[       OK ] HTTPChecksTest.recv_trace_body (0 ms)
[----------] 3 tests from HTTPChecksTest (91 ms total)

[----------] 43 tests from SPDYCodecTest
[ RUN      ] SPDYCodecTest.JunkSPDY
E0127 09:17:12.988301 27564 SPDYCodec.cpp:250] SYN_STREAM: invalid length 4 < 10
[       OK ] SPDYCodecTest.JunkSPDY (0 ms)
[ RUN      ] SPDYCodecTest.LongPing
E0127 09:17:12.988493 27564 SPDYCodec.cpp:242] PING: invalid length 5 != 4
[       OK ] SPDYCodecTest.LongPing (0 ms)
[ RUN      ] SPDYCodecTest.BadType
[       OK ] SPDYCodecTest.BadType (0 ms)
[ RUN      ] SPDYCodecTest.SynStreamBoundaries
[       OK ] SPDYCodecTest.SynStreamBoundaries (27 ms)
[ RUN      ] SPDYCodecTest.SetSettings
[       OK ] SPDYCodecTest.SetSettings (0 ms)
[ RUN      ] SPDYCodecTest.FrameTooLarge
E0127 09:17:13.015197 27564 SPDYCodec.cpp:307] excessive frame size length_=1050
[       OK ] SPDYCodecTest.FrameTooLarge (0 ms)
[ RUN      ] SPDYCodecTest.FrameUncompressedTooLarge
E0127 09:17:13.015252 27564 GzipHeaderCodec.cpp:342] Decompressed headers too large
[       OK ] SPDYCodecTest.FrameUncompressedTooLarge (0 ms)
[ RUN      ] SPDYCodecTest.UnsupportedVersion
E0127 09:17:13.015290 27564 SPDYCodec.cpp:250] SYN_STREAM: invalid length 4 < 10
[       OK ] SPDYCodecTest.UnsupportedVersion (0 ms)
[ RUN      ] SPDYCodecTest.UnsupportedFrameType
[       OK ] SPDYCodecTest.UnsupportedFrameType (0 ms)
[ RUN      ] SPDYCodecTest.DefaultMaxTransactions
[       OK ] SPDYCodecTest.DefaultMaxTransactions (1 ms)
[ RUN      ] SPDYCodecTest.NonDefaultMaxTransactions
[       OK ] SPDYCodecTest.NonDefaultMaxTransactions (0 ms)
[ RUN      ] SPDYCodecTest.EmptyHeaderValue
[       OK ] SPDYCodecTest.EmptyHeaderValue (0 ms)
[ RUN      ] SPDYCodecTest.SynStreamWrongVersion
E0127 09:17:13.017009 27564 SPDYCodec.cpp:285] Invalid version=2
[       OK ] SPDYCodecTest.SynStreamWrongVersion (0 ms)
[ RUN      ] SPDYCodecTest.ShortSynReply
[       OK ] SPDYCodecTest.ShortSynReply (0 ms)
[ RUN      ] SPDYCodecTest.SupportsSessionFlowControl
[       OK ] SPDYCodecTest.SupportsSessionFlowControl (0 ms)
[ RUN      ] SPDYCodecTest.HeaderWithManyValues
SPDYCodecTest.cpp:538: Failure
Value of: 1
Expected: callbacks.headersComplete
Which is: 0
SPDYCodecTest.cpp:540: Failure
Value of: 0
Expected: callbacks.streamErrors
Which is: 1
F0127 09:17:13.017393 27564 SPDYCodecTest.cpp:542] Check failed: 'callbacks.msg.get()' Must be non NULL 
*** Check failure stack trace: ***
    @     0x7f25f7e425cd  google::LogMessage::Fail()
    @     0x7f25f7e44433  google::LogMessage::SendToLog()
    @     0x7f25f7e4215b  google::LogMessage::Flush()
    @     0x7f25f7e44e1e  google::LogMessageFatal::~LogMessageFatal()
    @           0x45534e  SPDYCodecTest_HeaderWithManyValues_Test::TestBody()
    @           0x4f8353  testing::internal::HandleExceptionsInMethodIfSupported<>()
    @           0x4f0b4a  testing::Test::Run()
    @           0x4f0c98  testing::TestInfo::Run()
    @           0x4f0d75  testing::TestCase::Run()
    @           0x4f103f  testing::internal::UnitTestImpl::RunAllTests()
    @           0x4f8833  testing::internal::HandleExceptionsInMethodIfSupported<>()
    @           0x4f1364  testing::UnitTest::Run()
    @           0x40e221  main
    @     0x7f25f72e3a00  __libc_start_main
    @           0x40e6d9  _start
    @              (nil)  (unknown)
FAIL CodecTests (exit status: 134)

Unable to install Proxygen

I ran the commands as mentioned (run ./deps.sh and then ./reinstall.sh) but the installation fails. Here are the last few lines of the make output: https://gist.github.com/vaibhav-kaushal/586b51257494d56e673a

Basically it never gets out of that tests folder. Here is a screenshot:

screenshot 2014-12-26 17 54 07

I have waited for more than an hour, nothing happened. I tried reinstalling the things again and again but fails every time. I have an Ubuntu updated 14.04 (desktop). What might be the problem here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.