2009-01-30 19:10:27 +00:00
|
|
|
Apache Thrift (an Apache Incubator project)
|
2006-08-23 22:34:00 +00:00
|
|
|
|
2009-01-30 19:10:27 +00:00
|
|
|
Last Modified: 2009-Jan-30
|
2006-08-23 22:34:00 +00:00
|
|
|
|
2009-04-08 00:19:37 +00:00
|
|
|
License
|
|
|
|
=======
|
|
|
|
|
|
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
|
|
or more contributor license agreements. See the NOTICE file
|
|
|
|
distributed with this work for additional information
|
|
|
|
regarding copyright ownership. The ASF licenses this file
|
|
|
|
to you under the Apache License, Version 2.0 (the
|
|
|
|
"License"); you may not use this file except in compliance
|
|
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
|
|
software distributed under the License is distributed on an
|
|
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
|
KIND, either express or implied. See the License for the
|
|
|
|
specific language governing permissions and limitations
|
|
|
|
under the License.
|
2006-08-23 22:34:00 +00:00
|
|
|
|
|
|
|
Introduction
|
|
|
|
============
|
|
|
|
|
2007-02-28 21:43:54 +00:00
|
|
|
Thrift is a lightweight, language-independent software stack with an
|
2007-03-05 20:09:37 +00:00
|
|
|
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.
|
|
|
|
|
2007-03-07 05:46:50 +00:00
|
|
|
Thrift is specifically designed to support non-atomic version changes
|
|
|
|
across client and server code.
|
|
|
|
|
2007-03-05 20:09:37 +00:00
|
|
|
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
|
2007-03-07 05:46:50 +00:00
|
|
|
in your particular subdirectory of interest.
|
2007-03-05 20:09:37 +00:00
|
|
|
|
|
|
|
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/
|
2007-03-07 05:46:50 +00:00
|
|
|
rb/
|
2007-03-05 20:09:37 +00:00
|
|
|
|
|
|
|
test/
|
|
|
|
|
|
|
|
Contains sample Thrift files and test code across the target programming
|
|
|
|
languages.
|
|
|
|
|
2007-03-07 05:46:50 +00:00
|
|
|
tutorial/
|
|
|
|
|
|
|
|
Contains a basic tutorial that will teach you how to develop software
|
|
|
|
using Thrift.
|
2006-08-23 22:34:00 +00:00
|
|
|
|
|
|
|
Requirements
|
|
|
|
============
|
2007-03-05 20:09:37 +00:00
|
|
|
|
2009-03-20 07:15:04 +00:00
|
|
|
See http://wiki.apache.org/thrift/ThriftRequirements for
|
|
|
|
an up-to-date list of build requirements.
|
2006-08-23 22:34:00 +00:00
|
|
|
|
|
|
|
Resources
|
|
|
|
=========
|
|
|
|
|
|
|
|
More information about Thrift can be obtained on the Thrift webpage at:
|
|
|
|
|
2009-01-30 19:10:27 +00:00
|
|
|
http://incubator.apache.org/thrift
|
2006-08-23 22:34:00 +00:00
|
|
|
|
|
|
|
Acknowledgments
|
|
|
|
===============
|
|
|
|
|
2009-01-30 19:10:27 +00:00
|
|
|
Thrift was inspired by pillar, a lightweight RPC tool written by Adam D'Angelo,
|
|
|
|
and also by Google's protocol buffers.
|
2006-08-23 22:34:00 +00:00
|
|
|
|
2007-03-06 00:06:27 +00:00
|
|
|
Installation
|
2006-08-23 22:34:00 +00:00
|
|
|
============
|
|
|
|
|
2007-02-28 21:43:54 +00:00
|
|
|
If you are building from the first time out of the source repository, you will
|
2007-09-18 19:46:00 +00:00
|
|
|
need to generate the configure scripts. (This is not necessary if you
|
|
|
|
downloaded a tarball.) From the top directory, do:
|
2006-08-23 22:34:00 +00:00
|
|
|
|
|
|
|
./bootstrap.sh
|
|
|
|
|
2007-02-28 21:43:54 +00:00
|
|
|
Once the configure scripts are generated, thrift can be configured.
|
|
|
|
From the top directory, do:
|
2006-08-23 22:34:00 +00:00
|
|
|
|
|
|
|
./configure
|
|
|
|
|
2007-02-28 21:43:54 +00:00
|
|
|
You may need to specify the location of the boost files explicitly.
|
2007-03-05 20:09:37 +00:00
|
|
|
If you installed boost in /usr/local, you would run configure as follows:
|
2006-08-23 22:34:00 +00:00
|
|
|
|
|
|
|
./configure --with-boost=/usr/local
|
|
|
|
|
2007-03-05 20:09:37 +00:00
|
|
|
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:
|
2006-09-29 00:12:30 +00:00
|
|
|
|
2007-03-05 20:09:37 +00:00
|
|
|
./configure CXXFLAGS='-g -O2'
|
2007-02-28 21:43:54 +00:00
|
|
|
./configure CFLAGS='-g -O2'
|
2007-08-29 23:17:32 +00:00
|
|
|
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
|
2006-09-29 00:12:30 +00:00
|
|
|
|
2006-08-23 22:34:00 +00:00
|
|
|
Run ./configure --help to see other configuration options
|
|
|
|
|
2007-08-29 23:17:32 +00:00
|
|
|
Please be aware that the Python library will ignore the --prefix option
|
|
|
|
and just install wherever Python's distutils puts it (usually along
|
2007-09-05 00:47:32 +00:00
|
|
|
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++.)
|
2007-08-29 23:17:32 +00:00
|
|
|
|
2007-03-07 05:46:50 +00:00
|
|
|
Make thrift:
|
2006-08-23 22:34:00 +00:00
|
|
|
|
|
|
|
make
|
|
|
|
|
|
|
|
From the top directory, become superuser and do:
|
|
|
|
|
|
|
|
make install
|
2007-03-06 00:06:27 +00:00
|
|
|
|
2007-03-07 05:46:50 +00:00
|
|
|
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).
|
|
|
|
|
2007-03-06 00:06:27 +00:00
|
|
|
Look for the README file in the lib/<language>/ folder for more details on the
|
|
|
|
installation of each language library package.
|