1#
2# Licensed to the Apache Software Foundation (ASF) under one
3# or more contributor license agreements. See the NOTICE file
4# distributed with this work for additional information
5# regarding copyright ownership. The ASF licenses this file
6# to you under the Apache License, Version 2.0 (the
7# "License"); you may not use this file except in compliance
8# with the License. You may obtain a copy of the License at
9#
10#   http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing,
13# software distributed under the License is distributed on an
14# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15# KIND, either express or implied. See the License for the
16# specific language governing permissions and limitations
17# under the License.
18#
19
20%define without_java 1
21%define without_python 1
22%define without_tests 1
23
24%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
25%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
26
27Name:           thrift
28License:        Apache License v2.0
29Group:          Development
30Summary:        RPC and serialization framework
31Version:        0.18.0
32Release:        0
33URL:            http://thrift.apache.org
34Packager:       Thrift Developers <dev@thrift.apache.org>
35Source0:        %{name}-%{version}.tar.gz
36
37BuildRequires:  gcc >= 3.4.6
38BuildRequires:  gcc-c++
39
40%if 0%{!?without_java:1}
41BuildRequires:  java-devel >= 0:1.5.0
42BuildRequires:  ant >= 0:1.6.5
43%endif
44
45%if 0%{!?without_python:1}
46BuildRequires:  python-devel
47%endif
48
49%if 0%{!?without_ruby:1}
50%define gem_name %{name}
51BuildRequires:  ruby-devel
52BuildRequires:  rubygems-devel
53%endif
54
55BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
56
57%description
58Thrift is a software framework for scalable cross-language services
59development. It combines a powerful software stack with a code generation
60engine to build services that work efficiently and seamlessly between C++,
61Java, C#, Python, Ruby, Perl, PHP, Smalltalk, Erlang, OCaml, Haskell, and
62other languages.
63
64%files
65%defattr(-,root,root)
66%{_bindir}/thrift
67
68
69%package lib-cpp
70Summary: Thrift C++ library
71Group:   Libraries
72
73%description lib-cpp
74C++ libraries for Thrift.
75
76%files lib-cpp
77%defattr(-,root,root)
78%{_libdir}/libthrift*.so.*
79%{_libdir}/libthrift*.so
80
81
82%package lib-cpp-devel
83Summary:   Thrift C++ library development files
84Group:     Libraries
85Requires:  %{name} = %{version}-%{release}
86Requires:  boost-devel
87%if 0%{!?without_libevent:1}
88Requires:  libevent-devel >= 1.2
89%endif
90%if 0%{!?without_zlib:1}
91Requires:  zlib-devel
92%endif
93
94%description lib-cpp-devel
95C++ static libraries and headers for Thrift.
96
97%files lib-cpp-devel
98%defattr(-,root,root)
99%{_includedir}/thrift/
100%{_libdir}/libthrift*.*a
101%{_libdir}/pkgconfig/thrift*.pc
102
103
104%if 0%{!?without_java:1}
105%package lib-java
106Summary:   Thrift Java library
107Group:     Libraries
108Requires:  java >= 0:1.5.0
109
110%description lib-java
111Java libraries for Thrift.
112
113%files lib-java
114%defattr(-,root,root)
115%{_javadir}/*
116%endif
117
118
119%if 0%{!?without_python:1}
120%package lib-python
121Summary: Thrift Python library
122Group:   Libraries
123
124%description lib-python
125Python libraries for Thrift.
126
127%files lib-python
128%defattr(-,root,root)
129%{python_sitearch}/*
130%endif
131
132
133%if 0%{!?without_ruby:1}
134%package -n rubygem-%{gem_name}
135Summary: Thrift Ruby library
136Group:   Libraries
137Obsoletes: %{name}-lib-ruby
138
139%description -n rubygem-%{gem_name}
140Ruby libraries for Thrift.
141
142%files -n rubygem-%{gem_name}
143%defattr(-,root,root)
144%{gem_dir}/*
145%endif
146
147
148%if 0%{!?without_php:1}
149%package lib-php
150Summary: Thrift PHP library
151Group:   Libraries
152
153%description lib-php
154PHP libraries for Thrift.
155
156%files lib-php
157%defattr(-,root,root)
158/usr/lib/php/*
159%endif
160
161
162%prep
163%setup -q
164
165%build
166[[ -e Makefile.in ]] || ./bootstrap.sh
167export GEM_HOME=${PWD}/.gem-home
168export RUBYLIB=${PWD}/lib/rb/lib
169%configure \
170  %{?without_libevent: --without-libevent } \
171  %{?without_zlib:     --without-zlib     } \
172  %{?without_tests:    --without-tests    } \
173  %{?without_java:     --without-java     } \
174  %{?without_python:   --without-python   } \
175  %{?without_ruby:     --without-ruby     } \
176  %{?without_php:      --without-php      } \
177  %{!?without_php:     PHP_PREFIX=${RPM_BUILD_ROOT}/usr/lib/php } \
178  --without-erlang \
179
180%if 0%{!?without_ruby:1}
181eval $(grep "^WITH_RUBY_TRUE" config.log)
182if [[ "${WITH_RUBY_TRUE}" != "" ]]; then
183  set +x
184  echo ""
185  echo "configure determined that ruby requirements are missing (bundler gem?), either install missing components" >&2
186  echo "or disable the ruby sub-packages as follows:"                                                              >&2
187  echo "     rpmbuild -D'%without_ruby 1' ..."                                                                     >&2
188  echo ""
189  exit 1
190fi
191%endif
192
193make %{?_smp_mflags}
194
195%if 0%{!?without_java:1}
196cd lib/java
197%ant
198cd ../..
199%endif
200
201%if 0%{!?without_python:1}
202cd lib/py
203CFLAGS="%{optflags}" %{__python} setup.py build
204cd ../..
205%endif
206
207%if 0%{!?without_ruby:1}
208%gem_install -n lib/rb/thrift*.gem
209%endif
210
211%install
212export GEM_HOME=${PWD}/.gem-home
213export RUBYLIB=${PWD}/lib/rb/lib
214%makeinstall
215ln -s libthrift-%{version}.so ${RPM_BUILD_ROOT}%{_libdir}/libthrift.so.0
216ln -s libthriftnb-%{version}.so ${RPM_BUILD_ROOT}%{_libdir}/libthriftnb.so.0
217ln -s libthriftz-%{version}.so ${RPM_BUILD_ROOT}%{_libdir}/libthriftz.so.0
218
219%if 0%{!?without_java:1}
220mkdir -p $RPM_BUILD_ROOT%{_javadir}
221cp -p lib/java/build/*.jar $RPM_BUILD_ROOT%{_javadir}
222%endif
223
224%if 0%{!?without_python:1}
225cd lib/py
226%{__python} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT
227cd ../..
228%endif
229
230%if 0%{!?without_ruby:1}
231mkdir -p %{buildroot}%{gem_dir}
232cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir}/
233%endif
234
235%clean
236rm -rf ${RPM_BUILD_ROOT}
237
238
239%post
240umask 007
241/sbin/ldconfig > /dev/null 2>&1
242
243
244%postun
245umask 007
246/sbin/ldconfig > /dev/null 2>&1
247
248%changelog
249* Wed Aug 21 2013 Thrift Dev <dev@thrift.apache.org>
250- Thrift 0.9.1 release.
251* Wed Oct 10 2012 Thrift Dev <dev@thrift.apache.org>
252- Thrift 0.9.0 release.
253