|  | Apache Thrift (an Apache Incubator project) | 
|  |  | 
|  | Last Modified: 2009-Jan-30 | 
|  |  | 
|  | Thrift is distributed under the Apache License, v2.0. Please see the | 
|  | included LICENSE file. | 
|  |  | 
|  | Introduction | 
|  | ============ | 
|  |  | 
|  | Thrift is a lightweight, language-independent software stack with an | 
|  | associated code generation mechanism for RPC. Thrift provides clean | 
|  | abstractions for data transport, data serialization, and application | 
|  | level processing. The code generation system takes a simple definition | 
|  | language as its input and generates code across programming languages that | 
|  | uses the abstracted stack to build interoperable RPC clients and servers. | 
|  |  | 
|  | Thrift is specifically designed to support non-atomic version changes | 
|  | across client and server code. | 
|  |  | 
|  | For more details on Thrift's design and implementation, take a gander at | 
|  | the Thrift whitepaper included in this distribution or at the README files | 
|  | in your particular subdirectory of interest. | 
|  |  | 
|  | Heirarchy | 
|  | ========= | 
|  |  | 
|  | thrift/ | 
|  |  | 
|  | compiler/ | 
|  | Contains the Thrift compiler, implemented in C++. | 
|  |  | 
|  | lib/ | 
|  | Contains the Thrift software library implementation, subdivided by | 
|  | language of implementation. | 
|  |  | 
|  | cpp/ | 
|  | java/ | 
|  | php/ | 
|  | py/ | 
|  | rb/ | 
|  |  | 
|  | test/ | 
|  |  | 
|  | Contains sample Thrift files and test code across the target programming | 
|  | languages. | 
|  |  | 
|  | tutorial/ | 
|  |  | 
|  | Contains a basic tutorial that will teach you how to develop software | 
|  | using Thrift. | 
|  |  | 
|  | Requirements | 
|  | ============ | 
|  |  | 
|  | Thrift requires boost shared pointers from boost-1.33.1 or greater, see: | 
|  | http://www.boost.org/libs/smart_ptr/smart_ptr.htm | 
|  |  | 
|  | Some portions of Thrift also depend upon libevent, see: | 
|  | http://monkey.org/~provos/libevent/ | 
|  |  | 
|  | Some portions of Thrift also depend upon zlib, see: | 
|  | http://www.zlib.net/ | 
|  |  | 
|  | These libraries are open source and may be freely obtained, but they are not | 
|  | provided as a part of this distribution. | 
|  |  | 
|  | Resources | 
|  | ========= | 
|  |  | 
|  | More information about Thrift can be obtained on the Thrift webpage at: | 
|  |  | 
|  | http://incubator.apache.org/thrift | 
|  |  | 
|  | Acknowledgments | 
|  | =============== | 
|  |  | 
|  | Thrift was inspired by pillar, a lightweight RPC tool written by Adam D'Angelo, | 
|  | and also by Google's protocol buffers. | 
|  |  | 
|  | Installation | 
|  | ============ | 
|  |  | 
|  | If you are building from the first time out of the source repository, you will | 
|  | need to generate the configure scripts.  (This is not necessary if you | 
|  | downloaded a tarball.)  From the top directory, do: | 
|  |  | 
|  | ./bootstrap.sh | 
|  |  | 
|  | Once the configure scripts are generated, thrift can be configured. | 
|  | From the top directory, do: | 
|  |  | 
|  | ./configure | 
|  |  | 
|  | You may need to specify the location of the boost files explicitly. | 
|  | If you installed boost in /usr/local, you would run configure as follows: | 
|  |  | 
|  | ./configure --with-boost=/usr/local | 
|  |  | 
|  | Note that by default the thrift C++ library is typically built with debugging | 
|  | symbols included. If you want to customize these options you should use the | 
|  | CXXFLAGS option in configure, as such: | 
|  |  | 
|  | ./configure CXXFLAGS='-g -O2' | 
|  | ./configure CFLAGS='-g -O2' | 
|  | ./configure CPPFLAGS='-DDEBUG_MY_FEATURE' | 
|  |  | 
|  | Run ./configure --help to see other configuration options | 
|  |  | 
|  | Please be aware that the Python library will ignore the --prefix option | 
|  | and just install wherever Python's distutils puts it (usually along | 
|  | the lines of /usr/lib/pythonX.Y/site-packages/).  If you need to control | 
|  | where the Python modules are installed, set the PY_PREFIX variable. | 
|  | (DESTDIR is respected for Python and C++.) | 
|  |  | 
|  | Make thrift: | 
|  |  | 
|  | make | 
|  |  | 
|  | From the top directory, become superuser and do: | 
|  |  | 
|  | make install | 
|  |  | 
|  | Note that some language packages must be installed manually using build tools | 
|  | better suited to those languages (at the time of this writing, this applies | 
|  | to Java, Ruby, PHP). | 
|  |  | 
|  | Look for the README file in the lib/<language>/ folder for more details on the | 
|  | installation of each language library package. |