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