From d5993bdb9bfcf03474a1da2da036367e61054bb6 Mon Sep 17 00:00:00 2001 From: "Laszlo Boszormenyi (GCS)" Date: Fri, 24 Sep 2021 16:18:04 +0100 Subject: [PATCH] Import thrift_0.13.0-7.debian.tar.xz [dgit import tarball thrift 0.13.0-7 thrift_0.13.0-7.debian.tar.xz] --- README.md | 41 ++ changelog | 182 ++++++++ control | 189 ++++++++ copyright | 196 ++++++++ docs | 1 + golang-thrift-dev.install | 1 + libthrift-0.13.0.install | 4 + libthrift-0.13.0.shlibs | 4 + libthrift-c-glib-dev.install | 4 + libthrift-c-glib0.install | 1 + libthrift-dev.install | 20 + libthrift-java-doc.doc-base | 8 + libthrift-java-doc.install | 1 + libthrift-perl.install | 2 + libthrift0.install | 5 + .../Fix_wrong_int_to_string_conversions.patch | 174 +++++++ patches/THRIFT-5318_support_php8.patch | 206 +++++++++ patches/THRIFT-5322.patch | 310 +++++++++++++ patches/add_missing_test_files.patch | 70 +++ patches/broken_boost_1.62.patch | 22 + patches/disable_TLSv1_0_and_TLSv1_1.patch | 26 ++ patches/disable_failing_tests.patch | 27 ++ patches/disable_php_testing.patch | 26 ++ patches/go_test_fail_on_busy_machine.patch | 27 ++ patches/golang_1.10_fix.patch | 424 ++++++++++++++++++ patches/golang_dependency_installed.patch | 37 ++ patches/link_tests_atomic.patch | 262 +++++++++++ patches/link_with_zlib.patch | 42 ++ patches/missing_go_test.patch | 53 +++ patches/no_bundler_use.patch | 56 +++ patches/no_composer_install.patch | 36 ++ patches/no_go_race.patch | 18 + patches/no_gradlew.patch | 18 + patches/no_pom.patch | 18 + patches/no_shmem.patch | 19 + patches/node_is_nodejs.patch | 40 ++ patches/series | 21 + php-thrift.install | 2 + python3-thrift.install | 2 + rules | 134 ++++++ source/format | 1 + source/lintian-overrides | 8 + thrift-compiler.docs | 1 + thrift-compiler.examples | 2 + thrift-compiler.install | 1 + thrift-compiler.manpages | 1 + thrift-doc.docs | 2 + thrift-doc.install | 1 + thrift.1 | 78 ++++ watch | 2 + 50 files changed, 2826 insertions(+) create mode 100644 README.md create mode 100644 changelog create mode 100644 control create mode 100644 copyright create mode 100644 docs create mode 100644 golang-thrift-dev.install create mode 100644 libthrift-0.13.0.install create mode 100644 libthrift-0.13.0.shlibs create mode 100644 libthrift-c-glib-dev.install create mode 100644 libthrift-c-glib0.install create mode 100644 libthrift-dev.install create mode 100644 libthrift-java-doc.doc-base create mode 100644 libthrift-java-doc.install create mode 100644 libthrift-perl.install create mode 100644 libthrift0.install create mode 100644 patches/Fix_wrong_int_to_string_conversions.patch create mode 100644 patches/THRIFT-5318_support_php8.patch create mode 100644 patches/THRIFT-5322.patch create mode 100644 patches/add_missing_test_files.patch create mode 100644 patches/broken_boost_1.62.patch create mode 100644 patches/disable_TLSv1_0_and_TLSv1_1.patch create mode 100644 patches/disable_failing_tests.patch create mode 100644 patches/disable_php_testing.patch create mode 100644 patches/go_test_fail_on_busy_machine.patch create mode 100644 patches/golang_1.10_fix.patch create mode 100644 patches/golang_dependency_installed.patch create mode 100644 patches/link_tests_atomic.patch create mode 100644 patches/link_with_zlib.patch create mode 100644 patches/missing_go_test.patch create mode 100644 patches/no_bundler_use.patch create mode 100644 patches/no_composer_install.patch create mode 100644 patches/no_go_race.patch create mode 100644 patches/no_gradlew.patch create mode 100644 patches/no_pom.patch create mode 100644 patches/no_shmem.patch create mode 100644 patches/node_is_nodejs.patch create mode 100644 patches/series create mode 100644 php-thrift.install create mode 100644 python3-thrift.install create mode 100755 rules create mode 100644 source/format create mode 100644 source/lintian-overrides create mode 100644 thrift-compiler.docs create mode 100644 thrift-compiler.examples create mode 100644 thrift-compiler.install create mode 100644 thrift-compiler.manpages create mode 100644 thrift-doc.docs create mode 100644 thrift-doc.install create mode 100644 thrift.1 create mode 100644 watch diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ebfeea --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +## Some tips on Debian Packaging + +- Debian New Maintainers' Guide [http://www.debian.org/doc/debian-policy/] +- Debian Policy Manual [http://www.debian.org/doc/manuals/maint-guide/] +- Machine-readable debian/copyright file [http://dep.debian.net/deps/dep5/] +- DebSrc 3.0 guidelines [https://wiki.debian.org/Projects/DebSrc3.0] + + +## Build using dpkg-buildpackage: + +```bash +$ dpkg-buildpackage -d -tc + -d # do not check build dependencies and conflicts. + -tc # clean source tree when finished. +``` + + +## Update changelog: + +```bash +$ date -R +``` + +One can also install `devscripts` package and run: + +```bash +$ dch -i +``` + + +## Check packages: + +```bash +$ dpkg -c *.deb +$ lintian *.deb +``` + + +## TODO + +Make it perfect! diff --git a/changelog b/changelog new file mode 100644 index 0000000..d68e181 --- /dev/null +++ b/changelog @@ -0,0 +1,182 @@ +thrift (0.13.0-7) unstable; urgency=medium + + * Remove python3-thrift-dbg package (closes: #994384). + * Update Standards-Version to 4.6.0 . + * Sync with Ubuntu. + + [ Lucas Kanashiro ] + * d/p/THRIFT-5318_support_php8.patch: Backport upstream patch to add support + for PHP 8 (LP: #1940473). + * d/rules: export GO111MODULE=off, this will make go.mod file not mandatory. + + -- Laszlo Boszormenyi (GCS) Fri, 24 Sep 2021 17:18:04 +0200 + +thrift (0.13.0-6) unstable; urgency=medium + + * Backport upstream fix for THRIFT-5322: Go compact_protocol allocating + unreasonable buffer size. + + -- Laszlo Boszormenyi (GCS) Sun, 14 Feb 2021 19:50:04 +0100 + +thrift (0.13.0-5) unstable; urgency=medium + + * Update Standards-Version to 4.5.0 . + + [ Adrian Bunk ] + * Link with libatomic on ARMel and MIPSel (closes: #972948). + + -- Laszlo Boszormenyi (GCS) Mon, 26 Oct 2020 18:01:44 +0100 + +thrift (0.13.0-4) unstable; urgency=medium + + * Add XS-Go-Import-Path field. + * Correct installed Go source files location. + * Update supported Ruby version (closes: #950742). + * Remove unneeded composer build dependency (closes: #970587). + * Don't remove needed config.h header (closes: #972225). + + -- Laszlo Boszormenyi (GCS) Thu, 15 Oct 2020 17:07:25 +0200 + +thrift (0.13.0-3) unstable; urgency=medium + + * Backport upstream fix for wrong int to string conversions in Go testing + (closes: #971192). + + -- Laszlo Boszormenyi (GCS) Sun, 27 Sep 2020 21:31:25 +0200 + +thrift (0.13.0-2) unstable; urgency=medium + + * Link C++ tests with atomic. + * Upload to Sid. + + -- Laszlo Boszormenyi (GCS) Sun, 08 Dec 2019 12:24:18 +0000 + +thrift (0.13.0-1) experimental; urgency=high + + * New major upstream release: + - fixes CVE-2019-0205: endless loop when feed with specific input data, + - fixes CVE-2019-0210: Go server may panic when feed with invalid input + data, + - removed compiler plug-in mechanism (closes: #942337). + * Rework upstream distclean process (closes: #943653). + + -- Laszlo Boszormenyi (GCS) Sun, 01 Dec 2019 10:46:55 +0000 + +thrift (0.12.0-1) experimental; urgency=medium + + * New major upstream release. + * Rename related packages to -0.12.0 suffix. + * Remove Python 2 bindings (closes: #938662). + * Update debhelper level to 11 . + + -- Laszlo Boszormenyi (GCS) Sat, 05 Oct 2019 08:58:11 +0000 + +thrift (0.11.0-6) unstable; urgency=medium + + * Update copyright file (closes: #935713). + * Update Python packaging bits (closes: #935715). + + -- Laszlo Boszormenyi (GCS) Sun, 25 Aug 2019 19:18:04 +0000 + +thrift (0.11.0-5) experimental; urgency=medium + + * Fix Python 3 packaging. + * Sync with Ubuntu. + * Update Standards-Version to 4.4.0 . + + [ Adam Cecile ] + * Build python3 package (closes: #913724). + + [ Gianfranco Costamagna ] + * Export HOME to make the build happy (closes: #935620). + * Fix another failure due to new go with upstream patch. + + -- Laszlo Boszormenyi (GCS) Sat, 24 Aug 2019 15:47:34 +0000 + +thrift (0.11.0-4) unstable; urgency=medium + + * Backport upstream security fix for CVE-2018-11798: Node.js Filesever + webroot fixed path (closes: #918734). + * Update Standards-Version to 4.3.0 . + + -- Laszlo Boszormenyi (GCS) Tue, 08 Jan 2019 21:31:07 +0000 + +thrift (0.11.0-3) unstable; urgency=medium + + * Build with latest PHP package version. + * Provide PHP package without version number. + * Upload to Sid (closes: #835294). + + -- Laszlo Boszormenyi (GCS) Sat, 27 Oct 2018 20:57:18 +0000 + +thrift (0.11.0-2) experimental; urgency=medium + + * Disable failing Python self-tests to fix mips and s390x FTBFS. + + -- Laszlo Boszormenyi (GCS) Fri, 12 Oct 2018 00:12:09 +0000 + +thrift (0.11.0-1) experimental; urgency=medium + + * New major upstream release. + * Fixes CVE-2016-5397: command injection in format_go_output + (closes: #894577). + * Fix FTBFS problems (closes: #909067). + * Rename related packages to -0.11.0 suffix. + * Build with PHP 7.2 version. + * Remove libmaven-ant-tasks-java build dependency (closes: #877126). + * Update patches. + * Use auto-generated debug packages. + * Change package priority to optional. + * Update Standards-Version to 4.2.1 . + + -- Laszlo Boszormenyi (GCS) Thu, 20 Sep 2018 18:16:39 +0000 + +thrift (0.10.0-1) experimental; urgency=low + + * New upstream release. + * Rename related packages to -0.10.0 suffix. + * Correct Perl install directory (closes: #859128). + * Fix building with Boost 1.62 version. + * Only build Go bindings on supported architectures. + * Add python{,3}-six build dependency for testing support. + * Disable failing TSimpleServer testing for Python. + + -- Laszlo Boszormenyi (GCS) Sat, 13 May 2017 08:15:21 +0000 + +thrift (0.9.3-2) experimental; urgency=low + + * Build Go bindings. + * Update to build with Java Servlet API 3.1 . + * Fix build with GCC 6.2 . + * Fix build with Boost 1.61 . + * Update Standards-Version to 3.9.8 . + + -- Laszlo Boszormenyi (GCS) Sun, 17 Jul 2016 19:31:46 +0000 + +thrift (0.9.3-1) experimental; urgency=low + + * New upstream release. + * Patch SSLv3 support to use SSLv23_method function (closes: #804668). + * Specify Qt version to build and move to version 5 of the library. + * This release contains TestValidators.thrift , remove its patch. + * Add debug package for Pyton bindings. + * Update OpenJDK build dependency to version 8. + * Update Perl build dependency. + * Update Standards-Version to 3.9.7 . + * Keep rebuildable. + + -- Laszlo Boszormenyi (GCS) Sun, 20 Mar 2016 11:10:27 +0000 + +thrift (0.9.2-2) experimental; urgency=low + + * Specify openjdk-7-jdk to build with. + * Disable parallel testing. + * Update Boost build dependency to be version 1.58.0 at least. + + -- Laszlo Boszormenyi (GCS) Mon, 03 Aug 2015 20:09:47 +0200 + +thrift (0.9.2-1) experimental; urgency=low + + * Use monolithic upstream source for Thrift packaging (closes: #792097). + + -- Laszlo Boszormenyi (GCS) Sat, 21 Mar 2015 17:45:29 +0000 diff --git a/control b/control new file mode 100644 index 0000000..9a45191 --- /dev/null +++ b/control @@ -0,0 +1,189 @@ +Source: thrift +Section: devel +Priority: optional +Maintainer: Laszlo Boszormenyi (GCS) +Build-Depends: debhelper-compat (= 11), dh-python, + dh-golang, golang-golang-x-net-dev, + gem2deb (>= 0.3.0~), + bison, flex, + libboost-all-dev (>= 1.61.0), libevent-dev, zlib1g-dev, + libssl-dev, + libglib2.0-dev, + qtbase5-dev, + python3-all-dev, + python3-six, + golang-go, golang-github-golang-mock-dev, + pkg-php-tools (>= 1.14~), php-dev, phpunit, php-codesniffer, + perl (>= 5.22), libbit-vector-perl, libclass-accessor-perl, +# openjdk-11-jdk, javahelper, maven-debian-helper (>= 1.5), ant (>= 1.7), ant-optional, +# libhttpclient-java, libslf4j-java, libservlet3.1-java (>= 8), +# nodejs, npm, + ruby-dev (>= 1:2.2), ruby, bundler, + rake, + ruby-daemons, ruby-diff-lcs, ruby-eventmachine, ruby-rspec-core, + ruby-rack, ruby-rack-test, + ruby-rspec, ruby-rspec-expectations, ruby-rspec-mocks, + thin, +# erlang-dev, erlang-eunit, +# liblua5.2-dev, +# google-mock +Build-Conflicts: rustc +Standards-Version: 4.6.0 +Homepage: https://thrift.apache.org/ +XS-Ruby-Versions: ruby2.7 +XS-Go-Import-Path: github.com/apache/thrift/lib/go/thrift + +Package: libthrift-0.13.0 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Thrift C++ library + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with code generation to build services that operate seamlessly + across a number of different development languages. + . + This package contains the runtime libraries needed for C++ applications + using Thrift. + +Package: libthrift-dev +Architecture: any +Section: libdevel +Depends: libthrift-0.13.0 (= ${binary:Version}), ${misc:Depends}, pkg-config +Description: Thrift C++ library (development headers) + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with code generation to build services that operate seamlessly + across a number of different development languages. + . + This package contains the development libraries required for writing C++ + applications using Thrift. + +Package: libthrift-c-glib0 +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Thrift glib library + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with code generation to build services that operate seamlessly + across a number of different development languages. + . + This package contains the glib based runtime libraries needed for C + applications using Thrift. + +Package: libthrift-c-glib-dev +Architecture: any +Section: libdevel +Depends: libthrift-c-glib0 (= ${binary:Version}), ${misc:Depends}, pkg-config +Description: Thrift glib library (development headers) + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with code generation to build services that operate seamlessly + across a number of different development languages. + . + This package contains the development libraries required for writing glib + based C applications using Thrift. + +Package: thrift-compiler +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: thrift-compiler (<= 0.9.1-2) +Replaces: thrift-compiler (<= 0.9.1-2) +Description: code generator/compiler for Thrift definitions + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with code generation to build services that operate seamlessly + across a number of different development languages. + . + This package contains the compiler used to generate language code from + Thrift definition files. + +Package: python3-thrift +Section: python +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, ${python3:Depends} +Provides: ${python3:Provides} +Description: Python 3 library for Thrift + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with a code generation to build services that operate seamlessly + across a number of different development languages. + . + This package provides the Python 3 bindings for Thrift. + +#Package: libthrift-java +#Section: java +#Architecture: all +#Depends: ${java:Depends}, ${misc:Depends} +#Conflicts: libthrift-java (<= 0.9.1-2) +#Replaces: libthrift-java (<= 0.9.1-2) +#Description: Java language support for Thrift +# Thrift is a software framework for the development of reliable and +# performant communication and data serialization. It combines a software +# stack with code generation to build services that operate seamlessly +# across a number of different development languages. +# . +# This package provides the Java language support for Thrift. +# +#Package: libthrift-java-doc +#Architecture: all +#Section: doc +#Depends: ${misc:Depends} +#Suggests: libthrift-java +#Description: Java language support for Thrift - documentation +# Thrift is a software framework for the development of reliable and +# performant communication and data serialization. It combines a software +# stack with code generation to build services that operate seamlessly +# across a number of different development languages. +# . +# This package contains Javadoc HTML documentation for libthrift-java . +# +Package: php-thrift +Architecture: any +Section: php +Depends: ${phpcomposer:Debian-require}, ${shlibs:Depends}, ${misc:Depends} +Provides: ${php:Provides} +Conflicts: php7.0-thrift, php7.2-thrift +Replaces: php7.0-thrift, php7.2-thrift +Description: PHP language support for Thrift + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with code generation to build services that operate seamlessly + across a number of different development languages. + . + This package provides the PHP5 language support for Thrift. + +Package: libthrift-perl +Section: perl +Architecture: all +Depends: ${perl:Depends}, ${misc:Depends} +Description: Perl language support for Thrift + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with code generation to build services that operate seamlessly + across a number of different development languages. + . + This package provides the Perl language support for Thrift. + +Package: golang-thrift-dev +Architecture: amd64 arm64 armel armhf i386 ppc64el +Depends: ${misc:Depends} +Description: Go language support for Thrift + Thrift is a software framework for the development of reliable and + performant communication and data serialization. It combines a software + stack with code generation to build services that operate seamlessly + across a number of different development languages. + . + This package provides the Go language support for Thrift. +# +#Package: ruby-thrift +#Section: libs +#Architecture: any +#Depends: ${shlibs:Depends}, ${misc:Depends} +#Description: Ruby library for Thrift +# Thrift is a software framework for the development of reliable and +# performant communication and data serialization. It combines a software +# stack with a code generation to build services that operate seamlessly +# across a number of different development languages. +# . +# This package provides the Ruby bindings for Thrift. diff --git a/copyright b/copyright new file mode 100644 index 0000000..47d214a --- /dev/null +++ b/copyright @@ -0,0 +1,196 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: thrift +Source: https://www.apache.org/dist/thrift + +Files: * +Copyright: Copyright 2006- Apache Software Foundation +License: Apache-2.0 + +Files: compiler/cpp/src/thrift/thrifty.cc +Copyright: Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. +License: GPL-3+ with Bison exception or Apache-2.0 + +Files: compiler/cpp/src/thrift/thrifty.hh +Copyright: Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. +License: GPL-3+ with Bison exception + +Files: compile ylwrap +Copyright: Copyright (C) 1996-2014 Free Software Foundation, Inc. +License: GPL-2+ + +Files: build/cmake/FindGLIB.cmake +Copyright: Copyright (C) 2012 Raphael Kubo da Costa +License: BSD-2-clause + All rights reserved. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Files: lib/php/src/ext/thrift_protocol/run-tests.php +Copyright: Copyright (C) 1997-2017 The PHP Group +License: PHP-3.01 + -------------------------------------------------------------------- + The PHP License, version 3.01 + Copyright (c) 1999 - 2006 The PHP Group. All rights reserved. + -------------------------------------------------------------------- + . + Redistribution and use in source and binary forms, with or without + modification, is permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + . + 3. The name "PHP" must not be used to endorse or promote products + derived from this software without prior written permission. For + written permission, please contact group@php.net. + . + 4. Products derived from this software may not be called "PHP", nor + may "PHP" appear in their name, without prior written permission + from group@php.net. You may indicate that your software works in + conjunction with PHP by saying "Foo for PHP" instead of calling + it "PHP Foo" or "phpfoo" + . + 5. The PHP Group may publish revised and/or new versions of the + license from time to time. Each version will be given a + distinguishing version number. + Once covered code has been published under a particular version + of the license, you may always continue to use it under the terms + of that version. You may also choose to use such covered code + under the terms of any subsequent version of the license + published by the PHP Group. No one other than the PHP Group has + the right to modify the terms applicable to covered code created + under this License. + . + 6. Redistributions of any form whatsoever must retain the following + acknowledgment: + "This product includes PHP software, freely available from + ". + . + THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND + ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP + DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + . + -------------------------------------------------------------------- + . + This software consists of voluntary contributions made by many + individuals on behalf of the PHP Group. + . + The PHP Group can be contacted via Email at group@php.net. + . + For more information on the PHP Group and the PHP project, + please see . + . + PHP includes the Zend Engine, freely available at + . + +Files: debian/* +Copyright: Copyright 2012-2014 Eric Evans , + Copyright 2014- Laszlo Boszormenyi (GCS) +License: GPL-2+ + +License: GPL-2+ + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) + any later version. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + . + You should have received a copy of the GNU General Public License along + with this package; if not, write to the Free Software Foundation, Inc., + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the full text of the GNU General Public License version + 2 can be found in the file `/usr/share/common-licenses/GPL-2'. + +License: GPL-3+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the full text of the GNU General Public License + version 3 can be found in the file `/usr/share/common-licenses/GPL-3'. + +License: GPL-3+ with Bison exception + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + . + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. + +License: Apache-2.0 + Licensed to the Apache Software Foundation (ASF) under one or more contributor + license agreements. The ASF licenses this work to You under the Apache License, + Version 2.0 (the "License"); you may not use this work except in compliance + with the License. You may obtain a copy of the License at + . + https://www.apache.org/licenses/LICENSE-2.0 + . + On Debian systems, the complete text of the Apache License Version 2.0 + can be found in the file '/usr/share/common-licenses/Apache-2.0'. diff --git a/docs b/docs new file mode 100644 index 0000000..b43bf86 --- /dev/null +++ b/docs @@ -0,0 +1 @@ +README.md diff --git a/golang-thrift-dev.install b/golang-thrift-dev.install new file mode 100644 index 0000000..d091038 --- /dev/null +++ b/golang-thrift-dev.install @@ -0,0 +1 @@ +lib/go/thrift /usr/share/gocode/src/github.com/apache/thrift/lib/go/ diff --git a/libthrift-0.13.0.install b/libthrift-0.13.0.install new file mode 100644 index 0000000..d0b0147 --- /dev/null +++ b/libthrift-0.13.0.install @@ -0,0 +1,4 @@ +usr/lib/*/libthrift-*.so +usr/lib/*/libthriftnb-*.so +usr/lib/*/libthriftqt5-*.so +usr/lib/*/libthriftz-*.so diff --git a/libthrift-0.13.0.shlibs b/libthrift-0.13.0.shlibs new file mode 100644 index 0000000..cc1c630 --- /dev/null +++ b/libthrift-0.13.0.shlibs @@ -0,0 +1,4 @@ +libthrift 0.13.0 libthrift-0.13.0 (>= 0.13.0-1~) +libthriftnb 0.13.0 libthrift-0.13.0 (>= 0.13.0-1~) +libthriftqt5 0.13.0 libthrift-0.13.0 (>= 0.13.0-1~) +libthriftz 0.13.0 libthrift-0.13.0 (>= 0.13.0-1~) diff --git a/libthrift-c-glib-dev.install b/libthrift-c-glib-dev.install new file mode 100644 index 0000000..6e062c9 --- /dev/null +++ b/libthrift-c-glib-dev.install @@ -0,0 +1,4 @@ +usr/include/thrift/c_glib/ +usr/lib/*/libthrift_c_glib.a +usr/lib/*/libthrift_c_glib.so +usr/lib/*/pkgconfig/thrift_c_glib.pc diff --git a/libthrift-c-glib0.install b/libthrift-c-glib0.install new file mode 100644 index 0000000..d71b50d --- /dev/null +++ b/libthrift-c-glib0.install @@ -0,0 +1 @@ +usr/lib/*/libthrift_c_glib.so.* diff --git a/libthrift-dev.install b/libthrift-dev.install new file mode 100644 index 0000000..54e3e13 --- /dev/null +++ b/libthrift-dev.install @@ -0,0 +1,20 @@ +usr/include/thrift/*.h +usr/include/thrift/async/ +usr/include/thrift/concurrency/ +usr/include/thrift/processor/ +usr/include/thrift/protocol/ +usr/include/thrift/qt/ +usr/include/thrift/server/ +usr/include/thrift/transport/ +usr/lib/*/libthrift.a +usr/lib/*/libthriftnb.a +usr/lib/*/libthriftqt5.a +usr/lib/*/libthriftz.a +usr/lib/*/libthriftnb.so +usr/lib/*/libthriftqt5.so +usr/lib/*/libthrift.so +usr/lib/*/libthriftz.so +usr/lib/*/pkgconfig/thrift-nb.pc +usr/lib/*/pkgconfig/thrift.pc +usr/lib/*/pkgconfig/thrift-qt5.pc +usr/lib/*/pkgconfig/thrift-z.pc diff --git a/libthrift-java-doc.doc-base b/libthrift-java-doc.doc-base new file mode 100644 index 0000000..03672c0 --- /dev/null +++ b/libthrift-java-doc.doc-base @@ -0,0 +1,8 @@ +Document: libthrift-java-doc +Title: Programmer API for Thrift Java support +Author: Apache Software Foundation +Section: Programming + +Format: HTML +Index: /usr/share/doc/thrift/java/index.html +Files: /usr/share/doc/thrift/java/* diff --git a/libthrift-java-doc.install b/libthrift-java-doc.install new file mode 100644 index 0000000..1c29668 --- /dev/null +++ b/libthrift-java-doc.install @@ -0,0 +1 @@ +debian/_jh_build.javadoc/api/* /usr/share/doc/thrift/java/ diff --git a/libthrift-perl.install b/libthrift-perl.install new file mode 100644 index 0000000..f3ee2e4 --- /dev/null +++ b/libthrift-perl.install @@ -0,0 +1,2 @@ +usr/lib/perl5/Thrift.pm /usr/share/perl5 +usr/lib/perl5/Thrift /usr/share/perl5 diff --git a/libthrift0.install b/libthrift0.install new file mode 100644 index 0000000..ec74efc --- /dev/null +++ b/libthrift0.install @@ -0,0 +1,5 @@ +usr/lib/libthrift.so* +usr/lib/libthrift-*.so* +usr/lib/libthriftnb*.so* +usr/lib/libthriftqt*.so* +usr/lib/libthriftz*.so* diff --git a/patches/Fix_wrong_int_to_string_conversions.patch b/patches/Fix_wrong_int_to_string_conversions.patch new file mode 100644 index 0000000..be07b19 --- /dev/null +++ b/patches/Fix_wrong_int_to_string_conversions.patch @@ -0,0 +1,174 @@ +From 22b6c0c8bbc7089ce714f782366c2914c5e9eac5 Mon Sep 17 00:00:00 2001 +From: Yuxuan 'fishy' Wang +Date: Fri, 28 Aug 2020 17:20:31 -0700 +Subject: [PATCH] THRIFT-5270: Fix wrong int to string conversions + +Client: go + +Starting from go 1.15, go test starts to complain about wrongly used int +to string conversions: + + ./field.go:58:83: conversion from int to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?) + ./numeric.go:72:12: conversion from int64 to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?) + ./json_protocol_test.go:612:92: conversion from int to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?) + ./simple_json_protocol_test.go:685:96: conversion from int to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?) + +json_protocol_test and simple_json_protocol_test usages are actually +already in format arg so just remove the conversion is good enough. +field is no longer used anywhere so just removed it (there's one line of +commented out code in compact_protocol so remove that line as well). The +one in numeric.go is actually a bug. We didn't set sValue correctly in +NewNumericFromI64 and NewNumericFromI32 functions. +--- + lib/go/thrift/compact_protocol.go | 1 - + lib/go/thrift/field.go | 79 ---------------------- + lib/go/thrift/json_protocol_test.go | 2 +- + lib/go/thrift/numeric.go | 4 +- + lib/go/thrift/simple_json_protocol_test.go | 2 +- + 5 files changed, 4 insertions(+), 84 deletions(-) + delete mode 100644 lib/go/thrift/field.go + +diff --git a/lib/go/thrift/compact_protocol.go b/lib/go/thrift/compact_protocol.go +index 468935781d..8510f1f79e 100644 +--- a/lib/go/thrift/compact_protocol.go ++++ b/lib/go/thrift/compact_protocol.go +@@ -209,7 +209,6 @@ func (p *TCompactProtocol) writeFieldBeginInternal(ctx context.Context, name str + } + + p.lastFieldId = fieldId +- // p.lastField.Push(field.id); + return written, nil + } + +diff --git a/lib/go/thrift/field.go b/lib/go/thrift/field.go +deleted file mode 100644 +index 9d66525509..0000000000 +--- a/lib/go/thrift/field.go ++++ /dev/null +@@ -1,79 +0,0 @@ +-/* +- * 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. +- */ +- +-package thrift +- +-// Helper class that encapsulates field metadata. +-type field struct { +- name string +- typeId TType +- id int +-} +- +-func newField(n string, t TType, i int) *field { +- return &field{name: n, typeId: t, id: i} +-} +- +-func (p *field) Name() string { +- if p == nil { +- return "" +- } +- return p.name +-} +- +-func (p *field) TypeId() TType { +- if p == nil { +- return TType(VOID) +- } +- return p.typeId +-} +- +-func (p *field) Id() int { +- if p == nil { +- return -1 +- } +- return p.id +-} +- +-func (p *field) String() string { +- if p == nil { +- return "" +- } +- return "" +-} +- +-var ANONYMOUS_FIELD *field +- +-type fieldSlice []field +- +-func (p fieldSlice) Len() int { +- return len(p) +-} +- +-func (p fieldSlice) Less(i, j int) bool { +- return p[i].Id() < p[j].Id() +-} +- +-func (p fieldSlice) Swap(i, j int) { +- p[i], p[j] = p[j], p[i] +-} +- +-func init() { +- ANONYMOUS_FIELD = newField("", STOP, 0) +-} +diff --git a/lib/go/thrift/json_protocol_test.go b/lib/go/thrift/json_protocol_test.go +index 07afa9683b..333d383216 100644 +--- a/lib/go/thrift/json_protocol_test.go ++++ b/lib/go/thrift/json_protocol_test.go +@@ -609,7 +609,7 @@ func TestWriteJSONProtocolMap(t *testing + for k, value := range DOUBLE_VALUES { + ik, err := p.ReadI32() + if err != nil { +- t.Fatalf("Bad key for %s index %v, wrote: %v, expected: %v, error: %s", thetype, k, ik, string(k), err.Error()) ++ t.Fatalf("Bad key for %s index %v, wrote: %v, expected: %v, error: %s", thetype, k, ik, k, err.Error()) + } + if int(ik) != k { + t.Fatalf("Bad key for %s index %v, wrote: %v, expected: %v", thetype, k, ik, k) +diff --git a/lib/go/thrift/numeric.go b/lib/go/thrift/numeric.go +index aa8daa9b54..e4512d204c 100644 +--- a/lib/go/thrift/numeric.go ++++ b/lib/go/thrift/numeric.go +@@ -69,14 +69,14 @@ func NewNumericFromDouble(dValue float64) Numeric { + + func NewNumericFromI64(iValue int64) Numeric { + dValue := float64(iValue) +- sValue := string(iValue) ++ sValue := strconv.FormatInt(iValue, 10) + isNil := false + return &numeric{iValue: iValue, dValue: dValue, sValue: sValue, isNil: isNil} + } + + func NewNumericFromI32(iValue int32) Numeric { + dValue := float64(iValue) +- sValue := string(iValue) ++ sValue := strconv.FormatInt(int64(iValue), 10) + isNil := false + return &numeric{iValue: int64(iValue), dValue: dValue, sValue: sValue, isNil: isNil} + } +diff --git a/lib/go/thrift/simple_json_protocol_test.go b/lib/go/thrift/simple_json_protocol_test.go +index 951389a60d..986fff27e3 100644 +--- a/lib/go/thrift/simple_json_protocol_test.go ++++ b/lib/go/thrift/simple_json_protocol_test.go +@@ -682,7 +682,7 @@ func TestWriteSimpleJSONProtocolMap(t *testing.T) { + strv := l[k*2+4] + ik, err := strconv.Atoi(strk) + if err != nil { +- t.Fatalf("Bad value for %s index %v, wrote: %v, expected: %v, error: %s", thetype, k, strk, string(k), err.Error()) ++ t.Fatalf("Bad value for %s index %v, wrote: %v, expected: %v, error: %s", thetype, k, strk, k, err.Error()) + } + if ik != k { + t.Fatalf("Bad value for %s index %v, wrote: %v, expected: %v", thetype, k, strk, k) diff --git a/patches/THRIFT-5318_support_php8.patch b/patches/THRIFT-5318_support_php8.patch new file mode 100644 index 0000000..d657522 --- /dev/null +++ b/patches/THRIFT-5318_support_php8.patch @@ -0,0 +1,206 @@ +From b04e39a7e91d7828cce9168c4660b89400930ee5 Mon Sep 17 00:00:00 2001 +From: Tyler Christensen +Date: Tue, 1 Dec 2020 17:13:29 -0700 +Subject: [PATCH] THRIFT-5318: Update PHP thrift_protocol extension for PHP 8 + Client: php Patch: Tyler Christensen & Rasmus Lerdorf + +This closes #2288 + +See https://github.com/php/php-src/blob/PHP-8.0.0/UPGRADING.INTERNALS + +Origin: backport, https://github.com/apache/thrift/commit/b04e39a7e91d7828cce916 +Reviewed-By: Lucas Kanashiro +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/thrift/+bug/1940473 +Bug: https://issues.apache.org/jira/projects/THRIFT/issues/THRIFT-5318?filter=allissues +Last-Updated: 2021-08-18 +--- + .../thrift_protocol/php_thrift_protocol.cpp | 17 ++---- + .../ext/thrift_protocol/php_thrift_protocol.h | 58 +++++++++++++++++-- + .../php_thrift_protocol.stub.php | 10 ++++ + .../php_thrift_protocol_arginfo.h | 33 +++++++++++ + 4 files changed, 101 insertions(+), 17 deletions(-) + create mode 100644 lib/php/src/ext/thrift_protocol/php_thrift_protocol.stub.php + create mode 100644 lib/php/src/ext/thrift_protocol/php_thrift_protocol_arginfo.h + +diff --git a/lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp b/lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp +index c8bc50ecc54..c016b070b6a 100644 +--- a/lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp ++++ b/lib/php/src/ext/thrift_protocol/php_thrift_protocol.cpp +@@ -85,17 +85,10 @@ const int8_t T_EXCEPTION = 3; + const int INVALID_DATA = 1; + const int BAD_VERSION = 4; + +-static zend_function_entry thrift_protocol_functions[] = { +- PHP_FE(thrift_protocol_write_binary, nullptr) +- PHP_FE(thrift_protocol_read_binary, nullptr) +- PHP_FE(thrift_protocol_read_binary_after_message_begin, nullptr) +- {nullptr, nullptr, nullptr} +-}; +- + zend_module_entry thrift_protocol_module_entry = { + STANDARD_MODULE_HEADER, + "thrift_protocol", +- thrift_protocol_functions, ++ ext_functions, + nullptr, + nullptr, + nullptr, +@@ -414,7 +407,7 @@ void createObject(const char* obj_typename, zval* return_value, int nargs = 0, z + object_and_properties_init(return_value, ce, nullptr); + zend_function* constructor = zend_std_get_constructor(Z_OBJ_P(return_value)); + zval ctor_rv; +- zend_call_method(return_value, ce, &constructor, NULL, 0, &ctor_rv, nargs, arg1, arg2); ++ zend_call_method(Z4_OBJ_P(return_value), ce, &constructor, NULL, 0, &ctor_rv, nargs, arg1, arg2); + zval_dtor(&ctor_rv); + if (EG(exception)) { + zend_object *ex = EG(exception); +@@ -928,7 +921,7 @@ void validate_thrift_object(zval* object) { + + zval* is_required = zend_hash_str_find(fieldspec, "isRequired", sizeof("isRequired")-1); + zval rv; +- zval* prop = zend_read_property(object_class_entry, object, varname, strlen(varname), false, &rv); ++ zval* prop = zend_read_property(object_class_entry, Z4_OBJ_P(object), varname, strlen(varname), false, &rv); + + if (Z_TYPE_INFO_P(is_required) == IS_TRUE && Z_TYPE_P(prop) == IS_NULL) { + char errbuf[128]; +@@ -969,7 +962,7 @@ void binary_deserialize_spec(zval* zthis, PHPInputTransport& transport, HashTabl + ZVAL_UNDEF(&rv); + + binary_deserialize(ttype, transport, &rv, fieldspec); +- zend_update_property(ce, zthis, varname, strlen(varname), &rv); ++ zend_update_property(ce, Z4_OBJ_P(zthis), varname, strlen(varname), &rv); + + zval_ptr_dtor(&rv); + } else { +@@ -1010,7 +1003,7 @@ void binary_serialize_spec(zval* zthis, PHPOutputTransport& transport, HashTable + int8_t ttype = Z_LVAL_P(val_ptr); + + zval rv; +- zval* prop = zend_read_property(Z_OBJCE_P(zthis), zthis, varname, strlen(varname), false, &rv); ++ zval* prop = zend_read_property(Z_OBJCE_P(zthis), Z4_OBJ_P(zthis), varname, strlen(varname), false, &rv); + + if (Z_TYPE_P(prop) == IS_REFERENCE){ + ZVAL_DEREF(prop); +diff --git a/lib/php/src/ext/thrift_protocol/php_thrift_protocol.h b/lib/php/src/ext/thrift_protocol/php_thrift_protocol.h +index 04209973cfa..b8dc7de7e3f 100644 +--- a/lib/php/src/ext/thrift_protocol/php_thrift_protocol.h ++++ b/lib/php/src/ext/thrift_protocol/php_thrift_protocol.h +@@ -19,10 +19,58 @@ + + #pragma once + +-PHP_FUNCTION(thrift_protocol_write_binary); +-PHP_FUNCTION(thrift_protocol_read_binary); +-PHP_FUNCTION(thrift_protocol_read_binary_after_message_begin); ++/* backward compat macros */ + +-extern zend_module_entry thrift_protocol_module_entry; +-#define phpext_thrift_protocol_ptr &thrift_protocol_module_entry ++#if PHP_VERSION_ID >= 80000 ++# define Z4_OBJ_P(zval) (Z_OBJ_P(zval)) ++#else ++# define Z4_OBJ_P(zval) (zval) ++#endif + ++#ifndef IS_MIXED ++# define IS_MIXED 0 ++#endif ++ ++#ifndef ZEND_PARSE_PARAMETERS_NONE ++#define ZEND_PARSE_PARAMETERS_NONE() \ ++ ZEND_PARSE_PARAMETERS_START(0, 0) \ ++ ZEND_PARSE_PARAMETERS_END() ++#endif ++#ifndef ZEND_ARG_INFO_WITH_DEFAULT_VALUE ++#define ZEND_ARG_INFO_WITH_DEFAULT_VALUE(pass_by_ref, name, default_value) \ ++ ZEND_ARG_INFO(pass_by_ref, name) ++#endif ++ ++#if PHP_VERSION_ID < 70200 ++#undef ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX ++#define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, class_name, allow_null) \ ++ static const zend_internal_arg_info name[] = { \ ++ { (const char*)(zend_uintptr_t)(required_num_args), ( #class_name ), 0, return_reference, allow_null, 0 }, ++#endif ++ ++#ifndef ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX ++# define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, class_name, allow_null) \ ++ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, class_name, allow_null) ++#endif ++ ++#ifndef ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX ++# define ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(name, return_reference, num_args, type) \ ++ ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, num_args) ++#endif ++ ++#ifndef ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX ++# define ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(name, return_reference, required_num_args, class_name, type) \ ++ ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args) ++#endif ++ ++#ifndef ZEND_ARG_TYPE_MASK ++# define ZEND_ARG_TYPE_MASK(pass_by_ref, name, type_mask, default_value) \ ++ ZEND_ARG_TYPE_INFO(pass_by_ref, name, 0, 0) ++#endif ++ ++#ifndef ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE ++# define ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(pass_by_ref, name, type_hint, allow_null, default_value) \ ++ ZEND_ARG_TYPE_INFO(pass_by_ref, name, type_hint, allow_null) ++#endif ++ ++#include "php_thrift_protocol_arginfo.h" +diff --git a/lib/php/src/ext/thrift_protocol/php_thrift_protocol.stub.php b/lib/php/src/ext/thrift_protocol/php_thrift_protocol.stub.php +new file mode 100644 +index 00000000000..e9601c3aef0 +--- /dev/null ++++ b/lib/php/src/ext/thrift_protocol/php_thrift_protocol.stub.php +@@ -0,0 +1,10 @@ ++ +Date: Thu, 10 Dec 2020 14:42:37 -0800 +Subject: [PATCH] THRIFT-5322: Guard against large string/binary lengths in Go + +Client: go + +In TBinaryProtocol.ReadString, TBinaryProtocol.ReadBinary, +TCompactProtocol.ReadString, and TCompactProtocol.ReadBinary, use +safeReadBytes to prevent from large allocation on malformed sizes. + + $ go test -bench=SafeReadBytes -benchmem + BenchmarkSafeReadBytes/normal-12 625057 1789 ns/op 2176 B/op 5 allocs/op + BenchmarkSafeReadBytes/max-askedSize-12 545271 2236 ns/op 14464 B/op 7 allocs/op + PASS +--- + lib/go/thrift/binary_protocol.go | 56 ++++------ + lib/go/thrift/binary_protocol_test.go | 153 ++++++++++++++++++++++++++ + lib/go/thrift/compact_protocol.go | 17 ++- + 3 files changed, 184 insertions(+), 42 deletions(-) + +diff --git a/lib/go/thrift/binary_protocol.go b/lib/go/thrift/binary_protocol.go +index c87d23a1bb..58956f6732 100644 +--- a/lib/go/thrift/binary_protocol.go ++++ b/lib/go/thrift/binary_protocol.go +@@ -432,6 +432,15 @@ func (p *TBinaryProtocol) ReadString(ctx context.Context) (value string, err err + err = invalidDataLength + return + } ++ if size == 0 { ++ return "", nil ++ } ++ if size < int32(len(p.buffer)) { ++ // Avoid allocation on small reads ++ buf := p.buffer[:size] ++ read, e := io.ReadFull(p.trans, buf) ++ return string(buf[:read]), NewTProtocolException(e) ++ } + + return p.readStringBody(size) + } +@@ -445,9 +454,7 @@ func (p *TBinaryProtocol) ReadBinary(ctx context.Context) ([]byte, error) { + return nil, invalidDataLength + } + +- isize := int(size) +- buf := make([]byte, isize) +- _, err := io.ReadFull(p.trans, buf) ++ buf, err := safeReadBytes(size, p.trans) + return buf, NewTProtocolException(err) + } + +@@ -468,38 +475,21 @@ func (p *TBinaryProtocol) readAll(ctx context.Context, buf []byte) (err error) { + return NewTProtocolException(err) + } + +-const readLimit = 32768 +- + func (p *TBinaryProtocol) readStringBody(size int32) (value string, err error) { +- if size < 0 { +- return "", nil +- } +- +- var ( +- buf bytes.Buffer +- e error +- b []byte +- ) ++ buf, err := safeReadBytes(size, p.trans) ++ return string(buf), NewTProtocolException(err) ++} + +- switch { +- case int(size) <= len(p.buffer): +- b = p.buffer[:size] // avoids allocation for small reads +- case int(size) < readLimit: +- b = make([]byte, size) +- default: +- b = make([]byte, readLimit) ++// This function is shared between TBinaryProtocol and TCompactProtocol. ++// ++// It tries to read size bytes from trans, in a way that prevents large ++// allocations when size is insanely large (mostly caused by malformed message). ++func safeReadBytes(size int32, trans io.Reader) ([]byte, error) { ++ if size < 0 { ++ return nil, nil + } + +- for size > 0 { +- _, e = io.ReadFull(p.trans, b) +- buf.Write(b) +- if e != nil { +- break +- } +- size -= readLimit +- if size < readLimit && size > 0 { +- b = b[:size] +- } +- } +- return buf.String(), NewTProtocolException(e) ++ buf := new(bytes.Buffer) ++ _, err := io.CopyN(buf, trans, int64(size)) ++ return buf.Bytes(), err + } +diff --git a/lib/go/thrift/binary_protocol_test.go b/lib/go/thrift/binary_protocol_test.go +index 0462cc79de..88bfd26b7e 100644 +--- a/lib/go/thrift/binary_protocol_test.go ++++ b/lib/go/thrift/binary_protocol_test.go +@@ -20,9 +20,162 @@ + package thrift + + import ( ++ "bytes" ++ "math" ++ "strings" + "testing" + ) + + func TestReadWriteBinaryProtocol(t *testing.T) { + ReadWriteProtocolTest(t, NewTBinaryProtocolFactoryDefault()) + } ++ ++const ( ++ safeReadBytesSource = ` ++Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer sit amet ++tincidunt nibh. Phasellus vel convallis libero, sit amet posuere quam. Nullam ++blandit velit at nibh fringilla, sed egestas erat dapibus. Sed hendrerit ++tincidunt accumsan. Curabitur consectetur bibendum dui nec hendrerit. Fusce quis ++turpis nec magna efficitur volutpat a ut nibh. Vestibulum odio risus, tristique ++a nisi et, congue mattis mi. Vivamus a nunc justo. Mauris molestie sagittis ++magna, hendrerit auctor lectus egestas non. Phasellus pretium, odio sit amet ++bibendum feugiat, velit nunc luctus erat, ac bibendum mi dui molestie nulla. ++Nullam fermentum magna eu elit vehicula tincidunt. Etiam ornare laoreet ++dignissim. Ut sed nunc ac neque vulputate fermentum. Morbi volutpat dapibus ++magna, at porttitor quam facilisis a. Donec eget fermentum risus. Aliquam erat ++volutpat. ++ ++Phasellus molestie id ante vel iaculis. Fusce eget quam nec quam viverra laoreet ++vitae a dui. Mauris blandit blandit dui, iaculis interdum diam mollis at. Morbi ++vel sem et. ++` ++ safeReadBytesSourceLen = len(safeReadBytesSource) ++) ++ ++func TestSafeReadBytes(t *testing.T) { ++ srcData := []byte(safeReadBytesSource) ++ ++ for _, c := range []struct { ++ label string ++ askedSize int32 ++ dataSize int ++ }{ ++ { ++ label: "normal", ++ askedSize: 100, ++ dataSize: 100, ++ }, ++ { ++ label: "max-askedSize", ++ askedSize: math.MaxInt32, ++ dataSize: safeReadBytesSourceLen, ++ }, ++ } { ++ t.Run(c.label, func(t *testing.T) { ++ data := bytes.NewReader(srcData[:c.dataSize]) ++ buf, err := safeReadBytes(c.askedSize, data) ++ if len(buf) != c.dataSize { ++ t.Errorf( ++ "Expected to read %d bytes, got %d", ++ c.dataSize, ++ len(buf), ++ ) ++ } ++ if !strings.HasPrefix(safeReadBytesSource, string(buf)) { ++ t.Errorf("Unexpected read data: %q", buf) ++ } ++ if int32(c.dataSize) < c.askedSize { ++ // We expect error in this case ++ if err == nil { ++ t.Errorf( ++ "Expected error when dataSize %d < askedSize %d, got nil", ++ c.dataSize, ++ c.askedSize, ++ ) ++ } ++ } else { ++ // We expect no error in this case ++ if err != nil { ++ t.Errorf( ++ "Expected no error when dataSize %d >= askedSize %d, got: %v", ++ c.dataSize, ++ c.askedSize, ++ err, ++ ) ++ } ++ } ++ }) ++ } ++} ++ ++func generateSafeReadBytesBenchmark(askedSize int32, dataSize int) func(b *testing.B) { ++ return func(b *testing.B) { ++ data := make([]byte, dataSize) ++ b.ResetTimer() ++ for i := 0; i < b.N; i++ { ++ safeReadBytes(askedSize, bytes.NewReader(data)) ++ } ++ } ++} ++ ++func TestSafeReadBytesAlloc(t *testing.T) { ++ if testing.Short() { ++ // NOTE: Since this test runs a benchmark test, it takes at ++ // least 1 second. ++ // ++ // In general we try to avoid unit tests taking that long to run, ++ // but it's to verify a security issue so we made an exception ++ // here: ++ // https://issues.apache.org/jira/browse/THRIFT-5322 ++ t.Skip("skipping test in short mode.") ++ } ++ ++ const ( ++ askedSize = int32(math.MaxInt32) ++ dataSize = 4096 ++ ) ++ ++ // The purpose of this test is that in the case a string header says ++ // that it has a string askedSize bytes long, the implementation should ++ // not just allocate askedSize bytes upfront. So when there're actually ++ // not enough data to be read (dataSize), the actual allocated bytes ++ // should be somewhere between dataSize and askedSize. ++ // ++ // Different approachs could have different memory overheads, so this ++ // target is arbitrary in nature. But when dataSize is small enough ++ // compare to askedSize, half the askedSize is a good and safe target. ++ const target = int64(askedSize) / 2 ++ ++ bm := testing.Benchmark(generateSafeReadBytesBenchmark(askedSize, dataSize)) ++ actual := bm.AllocedBytesPerOp() ++ if actual > target { ++ t.Errorf( ++ "Expected allocated bytes per op to be <= %d, got %d", ++ target, ++ actual, ++ ) ++ } else { ++ t.Logf("Allocated bytes: %d B/op", actual) ++ } ++} ++ ++func BenchmarkSafeReadBytes(b *testing.B) { ++ for _, c := range []struct { ++ label string ++ askedSize int32 ++ dataSize int ++ }{ ++ { ++ label: "normal", ++ askedSize: 100, ++ dataSize: 100, ++ }, ++ { ++ label: "max-askedSize", ++ askedSize: math.MaxInt32, ++ dataSize: 4096, ++ }, ++ } { ++ b.Run(c.label, generateSafeReadBytesBenchmark(c.askedSize, c.dataSize)) ++ } ++} +diff --git a/lib/go/thrift/compact_protocol.go b/lib/go/thrift/compact_protocol.go +index a0161959c8..424906d616 100644 +--- a/lib/go/thrift/compact_protocol.go ++++ b/lib/go/thrift/compact_protocol.go +@@ -561,17 +561,17 @@ func (p *TCompactProtocol) ReadString(ctx context.Context) (value string, err er + if length < 0 { + return "", invalidDataLength + } +- + if length == 0 { + return "", nil + } +- var buf []byte +- if length <= int32(len(p.buffer)) { +- buf = p.buffer[0:length] +- } else { +- buf = make([]byte, length) ++ if length < int32(len(p.buffer)) { ++ // Avoid allocation on small reads ++ buf := p.buffer[:length] ++ read, e := io.ReadFull(p.trans, buf) ++ return string(buf[:read]), NewTProtocolException(e) + } +- _, e = io.ReadFull(p.trans, buf) ++ ++ buf, e := safeReadBytes(length, p.trans) + return string(buf), NewTProtocolException(e) + } + +@@ -588,8 +588,7 @@ func (p *TCompactProtocol) ReadBinary(ctx context.Context) (value []byte, err er + return nil, invalidDataLength + } + +- buf := make([]byte, length) +- _, e = io.ReadFull(p.trans, buf) ++ buf, e := safeReadBytes(length, p.trans) + return buf, NewTProtocolException(e) + } + diff --git a/patches/add_missing_test_files.patch b/patches/add_missing_test_files.patch new file mode 100644 index 0000000..01edd1c --- /dev/null +++ b/patches/add_missing_test_files.patch @@ -0,0 +1,70 @@ +Description: put back files used for testing + Needs for testing and while present up to 0.12.0 and in Git, missed from + the source of 0.13.0 release. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-10-23 + +--- + +--- /dev/null ++++ b/lib/go/test/ConflictNamespaceServiceTest.thrift +@@ -0,0 +1,25 @@ ++# ++# 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. ++# ++namespace go conflict.context ++ ++include "ConflictNamespaceTestD.thrift" ++ ++service ConflictService { ++ ConflictNamespaceTestD.ThingD thingFunc() ++} +--- /dev/null ++++ b/lib/php/test/TestValidators.thrift +@@ -0,0 +1,31 @@ ++/* ++ * 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. ++ */ ++ ++namespace php TestValidators ++ ++include "../../../test/ThriftTest.thrift" ++ ++union UnionOfStrings { ++ 1: string aa; ++ 2: string bb; ++} ++ ++service TestService { ++ void test() throws(1: ThriftTest.Xception xception); ++} diff --git a/patches/broken_boost_1.62.patch b/patches/broken_boost_1.62.patch new file mode 100644 index 0000000..5059fbc --- /dev/null +++ b/patches/broken_boost_1.62.patch @@ -0,0 +1,22 @@ +Description: +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-01-09 + +--- + +--- thrift-0.10.0.orig/lib/cpp/test/Makefile.am ++++ thrift-0.10.0/lib/cpp/test/Makefile.am +@@ -116,9 +116,10 @@ check_PROGRAMS += \ + endif + + TESTS_ENVIRONMENT= \ +- BOOST_TEST_LOG_SINK=tests.xml \ +- BOOST_TEST_LOG_LEVEL=test_suite \ +- BOOST_TEST_LOG_FORMAT=XML ++ BOOST_TEST_LOGGER=XML,test_suite,tests.xml ++# BOOST_TEST_LOG_SINK=tests.xml \ ++# BOOST_TEST_LOG_LEVEL=test_suite \ ++# BOOST_TEST_LOG_FORMAT=XML + + TESTS = \ + $(check_PROGRAMS) diff --git a/patches/disable_TLSv1_0_and_TLSv1_1.patch b/patches/disable_TLSv1_0_and_TLSv1_1.patch new file mode 100644 index 0000000..3b6cceb --- /dev/null +++ b/patches/disable_TLSv1_0_and_TLSv1_1.patch @@ -0,0 +1,26 @@ +Description: Disable TLS v1.0 and TLS v1.1 connection tests + TLS v1.0 and TLS v1.1 protocols are disabled as of OpenSSL 1.1.0f-4, see: + https://packages.qa.debian.org/o/openssl/news/20170806T233554Z.html +Author: Laszlo Boszormenyi (GCS) +Bug-Debian: https://bugs.debian.org/859128 +Last-Update: 2017-09-10 + +--- + +--- thrift-0.10.0.orig/lib/cpp/test/SecurityTest.cpp ++++ thrift-0.10.0/lib/cpp/test/SecurityTest.cpp +@@ -222,11 +222,11 @@ BOOST_AUTO_TEST_CASE(ssl_security_matrix + { + // server = SSLTLS SSLv2 SSLv3 TLSv1_0 TLSv1_1 TLSv1_2 + // client +- /* SSLTLS */ { true, false, false, true, true, true }, ++ /* SSLTLS */ { true, false, false, false, false, true }, + /* SSLv2 */ { false, false, false, false, false, false }, + /* SSLv3 */ { false, false, true, false, false, false }, +- /* TLSv1_0 */ { true, false, false, true, false, false }, +- /* TLSv1_1 */ { true, false, false, false, true, false }, ++ /* TLSv1_0 */ { false, false, false, true, false, false }, ++ /* TLSv1_1 */ { false, false, false, false, true, false }, + /* TLSv1_2 */ { true, false, false, false, false, true } + }; + diff --git a/patches/disable_failing_tests.patch b/patches/disable_failing_tests.patch new file mode 100644 index 0000000..fd044a2 --- /dev/null +++ b/patches/disable_failing_tests.patch @@ -0,0 +1,27 @@ +Description: disable failing tests + . +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-10-05 + +--- + +--- thrift-0.12.0.orig/lib/c_glib/test/Makefile.am ++++ thrift-0.12.0/lib/c_glib/test/Makefile.am +@@ -47,7 +47,6 @@ check_PROGRAMS = \ + testapplicationexception \ + testcontainertest \ + testtransportsocket \ +- testtransportsslsocket \ + testbinaryprotocol \ + testcompactprotocol \ + testbufferedtransport \ +--- thrift-0.12.0.orig/lib/cpp/test/Makefile.am ++++ thrift-0.12.0/lib/cpp/test/Makefile.am +@@ -98,7 +98,6 @@ check_PROGRAMS = \ + TransportTest \ + TInterruptTest \ + TServerIntegrationTest \ +- SecurityTest \ + ZlibTest \ + TFileTransportTest \ + link_test \ diff --git a/patches/disable_php_testing.patch b/patches/disable_php_testing.patch new file mode 100644 index 0000000..0b40284 --- /dev/null +++ b/patches/disable_php_testing.patch @@ -0,0 +1,26 @@ +Description: PHP tests are not phpunit 8 compatible + Disable those for now. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-09-22 + +--- + +--- thrift-0.12.0.orig/lib/php/test/Makefile.am ++++ thrift-0.12.0/lib/php/test/Makefile.am +@@ -35,13 +35,13 @@ deps: $(top_srcdir)/composer.json + all-local: deps + + check-json-serializer: deps stubs +- $(PHPUNIT) --log-junit=TEST-log-json-serializer.xml JsonSerialize/ ++# $(PHPUNIT) --log-junit=TEST-log-json-serializer.xml JsonSerialize/ + + check-validator: deps stubs +- $(PHPUNIT) --log-junit=TEST-log-validator.xml Validator/ ++# $(PHPUNIT) --log-junit=TEST-log-validator.xml Validator/ + + check-protocol: deps stubs +- $(PHPUNIT) --log-junit=TEST-log-protocol.xml Protocol/ ++# $(PHPUNIT) --log-junit=TEST-log-protocol.xml Protocol/ + + check: deps stubs \ + check-protocol \ diff --git a/patches/go_test_fail_on_busy_machine.patch b/patches/go_test_fail_on_busy_machine.patch new file mode 100644 index 0000000..8bf8726 --- /dev/null +++ b/patches/go_test_fail_on_busy_machine.patch @@ -0,0 +1,27 @@ +Description: wait a second after go serve socket + Multiple upstream wait time by hundred. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2018-09-23 + +--- + +--- thrift-0.11.0.orig/lib/go/test/tests/multiplexed_protocol_test.go ++++ thrift-0.11.0/lib/go/test/tests/multiplexed_protocol_test.go +@@ -66,7 +66,7 @@ func TestMultiplexedProtocolFirst(t *tes + + defer server.Stop() + go server.Serve() +- time.Sleep(10 * time.Millisecond) ++ time.Sleep(1000 * time.Millisecond) + + transport, err := createTransport(addr) + if err != nil { +@@ -105,7 +105,7 @@ func TestMultiplexedProtocolSecond(t *te + + defer server.Stop() + go server.Serve() +- time.Sleep(10 * time.Millisecond) ++ time.Sleep(1000 * time.Millisecond) + + transport, err := createTransport(addr) + if err != nil { diff --git a/patches/golang_1.10_fix.patch b/patches/golang_1.10_fix.patch new file mode 100644 index 0000000..13f3023 --- /dev/null +++ b/patches/golang_1.10_fix.patch @@ -0,0 +1,424 @@ +From a9efd1abd4fd4862d8e967ec207015af79494b6c Mon Sep 17 00:00:00 2001 +From: "D. Can Celasun" +Date: Thu, 15 Mar 2018 12:52:37 +0100 +Subject: [PATCH] THRIFT-4516: Fix "go vet" warnings for Go 1.10 + +Client: go +--- + lib/go/test/dontexportrwtest/compile_test.go | 9 ++-- + lib/go/thrift/application_exception_test.go | 4 +- + lib/go/thrift/compact_protocol.go | 2 +- + lib/go/thrift/json_protocol_test.go | 2 +- + lib/go/thrift/protocol_test.go | 34 +++++++-------- + lib/go/thrift/simple_json_protocol.go | 2 +- + lib/go/thrift/simple_json_protocol_test.go | 2 +- + test/go/src/common/clientserver_test.go | 44 ++++++++++---------- + 11 files changed, 53 insertions(+), 54 deletions(-) + +diff --git a/lib/go/test/dontexportrwtest/compile_test.go b/lib/go/test/dontexportrwtest/compile_test.go +index 2b877e3b0d..cf6763e297 100644 +--- a/lib/go/test/dontexportrwtest/compile_test.go ++++ b/lib/go/test/dontexportrwtest/compile_test.go +@@ -20,7 +20,6 @@ + package dontexportrwtest + + import ( +- "fmt" + "testing" + ) + +@@ -29,10 +28,10 @@ import ( + func TestReadWriteMethodsArePrivate(t *testing.T) { + // This will only compile if read/write methods exist + s := NewTestStruct() +- fmt.Sprintf("%v", s.read) +- fmt.Sprintf("%v", s.write) ++ _ = s.read ++ _ = s.write + + is := NewInnerStruct() +- fmt.Sprintf("%v", is.read) +- fmt.Sprintf("%v", is.write) ++ _ = is.read ++ _ = is.write + } +diff --git a/lib/go/thrift/application_exception_test.go b/lib/go/thrift/application_exception_test.go +index b2687a6c84..77433575d5 100644 +--- a/lib/go/thrift/application_exception_test.go ++++ b/lib/go/thrift/application_exception_test.go +@@ -29,13 +29,13 @@ func TestTApplicationException(t *testing.T) { + t.Fatalf("Expected empty string for exception but found '%s'", exc.Error()) + } + if exc.TypeId() != UNKNOWN_APPLICATION_EXCEPTION { +- t.Fatalf("Expected type UNKNOWN for exception but found '%s'", exc.TypeId()) ++ t.Fatalf("Expected type UNKNOWN for exception but found '%v'", exc.TypeId()) + } + exc = NewTApplicationException(WRONG_METHOD_NAME, "junk_method") + if exc.Error() != "junk_method" { + t.Fatalf("Expected 'junk_method' for exception but found '%s'", exc.Error()) + } + if exc.TypeId() != WRONG_METHOD_NAME { +- t.Fatalf("Expected type WRONG_METHOD_NAME for exception but found '%s'", exc.TypeId()) ++ t.Fatalf("Expected type WRONG_METHOD_NAME for exception but found '%v'", exc.TypeId()) + } + } +diff --git a/lib/go/thrift/compact_protocol.go b/lib/go/thrift/compact_protocol.go +index fc1d18287e..66fbf5c335 100644 +--- a/lib/go/thrift/compact_protocol.go ++++ b/lib/go/thrift/compact_protocol.go +@@ -806,7 +806,7 @@ func (p *TCompactProtocol) getTType(t tCompactType) (TType, error) { + case COMPACT_STRUCT: + return STRUCT, nil + } +- return STOP, TException(fmt.Errorf("don't know what type: %s", t&0x0f)) ++ return STOP, TException(fmt.Errorf("don't know what type: %v", t&0x0f)) + } + + // Given a TType value, find the appropriate TCompactProtocol.Types constant. +diff --git a/lib/go/thrift/json_protocol_test.go b/lib/go/thrift/json_protocol_test.go +index 0902f1b21f..59c4d64a26 100644 +--- a/lib/go/thrift/json_protocol_test.go ++++ b/lib/go/thrift/json_protocol_test.go +@@ -590,7 +590,7 @@ func TestWriteJSONProtocolMap(t *testing.T) { + } + str := trans.String() + if str[0] != '[' || str[len(str)-1] != ']' { +- t.Fatalf("Bad value for %s, wrote: %q, in go: %q", thetype, str, DOUBLE_VALUES) ++ t.Fatalf("Bad value for %s, wrote: %v, in go: %v", thetype, str, DOUBLE_VALUES) + } + expectedKeyType, expectedValueType, expectedSize, err := p.ReadMapBegin() + if err != nil { +diff --git a/lib/go/thrift/protocol_test.go b/lib/go/thrift/protocol_test.go +index 2e3b65df99..e9118da88f 100644 +--- a/lib/go/thrift/protocol_test.go ++++ b/lib/go/thrift/protocol_test.go +@@ -227,17 +227,17 @@ func ReadWriteBool(t testing.TB, p TProt + for k, v := range BOOL_VALUES { + err = p.WriteBool(v) + if err != nil { +- t.Errorf("%s: %T %T %q Error writing bool in list at index %d: %q", "ReadWriteBool", p, trans, err, k, v) ++ t.Errorf("%s: %T %T %v Error writing bool in list at index %v: %v", "ReadWriteBool", p, trans, err, k, v) + } + } + p.WriteListEnd() + if err != nil { +- t.Errorf("%s: %T %T %q Error writing list end: %q", "ReadWriteBool", p, trans, err, BOOL_VALUES) ++ t.Errorf("%s: %T %T %v Error writing list end: %v", "ReadWriteBool", p, trans, err, BOOL_VALUES) + } + p.Flush() + thetype2, thelen2, err := p.ReadListBegin() + if err != nil { +- t.Errorf("%s: %T %T %q Error reading list: %q", "ReadWriteBool", p, trans, err, BOOL_VALUES) ++ t.Errorf("%s: %T %T %v Error reading list: %v", "ReadWriteBool", p, trans, err, BOOL_VALUES) + } + _, ok := p.(*TSimpleJSONProtocol) + if !ok { +@@ -245,16 +245,16 @@ func ReadWriteBool(t testing.TB, p TProtocol, trans TTransport) { + t.Errorf("%s: %T %T type %s != type %s", "ReadWriteBool", p, trans, thetype, thetype2) + } + if thelen != thelen2 { +- t.Errorf("%s: %T %T len %s != len %s", "ReadWriteBool", p, trans, thelen, thelen2) ++ t.Errorf("%s: %T %T len %v != len %v", "ReadWriteBool", p, trans, thelen, thelen2) + } + } + for k, v := range BOOL_VALUES { + value, err := p.ReadBool() + if err != nil { +- t.Errorf("%s: %T %T %q Error reading bool at index %d: %q", "ReadWriteBool", p, trans, err, k, v) ++ t.Errorf("%s: %T %T %v Error reading bool at index %v: %v", "ReadWriteBool", p, trans, err, k, v) + } + if v != value { +- t.Errorf("%s: index %d %q %q %q != %q", "ReadWriteBool", k, p, trans, v, value) ++ t.Errorf("%s: index %v %v %v %v != %v", "ReadWriteBool", k, p, trans, v, value) + } + } + err = p.ReadListEnd() +@@ -294,7 +294,7 @@ func ReadWriteByte(t testing.TB, p TProtocol, trans TTransport) { + t.Errorf("%s: %T %T type %s != type %s", "ReadWriteByte", p, trans, thetype, thetype2) + } + if thelen != thelen2 { +- t.Errorf("%s: %T %T len %s != len %s", "ReadWriteByte", p, trans, thelen, thelen2) ++ t.Errorf("%s: %T %T len %v != len %v", "ReadWriteByte", p, trans, thelen, thelen2) + } + } + for k, v := range BYTE_VALUES { +@@ -331,7 +331,7 @@ func ReadWriteI16(t testing.TB, p TProtocol, trans TTransport) { + t.Errorf("%s: %T %T type %s != type %s", "ReadWriteI16", p, trans, thetype, thetype2) + } + if thelen != thelen2 { +- t.Errorf("%s: %T %T len %s != len %s", "ReadWriteI16", p, trans, thelen, thelen2) ++ t.Errorf("%s: %T %T len %v != len %v", "ReadWriteI16", p, trans, thelen, thelen2) + } + } + for k, v := range INT16_VALUES { +@@ -368,7 +368,7 @@ func ReadWriteI32(t testing.TB, p TProtocol, trans TTransport) { + t.Errorf("%s: %T %T type %s != type %s", "ReadWriteI32", p, trans, thetype, thetype2) + } + if thelen != thelen2 { +- t.Errorf("%s: %T %T len %s != len %s", "ReadWriteI32", p, trans, thelen, thelen2) ++ t.Errorf("%s: %T %T len %v != len %v", "ReadWriteI32", p, trans, thelen, thelen2) + } + } + for k, v := range INT32_VALUES { +@@ -404,7 +404,7 @@ func ReadWriteI64(t testing.TB, p TProtocol, trans TTransport) { + t.Errorf("%s: %T %T type %s != type %s", "ReadWriteI64", p, trans, thetype, thetype2) + } + if thelen != thelen2 { +- t.Errorf("%s: %T %T len %s != len %s", "ReadWriteI64", p, trans, thelen, thelen2) ++ t.Errorf("%s: %T %T len %v != len %v", "ReadWriteI64", p, trans, thelen, thelen2) + } + } + for k, v := range INT64_VALUES { +@@ -432,25 +432,25 @@ func ReadWriteDouble(t testing.TB, p TProtocol, trans TTransport) { + p.Flush() + thetype2, thelen2, err := p.ReadListBegin() + if err != nil { +- t.Errorf("%s: %T %T %q Error reading list: %q", "ReadWriteDouble", p, trans, err, DOUBLE_VALUES) ++ t.Errorf("%s: %T %T %v Error reading list: %v", "ReadWriteDouble", p, trans, err, DOUBLE_VALUES) + } + if thetype != thetype2 { + t.Errorf("%s: %T %T type %s != type %s", "ReadWriteDouble", p, trans, thetype, thetype2) + } + if thelen != thelen2 { +- t.Errorf("%s: %T %T len %s != len %s", "ReadWriteDouble", p, trans, thelen, thelen2) ++ t.Errorf("%s: %T %T len %v != len %v", "ReadWriteDouble", p, trans, thelen, thelen2) + } + for k, v := range DOUBLE_VALUES { + value, err := p.ReadDouble() + if err != nil { +- t.Errorf("%s: %T %T %q Error reading double at index %d: %q", "ReadWriteDouble", p, trans, err, k, v) ++ t.Errorf("%s: %T %T %q Error reading double at index %d: %v", "ReadWriteDouble", p, trans, err, k, v) + } + if math.IsNaN(v) { + if !math.IsNaN(value) { +- t.Errorf("%s: %T %T math.IsNaN(%q) != math.IsNaN(%q)", "ReadWriteDouble", p, trans, v, value) ++ t.Errorf("%s: %T %T math.IsNaN(%v) != math.IsNaN(%v)", "ReadWriteDouble", p, trans, v, value) + } + } else if v != value { +- t.Errorf("%s: %T %T %v != %q", "ReadWriteDouble", p, trans, v, value) ++ t.Errorf("%s: %T %T %v != %v", "ReadWriteDouble", p, trans, v, value) + } + } + err = p.ReadListEnd() +@@ -478,7 +478,7 @@ func ReadWriteString(t testing.TB, p TProtocol, trans TTransport) { + t.Errorf("%s: %T %T type %s != type %s", "ReadWriteString", p, trans, thetype, thetype2) + } + if thelen != thelen2 { +- t.Errorf("%s: %T %T len %s != len %s", "ReadWriteString", p, trans, thelen, thelen2) ++ t.Errorf("%s: %T %T len %v != len %v", "ReadWriteString", p, trans, thelen, thelen2) + } + } + for k, v := range STRING_VALUES { +@@ -487,7 +487,7 @@ func ReadWriteString(t testing.TB, p TProtocol, trans TTransport) { + t.Errorf("%s: %T %T %q Error reading string at index %d: %q", "ReadWriteString", p, trans, err, k, v) + } + if v != value { +- t.Errorf("%s: %T %T %d != %d", "ReadWriteString", p, trans, v, value) ++ t.Errorf("%s: %T %T %v != %v", "ReadWriteString", p, trans, v, value) + } + } + if err != nil { +diff --git a/lib/go/thrift/simple_json_protocol.go b/lib/go/thrift/simple_json_protocol.go +index 88f569cc15..2e8a71112a 100644 +--- a/lib/go/thrift/simple_json_protocol.go ++++ b/lib/go/thrift/simple_json_protocol.go +@@ -1064,7 +1064,7 @@ func (p *TSimpleJSONProtocol) ParseListEnd() error { + for _, char := range line { + switch char { + default: +- e := fmt.Errorf("Expecting end of list \"]\", but found: \"", line, "\"") ++ e := fmt.Errorf("Expecting end of list \"]\", but found: \"%v\"", line) + return NewTProtocolExceptionWithType(INVALID_DATA, e) + case ' ', '\n', '\r', '\t', rune(JSON_RBRACKET[0]): + break +diff --git a/lib/go/thrift/simple_json_protocol_test.go b/lib/go/thrift/simple_json_protocol_test.go +index 49181ab199..7b98082a4e 100644 +--- a/lib/go/thrift/simple_json_protocol_test.go ++++ b/lib/go/thrift/simple_json_protocol_test.go +@@ -658,7 +658,7 @@ func TestWriteSimpleJSONProtocolMap(t *testing.T) { + } + str := trans.String() + if str[0] != '[' || str[len(str)-1] != ']' { +- t.Fatalf("Bad value for %s, wrote: %q, in go: %q", thetype, str, DOUBLE_VALUES) ++ t.Fatalf("Bad value for %s, wrote: %v, in go: %v", thetype, str, DOUBLE_VALUES) + } + l := strings.Split(str[1:len(str)-1], ",") + if len(l) < 3 { +diff --git a/test/go/src/common/clientserver_test.go b/test/go/src/common/clientserver_test.go +index cb1abf775c..9f93c4c6cc 100644 +--- a/test/go/src/common/clientserver_test.go ++++ b/test/go/src/common/clientserver_test.go +@@ -127,12 +127,12 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + ) + var err error + if err = client.TestVoid(defaultCtx); err != nil { +- t.Errorf("Unexpected error in TestVoid() call: ", err) ++ t.Errorf("Unexpected error in TestVoid() call: %s", err) + } + + thing, err := client.TestString(defaultCtx, "thing") + if err != nil { +- t.Errorf("Unexpected error in TestString() call: ", err) ++ t.Errorf("Unexpected error in TestString() call: %s", err) + } + if thing != "thing" { + t.Errorf("Unexpected TestString() result, expected 'thing' got '%s' ", thing) +@@ -140,22 +140,22 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + bl, err := client.TestBool(defaultCtx, true) + if err != nil { +- t.Errorf("Unexpected error in TestBool() call: ", err) ++ t.Errorf("Unexpected error in TestBool() call: %s", err) + } + if !bl { +- t.Errorf("Unexpected TestBool() result expected true, got %f ", bl) ++ t.Errorf("Unexpected TestBool() result expected true, got %v ", bl) + } + bl, err = client.TestBool(defaultCtx, false) + if err != nil { +- t.Errorf("Unexpected error in TestBool() call: ", err) ++ t.Errorf("Unexpected error in TestBool() call: %s", err) + } + if bl { +- t.Errorf("Unexpected TestBool() result expected false, got %f ", bl) ++ t.Errorf("Unexpected TestBool() result expected false, got %v ", bl) + } + + b, err := client.TestByte(defaultCtx, 42) + if err != nil { +- t.Errorf("Unexpected error in TestByte() call: ", err) ++ t.Errorf("Unexpected error in TestByte() call: %s", err) + } + if b != 42 { + t.Errorf("Unexpected TestByte() result expected 42, got %d ", b) +@@ -163,7 +163,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + i32, err := client.TestI32(defaultCtx, 4242) + if err != nil { +- t.Errorf("Unexpected error in TestI32() call: ", err) ++ t.Errorf("Unexpected error in TestI32() call: %s", err) + } + if i32 != 4242 { + t.Errorf("Unexpected TestI32() result expected 4242, got %d ", i32) +@@ -171,7 +171,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + i64, err := client.TestI64(defaultCtx, 424242) + if err != nil { +- t.Errorf("Unexpected error in TestI64() call: ", err) ++ t.Errorf("Unexpected error in TestI64() call: %s", err) + } + if i64 != 424242 { + t.Errorf("Unexpected TestI64() result expected 424242, got %d ", i64) +@@ -179,7 +179,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + d, err := client.TestDouble(defaultCtx, 42.42) + if err != nil { +- t.Errorf("Unexpected error in TestDouble() call: ", err) ++ t.Errorf("Unexpected error in TestDouble() call: %s", err) + } + if d != 42.42 { + t.Errorf("Unexpected TestDouble() result expected 42.42, got %f ", d) +@@ -194,7 +194,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + xs.I64Thing = 424242 + xsret, err := client.TestStruct(defaultCtx, xs) + if err != nil { +- t.Errorf("Unexpected error in TestStruct() call: ", err) ++ t.Errorf("Unexpected error in TestStruct() call: %s", err) + } + if *xs != *xsret { + t.Errorf("Unexpected TestStruct() result expected %#v, got %#v ", xs, xsret) +@@ -204,7 +204,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + x2.StructThing = xs + x2ret, err := client.TestNest(defaultCtx, x2) + if err != nil { +- t.Errorf("Unexpected error in TestNest() call: ", err) ++ t.Errorf("Unexpected error in TestNest() call: %s", err) + } + if !reflect.DeepEqual(x2, x2ret) { + t.Errorf("Unexpected TestNest() result expected %#v, got %#v ", x2, x2ret) +@@ -213,7 +213,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + m := map[int32]int32{1: 2, 3: 4, 5: 42} + mret, err := client.TestMap(defaultCtx, m) + if err != nil { +- t.Errorf("Unexpected error in TestMap() call: ", err) ++ t.Errorf("Unexpected error in TestMap() call: %s", err) + } + if !reflect.DeepEqual(m, mret) { + t.Errorf("Unexpected TestMap() result expected %#v, got %#v ", m, mret) +@@ -222,7 +222,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + sm := map[string]string{"a": "2", "b": "blah", "some": "thing"} + smret, err := client.TestStringMap(defaultCtx, sm) + if err != nil { +- t.Errorf("Unexpected error in TestStringMap() call: ", err) ++ t.Errorf("Unexpected error in TestStringMap() call: %s", err) + } + if !reflect.DeepEqual(sm, smret) { + t.Errorf("Unexpected TestStringMap() result expected %#v, got %#v ", sm, smret) +@@ -231,7 +231,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + s := []int32{1, 2, 42} + sret, err := client.TestSet(defaultCtx, s) + if err != nil { +- t.Errorf("Unexpected error in TestSet() call: ", err) ++ t.Errorf("Unexpected error in TestSet() call: %s", err) + } + // Sets can be in any order, but Go slices are ordered, so reflect.DeepEqual won't work. + stemp := map[int32]struct{}{} +@@ -247,7 +247,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + l := []int32{1, 2, 42} + lret, err := client.TestList(defaultCtx, l) + if err != nil { +- t.Errorf("Unexpected error in TestList() call: ", err) ++ t.Errorf("Unexpected error in TestList() call: %s", err) + } + if !reflect.DeepEqual(l, lret) { + t.Errorf("Unexpected TestList() result expected %#v, got %#v ", l, lret) +@@ -255,7 +255,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + eret, err := client.TestEnum(defaultCtx, thrifttest.Numberz_TWO) + if err != nil { +- t.Errorf("Unexpected error in TestEnum() call: ", err) ++ t.Errorf("Unexpected error in TestEnum() call: %s", err) + } + if eret != thrifttest.Numberz_TWO { + t.Errorf("Unexpected TestEnum() result expected %#v, got %#v ", thrifttest.Numberz_TWO, eret) +@@ -263,7 +263,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + tret, err := client.TestTypedef(defaultCtx, thrifttest.UserId(42)) + if err != nil { +- t.Errorf("Unexpected error in TestTypedef() call: ", err) ++ t.Errorf("Unexpected error in TestTypedef() call: %s", err) + } + if tret != thrifttest.UserId(42) { + t.Errorf("Unexpected TestTypedef() result expected %#v, got %#v ", thrifttest.UserId(42), tret) +@@ -271,7 +271,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + mapmap, err := client.TestMapMap(defaultCtx, 42) + if err != nil { +- t.Errorf("Unexpected error in TestMapmap() call: ", err) ++ t.Errorf("Unexpected error in TestMapmap() call: %s", err) + } + if !reflect.DeepEqual(mapmap, rmapmap) { + t.Errorf("Unexpected TestMapmap() result expected %#v, got %#v ", rmapmap, mapmap) +@@ -279,7 +279,7 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + xxsret, err := client.TestMulti(defaultCtx, 42, 4242, 424242, map[int16]string{1: "blah", 2: "thing"}, thrifttest.Numberz_EIGHT, thrifttest.UserId(24)) + if err != nil { +- t.Errorf("Unexpected error in TestMulti() call: %v", err) ++ t.Errorf("Unexpected error in TestMulti() call: %s", err) + } + if !reflect.DeepEqual(xxs, xxsret) { + t.Errorf("Unexpected TestMulti() result expected %#v, got %#v ", xxs, xxsret) +@@ -323,11 +323,11 @@ func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, h + + err = client.TestOneway(defaultCtx, 2) + if err != nil { +- t.Errorf("Unexpected error in TestOneway() call: ", err) ++ t.Errorf("Unexpected error in TestOneway() call: %s", err) + } + + //Make sure the connection still alive + if err = client.TestVoid(defaultCtx); err != nil { +- t.Errorf("Unexpected error in TestVoid() call: ", err) ++ t.Errorf("Unexpected error in TestVoid() call: %s", err) + } + } diff --git a/patches/golang_dependency_installed.patch b/patches/golang_dependency_installed.patch new file mode 100644 index 0000000..ebb7a59 --- /dev/null +++ b/patches/golang_dependency_installed.patch @@ -0,0 +1,37 @@ +Description: golang dependencies already installed as build dependency +Forwarded: no +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-12-01 + +--- + +--- thrift-0.13.0.orig/lib/go/test/Makefile.am ++++ thrift-0.13.0/lib/go/test/Makefile.am +@@ -71,9 +71,9 @@ gopath: $(THRIFT) $(THRIFTTEST) \ + $(THRIFT) $(THRIFTARGS) ConflictNamespaceTestD.thrift + $(THRIFT) $(THRIFTARGS) ConflictNamespaceTestSuperThing.thrift + $(THRIFT) $(THRIFTARGS) ConflictNamespaceServiceTest.thrift +- GOPATH=`pwd`/gopath $(GO) get github.com/golang/mock/gomock || true +- sed -i 's/\"context\"/\"golang.org\/x\/net\/context\"/g' gopath/src/github.com/golang/mock/gomock/controller.go || true +- GOPATH=`pwd`/gopath $(GO) get github.com/golang/mock/gomock ++ echo GOPATH=`pwd`/gopath $(GO) get github.com/golang/mock/gomock || true ++ echo sed -i 's/\"context\"/\"golang.org\/x\/net\/context\"/g' gopath/src/github.com/golang/mock/gomock/controller.go || true ++ echo GOPATH=`pwd`/gopath $(GO) get github.com/golang/mock/gomock + ln -nfs ../../../thrift gopath/src/thrift + ln -nfs ../../tests gopath/src/tests + cp -r ./dontexportrwtest gopath/src +--- thrift-0.13.0.orig/test/go/Makefile.am ++++ thrift-0.13.0/test/go/Makefile.am +@@ -34,9 +34,9 @@ gopath: $(THRIFT) ThriftTest.thrift + mkdir -p src/gen + $(THRIFTCMD) ThriftTest.thrift + $(THRIFTCMD) ../StressTest.thrift +- GOPATH=`pwd` $(GO) get github.com/golang/mock/gomock || true +- sed -i 's/\"context\"/\"golang.org\/x\/net\/context\"/g' src/github.com/golang/mock/gomock/controller.go || true +- GOPATH=`pwd` $(GO) get github.com/golang/mock/gomock ++ echo GOPATH=`pwd` $(GO) get github.com/golang/mock/gomock || true ++ echo sed -i 's/\"context\"/\"golang.org\/x\/net\/context\"/g' src/github.com/golang/mock/gomock/controller.go || true ++ echo GOPATH=`pwd` $(GO) get github.com/golang/mock/gomock + ln -nfs ../../../lib/go/thrift src/thrift + touch gopath + diff --git a/patches/link_tests_atomic.patch b/patches/link_tests_atomic.patch new file mode 100644 index 0000000..81497fc --- /dev/null +++ b/patches/link_tests_atomic.patch @@ -0,0 +1,262 @@ +Description: fix tests FTBFS with atomic link + On armel and at least mipsel needs atomic to link with. +Author: Laszlo Boszormenyi (GCS) +Forwarded: no +Last-Update: 2019-12-08 + +--- + +--- thrift-0.13.0.orig/lib/c_glib/test/Makefile.am ++++ thrift-0.13.0/lib/c_glib/test/Makefile.am +@@ -186,7 +186,7 @@ testthrifttest_CFLAGS = -I$(top_srcdir)/ + + testthrifttestclient_SOURCES = testthrifttestclient.cpp + testthrifttestclient_CPPFLAGS = -I../../cpp/src $(BOOST_CPPFLAGS) -I./gen-cpp -I../src -I./gen-c_glib $(GLIB_CFLAGS) +-testthrifttestclient_LDADD = ../../cpp/.libs/libthrift.la ../libthrift_c_glib.la libtestgenc.la libtestgencpp.la ++testthrifttestclient_LDADD = ../../cpp/.libs/libthrift.la ../libthrift_c_glib.la libtestgenc.la libtestgencpp.la -latomic + testthrifttestclient_LDFLAGS = -L../.libs -L../../cpp/.libs $(GLIB_LIBS) $(GOBJECT_LIBS) + + check_LTLIBRARIES = libtestgenc.la +--- thrift-0.13.0.orig/lib/cpp/test/Makefile.am ++++ thrift-0.13.0/lib/cpp/test/Makefile.am +@@ -83,7 +83,8 @@ noinst_PROGRAMS = Benchmark \ + Benchmark_SOURCES = \ + Benchmark.cpp + +-Benchmark_LDADD = libtestgencpp.la ++Benchmark_LDADD = libtestgencpp.la \ ++ -latomic + + check_PROGRAMS = \ + UnitTests \ +@@ -139,7 +140,8 @@ UnitTests_LDADD = \ + libtestgencpp.la \ + $(BOOST_TEST_LDADD) \ + $(BOOST_SYSTEM_LDADD) \ +- $(BOOST_THREAD_LDADD) ++ $(BOOST_THREAD_LDADD) \ ++ -latomic + + TInterruptTest_SOURCES = \ + TSocketInterruptTest.cpp \ +@@ -151,7 +153,8 @@ TInterruptTest_LDADD = \ + $(BOOST_FILESYSTEM_LDADD) \ + $(BOOST_CHRONO_LDADD) \ + $(BOOST_SYSTEM_LDADD) \ +- $(BOOST_THREAD_LDADD) ++ $(BOOST_THREAD_LDADD) \ ++ -latomic + + TServerIntegrationTest_SOURCES = \ + TServerIntegrationTest.cpp +@@ -161,7 +164,8 @@ TServerIntegrationTest_LDADD = \ + libprocessortest.la \ + $(BOOST_TEST_LDADD) \ + $(BOOST_SYSTEM_LDADD) \ +- $(BOOST_THREAD_LDADD) ++ $(BOOST_THREAD_LDADD) \ ++ -latomic + + SecurityTest_SOURCES = \ + SecurityTest.cpp +@@ -181,7 +185,8 @@ TransportTest_LDADD = \ + libtestgencpp.la \ + $(top_builddir)/lib/cpp/libthriftz.la \ + $(BOOST_TEST_LDADD) \ +- -lz ++ -lz \ ++ -latomic + + ZlibTest_SOURCES = \ + ZlibTest.cpp +@@ -190,7 +195,8 @@ ZlibTest_LDADD = \ + libtestgencpp.la \ + $(top_builddir)/lib/cpp/libthriftz.la \ + $(BOOST_TEST_LDADD) \ +- -lz ++ -lz \ ++ -latomic + + EnumTest_SOURCES = \ + EnumTest.cpp +@@ -215,7 +221,8 @@ TFileTransportTest_SOURCES = \ + + TFileTransportTest_LDADD = \ + libtestgencpp.la \ +- $(BOOST_TEST_LDADD) ++ $(BOOST_TEST_LDADD) \ ++ -latomic + + # + # TFDTransportTest +@@ -225,7 +232,8 @@ TFDTransportTest_SOURCES = \ + + TFDTransportTest_LDADD = \ + $(top_builddir)/lib/cpp/libthrift.la \ +- $(BOOST_TEST_LDADD) ++ $(BOOST_TEST_LDADD) \ ++ -latomic + + + # +@@ -240,7 +248,8 @@ TPipedTransportTest_LDADD = \ + $(top_builddir)/lib/cpp/libthrift.la \ + $(BOOST_TEST_LDADD) \ + $(BOOST_SYSTEM_LDADD) \ +- $(BOOST_THREAD_LDADD) ++ $(BOOST_THREAD_LDADD) \ ++ -latomic + + # + # AllProtocolsTest +@@ -252,7 +261,8 @@ AllProtocolsTest_SOURCES = \ + + AllProtocolsTest_LDADD = \ + libtestgencpp.la \ +- $(BOOST_TEST_LDADD) ++ $(BOOST_TEST_LDADD) \ ++ -latomic + + # + # DebugProtoTest +@@ -262,7 +272,8 @@ DebugProtoTest_SOURCES = \ + + DebugProtoTest_LDADD = \ + libtestgencpp.la \ +- $(BOOST_TEST_LDADD) ++ $(BOOST_TEST_LDADD) \ ++ -latomic + + + # +@@ -273,7 +284,8 @@ JSONProtoTest_SOURCES = \ + + JSONProtoTest_LDADD = \ + libtestgencpp.la \ +- $(BOOST_TEST_LDADD) ++ $(BOOST_TEST_LDADD) \ ++ -latomic + + # + # TNonblockingServerTest +@@ -285,7 +297,8 @@ TNonblockingServerTest_LDADD = libproces + $(top_builddir)/lib/cpp/libthriftnb.la \ + $(BOOST_TEST_LDADD) \ + $(BOOST_LDFLAGS) \ +- $(LIBEVENT_LIBS) ++ $(LIBEVENT_LIBS) \ ++ -latomic + # + # TNonblockingSSLServerTest + # +@@ -300,7 +313,8 @@ TNonblockingSSLServerTest_LDADD = libpro + $(BOOST_CHRONO_LDADD) \ + $(BOOST_SYSTEM_LDADD) \ + $(BOOST_THREAD_LDADD) \ +- $(LIBEVENT_LIBS) ++ $(LIBEVENT_LIBS) \ ++ -latomic + + # + # OptionalRequiredTest +@@ -310,7 +324,8 @@ OptionalRequiredTest_SOURCES = \ + + OptionalRequiredTest_LDADD = \ + libtestgencpp.la \ +- $(BOOST_TEST_LDADD) ++ $(BOOST_TEST_LDADD) \ ++ -latomic + + # + # OptionalRequiredTest +@@ -320,7 +335,8 @@ RecursiveTest_SOURCES = \ + + RecursiveTest_LDADD = \ + libtestgencpp.la \ +- $(BOOST_TEST_LDADD) ++ $(BOOST_TEST_LDADD) \ ++ -latomic + + # + # SpecializationTest +@@ -330,7 +346,8 @@ SpecializationTest_SOURCES = \ + + SpecializationTest_LDADD = \ + libtestgencpp.la \ +- $(BOOST_TEST_LDADD) ++ $(BOOST_TEST_LDADD) \ ++ -latomic + + concurrency_test_SOURCES = \ + concurrency/Tests.cpp \ +@@ -339,7 +356,8 @@ concurrency_test_SOURCES = \ + concurrency/TimerManagerTests.h + + concurrency_test_LDADD = \ +- $(top_builddir)/lib/cpp/libthrift.la ++ $(top_builddir)/lib/cpp/libthrift.la \ ++ -latomic + + link_test_SOURCES = \ + link/LinkTest.cpp \ +@@ -359,7 +377,8 @@ processor_test_LDADD = libprocessortest. + $(top_builddir)/lib/cpp/libthriftnb.la \ + $(BOOST_TEST_LDADD) \ + $(BOOST_LDFLAGS) \ +- $(LIBEVENT_LIBS) ++ $(LIBEVENT_LIBS) \ ++ -latomic + + OpenSSLManualInitTest_SOURCES = \ + OpenSSLManualInitTest.cpp +@@ -368,7 +387,8 @@ OpenSSLManualInitTest_LDADD = \ + $(top_builddir)/lib/cpp/libthrift.la \ + $(BOOST_TEST_LDADD) \ + $(OPENSSL_LDFLAGS) \ +- $(OPENSSL_LIBS) ++ $(OPENSSL_LIBS) \ ++ -latomic + + # + # Common thrift code generation rules +--- thrift-0.13.0.orig/test/cpp/Makefile.am ++++ thrift-0.13.0/test/cpp/Makefile.am +@@ -73,7 +73,8 @@ TestServer_LDADD = \ + $(top_builddir)/lib/cpp/libthrift.la \ + $(top_builddir)/lib/cpp/libthriftz.la \ + $(top_builddir)/lib/cpp/libthriftnb.la \ +- -levent -lboost_program_options -lboost_system -lboost_filesystem $(ZLIB_LIBS) ++ -levent -lboost_program_options -lboost_system -lboost_filesystem $(ZLIB_LIBS) \ ++ -latomic + + TestClient_SOURCES = \ + src/TestClient.cpp +@@ -83,14 +84,16 @@ TestClient_LDADD = \ + $(top_builddir)/lib/cpp/libthrift.la \ + $(top_builddir)/lib/cpp/libthriftz.la \ + $(top_builddir)/lib/cpp/libthriftnb.la \ +- -levent -lboost_program_options -lboost_system -lboost_filesystem $(ZLIB_LIBS) ++ -levent -lboost_program_options -lboost_system -lboost_filesystem $(ZLIB_LIBS) \ ++ -latomic + + StressTest_SOURCES = \ + src/StressTest.cpp + + StressTest_LDADD = \ + libstresstestgencpp.la \ +- $(top_builddir)/lib/cpp/libthrift.la ++ $(top_builddir)/lib/cpp/libthrift.la \ ++ -latomic + + StressTestNonBlocking_SOURCES = \ + src/StressTestNonBlocking.cpp +@@ -98,7 +101,8 @@ StressTestNonBlocking_SOURCES = \ + StressTestNonBlocking_LDADD = \ + libstresstestgencpp.la \ + $(top_builddir)/lib/cpp/libthriftnb.la \ +- -levent ++ -levent \ ++ -latomic + # + # Common thrift code generation rules + # diff --git a/patches/link_with_zlib.patch b/patches/link_with_zlib.patch new file mode 100644 index 0000000..f421c3a --- /dev/null +++ b/patches/link_with_zlib.patch @@ -0,0 +1,42 @@ +Description: add zlib library to link with + Need to specify which library contain the zlib functions during linking. +Author: Laszlo Boszormenyi (GCS) + +--- + +--- thrift-0.9.2.orig/test/cpp/Makefile ++++ thrift-0.9.2/test/cpp/Makefile +@@ -632,13 +632,13 @@ src/TestClient.$(OBJEXT): src/$(am__dirs + + TestClient$(EXEEXT): $(TestClient_OBJECTS) $(TestClient_DEPENDENCIES) $(EXTRA_TestClient_DEPENDENCIES) + @rm -f TestClient$(EXEEXT) +- $(AM_V_CXXLD)$(CXXLINK) $(TestClient_OBJECTS) $(TestClient_LDADD) $(LIBS) ++ $(AM_V_CXXLD)$(CXXLINK) $(TestClient_OBJECTS) $(TestClient_LDADD) $(LIBS) $(ZLIB_LIBS) + src/TestServer.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) + + TestServer$(EXEEXT): $(TestServer_OBJECTS) $(TestServer_DEPENDENCIES) $(EXTRA_TestServer_DEPENDENCIES) + @rm -f TestServer$(EXEEXT) +- $(AM_V_CXXLD)$(CXXLINK) $(TestServer_OBJECTS) $(TestServer_LDADD) $(LIBS) ++ $(AM_V_CXXLD)$(CXXLINK) $(TestServer_OBJECTS) $(TestServer_LDADD) $(LIBS) $(ZLIB_LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) +--- thrift-0.9.2.orig/test/cpp/Makefile.in ++++ thrift-0.9.2/test/cpp/Makefile.in +@@ -632,13 +632,13 @@ src/TestClient.$(OBJEXT): src/$(am__dirs + + TestClient$(EXEEXT): $(TestClient_OBJECTS) $(TestClient_DEPENDENCIES) $(EXTRA_TestClient_DEPENDENCIES) + @rm -f TestClient$(EXEEXT) +- $(AM_V_CXXLD)$(CXXLINK) $(TestClient_OBJECTS) $(TestClient_LDADD) $(LIBS) ++ $(AM_V_CXXLD)$(CXXLINK) $(TestClient_OBJECTS) $(TestClient_LDADD) $(LIBS) $(ZLIB_LIBS) + src/TestServer.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) + + TestServer$(EXEEXT): $(TestServer_OBJECTS) $(TestServer_DEPENDENCIES) $(EXTRA_TestServer_DEPENDENCIES) + @rm -f TestServer$(EXEEXT) +- $(AM_V_CXXLD)$(CXXLINK) $(TestServer_OBJECTS) $(TestServer_LDADD) $(LIBS) ++ $(AM_V_CXXLD)$(CXXLINK) $(TestServer_OBJECTS) $(TestServer_LDADD) $(LIBS) $(ZLIB_LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) diff --git a/patches/missing_go_test.patch b/patches/missing_go_test.patch new file mode 100644 index 0000000..775dc37 --- /dev/null +++ b/patches/missing_go_test.patch @@ -0,0 +1,53 @@ +Description: don't try missing NewMockThriftTest test + Upstream doesn't ship NewMockThriftTest hence don't try to use it. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-11-30 + +--- + +--- thrift-0.13.0.orig/test/go/src/common/clientserver_test.go ++++ thrift-0.13.0/test/go/src/common/clientserver_test.go +@@ -21,14 +21,10 @@ package common + + import ( + "context" +- "errors" + "gen/thrifttest" +- "reflect" + "sync" + "testing" +- "thrift" + +- "github.com/golang/mock/gomock" + ) + + type test_unit struct { +@@ -61,6 +57,7 @@ func TestAllConnection(t *testing.T) { + } + + func doUnit(t *testing.T, unit *test_unit) { ++/* + ctrl := gomock.NewController(t) + defer ctrl.Finish() + handler := NewMockThriftTest(ctrl) +@@ -81,6 +78,7 @@ func doUnit(t *testing.T, unit *test_uni + } + defer trans.Close() + callEverythingWithMock(t, client, handler) ++*/ + } + + var rmapmap = map[int32]map[int32]int32{ +@@ -98,6 +96,7 @@ var xxs = &thrifttest.Xtruct{ + var xcept = &thrifttest.Xception{ErrorCode: 1001, Message: "some"} + var defaultCtx = context.Background() + ++/* + func callEverythingWithMock(t *testing.T, client *thrifttest.ThriftTestClient, handler *MockThriftTest) { + gomock.InOrder( + handler.EXPECT().TestVoid(gomock.Any()), +@@ -333,3 +332,4 @@ func callEverythingWithMock(t *testing.T + t.Errorf("Unexpected error in TestVoid() call: %s", err) + } + } ++*/ diff --git a/patches/no_bundler_use.patch b/patches/no_bundler_use.patch new file mode 100644 index 0000000..ec4ebb3 --- /dev/null +++ b/patches/no_bundler_use.patch @@ -0,0 +1,56 @@ +Description: do not use bundler as per Ruby policy + . +Author: Laszlo Boszormenyi (GCS) +Bug-Debian: https://bugs.debian.org/804668 +Last-Update: 2019-10-23 + +--- + +--- a/lib/rb/Makefile.am ++++ b/lib/rb/Makefile.am +@@ -22,20 +22,24 @@ DESTDIR ?= / + if HAVE_BUNDLER + + all-local: +- $(BUNDLER) install +- $(BUNDLER) exec rake build_ext ++ echo Do not use bundler for all-local ++# $(BUNDLER) install ++# $(BUNDLER) exec rake build_ext + + install-exec-hook: +- $(BUNDLER) exec rake install ++ echo Do not use bundler for install-exec-hook ++# $(BUNDLER) exec rake install + + clean-local: +- $(BUNDLER) install +- $(BUNDLER) exec rake clean ++ echo Do not use bundler for clean-local ++# $(BUNDLER) install ++# $(BUNDLER) exec rake clean + $(RM) -r spec/gen-rb/ + + check-local: all +- $(BUNDLER) install +- $(BUNDLER) exec rake ++ echo Do not use bundler for check-local ++# $(BUNDLER) install ++# $(BUNDLER) exec rake + + endif + +--- a/test/rb/Makefile.am ++++ b/test/rb/Makefile.am +@@ -26,8 +26,9 @@ precross: stubs + + check: stubs + if HAVE_BUNDLER +- $(BUNDLER) install +- $(BUNDLER) exec $(RUBY) -I. test_suite.rb ++ echo Do not use bundler for check ++# $(BUNDLER) install ++# $(BUNDLER) exec $(RUBY) -I. test_suite.rb + endif + + clean-local: diff --git a/patches/no_composer_install.patch b/patches/no_composer_install.patch new file mode 100644 index 0000000..5d88e35 --- /dev/null +++ b/patches/no_composer_install.patch @@ -0,0 +1,36 @@ +Description: + TODO: Put a short summary on the line above and replace this paragraph + with a longer explanation of this change. Complete the meta-information + with other relevant fields (see below for details). To make it easier, the + information below has been extracted from the changelog. Adjust it or drop + it. + . + thrift (0.12.0-1) experimental; urgency=medium + . + * New major upstream release. +Author: Laszlo Boszormenyi (GCS) + +--- +The information above should follow the Patch Tagging Guidelines, please +checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here +are templates for supplementary fields that you might want to add: + +Origin: , +Bug: +Bug-Debian: https://bugs.debian.org/ +Bug-Ubuntu: https://launchpad.net/bugs/ +Forwarded: +Reviewed-By: +Last-Update: 2019-09-18 + +--- thrift-0.12.0.orig/lib/php/test/Makefile.am ++++ thrift-0.12.0/lib/php/test/Makefile.am +@@ -30,7 +30,7 @@ stubs: ../../../test/ThriftTest.thrift + $(THRIFT) --gen php:json -r --out ./packages/phpjs TestValidators.thrift + + deps: $(top_srcdir)/composer.json +- composer install --working-dir=$(top_srcdir) ++ echo Disabled composer install --working-dir=$(top_srcdir) + + all-local: deps + diff --git a/patches/no_go_race.patch b/patches/no_go_race.patch new file mode 100644 index 0000000..2fea8d4 --- /dev/null +++ b/patches/no_go_race.patch @@ -0,0 +1,18 @@ +Description: run simple Go test only + Race testing is available on amd64, ppc64le and arm64 only. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-10-05 + +--- + +--- thrift-0.12.0.orig/lib/go/Makefile.am ++++ thrift-0.12.0/lib/go/Makefile.am +@@ -31,7 +31,7 @@ install: + @echo '##############################################################' + + check-local: +- GOPATH=`pwd` $(GO) test -race ./thrift ++ GOPATH=`pwd` $(GO) test ./thrift + + clean-local: + $(RM) -rf pkg diff --git a/patches/no_gradlew.patch b/patches/no_gradlew.patch new file mode 100644 index 0000000..f986d56 --- /dev/null +++ b/patches/no_gradlew.patch @@ -0,0 +1,18 @@ +Description: don't use gradlew in any way + Not enabled for compilation, but clean would like to use it anyway. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-10-23 + +--- + +--- a/lib/as3/Makefile.am ++++ b/lib/as3/Makefile.am +@@ -28,7 +28,7 @@ install-exec-hook: + --console=plain + + clean-local: +- ./gradlew $(GRADLE_OPTS) clean \ ++ echo ./gradlew $(GRADLE_OPTS) clean \ + -Prelease=true \ + --console=plain + $(RM) -r .gradle diff --git a/patches/no_pom.patch b/patches/no_pom.patch new file mode 100644 index 0000000..5b98780 --- /dev/null +++ b/patches/no_pom.patch @@ -0,0 +1,18 @@ +Description: no need for ANT Maven task + Just disable its download. +Author: Laszlo Boszormenyi (GCS) + +--- + +--- thrift-0.9.2.orig/lib/java/build.xml ++++ thrift-0.9.2/lib/java/build.xml +@@ -295,7 +295,9 @@ + + + ++ + + + diff --git a/patches/no_shmem.patch b/patches/no_shmem.patch new file mode 100644 index 0000000..d28554d --- /dev/null +++ b/patches/no_shmem.patch @@ -0,0 +1,19 @@ +Description: don't test servers that need shmem + As buildd's don't have shmem enabled / mounted, tests would fail. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2017-09-11 + +--- + +--- thrift-0.9.2.orig/test/py/RunClientServer.py ++++ thrift-0.9.2/test/py/RunClientServer.py +@@ -69,7 +69,8 @@ def default_servers(): + 'THttpServer', + ] + if platform.system() != 'Windows': +- servers.append('TProcessPoolServer') ++# buildd servers don't have shmem enabled ++# servers.append('TProcessPoolServer') + servers.append('TForkingServer') + return servers + diff --git a/patches/node_is_nodejs.patch b/patches/node_is_nodejs.patch new file mode 100644 index 0000000..3112c47 --- /dev/null +++ b/patches/node_is_nodejs.patch @@ -0,0 +1,40 @@ +Description: node is called nodejs in Debian + Use the proper binary name. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2019-10-23 + +--- + +--- a/lib/nodejs/test/testAll.sh ++++ b/lib/nodejs/test/testAll.sh +@@ -45,7 +45,7 @@ testServer() + ${ISTANBUL} cover ${DIR}/server.js --dir ${REPORT_PREFIX}${COUNT} --handle-sigint -- --type $2 -p $3 -t $4 $5 & + COUNT=$((COUNT+1)) + else +- node ${DIR}/server.js --${1} --type $2 -p $3 -t $4 $5 & ++ nodejs ${DIR}/server.js --${1} --type $2 -p $3 -t $4 $5 & + fi + SERVERPID=$! + sleep 0.1 +@@ -53,7 +53,7 @@ testServer() + ${ISTANBUL} cover ${DIR}/client.js --dir ${REPORT_PREFIX}${COUNT} -- --${1} --type $2 -p $3 -t $4 $5 || RET=1 + COUNT=$((COUNT+1)) + else +- node ${DIR}/client.js --${1} --type $2 -p $3 -t $4 $5 || RET=1 ++ nodejs ${DIR}/client.js --${1} --type $2 -p $3 -t $4 $5 || RET=1 + fi + kill -2 $SERVERPID || RET=1 + wait $SERVERPID +@@ -117,9 +117,9 @@ fi + + # unit tests + +-node ${DIR}/binary.test.js || TESTOK=1 +-node ${DIR}/int64.test.js || TESTOK=1 +-node ${DIR}/deep-constructor.test.js || TESTOK=1 ++nodejs ${DIR}/binary.test.js || TESTOK=1 ++nodejs ${DIR}/int64.test.js || TESTOK=1 ++nodejs ${DIR}/deep-constructor.test.js || TESTOK=1 + + # integration tests + diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..c158230 --- /dev/null +++ b/patches/series @@ -0,0 +1,21 @@ +##link_with_zlib.patch +#no_pom.patch +node_is_nodejs.patch +no_bundler_use.patch +golang_dependency_installed.patch +broken_boost_1.62.patch +disable_TLSv1_0_and_TLSv1_1.patch +no_shmem.patch +#golang_1.10_fix.patch +disable_failing_tests.patch +#go_test_fail_on_busy_machine.patch +no_composer_install.patch +disable_php_testing.patch +no_go_race.patch +no_gradlew.patch +add_missing_test_files.patch +missing_go_test.patch +link_tests_atomic.patch +Fix_wrong_int_to_string_conversions.patch +THRIFT-5322.patch +THRIFT-5318_support_php8.patch diff --git a/php-thrift.install b/php-thrift.install new file mode 100644 index 0000000..6c18341 --- /dev/null +++ b/php-thrift.install @@ -0,0 +1,2 @@ +etc/php.d/thrift_protocol.ini /etc/php/7.3/mods-available/ +usr/lib/php/ diff --git a/python3-thrift.install b/python3-thrift.install new file mode 100644 index 0000000..27f8b89 --- /dev/null +++ b/python3-thrift.install @@ -0,0 +1,2 @@ +usr/lib/python3/*-packages/*.egg-info +usr/lib/python3/*-packages/thrift/ diff --git a/rules b/rules new file mode 100755 index 0000000..675eb1c --- /dev/null +++ b/rules @@ -0,0 +1,134 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# for Java install +#export CLASSPATH=/usr/share/java/commons-codec.jar:/usr/share/java/commons-logging.jar:/usr/share/java/slf4j-simple.jar:/usr/share/java/slf4j-api.jar:/usr/share/java/servlet-api-3.1.jar:/usr/share/java/httpcore.jar:/usr/share/java/httpclient.jar:/usr/share/java/junit4.jar:/usr/share/java/ant-junit.jar:. + +export DEB_LDFLAGS_MAINT_STRIP = -Wl,-Bsymbolic-functions + +ifneq (,$(filter $(DEB_HOST_ARCH), armel mipsel)) + export DEB_LDFLAGS_MAINT_APPEND += -Wl,--no-as-needed -latomic -Wl,--as-needed +endif + +# Go 1.16 expects a go.mod file by default and thrift Go extension does not +# contain that, let's turn it off for now. +export GO111MODULE=off + +# for Go install +export DH_GOPKG=thrift +export XDG_CACHE_HOME=$(CURDIR)/go-cache/ + +# for Ruby install +export DESTDIR=$(CURDIR)/debian/tmp/ + +#export JAVA_PREFIX=/usr/share/java/ +export PERL_PREFIX=/usr/ +export INSTALLDIRS=vendor + +export QT_SELECT=qt5 + +# Set install Perl locations +ARCHLIB := $(shell perl -MConfig -e 'print $$Config{vendorarch}') + +RUBY_LIBDIR := $(shell ruby -rrbconfig -e'print RbConfig::CONFIG["vendordir"]') + +PYTHON3_VERSIONS = $(shell py3versions -r) + +override_dh_autoreconf: + $(CURDIR)/bootstrap.sh + +override_dh_auto_clean: + $(RM) -r $(CURDIR)/go-cache/ + $(RM) $(CURDIR)/test/go/genmock.sh + $(RM) -r $(CURDIR)/lib/py/build/ \ + $(CURDIR)/lib/py/thrift.egg-info/ + $(RM) $(CURDIR)/test/go/src/github.com \ + $(CURDIR)/test/go/src/golang.org/x/tools \ + $(CURDIR)/test/go/src/golang.org/x/net \ + $(CURDIR)/lib/go/test/gopath/src/golang.org/x/net \ + $(CURDIR)/lib/go/test/gopath/src/github.com/golang/mock + [ ! -f Makefile ] || $(MAKE) clean + cd $(CURDIR)/lib/php/src/ext/thrift_protocol/ && phpize --clean + find $(CURDIR) \( -name Makefile -o -name Makefile.in \) -exec rm {} \; + find $(CURDIR) -name .dirstamp -exec rm {} \; + $(RM) aclocal.m4 config.h config.log config.status configure \ + configure.scan libtool stamp-h1 \ + lib/cpp/*.pc lib/c_glib/thrift_c_glib.pc + $(RM) compiler/cpp/src/thrift/version.h \ + lib/c_glib/src/thrift/config.h \ + lib/c_glib/src/thrift/stamp-h3 \ + lib/cpp/src/thrift/config.h \ + lib/cpp/src/thrift/stamp-h2 \ + lib/cpp/test/tests.xml + $(RM) autoscan.log config.hin +# jh_clean + # let dh clean + dh_auto_clean + +override_dh_auto_configure: + dh_auto_configure -- \ + --with-cpp --with-c_glib --with-php --with-php_extension \ + --with-perl --without-python --with-py3 --without-java \ + --without-nodejs --without-erlang --without-lua \ + --with-go --with-ruby \ + --with-qt4=no --with-qt5=yes \ + --without-rust \ + --disable-tutorial + +override_dh_auto_build: +# mkdir -p $(CURDIR)/lib/java/build/lib/ + # symlinks for Go build + mkdir -p $(CURDIR)/lib/go/test/gopath/src/ + ln -s /usr/share/gocode/src/github.com \ + $(CURDIR)/test/go/src/ + mkdir -p $(CURDIR)/lib/go/test/gopath/src/golang.org/x/ + ln -s /usr/share/gocode/src/golang.org/x/net \ + $(CURDIR)/lib/go/test/gopath/src/golang.org/x/ + + dh_auto_build --no-parallel + set -ex; cd lib/py && for python in $(PYTHON3_VERSIONS); do \ + $$python setup.py build; \ + done +# jh_build thrift.jar $(CURDIR)/lib/java/src/ + +override_dh_auto_install: + dh_auto_install -- INSTALLDIRS=vendor + set -ex; cd lib/py && for python in $(PYTHON3_VERSIONS); do \ + $$python setup.py install --install-layout=deb --root=$(CURDIR)/debian/tmp; \ + done +# jh_installlibs -plibthrift-java thrift.jar +# jh_installjavadoc +# jh_depends + + find $(CURDIR)/debian/tmp/ -name \*.la -exec rm {} \; + +override_dh_missing: + dh_missing --list-missing + +override_dh_auto_test: + cd $(CURDIR)/lib/c_glib/test/ && \ + $(MAKE) gen-c_glib/t_test_enum_test_types.h + mkdir -p $(CURDIR)/vendor/bin/ + ln -s /usr/bin/phpunit $(CURDIR)/vendor/bin/ + ln -s $(CURDIR)/lib/php/src/autoload.php $(CURDIR)/vendor/ + touch $(CURDIR)/test/go/genmock.sh + mkdir -p $(CURDIR)/lib/go/test/gopath/src/github.com/golang/ + mkdir -p $(CURDIR)/test/go/src/golang.org/x/ + # symlinks for Go testing + ln -s /usr/share/gocode/src/github.com/golang/mock \ + $(CURDIR)/lib/go/test/gopath/src/github.com/golang/ + ln -s /usr/share/gocode/src/golang.org/x/tools \ + $(CURDIR)/test/go/src/golang.org/x/ + ln -s /usr/share/gocode/src/golang.org/x/net/ \ + $(CURDIR)/test/go/src/golang.org/x/ + dh_auto_test --no-parallel + +%: + dh $@ --with python3,ruby,phpcomposer + +.PHONY: override_dh_autoreconf override_dh_auto_clean \ + override_dh_auto_configure override_dh_auto_install \ + override_dh_missing override_dh_auto_test diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 0000000..94c793c --- /dev/null +++ b/source/lintian-overrides @@ -0,0 +1,8 @@ +# Long lines only +source-is-missing lib/js/test/phantom-client.js line 302 is 1532 characters long (>512) +source-is-missing lib/js/test/test-async.js line 300 is 1534 characters long (>512) +source-is-missing lib/js/test/test-es6.js line 305 is 1534 characters long (>512) +source-is-missing lib/js/test/test.js line 290 is 1534 characters long (>512) + +# Only one file, not the whole source +thrift source: license-problem-php-license debian/copyright diff --git a/thrift-compiler.docs b/thrift-compiler.docs new file mode 100644 index 0000000..6d5ee1d --- /dev/null +++ b/thrift-compiler.docs @@ -0,0 +1 @@ +NOTICE diff --git a/thrift-compiler.examples b/thrift-compiler.examples new file mode 100644 index 0000000..52685b7 --- /dev/null +++ b/thrift-compiler.examples @@ -0,0 +1,2 @@ +tutorial/tutorial.thrift +tutorial/shared.thrift diff --git a/thrift-compiler.install b/thrift-compiler.install new file mode 100644 index 0000000..c703cf8 --- /dev/null +++ b/thrift-compiler.install @@ -0,0 +1 @@ +usr/bin/ diff --git a/thrift-compiler.manpages b/thrift-compiler.manpages new file mode 100644 index 0000000..b3b5f6a --- /dev/null +++ b/thrift-compiler.manpages @@ -0,0 +1 @@ +debian/thrift.1 diff --git a/thrift-doc.docs b/thrift-doc.docs new file mode 100644 index 0000000..299950c --- /dev/null +++ b/thrift-doc.docs @@ -0,0 +1,2 @@ +#DOCS# + diff --git a/thrift-doc.install b/thrift-doc.install new file mode 100644 index 0000000..6d5ee1d --- /dev/null +++ b/thrift-doc.install @@ -0,0 +1 @@ +NOTICE diff --git a/thrift.1 b/thrift.1 new file mode 100644 index 0000000..24da581 --- /dev/null +++ b/thrift.1 @@ -0,0 +1,78 @@ +.TH "THRIFT" "1" "July 9, 2012" "thrift-compiler" "thrift" +.SH NAME +thrift \ - code generator/compiler for Thrift IDL +.SH SYNOPSIS +.B thrift +[options] \fIsource_file\fR +.SH DESCRIPTION +Thrift is a framework for efficient serialization and RPC services. The +.B thrift +compiler accepts a source file containing definitions of Thrift structs and services, +and generates the language-specific code to implement them. +.SH OPTIONS +.TP +\fB\-version\fR +.RS 4 +print the compiler version and exit +.RE +.TP +\fB\-o DIRECTORY\fR +.RS 4 +Set the output directory for gen-* packages (default: current directory) +.RE +.TP +\fB\-out DIRECTORY\fR +.RS 4 +Set the ouput location for generated files. (no gen-* folder will be created) +.RE +.TP +\fB\-I DIRECTORY\fR +.RS 4 +Add a directory to the list of directories searched for include directives +.RE +.TP +\fB\-nowarn\fR +.RS 4 +Suppress all compiler warnings (BAD!) +.RE +.TP +\fB\-strict\fR +.RS 4 +Strict compiler warnings on +.RE +.TP +\fB\-v[erbose]\fR +.RS 4 +Verbose mode +.RE +.TP +\fB\-r[ecurse]\fR +.RS 4 +Also generate included files +.RE +.TP +\fB\-debug\fR +.RS 4 +Parse debug trace to stdout +.RE +.TP +\fB\-\-gen STRING\fR +.RS 4 +Generate code with a dynamically-registered generator. STRING has the form +language[:key1=val1[,key2,[key3=val3]]]. Keys and values are options passed to +the generator. Many options will not require values. For a complete list of +supported generators, run +.B thrift +without arguments. +.RE +.SH AUTHOR +Thrift is a top-level project of the Apache Software Foundation, (see +http://thrift.apache.org). +.PP +This manual page was written by Eric Evans for the Debian +system (but may be used by others). Permission is granted to copy, distribute +and/or modify this document under the terms of the GNU General Public License, +Version 2 or any later version published by the Free Software Foundation. +.PP +On Debian systems, the complete text of the GNU General Public License can be +found in /usr/share/common-licenses/GPL. diff --git a/watch b/watch new file mode 100644 index 0000000..9f6ac2b --- /dev/null +++ b/watch @@ -0,0 +1,2 @@ +version=3 +https://thrift.apache.org/download .*/thrift-(\d[\d\.]+)\.(?:tgz|tar\.(?:gz|bz2|xz)) -- 2.30.2