github.com/artyom/thrift@v0.0.0-20130902103359-388840a05deb/README (about) 1 Apache Thrift 2 3 Last Modified: 2013-June-6 4 5 License 6 ======= 7 8 Licensed to the Apache Software Foundation (ASF) under one 9 or more contributor license agreements. See the NOTICE file 10 distributed with this work for additional information 11 regarding copyright ownership. The ASF licenses this file 12 to you under the Apache License, Version 2.0 (the 13 "License"); you may not use this file except in compliance 14 with the License. You may obtain a copy of the License at 15 16 http://www.apache.org/licenses/LICENSE-2.0 17 18 Unless required by applicable law or agreed to in writing, 19 software distributed under the License is distributed on an 20 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 21 KIND, either express or implied. See the License for the 22 specific language governing permissions and limitations 23 under the License. 24 25 Introduction 26 ============ 27 28 Thrift is a lightweight, language-independent software stack with an 29 associated code generation mechanism for RPC. Thrift provides clean 30 abstractions for data transport, data serialization, and application 31 level processing. The code generation system takes a simple definition 32 language as its input and generates code across programming languages that 33 uses the abstracted stack to build interoperable RPC clients and servers. 34 35 Thrift is specifically designed to support non-atomic version changes 36 across client and server code. 37 38 For more details on Thrift's design and implementation, take a gander at 39 the Thrift whitepaper included in this distribution or at the README files 40 in your particular subdirectory of interest. 41 42 Hierarchy 43 ========= 44 45 thrift/ 46 47 compiler/ 48 Contains the Thrift compiler, implemented in C++. 49 50 lib/ 51 Contains the Thrift software library implementation, subdivided by 52 language of implementation. 53 54 cpp/ 55 java/ 56 php/ 57 py/ 58 rb/ 59 60 test/ 61 62 Contains sample Thrift files and test code across the target programming 63 languages. 64 65 tutorial/ 66 67 Contains a basic tutorial that will teach you how to develop software 68 using Thrift. 69 70 Requirements 71 ============ 72 73 See http://wiki.apache.org/thrift/ThriftRequirements for 74 an up-to-date list of build requirements. 75 76 Resources 77 ========= 78 79 More information about Thrift can be obtained on the Thrift webpage at: 80 81 http://thrift.apache.org 82 83 Acknowledgments 84 =============== 85 86 Thrift was inspired by pillar, a lightweight RPC tool written by Adam D'Angelo, 87 and also by Google's protocol buffers. 88 89 Installation 90 ============ 91 92 If you are building from the first time out of the source repository, you will 93 need to generate the configure scripts. (This is not necessary if you 94 downloaded a tarball.) From the top directory, do: 95 96 ./bootstrap.sh 97 98 Once the configure scripts are generated, thrift can be configured. 99 From the top directory, do: 100 101 ./configure 102 103 You may need to specify the location of the boost files explicitly. 104 If you installed boost in /usr/local, you would run configure as follows: 105 106 ./configure --with-boost=/usr/local 107 108 Note that by default the thrift C++ library is typically built with debugging 109 symbols included. If you want to customize these options you should use the 110 CXXFLAGS option in configure, as such: 111 112 ./configure CXXFLAGS='-g -O2' 113 ./configure CFLAGS='-g -O2' 114 ./configure CPPFLAGS='-DDEBUG_MY_FEATURE' 115 116 Run ./configure --help to see other configuration options 117 118 Please be aware that the Python library will ignore the --prefix option 119 and just install wherever Python's distutils puts it (usually along 120 the lines of /usr/lib/pythonX.Y/site-packages/). If you need to control 121 where the Python modules are installed, set the PY_PREFIX variable. 122 (DESTDIR is respected for Python and C++.) 123 124 Make thrift: 125 126 make 127 128 From the top directory, become superuser and do: 129 130 make install 131 132 Note that some language packages must be installed manually using build tools 133 better suited to those languages (at the time of this writing, this applies 134 to Java, Ruby, PHP). 135 136 Look for the README file in the lib/<language>/ folder for more details on the 137 installation of each language library package. 138 139 Testing 140 ======= 141 142 There are a large number of client library tests that can all be run 143 from the top-level directory. 144 145 make -k check 146 147 This will make all of the libraries (as necessary), and run through 148 the unit tests defined in each of the client libraries. If a single 149 language fails, the make check will continue on and provide a synopsis 150 at the end. 151 152 To run the cross-language test suite, please run: 153 154 sh test/test.sh 155 156 This will run a set of tests that use different language clients and 157 servers.