diff --git a/.gitignore b/.gitignore index e69de29..2a688c5 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,6 @@ +/0.9.1.tar.gz +/thrift-0.10.0.tar.gz +/thrift-0.13.0.tar.gz +/thrift-0.14.0.tar.gz +/thrift-0.15.0.tar.gz +/thrift-0.20.0.tar.gz diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100644 index 0000000..1989437 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,64 @@ +#!/bin/sh + +# +# 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. +# + +echo -n "make distclean... " +make -k distclean >/dev/null 2>&1 +echo "ok" + +if test -d lib/php/src/ext/thrift_protocol ; then + if phpize -v >/dev/null 2>/dev/null ; then + (cd lib/php/src/ext/thrift_protocol && phpize) + fi +fi + +set -e + +# libtoolize is called "glibtoolize" on OSX. +if libtoolize --version 1 >/dev/null 2>/dev/null; then + LIBTOOLIZE=libtoolize +elif glibtoolize --version 1 >/dev/null 2>/dev/null; then + LIBTOOLIZE=glibtoolize +else + echo >&2 "Couldn't find libtoolize!" + exit 1 +fi + +format_version () { + printf "%03d%03d%03d%03d" $(echo $1 | tr '.' ' '); +} + +# we require automake 1.13 or later +# check must happen externally due to use of newer macro +AUTOMAKE_VERSION=`automake --version | grep automake | egrep -o '([0-9]{1,}\.)+[0-9]{1,}'` +if [ $(format_version $AUTOMAKE_VERSION) -lt $(format_version 1.13) ]; then + echo >&2 "automake version $AUTOMAKE_VERSION is too old (need 1.13 or later)" + exit 1 +fi + +set -e +autoscan +$LIBTOOLIZE --copy --automake +aclocal -I ./aclocal +autoheader +sed '/undef VERSION/d' config.hin > config.hin2 +mv config.hin2 config.hin +autoconf +automake --copy --add-missing --foreign diff --git a/configure-java-prefix.patch b/configure-java-prefix.patch new file mode 100644 index 0000000..ebd542f --- /dev/null +++ b/configure-java-prefix.patch @@ -0,0 +1,16 @@ +diff --git a/configure.ac b/configure.ac +index 0972abf..77107fc 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -34,10 +34,7 @@ AC_ARG_VAR([PY_PREFIX], [Prefix for installing Python modules. + AS_IF([test "x$PY_PREFIX" = x], [PY_PREFIX="/usr"]) + + AC_ARG_VAR([JAVA_PREFIX], [Prefix for installing the Java lib jar. +- Default = "/usr/local/lib"]) +-AS_IF([test "x$JAVA_PREFIX" != x], [JAVA_PREFIX="$JAVA_PREFIX/usr/local/lib"], +- [test "x$PREFIX" != x], [JAVA_PREFIX="$PREFIX/usr/local/lib"], +- [JAVA_PREFIX="/usr/local/lib"]) ++ Default = "/usr/share/java"]) + + AC_ARG_VAR([RUBY_PREFIX], [Prefix for installing Ruby modules. + (Normal --prefix is ignored for Ruby because diff --git a/gcc15.patch b/gcc15.patch new file mode 100644 index 0000000..2f3294c --- /dev/null +++ b/gcc15.patch @@ -0,0 +1,47 @@ +From 1920f04398ca32e320f6cf942534ba9d8b3231fd Mon Sep 17 00:00:00 2001 +From: Sutou Kouhei +Date: Mon, 23 Dec 2024 12:33:22 +0900 +Subject: [PATCH] THRIFT-5842: Add missing cstdint include for int64_t in + Mutex.h + +Client: cpp + +GCC 15 (not released yet) requires `#include ` for `int64_t` +but `lib/cpp/src/thrift/concurrency/Mutex.h` doesn't have it. So we +can't build Thrift with GCC 15: + + [80/359] Building CXX object lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o + FAILED: lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o + /bin/g++-15 -DBOOST_ALL_DYN_LINK -DBOOST_TEST_DYN_LINK -DTHRIFT_STATIC_DEFINE -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/kou/work/cpp/thrift.kou.build/lib/cpp -I/home/kou/work/cpp/thrift.kou/lib/cpp -I/home/kou/work/cpp/thrift.kou.build -I/home/kou/work/cpp/thrift.kou/lib/cpp/src -g -std=c++11 -MD -MT lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o -MF lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o.d -o lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o -c /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/transport/TSSLServerSocket.cpp + In file included from /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/transport/TServerSocket.h:25, + from /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/transport/TSSLServerSocket.h:23, + from /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/transport/TSSLServerSocket.cpp:21: + /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/concurrency/Mutex.h:47:26: error: 'int64_t' has not been declared + 47 | virtual bool timedlock(int64_t milliseconds) const; + | ^~~~~~~ + /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/concurrency/Mutex.h:25:1: note: 'int64_t' is defined in header ''; this is probably fixable by adding '#include ' + 24 | #include + +++ |+#include + 25 | + /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/concurrency/Mutex.h:60:29: error: 'int64_t' has not been declared + 60 | Guard(const Mutex& value, int64_t timeout = 0) : mutex_(&value) { + | ^~~~~~~ + /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/concurrency/Mutex.h:60:29: note: 'int64_t' is defined in header ''; this is probably fixable by adding '#include ' + +See also: https://github.com/apache/arrow/issues/45096 +--- + lib/cpp/src/thrift/concurrency/Mutex.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lib/cpp/src/thrift/concurrency/Mutex.h b/lib/cpp/src/thrift/concurrency/Mutex.h +index 1e5c3fba37c..12f1729d6bf 100644 +--- a/lib/cpp/src/thrift/concurrency/Mutex.h ++++ b/lib/cpp/src/thrift/concurrency/Mutex.h +@@ -20,6 +20,7 @@ + #ifndef _THRIFT_CONCURRENCY_MUTEX_H_ + #define _THRIFT_CONCURRENCY_MUTEX_H_ 1 + ++#include + #include + #include + diff --git a/libthrift-0.20.0.pom b/libthrift-0.20.0.pom new file mode 100644 index 0000000..7cc8e43 --- /dev/null +++ b/libthrift-0.20.0.pom @@ -0,0 +1,73 @@ + + + + + + + + 4.0.0 + org.apache.thrift + libthrift + 0.20.0 + Apache Thrift + Thrift is a software framework for scalable cross-language services development. + http://thrift.apache.org + + + The Apache Software License, Version 2.0 + https://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + dev + Apache Thrift Developers + dev@thrift.apache.org + + + + scm:git:https://github.com/apache/thrift.git + scm:git:git@github.com:apache/thrift.git + https://github.com/apache/thrift + + + + org.slf4j + slf4j-api + 1.7.36 + runtime + + + org.apache.httpcomponents.client5 + httpclient5 + 5.2.1 + runtime + + + org.apache.httpcomponents.core5 + httpcore5 + 5.2 + runtime + + + jakarta.servlet + jakarta.servlet-api + 5.0.0 + runtime + + + jakarta.annotation + jakarta.annotation-api + 2.1.1 + runtime + + + org.apache.commons + commons-lang3 + 3.12.0 + runtime + + + diff --git a/python3.patch b/python3.patch new file mode 100644 index 0000000..c2908fd --- /dev/null +++ b/python3.patch @@ -0,0 +1,72 @@ +diff --git a/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py b/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py +index 4b1c257..df1c8cc 100644 +--- a/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py ++++ b/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py +@@ -57,24 +57,24 @@ def service_ctrl( + msg = fb_status_string(status) + if (len(status_details)): + msg += " - %s" % status_details +- print msg ++ print(msg) + + if (status == fb_status.ALIVE): + return 2 + else: + return 3 + except: +- print "Failed to get status" ++ print("Failed to get status") + return 3 + + # scalar commands + if command in ["version", "alive", "name"]: + try: + result = fb303_wrapper(command, port, trans_factory, prot_factory) +- print result ++ print(result) + return 0 + except: +- print "failed to get ", command ++ print("failed to get ", command) + return 3 + + # counters +@@ -82,10 +82,10 @@ def service_ctrl( + try: + counters = fb303_wrapper('counters', port, trans_factory, prot_factory) + for counter in counters: +- print "%s: %d" % (counter, counters[counter]) ++ print("%s: %d" % (counter, counters[counter])) + return 0 + except: +- print "failed to get counters" ++ print("failed to get counters") + return 3 + + # Only root should be able to run the following commands +@@ -96,19 +96,19 @@ def service_ctrl( + fb303_wrapper(command, port, trans_factory, prot_factory) + return 0 + except: +- print "failed to tell the service to ", command ++ print("failed to tell the service to ", command) + return 3 + else: + if command in ["stop", "reload"]: +- print "root privileges are required to stop or reload the service." ++ print("root privileges are required to stop or reload the service.") + return 4 + +- print "The following commands are available:" ++ print("The following commands are available:") + for command in ["counters", "name", "version", "alive", "status"]: +- print "\t%s" % command +- print "The following commands are available for users with root privileges:" ++ print("\t%s" % command) ++ print("The following commands are available for users with root privileges:") + for command in ["stop", "reload"]: +- print "\t%s" % command ++ print("\t%s" % command) + + return 0 + diff --git a/sources b/sources index e69de29..458d2a6 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +SHA512 (thrift-0.20.0.tar.gz) = 8dc77f666e60141a6b3cf7ee1407b08a0e80d176f8ccfee69317d7df89ab87aea2c7b3ba3e59d4561835edf1ce23762443ad5aeed0099bf075b010853d5eb1cd diff --git a/thrift-0.10.0-buildxml.patch b/thrift-0.10.0-buildxml.patch new file mode 100644 index 0000000..8931c03 --- /dev/null +++ b/thrift-0.10.0-buildxml.patch @@ -0,0 +1,235 @@ +diff --git a/lib/java/build.xml b/lib/java/build.xml +index 40e5284..db1ce54 100644 +--- a/lib/java/build.xml ++++ b/lib/java/build.xml +@@ -17,8 +17,7 @@ + specific language governing permissions and limitations + under the License. + --> +- ++ + + Thrift Build File + +@@ -67,8 +66,15 @@ + + + +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -78,11 +84,14 @@ + + + +- ++ ++ ++ ++ + + + +- ++ + + + +@@ -295,120 +304,12 @@ + + + +- + + + +- +- +- + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + +diff --git a/tutorial/java/build.xml b/tutorial/java/build.xml +index 7638d5b..c5ca703 100644 +--- a/tutorial/java/build.xml ++++ b/tutorial/java/build.xml +@@ -29,13 +29,33 @@ + + + +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +- + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +diff --git a/tutorial/js/build.xml b/tutorial/js/build.xml +index a9a9ad4..2fddf0c 100644 +--- a/tutorial/js/build.xml ++++ b/tutorial/js/build.xml +@@ -35,8 +35,16 @@ + + + +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + diff --git a/thrift.spec b/thrift.spec new file mode 100644 index 0000000..dc82a8e --- /dev/null +++ b/thrift.spec @@ -0,0 +1,753 @@ +# thrift: FTBFS in Fedora 36: /usr/include/c++/12/bits/new_allocator.h:158:33: +# error: 'operator delete' called on pointer '_605' with nonzero offset [1, +# 9223372036854775800] [-Werror=free-nonheap-object] +# https://bugzilla.redhat.com/show_bug.cgi?id=2046213 +# + +%global php_extdir %(php-config --extension-dir 2>/dev/null || echo "undefined") + +%{?perl_default_filter} +%global __provides_exclude_from ^(%{python3_sitearch}/.*\\.so|%{php_extdir}/.*\\.so)$ + +%global have_mongrel 0 + +# erlang-jsx is available in F19 but orphaned in F22 +%global have_jsx 0 + +# We should be able to enable this in the future +%global want_d 0 + +# Can't do anything with java with all the build deps in modules +%global want_java 0 + +%if 0%{?want_java} == 0 +%global java_configure --without-java +%else +%global java_configure --with-java +%endif + +# Thrift's Ruby support depends on Mongrel. Since Mongrel is +# deprecated in Fedora, we can't support Ruby bindings for Thrift +# unless and until Thrift is patched to use a different HTTP server. +%if 0%{?have_mongrel} == 0 +%global ruby_configure --without-ruby +%global with_ruby 0 +%else +%global ruby_configure --with-ruby +%global want_ruby 1 +%endif + +# Thrift's Erlang support depends on the JSX library, which is not +# currently available in Fedora. + +%if 0%{?have_jsx} == 0 +%global erlang_configure --without-erlang +%global want_erlang 0 +%else +%global erlang_configure --with-erlang +%global want_erlang 1 +%endif + +# PHP appears broken in Thrift 0.9.1 +%global want_php 0 + +%if 0%{?want_php} == 0 +%global php_langname %{nil} +%global php_configure --without-php +%else +%global php_langname PHP,\ +%global php_configure --with-php +%endif + +# Thrift's GO support doesn't build under Fedora +%global want_golang 0 +%global golang_configure --without-go + +# Thrift's Lua support has not yet been worked on +%global want_lua 0 +%global lua_configure --without-lua + +# NOTE: thrift versions their libraries by package version, so each version +# change is a SONAME change and dependencies need to be rebuilt +Name: thrift +Version: 0.20.0 +Release: 8%{?dist} +Summary: Software framework for cross-language services development + +# Parts of the source are used under the BSD and zlib licenses, but +# these are OK for inclusion in an Apache 2.0-licensed whole: +# https://www.apache.org/legal/3party.html + +# Here's the breakdown: +# ./lib/py/compat/win32/stdint.h is 2-clause BSD +# ./compiler/cpp/src/md5.[ch] are zlib +License: Apache-2.0 AND BSD-3-Clause AND Zlib +URL: https://thrift.apache.org/ + +Source0: https://archive.apache.org/dist/%{name}/%{version}/%{name}-%{version}.tar.gz + +Source1: https://repo1.maven.org/maven2/org/apache/thrift/lib%{name}/%{version}/lib%{name}-%{version}.pom +Source2: https://raw.github.com/apache/%{name}/%{version}/bootstrap.sh + +# fix configure.ac insistence on using /usr/local/lib for JAVA_PREFIX +Patch2: configure-java-prefix.patch +# fix build with GCC 15: https://github.com/apache/thrift/pull/3078 +Patch3: gcc15.patch + + +# BuildRequires for language-specific bindings are listed under these +# subpackages, to facilitate enabling or disabling individual language +# bindings in the future + +%if 0%{?want_java} > 0 +BuildRequires: ant >= 1.7 +%endif +BuildRequires: make +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: bison +BuildRequires: boost-devel +BuildRequires: boost-static +BuildRequires: flex +BuildRequires: gcc-c++ +BuildRequires: glib2-devel +BuildRequires: libevent-devel +BuildRequires: libstdc++-devel +BuildRequires: libtool +BuildRequires: openssl-devel +BuildRequires: qt5-qtbase-devel +BuildRequires: texlive +BuildRequires: zlib-devel + +%if 0%{?want_golang} > 0 +BuildRequires: golang +Requires: golang +%endif + +%description + +The Apache Thrift software framework for cross-language services +development combines a software stack with a code generation engine to +build services that work efficiently and seamlessly between C++, Java, +Python, %{?php_langname}and other languages. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: pkgconfig +Requires: boost-devel + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package qt +Summary: Qt support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description qt +The %{name}-qt package contains Qt bindings for %{name}. + +%package glib +Summary: GLib support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description glib +The %{name}-qt package contains GLib bindings for %{name}. + +%package -n python3-%{name} +Summary: Python 3 support for %{name} +BuildRequires: python3-devel +BuildRequires: python3-setuptools +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python3 +Obsoletes: python-%{name} < 0.10.0-1%{?dist} +Obsoletes: python2-%{name} < 0.10.0-14%{?dist} + +%description -n python3-%{name} +The python3-%{name} package contains Python bindings for %{name}. + +%package -n perl-%{name} +Summary: Perl support for %{name} +Provides: perl(Thrift) = %{version}-%{release} +BuildRequires: perl(Bit::Vector) +BuildRequires: perl(Class::Accessor) +BuildRequires: perl(ExtUtils::MakeMaker) +BuildRequires: perl-generators +Requires: perl(Bit::Vector) +Requires: perl(Encode) +Requires: perl(HTTP::Request) +Requires: perl(IO::Select) +Requires: perl(IO::Socket::INET) +Requires: perl(IO::String) +Requires: perl(LWP::UserAgent) +Requires: perl(POSIX) +Requires: perl(base) +Requires: perl(constant) +Requires: perl(strict) +Requires: perl(utf8) +Requires: perl(warnings) +# thrift improperly packages some components in files with names different +# than the package they contain +Provides: perl(Thrift::Exception) +Provides: perl(Thrift::MessageType) +Provides: perl(Thrift::Type) +BuildArch: noarch + +%description -n perl-%{name} +The perl-%{name} package contains Perl bindings for %{name}. + +%if %{?want_d} +%package -n d-%{name} +Summary: D support for %{name} +BuildRequires: ldc + +%description -n d-%{name} +The d-%{name} package contains D bindings for %{name}. +%endif + +%if 0%{?want_php} != 0 +%package -n php-%{name} +Summary: PHP support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: php(zend-abi) = %{php_zend_api} +Requires: php(api) = %{php_core_api} +Requires: php(language) >= 5.3.0 +Requires: php-date +Requires: php-json +BuildRequires: php-devel + +%description -n php-%{name} +The php-%{name} package contains PHP bindings for %{name}. +%endif + +%if 0%{?want_java} > 0 +%package -n lib%{name}-javadoc +Summary: API documentation for java-%{name} +Requires: lib%{name}-java = %{version}-%{release} +BuildArch: noarch + +%description -n lib%{name}-javadoc +The lib%{name}-javadoc package contains API documentation for the +Java bindings for %{name}. + +%package -n lib%{name}-java +Summary: Java support for %{name} + +BuildRequires: apache-commons-codec +BuildRequires: apache-commons-lang +BuildRequires: apache-commons-logging +BuildRequires: httpcomponents-client +BuildRequires: httpcomponents-core +BuildRequires: java-devel +BuildRequires: javapackages-tools +BuildRequires: javapackages-local +BuildRequires: junit +BuildRequires: log4j +BuildRequires: slf4j +# javax.servlet-api 3.1.0 is provided by glassfish-servlet-api +BuildRequires: mvn(javax.servlet:javax.servlet-api) = 3.1.0 + +Requires: java-headless >= 1:1.6.0 +Requires: javapackages-tools +Requires: mvn(org.slf4j:slf4j-api) +Requires: mvn(commons-lang:commons-lang) +Requires: mvn(org.apache.httpcomponents:httpclient) +Requires: mvn(org.apache.httpcomponents:httpcore) +BuildArch: noarch + +%description -n lib%{name}-java +The lib%{name}-java package contains Java bindings for %{name}. +%endif + +%if 0%{?want_ruby} > 0 +%package -n ruby-%{name} +Summary: Ruby support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: ruby(release) +BuildRequires: ruby-devel + +%description -n ruby-%{name} +The ruby-%{name} package contains Ruby bindings for %{name}. +%endif + +%if 0%{?want_erlang} > 0 +%package -n erlang-%{name} +Summary: Erlang support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: erlang +Requires: erlang-jsx +BuildRequires: erlang +BuildRequires: erlang-rebar + +%description -n erlang-%{name} +The erlang-%{name} package contains Erlang bindings for %{name}. +%endif + + +%prep +%autosetup -p1 + +%{?!el5:sed -i -e 's/^AC_PROG_LIBTOOL/LT_INIT/g' configure.ac} + +# avoid spurious executable permissions in debuginfo package +find . -name \*.cpp -or -name \*.cc -or -name \*.h | xargs -r chmod 644 + +cp -p %{SOURCE2} bootstrap.sh + +# work around linking issues +echo 'libthrift_c_glib_la_LIBADD = $(GLIB_LIBS) $(GOBJECT_LIBS) -L../cpp/.libs ' >> lib/c_glib/Makefile.am +echo 'libthriftqt5_la_LIBADD = $(QT_LIBS) -lthrift -L.libs' >> lib/cpp/Makefile.am +echo 'libthriftz_la_LIBADD = $(ZLIB_LIBS) -lthrift -L.libs' >> lib/cpp/Makefile.am +echo 'EXTRA_libthriftqt5_la_DEPENDENCIES = libthrift.la' >> lib/cpp/Makefile.am +echo 'EXTRA_libthriftz_la_DEPENDENCIES = libthrift.la' >> lib/cpp/Makefile.am + +# fix broken upstream check for ant version; we enforce this with BuildRequires, so no need to check here +sed -i 's|ANT_VALID=.*|ANT_VALID=1|' aclocal/ax_javac_and_java.m4 + +# explicitly set python3 +shopt -s globstar +sed -i -E 's@^(#!.*/env) *python *$@\1 python3@' **/*.py + +%build +export PY_PREFIX=%{_prefix} +export PERL_PREFIX=%{_prefix} +export PHP_PREFIX=%{php_extdir} +export JAVA_PREFIX=%{_javadir} +export RUBY_PREFIX=%{_prefix} +export GLIB_LIBS=$(pkg-config --libs glib-2.0) +export GLIB_CFLAGS=$(pkg-config --cflags glib-2.0) +export GOBJECT_LIBS=$(pkg-config --libs gobject-2.0) +export GOBJECT_CFLAGS=$(pkg-config --cflags gobject-2.0) + +find %{_builddir} -name rebar -exec rm -f '{}' \; +find . -name Makefile\* -exec sed -i -e 's/[.][/]rebar/rebar/g' {} \; + +# install javadocs in proper places +sed -i 's|-Dinstall.javadoc.path=$(DESTDIR)$(docdir)/java|-Dinstall.javadoc.path=$(DESTDIR)%{_javadocdir}/%{name}|' lib/java/Makefile.* + +# build a jar without a version number +#sed -i 's|${thrift.artifactid}-${version}|${thrift.artifactid}|' lib/java/build.xml + +# Proper permissions for Erlang files +sed -i 's|$(INSTALL) $$p|$(INSTALL) --mode 644 $$p|g' lib/erl/Makefile.am + +sh ./bootstrap.sh + +# use unversioned doc dirs where appropriate (via _pkgdocdir macro) +export PYTHON=%{__python3} +%configure --disable-dependency-tracking --disable-static --with-boost=%{_prefix} \ + --docdir=%{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}} \ + %{java_configure} %{ruby_configure} %{erlang_configure} %{golang_configure} %{php_configure} %{lua_configure} + +# eliminate unused direct shlib dependencies +sed -i -e 's/ -shared / -Wl,--as-needed\0/g' libtool + +%make_build + + +%install +%make_install +find %{buildroot} -name '*.la' -exec rm -f {} ';' +find %{buildroot} -name fastbinary.so | xargs -r chmod 755 +find %{buildroot} -name \*.erl -or -name \*.hrl -or -name \*.app | xargs -r chmod 644 + +# Remove javadocs jar +%if 0%{?want_java} > 0 +find %{buildroot}/%{_javadir} -name lib%{name}-javadoc.jar -exec rm -f '{}' \; +# Add POM file and depmap +mkdir -p %{buildroot}%{_mavenpomdir} +install -pm 644 %{SOURCE1} %{buildroot}%{_mavenpomdir}/JPP-libthrift.pom +%add_maven_depmap JPP-libthrift.pom libthrift.jar +%endif + +# Remove bundled jar files +find %{buildroot} -name \*.jar -a \! -name \*thrift\* -exec rm -f '{}' \; + +# Move perl files into appropriate places +find %{buildroot} -name \*.pod -exec rm -f '{}' \; +find %{buildroot} -name .packlist -exec rm -f '{}' \; +find %{buildroot}%{_prefix}/lib/perl5 -type d -empty -delete +mkdir -p %{buildroot}/%{perl_vendorlib}/ +mv %{buildroot}%{_prefix}/lib/perl5/* %{buildroot}/%{perl_vendorlib} + +%if 0%{?want_php} != 0 + +# Move arch-independent php files into the appropriate place +mkdir -p %{buildroot}/%{_datadir}/php/ +mv %{buildroot}/%{php_extdir}/Thrift %{buildroot}/%{_datadir}/php/ +%endif + +# Fix permissions on Thread.h +find %{buildroot} -name Thread.h -exec chmod a-x '{}' \; + +# Ensure all python scripts are executable +find %{buildroot} -name \*.py -exec grep -q /usr/bin/env {} \; -print | xargs -r chmod 755 + +%ldconfig_scriptlets + +%files +%doc LICENSE NOTICE +%{_bindir}/thrift +%{_libdir}/libthrift-%{version}.so +%{_libdir}/libthriftz-%{version}.so +%{_libdir}/libthriftnb-%{version}.so + +%files glib +%{_libdir}/libthrift_c_glib.so +%{_libdir}/libthrift_c_glib.so.* + +%files qt +%{_libdir}/libthriftqt5.so +%{_libdir}/libthriftqt5-%{version}.so + +%files devel +%{_includedir}/thrift +%{_libdir}/*.so +%{_libdir}/*.so.0 +%{_libdir}/*.so.0.0.0 +%exclude %{_libdir}/lib*-%{version}.so +%{_libdir}/pkgconfig/thrift-z.pc +%{_libdir}/pkgconfig/thrift-qt5.pc +%{_libdir}/pkgconfig/thrift-nb.pc +%{_libdir}/pkgconfig/thrift.pc +%{_libdir}/pkgconfig/thrift_c_glib.pc +%doc LICENSE NOTICE + +%files -n perl-%{name} +%{perl_vendorlib}/Thrift +%{perl_vendorlib}/Thrift.pm +%doc LICENSE NOTICE + +%if 0%{?want_php} != 0 +%files -n php-%{name} +%config(noreplace) /etc/php.d/thrift_protocol.ini +%{_datadir}/php/Thrift/ +%{php_extdir}/thrift_protocol.so +%doc LICENSE NOTICE +%endif + +%if %{?want_erlang} > 0 +%files -n erlang-%{name} +%{_libdir}/erlang/lib/%{name}-%{version}/ +%doc LICENSE NOTICE +%endif + +%files -n python3-%{name} +%{python3_sitearch}/%{name} +%{python3_sitearch}/%{name}-%{version}-py%{python3_version}.egg-info +%doc LICENSE NOTICE + +%if 0%{?want_java} > 0 +%files -n lib%{name}-javadoc +%{_javadocdir}/%{name} +%doc LICENSE NOTICE + +%files -n lib%{name}-java -f .mfiles +%doc LICENSE NOTICE +%endif + + +%changelog +* Fri Sep 19 2025 Python Maint - 0.20.0-8 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Fri Aug 15 2025 Python Maint - 0.20.0-7 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Fri Jul 25 2025 Fedora Release Engineering - 0.20.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jun 03 2025 Python Maint - 0.20.0-5 +- Rebuilt for Python 3.14 + +* Sun Jan 19 2025 Fedora Release Engineering - 0.20.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Jul 20 2024 Fedora Release Engineering - 0.20.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jun 08 2024 Python Maint - 0.20.0-2 +- Rebuilt for Python 3.13 + +* Fri May 17 2024 Orion Poplawski - 0.20.0-1 +- Update to 0.20.0 + +* Sat Jan 27 2024 Fedora Release Engineering - 0.15.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jul 22 2023 Fedora Release Engineering - 0.15.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Fri Jun 16 2023 Orion Poplawski - 0.15.0-2 +- Re-enable LTO, seems to be working again + +* Thu Jun 15 2023 Orion Poplawski - 0.15.0-1 +- Update to 0.15.0 + +* Tue Jun 13 2023 Python Maint - 0.14.0-14 +- Rebuilt for Python 3.12 + +* Sat Jan 21 2023 Fedora Release Engineering - 0.14.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Nov 18 2022 Christopher Tubbs - 0.14.0-12 +- Convert license tags to SPDX + +* Sat Jul 23 2022 Fedora Release Engineering - 0.14.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint - 0.14.0-10 +- Rebuilt for Python 3.11 + +* Tue Jun 07 2022 Benjamin A. Beasley - 0.14.0-9 +- Work around GCC 12 error by disabling LTO (close RHBZ#2046213) + +* Wed Jun 01 2022 Jitka Plesnikova - 0.14.0-8 +- Perl 5.36 rebuild + +* Sat Jan 22 2022 Fedora Release Engineering - 0.14.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Sep 14 2021 Sahana Prasad - 0.14.0-6 +- Rebuilt with OpenSSL 3.0.0 + +* Fri Jul 23 2021 Fedora Release Engineering - 0.14.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 0.14.0-4 +- Rebuilt for Python 3.10 + +* Sun May 23 2021 Jitka Plesnikova - 0.14.0-3 +- Perl 5.34 rebuild + +* Thu Feb 18 2021 Orion Poplawski - 0.14.0-2 +- Add patch to fix compilation on non-x86 + +* Mon Feb 15 2021 Orion Poplawski - 0.14.0-1 +- Update to 0.14.0 (bz#1928172) CVE-2020-13949 + +* Wed Jan 27 2021 Fedora Release Engineering - 0.13.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Oct 05 2020 Orion Poplawski - 0.13.0-9 +- Add BR python3-setuptools + +* Wed Sep 23 2020 Christopher Tubbs - 0.13.0-8 +- rebuilt for side tag f34-build-side-30069 + +* Thu Sep 17 2020 Orion Poplawski - 0.13.0-7 +- Drop unneeded BR on flex-devel (bz#1871095) + +* Wed Jul 29 2020 Fedora Release Engineering - 0.13.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 23 2020 Jitka Plesnikova - 0.13.0-5 +- Perl 5.32 rebuild + +* Tue May 26 2020 Miro Hrončok - 0.13.0-4 +- Rebuilt for Python 3.9 + +* Fri Jan 31 2020 Fedora Release Engineering - 0.13.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Dec 4 2019 Orion Poplawski - 0.13.0-2 +- Fix perl dependencies +- Explicitly disable lua + +* Sun Dec 1 2019 Orion Poplawski - 0.13.0-1 +- Update to 0.13.0 (bz#1778343) +- Drops fb303 package +- Switch to Qt5 + +* Thu Oct 03 2019 Miro Hrončok - 0.10.0-20 +- Rebuilt for Python 3.8.0rc1 (#1748018) + +* Tue Aug 20 2019 Christopher Tubbs - 0.10.0-19 +- Fix FTBFS (by removing Java support) and fix Python3 issues (rhbz#1738810 and rhbz#1533306) + +* Sat Jul 27 2019 Fedora Release Engineering - 0.10.0-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Jun 01 2019 Jitka Plesnikova - 0.10.0-17 +- Perl 5.30 rebuild + +* Sun Feb 03 2019 Fedora Release Engineering - 0.10.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Jul 18 2018 Christopher Tubbs - 0.10.0-15 +- Rebuild to address transient error + +* Wed Jul 18 2018 Christopher Tubbs - 0.10.0-14 +- Migrate to python3; rhbz#1533306 + +* Sat Jul 14 2018 Fedora Release Engineering - 0.10.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 29 2018 Jitka Plesnikova - 0.10.0-12 +- Perl 5.28 rebuild + +* Wed May 30 2018 Christopher Tubbs - 0.10.0-11 +- Fix FTBFS; update servlet-api dependency (rhbz#1581175) + +* Thu Mar 08 2018 Christopher Tubbs - 0.10.0-10 +- Add gcc-c++ BuildRequires + +* Fri Feb 09 2018 Fedora Release Engineering - 0.10.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Dec 22 2017 Christopher Tubbs - 0.10.0-8 +- Fix for rhbz#1507518 + +* Thu Aug 03 2017 Fedora Release Engineering - 0.10.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 0.10.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Jul 06 2017 Christopher Tubbs - 0.10.0-5 +- Fix FTBFS in rawhide: add BR javapackages-local + +* Sun Jun 04 2017 Jitka Plesnikova - 0.10.0-4 +- Perl 5.26 rebuild + +* Mon May 15 2017 Fedora Release Engineering - 0.10.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* Mon Mar 13 2017 Christopher Tubbs - 0.10.0-2 +- Build TNonblockingServer, remove useless man page, and use java-headless + +* Tue Mar 07 2017 Christopher Tubbs - 0.10.0-1 +- Update to thrift 0.10.0 + +* Sat Feb 11 2017 Fedora Release Engineering - 0.9.1-17.6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jul 19 2016 Fedora Release Engineering - 0.9.1-17.5 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Tue May 17 2016 Jitka Plesnikova - 0.9.1-17.4 +- Perl 5.24 rebuild + +* Wed Mar 30 2016 Petr Pisar - 0.9.1-17.3 +- Adapt to GCC 6 (bug #1306671) + +* Fri Feb 05 2016 Fedora Release Engineering - 0.9.1-17.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Sat Jan 16 2016 Jonathan Wakely - 0.9.1-17.1 +- Rebuilt for Boost 1.60 + +* Mon Nov 23 2015 Peter Robinson 0.9.1-17 +- Fix release + +* Wed Oct 21 2015 Marcin Juszkiewicz - 0.9.1-16.6 +- Backport THRIFT-2214 fix to get package built on aarch64. + +* Thu Aug 27 2015 Jonathan Wakely - 0.9.1-16.5 +- Rebuilt for Boost 1.59 + +* Wed Jul 29 2015 Fedora Release Engineering - 0.9.1-16.4 +- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 + +* Wed Jul 22 2015 David Tardon - 0.9.1-16.3 +- rebuild for Boost 1.58 + +* Fri Jun 19 2015 Fedora Release Engineering - 0.9.1-16.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Jun 06 2015 Jitka Plesnikova - 0.9.1-16.1 +- Perl 5.22 rebuild + +* Fri Apr 24 2015 Michal Srb - 0.9.1-16 +- Fix FTBFS (Resolves: rhbz#1195364) + +* Mon Apr 20 2015 Will Benton - 0.9.1-15 +- Dropped Erlang support for F22 and above, since erlang-jsx is orphaned + +* Wed Apr 8 2015 Haïkel Guémar - 0.9.1-14 +- Split Qt4/GLib runtimes into separate subpackages +- Drop mono support, it's broken and not even shipped (and it pulls mono-core) + +* Mon Jan 26 2015 Petr Machata - 0.9.1-13.3 +- Rebuild for boost 1.57.0 +* Thu Aug 28 2014 Jitka Plesnikova - 0.9.1-13.2 +- Perl 5.20 rebuild + +* Mon Aug 18 2014 Fedora Release Engineering - 0.9.1-13.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jun 27 2014 Petr Pisar - 0.9.1-13 +- Use add_maven_depmap-generated file lists (bug #1107448) + +* Sun Jun 08 2014 Fedora Release Engineering - 0.9.1-12.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 23 2014 Petr Machata - 0.9.1-12.1 +- Rebuild for boost 1.55.0 + +* Mon May 05 2014 Lubomir Rintel - 0.9.1-12 +- Fix EPEL build + +* Fri Feb 21 2014 willb - 0.9.1-11 +- fix BZ 1068561 + +* Fri Dec 20 2013 willb - 0.9.1-10 +- fix BZ 1045544 + +* Wed Oct 16 2013 willb - 0.9.1-9 +- Remove spurious dependencies +- Move some versioned shared libraries from -devel + +* Wed Oct 16 2013 Dan Horák - 0.9.1-8 +- Mono available only on selected arches + +* Sun Oct 13 2013 willb - 0.9.1-7 +- minor specfile cleanups + +* Fri Oct 11 2013 willb - 0.9.1-6 +- added thrift man page +- integrated fb303 +- fixed many fb303 library dependency problems + +* Tue Oct 1 2013 willb - 0.9.1-5 +- fixed extension library linking when an older thrift package is not + already installed +- fixed extension library dependencies in Makefile + +* Tue Oct 1 2013 willb - 0.9.1-4 +- addresses rpmlint warnings and errors +- properly links glib, qt, and z extension libraries + +* Mon Sep 30 2013 willb - 0.9.1-3 +- adds QT support +- clarified multiple licensing +- uses parallel make +- removes obsolete M4 macros +- specifies canonical location for source archive + +* Tue Sep 24 2013 willb - 0.9.1-2 +- fixes for i686 +- fixes bogus requires for Java package + +* Fri Sep 20 2013 willb - 0.9.1-1 +- updated to upstream version 0.9.1 +- disables PHP support, which FTBFS in this version + +* Fri Sep 20 2013 willb - 0.9.0-5 +- patch build xml to generate unversioned jars instead of moving after the fact +- unversioned doc dirs on Fedora versions where this is appropriate +- replaced some stray hardcoded paths with macros +- thanks to Gil for the above observations and suggestions for fixes + +* Thu Aug 22 2013 willb - 0.9.0-4 +- removed version number from jar name (obs pmackinn) + +* Thu Aug 22 2013 willb - 0.9.0-3 +- Fixes for F19 and Erlang support + +* Thu Aug 15 2013 willb - 0.9.0-2 +- Incorporates feedback from comments on review request + +* Mon Jul 1 2013 willb - 0.9.0-1 +- Initial package