--- /dev/null
- thrift (0.12.0) stable; urgency=low
++thrift (0.13.0-6) unstable; urgency=medium
+
- * update to 0.12.0
++ * Backport upstream fix for THRIFT-5322: Go compact_protocol allocating
++ unreasonable buffer size.
+
- -- Apache Thrift Developers <dev@thrift.apache.org> Wed, 28 Dec 2018 12:00:00 -0500
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Sun, 14 Feb 2021 19:50:04 +0100
+
- thrift (0.11.0) stable; urgency=low
++thrift (0.13.0-5) unstable; urgency=medium
+
- * update to 0.11.0
++ * Update Standards-Version to 4.5.0 .
+
- -- Jake Farrell <jfarrell@apache.org> Wed, 07 Dec 2017 20:07:00 -0500
++ [ Adrian Bunk <bunk@debian.org> ]
++ * Link with libatomic on ARMel and MIPSel (closes: #972948).
+
- thrift (0.10.0) stable; urgency=low
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Mon, 26 Oct 2020 18:01:44 +0100
+
- * update to 0.10.0
++thrift (0.13.0-4) unstable; urgency=medium
+
- -- Jake Farrell <jfarrell@apache.org> Wed, 03 Jan 2017 16:52:00 -0500
++ * 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).
+
- thrift (0.9.3) stable; urgency=low
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Thu, 15 Oct 2020 17:07:25 +0200
+
- * update to 0.9.3
++thrift (0.13.0-3) unstable; urgency=medium
+
- -- Jake Farrell <jfarrell@apache.org> Wed, 11 Oct 2015 17:22:00 -0500
++ * Backport upstream fix for wrong int to string conversions in Go testing
++ (closes: #971192).
+
- thrift (0.9.0) stable; urgency=low
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Sun, 27 Sep 2020 21:31:25 +0200
+
- * update to 0.9.0
++thrift (0.13.0-2) unstable; urgency=medium
+
- -- Jake Farrell <jfarrell@apache.org> Wed, 10 Oct 2012 12:00:00 -0500
++ * Link C++ tests with atomic.
++ * Upload to Sid.
+
- thrift (0.7.0) stable; urgency=low
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Sun, 08 Dec 2019 12:24:18 +0000
+
- * update to 0.7.0
++thrift (0.13.0-1) experimental; urgency=high
+
- -- Jake Farrell <jfarrell@apache.org> Tue, 10 Aug 2011 17:01:53 -0500
++ * 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).
+
- thrift (0.7.0-dev1) stable; urgency=low
- * added glib
- * fix location of libthrift.jar
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Sun, 01 Dec 2019 10:46:55 +0000
+
- -- Roger Meier <roger@apache.org> Tue, 12 Apr 2011 21:41:18 +0200
++thrift (0.12.0-1) experimental; urgency=medium
+
- thrift (0.6.0-dev1) stable; urgency=low
++ * New major upstream release.
++ * Rename related packages to -0.12.0 suffix.
++ * Remove Python 2 bindings (closes: #938662).
++ * Update debhelper level to 11 .
+
- * update version field
- * added debian folder to thrift/contrib
- * changed a few details in control file
- * update copyright file
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Sat, 05 Oct 2019 08:58:11 +0000
+
- -- Roger Meier <roger@apache.org> Tue, 14 Dec 2010 12:12:33 -0800
++thrift (0.11.0-6) unstable; urgency=medium
+
- thrift (0.5.0+nmu2) stable; urgency=low
++ * Update copyright file (closes: #935713).
++ * Update Python packaging bits (closes: #935715).
+
- * Non-maintainer upload.
- * Merged THRIFT-71_v9.patch to skip ./bootstrap.sh if not exists.
- https://issues.apache.org/jira/secure/attachment/12465360/THRIFT-71_v9.patch
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Sun, 25 Aug 2019 19:18:04 +0000
+
- -- Yamashita Yuu <yamashita@geishatokyo.com> Tue, 07 Dec 2010 15:00:55 +0900
++thrift (0.11.0-5) experimental; urgency=medium
+
- thrift (0.5.0+nmu1) stable; urgency=low
++ * Fix Python 3 packaging.
++ * Sync with Ubuntu.
++ * Update Standards-Version to 4.4.0 .
+
- * Non-maintainer upload.
- * Imported package information for php5-thrift from https://github.com/simplegeo/thrift.
++ [ Adam Cecile <acecile@le-vert.net> ]
++ * Build python3 package (closes: #913724).
+
- -- Yamashita Yuu <yamashita@geishatokyo.com> Tue, 07 Dec 2010 01:00:17 +0900
++ [ Gianfranco Costamagna <locutusofborg@debian.org> ]
++ * Export HOME to make the build happy (closes: #935620).
++ * Fix another failure due to new go with upstream patch.
+
- thrift (0.5.0) stable; urgency=low
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Sat, 24 Aug 2019 15:47:34 +0000
+
- * update to 0.5.0
++thrift (0.11.0-4) unstable; urgency=medium
+
- -- Roger Meier <roger@apache.org> Fri, 08 Oct 2010 11:23:53 +0200
++ * Backport upstream security fix for CVE-2018-11798: Node.js Filesever
++ webroot fixed path (closes: #918734).
++ * Update Standards-Version to 4.3.0 .
+
- thrift (0.4.0) stable; urgency=low
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Tue, 08 Jan 2019 21:31:07 +0000
+
- * update to 0.4.0
++thrift (0.11.0-3) unstable; urgency=medium
+
- -- Roger Meier <roger@bufferoverflow.ch> Sun, 22 Aug 2010 21:26:00 +0100
++ * Build with latest PHP package version.
++ * Provide PHP package without version number.
++ * Upload to Sid (closes: #835294).
+
- thrift (0.2008.12.30~8.04) hardy; urgency=low
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> Sat, 27 Oct 2018 20:57:18 +0000
+
- * Initial release.
++thrift (0.11.0-2) experimental; urgency=medium
+
- -- Esteve Fernandez <esteve@fluidinfo.com> Thu, 15 Jan 2009 11:34:24 +0100
++ * Disable failing Python self-tests to fix mips and s390x FTBFS.
++
++ -- Laszlo Boszormenyi (GCS) <gcs@debian.org> 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) <gcs@debian.org> 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) <gcs@debian.org> 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) <gcs@debian.org> 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) <gcs@debian.org> 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) <gcs@debian.org> 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) <gcs@debian.org> Sat, 21 Mar 2015 17:45:29 +0000
--- /dev/null
- Priority: extra
- Build-Depends: debhelper (>= 9), build-essential, mono-mcs, python-dev, ant,
- mono-devel, libmono-system-web4.0-cil, erlang-base, ruby-dev | ruby1.9.1-dev, ruby-bundler ,autoconf, automake,
- pkg-config, libtool, bison, flex, libboost-dev | libboost1.56-dev | libboost1.63-all-dev,
- python-all, python-setuptools, python-all-dev, python-all-dbg,
- python3-all, python3-setuptools, python3-all-dev, python3-all-dbg,
- openjdk-8-jdk | openjdk-8-jdk-headless | openjdk-11-jdk | openjdk-11-jdk-headless | default-jdk,
- libboost-test-dev | libboost-test1.56-dev | libboost-test1.63-dev, libevent-dev, libssl-dev, perl (>= 5.8.0-7),
- php (>= 5), php-dev (>= 5), libglib2.0-dev, qtchooser, qtbase5-dev-tools
- Maintainer: Thrift Developer's <dev@thrift.apache.org>
- Homepage: http://thrift.apache.org/
- Vcs-Git: https://github.com/apache/thrift.git
- Vcs-Browser: https://github.com/apache/thrift
- Standards-Version: 3.9.7
- X-Python-Version: >= 2.6
- X-Python3-Version: >= 3.3
+Source: thrift
+Section: devel
- Package: thrift-compiler
++Priority: optional
++Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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.5.0
++Homepage: https://thrift.apache.org/
++XS-Ruby-Versions: ruby2.7
++XS-Go-Import-Path: github.com/apache/thrift/lib/go/thrift
+
- Description: Compiler for Thrift definition files
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
- .
- This package contains the Thrift compiler that is used for translating
- from .thrift files (containing the definitions) to the language binding
- for the supported languages.
-
- Package: python-thrift
- Architecture: any
- Section: python
- Depends: ${python:Depends}, ${shlibs:Depends}, ${misc:Depends}, python-six
- Recommends: python-twisted-web, python-backports.ssl-match-hostname, python-ipaddress
- Provides: ${python:Provides}
- Description: Python bindings for Thrift (Python 2)
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
- .
- This package contains the Python bindings for Thrift. You will need the thrift
- tool (in the thrift-compiler package) to compile your definition to Python
- classes, and then the modules in this package will allow you to use those
- classes in your programs.
++Package: libthrift-0.13.0
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
- This package installs the library for Python 2.
++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.
+ .
- Package: python-thrift-dbg
++ This package contains the runtime libraries needed for C++ applications
++ using Thrift.
+
- Section: debug
- Depends: ${shlibs:Depends}, ${misc:Depends}, python-thrift (= ${binary:Version}), python-all-dbg
- Provides: ${python:Provides}
- Description: Python bindings for Thrift (debug version)
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
++Package: libthrift-dev
+Architecture: any
- This package contains the Python bindings for Thrift with debugging symbols.
- You will need the thrift tool (in the thrift-compiler package) to compile your
- definition to Python classes, and then the modules in this package will allow
- you to use those classes in your programs.
++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.
+ .
- Package: python3-thrift
++ This package contains the development libraries required for writing C++
++ applications using Thrift.
+
- Section: python
- Depends: ${python3:Depends}, ${shlibs:Depends}, ${misc:Depends}, python3-six
- Recommends: python3-twisted-web
- Provides: ${python:Provides}
- Description: Python bindings for Thrift (Python 3)
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
- .
- This package contains the Python bindings for Thrift. You will need the thrift
- tool (in the thrift-compiler package) to compile your definition to Python
- classes, and then the modules in this package will allow you to use those
- classes in your programs.
++Package: libthrift-c-glib0
++Section: libs
+Architecture: any
- This package installs the library for Python 3.
++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.
+ .
- Package: python3-thrift-dbg
++ This package contains the glib based runtime libraries needed for C
++ applications using Thrift.
+
- Section: debug
- Depends: ${shlibs:Depends}, ${misc:Depends}, python3-thrift (= ${binary:Version}), python3-all-dbg
- Provides: ${python:Provides}
- Description: Python bindings for Thrift (debug version)
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
- .
- This package contains the Python bindings for Thrift with debugging symbols.
- You will need the thrift tool (in the thrift-compiler package) to compile your
- definition to Python classes, and then the modules in this package will allow
- you to use those classes in your programs.
-
- Package: ruby-thrift
- Architecture: all
- Section: libs
- Depends: ruby | ruby-interpreter, ${shlibs:Depends}, ${misc:Depends}
- Provides: libthrift-ruby
- Replaces: libthrift-ruby
- Breaks: libthrift-ruby
- Description: Ruby bindings for Thrift
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
- .
- This package contains the Ruby bindings for Thrift. You will need the thrift
- tool (in the thrift-compiler package) to compile your definition to Ruby
- classes, and then the modules in this package will allow you to use those
- classes in your programs.
-
- Package: libthrift-java
- Architecture: all
- Section: java
- Depends: ${misc:Depends}
- Description: Java bindings for Thrift
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
- .
- This package contains the Java bindings for Thrift. You will need the thrift
- tool (in the thrift-compiler package) to compile your definition to Java
- classes, and then the modules in this package will allow you to use those
- classes in your programs.
-
- Package: libthrift-cil
- Architecture: all
- Section: cli-mono
- Depends: cli-common, libmono-corlib4.0-cil (>= 2.10) | libmono-corlib4.5-cil (>=3.2), libmono-system4.0-cil (>= 2.10),
- libmono-system-web4.0-cil (>= 2.10), ${misc:Depends}
- Description: CLI bindings for Thrift
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
- .
- This package contains the CLI bindings for Thrift. You will need the thrift
- tool (in the thrift-compiler package) to compile your definition to C#
- classes, and then the modules in this package will allow you to use those
- classes in your programs.
-
- Package: libthrift-perl
- Architecture: all
- Section: perl
- Depends: perl (>= 5.8.0-7), ${misc:Depends}
- Description: Perl bindings for Thrift
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
++Package: libthrift-c-glib-dev
+Architecture: any
- This package contains the Perl bindings for Thrift. You will need the thrift
- tool (in the thrift-compiler package) to compile your definition to Perl
- classes, and then the modules in this package will allow you to use those
- classes in your programs.
++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.
+ .
- Package: libthrift0
++ This package contains the development libraries required for writing glib
++ based C applications using Thrift.
+
- Description: Thrift C++ library
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
++Package: thrift-compiler
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
- This package contains the runtime libraries needed for C++ applications
- using Thrift.
++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.
+ .
- Package: libthrift0-dbg
++ This package contains the compiler used to generate language code from
++ Thrift definition files.
+
- Section: debug
- Depends: ${shlibs:Depends}, ${misc:Depends}, libthrift0 (= ${binary:Version})
- Description: Thrift C++ library debug symbols
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
++#Package: python-thrift
++#Section: python
++#Architecture: any
++#Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
++#Conflicts: python-thrift (<= 0.9.1-2)
++#Replaces: python-thrift (<= 0.9.1-2)
++#Description: Python 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 bindings for Thrift.
++#
++#Package: python-thrift-dbg
++#Section: debug
++#Architecture: any
++#Depends: python-thrift (= ${binary:Version}), ${misc:Depends}
++#Description: Python library for Thrift (debug symbols)
++# 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 debugging symbols for Python bindings of Thrift.
++#
++Package: python3-thrift
++Section: python
+Architecture: any
- This package contains the debug symbols for the Thrift C++ runtime libraries.
++Depends: ${shlibs:Depends}, ${misc:Depends}, ${python3:Depends}
++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.
+ .
- Package: libthrift-dev
++ This package provides the Python 3 bindings for Thrift.
+
- Section: libdevel
- Depends: ${shlibs:Depends}, ${misc:Depends}, libthrift0 (= ${binary:Version}), libglib2.0-dev
- Description: Thrift C++ library (development headers)
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
++Package: python3-thrift-dbg
++Section: debug
+Architecture: any
- This package contains the development libraries required for writing C++
- applications using Thrift.
++Depends: python3-thrift (= ${binary:Version}), ${misc:Depends}
++Description: Python library for Thrift (debug symbols)
++ 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.
+ .
- Package: php5-thrift
++ This package contains the debugging symbols for Python 3 bindings of Thrift.
+
- Depends: ${php:Depends}, ${shlibs:Depends}, ${misc:Depends}
++#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
- Description: PHP bindings for Thrift
- Thrift is a software framework for scalable cross-language services
- development. It combines a software stack with a code generation engine to
- build services that work efficiently and seamlessly.
++Depends: ${phpcomposer:Debian-require}, ${shlibs:Depends}, ${misc:Depends}
+Provides: ${php:Provides}
- This package contains the PHP bindings for Thrift.
++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.
--- /dev/null
- This package was debianized by Thrift Developer's <dev@thrift.apache.org>.
-
-
- This package and the Debian packaging is licensed under the Apache License,
- see `/usr/share/common-licenses/Apache-2.0'.
-
- The following information was copied from Apache Thrift LICENSE file.
-
- --------------------------------------------------
- SOFTWARE DISTRIBUTED WITH THRIFT:
-
- The Apache Thrift software includes a number of subcomponents with
- separate copyright notices and license terms. Your use of the source
- code for the these subcomponents is subject to the terms and
- conditions of the following licenses.
-
- --------------------------------------------------
- Portions of the following files are licensed under the MIT License:
-
- lib/erl/src/Makefile.am
-
- Please see doc/otp-base-license.txt for the full terms of this license.
-
-
- --------------------------------------------------
- The following files contain some portions of code contributed under
- the Thrift Software License (see doc/old-thrift-license.txt), and relicensed
- under the Apache 2.0 License:
-
- compiler/cpp/Makefile.am
- compiler/cpp/src/generate/t_cpp_generator.cc
- compiler/cpp/src/generate/t_csharp_generator.cc
- compiler/cpp/src/generate/t_erl_generator.cc
- compiler/cpp/src/generate/t_hs_generator.cc
- compiler/cpp/src/generate/t_java_generator.cc
- compiler/cpp/src/generate/t_ocaml_generator.cc
- compiler/cpp/src/generate/t_perl_generator.cc
- compiler/cpp/src/generate/t_php_generator.cc
- compiler/cpp/src/generate/t_py_generator.cc
- compiler/cpp/src/generate/t_rb_generator.cc
- compiler/cpp/src/generate/t_st_generator.cc
- compiler/cpp/src/generate/t_xsd_generator.cc
- compiler/cpp/src/main.cc
- compiler/cpp/src/parse/t_field.h
- compiler/cpp/src/parse/t_program.h
- compiler/cpp/src/platform.h
- compiler/cpp/src/thriftl.ll
- compiler/cpp/src/thrifty.yy
- lib/csharp/src/Protocol/TBinaryProtocol.cs
- lib/csharp/src/Protocol/TField.cs
- lib/csharp/src/Protocol/TList.cs
- lib/csharp/src/Protocol/TMap.cs
- lib/csharp/src/Protocol/TMessage.cs
- lib/csharp/src/Protocol/TMessageType.cs
- lib/csharp/src/Protocol/TProtocol.cs
- lib/csharp/src/Protocol/TProtocolException.cs
- lib/csharp/src/Protocol/TProtocolFactory.cs
- lib/csharp/src/Protocol/TProtocolUtil.cs
- lib/csharp/src/Protocol/TSet.cs
- lib/csharp/src/Protocol/TStruct.cs
- lib/csharp/src/Protocol/TType.cs
- lib/csharp/src/Server/TServer.cs
- lib/csharp/src/Server/TSimpleServer.cs
- lib/csharp/src/Server/TThreadPoolServer.cs
- lib/csharp/src/TApplicationException.cs
- lib/csharp/src/Thrift.csproj
- lib/csharp/src/Thrift.sln
- lib/csharp/src/TProcessor.cs
- lib/csharp/src/Transport/TServerSocket.cs
- lib/csharp/src/Transport/TServerTransport.cs
- lib/csharp/src/Transport/TSocket.cs
- lib/csharp/src/Transport/TStreamTransport.cs
- lib/csharp/src/Transport/TTransport.cs
- lib/csharp/src/Transport/TTransportException.cs
- lib/csharp/src/Transport/TTransportFactory.cs
- lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs
- lib/csharp/ThriftMSBuildTask/ThriftBuild.cs
- lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj
- lib/rb/lib/thrift.rb
- lib/st/README
- lib/st/thrift.st
- test/OptionalRequiredTest.cpp
- test/OptionalRequiredTest.thrift
- test/ThriftTest.thrift
-
- --------------------------------------------------
- For the aclocal/ax_boost_base.m4 and contrib/fb303/aclocal/ax_boost_base.m4 components:
-
- # Copyright (c) 2007 Thomas Porschberg <thomas@randspringer.de>
- #
- # Copying and distribution of this file, with or without
- # modification, are permitted in any medium without royalty provided
- # the copyright notice and this notice are preserved.
-
- --------------------------------------------------
- For the compiler/cpp/src/md5.[ch] components:
-
- /*
- Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- L. Peter Deutsch
- ghost@aladdin.com
-
- */
-
- ---------------------------------------------------
- For the lib/rb/setup.rb: Copyright (c) 2000-2005 Minero Aoki,
- lib/ocaml/OCamlMakefile and lib/ocaml/README-OCamlMakefile components:
- Copyright (C) 1999 - 2007 Markus Mottl
-
- Licensed under the terms of the GNU Lesser General Public License 2.1
- (see doc/lgpl-2.1.txt for the full terms of this license)
++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 <rakuco@webkit.org>
++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
++ <https://www.php.net/software/>".
++ .
++ 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 <https://www.php.net>.
++ .
++ PHP includes the Zend Engine, freely available at
++ <https://www.zend.com>.
++
++Files: debian/*
++Copyright: Copyright 2012-2014 Eric Evans <eevans@debian.org>,
++ Copyright 2014- Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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 <https://www.gnu.org/licenses/>.
++ .
++ 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 <http://www.gnu.org/licenses/>.
++ .
++ 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'.
--- /dev/null
--- /dev/null
++lib/go/thrift /usr/share/gocode/src/github.com/apache/thrift/lib/go/
--- /dev/null
--- /dev/null
++usr/lib/*/libthrift-*.so
++usr/lib/*/libthriftnb-*.so
++usr/lib/*/libthriftqt5-*.so
++usr/lib/*/libthriftz-*.so
--- /dev/null
--- /dev/null
++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~)
--- /dev/null
--- /dev/null
++usr/include/thrift/c_glib/
++usr/lib/*/libthrift_c_glib.a
++usr/lib/*/libthrift_c_glib.so
++usr/lib/*/pkgconfig/thrift_c_glib.pc
--- /dev/null
--- /dev/null
++usr/lib/*/libthrift_c_glib.so.*
--- /dev/null
- usr/lib/*.a
- usr/lib/*.la
- usr/lib/pkgconfig
- usr/include
++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
--- /dev/null
--- /dev/null
++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/*
--- /dev/null
--- /dev/null
++debian/_jh_build.javadoc/api/* /usr/share/doc/thrift/java/
--- /dev/null
--- /dev/null
++usr/lib/perl5/Thrift.pm /usr/share/perl5
++usr/lib/perl5/Thrift /usr/share/perl5
--- /dev/null
--- /dev/null
++From 22b6c0c8bbc7089ce714f782366c2914c5e9eac5 Mon Sep 17 00:00:00 2001
++From: Yuxuan 'fishy' Wang <yuxuan.wang@reddit.com>
++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 "<nil>"
++- }
++- return "<TField name:'" + p.name + "' type:" + string(p.typeId) + " field-id:" + string(p.id) + ">"
++-}
++-
++-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)
--- /dev/null
--- /dev/null
++From 37c2ceb737cb40377346c63a05f407da1c119ba0 Mon Sep 17 00:00:00 2001
++From: Yuxuan 'fishy' Wang <yuxuan.wang@reddit.com>
++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)
++ }
++
--- /dev/null
--- /dev/null
++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) <gcs@debian.org>
++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);
+++}
--- /dev/null
--- /dev/null
++Description: <short summary of the patch>
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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)
--- /dev/null
--- /dev/null
++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) <gcs@debian.org>
++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 }
++ };
++
--- /dev/null
--- /dev/null
++Description: disable failing tests
++ .
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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 \
--- /dev/null
--- /dev/null
++Description: PHP tests are not phpunit 8 compatible
++ Disable those for now.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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 \
--- /dev/null
--- /dev/null
++Description: wait a second after go serve socket
++ Multiple upstream wait time by hundred.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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 {
--- /dev/null
--- /dev/null
++From a9efd1abd4fd4862d8e967ec207015af79494b6c Mon Sep 17 00:00:00 2001
++From: "D. Can Celasun" <can@dcc.im>
++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)
++ }
++ }
--- /dev/null
--- /dev/null
++Description: golang dependencies already installed as build dependency
++Forwarded: no
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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
++
--- /dev/null
--- /dev/null
++Description: fix tests FTBFS with atomic link
++ On armel and at least mipsel needs atomic to link with.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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
++ #
--- /dev/null
--- /dev/null
++Description: add zlib library to link with
++ Need to specify which library contain the zlib functions during linking.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++
++---
++
++--- 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)
--- /dev/null
--- /dev/null
++Description: don't try missing NewMockThriftTest test
++ Upstream doesn't ship NewMockThriftTest hence don't try to use it.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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)
++ }
++ }
+++*/
--- /dev/null
--- /dev/null
++Description: do not use bundler as per Ruby policy
++ .
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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:
--- /dev/null
--- /dev/null
++Description: <short summary of the patch>
++ 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) <gcs@debian.org>
++
++---
++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: <vendor|upstream|other>, <url of original patch>
++Bug: <url in upstream bugtracker>
++Bug-Debian: https://bugs.debian.org/<bugnumber>
++Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
++Forwarded: <no|not-needed|url proving that it has been forwarded>
++Reviewed-By: <name and email of someone who approved the patch>
++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
++
--- /dev/null
--- /dev/null
++Description: run simple Go test only
++ Race testing is available on amd64, ppc64le and arm64 only.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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
--- /dev/null
--- /dev/null
++Description: don't use gradlew in any way
++ Not enabled for compilation, but clean would like to use it anyway.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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
--- /dev/null
--- /dev/null
++Description: no need for ANT Maven task
++ Just disable its download.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++
++---
++
++--- thrift-0.9.2.orig/lib/java/build.xml
+++++ thrift-0.9.2/lib/java/build.xml
++@@ -295,7 +295,9 @@
++ </target>
++
++ <target name="mvn.ant.tasks.download" depends="setup.init,mvn.ant.tasks.check,proxy" unless="mvn.ant.tasks.found">
+++<!--
++ <get src="${mvn.ant.task.url}/${mvn.ant.task.jar}" dest="${build.tools.dir}/${mvn.ant.task.jar}" usetimestamp="true"/>
+++-->
++ </target>
++
++ <target name="mvn.ant.tasks.check">
--- /dev/null
--- /dev/null
++Description: don't test servers that need shmem
++ As buildd's don't have shmem enabled / mounted, tests would fail.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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
++
--- /dev/null
--- /dev/null
++Description: node is called nodejs in Debian
++ Use the proper binary name.
++Author: Laszlo Boszormenyi (GCS) <gcs@debian.org>
++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
++
--- /dev/null
--- /dev/null
++##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
--- /dev/null
--- /dev/null
++etc/php.d/thrift_protocol.ini /etc/php/7.3/mods-available/
++usr/lib/php/
--- /dev/null
--- /dev/null
++usr/lib/python2.*/*-packages/*.egg-info
++usr/lib/python2.*/*-packages/thrift/
--- /dev/null
--- /dev/null
++usr/lib/python3/*-packages/*.egg-info
++usr/lib/python3/*-packages/thrift/
--- /dev/null
- # Sample debian/rules that uses debhelper.
- #
- # This file was originally written by Joey Hess and Craig Small.
- # As a special exception, when this file is copied by dh-make into a
- # dh-make output file, you may use that output file without restriction.
- # This special exception was added by Craig Small in version 0.37 of dh-make.
- #
- # Modified to make a template file for a multi-binary package with separated
- # build-arch and build-indep targets by Bill Allombert 2001
+#!/usr/bin/make -f
+# -*- makefile -*-
- # This has to be exported to make some magic below work.
- export DH_OPTIONS
-
- PYVERS := $(shell pyversions -r)
-
- export CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
- export CFLAGS:=$(shell dpkg-buildflags --get CFLAGS)
- export CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS)
- export LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)
-
- configure: configure-stamp
- configure-stamp:
- dh_testdir
-
- # Add here commands to configure the package.
- if [ -f bootstrap.sh ]; then $(CURDIR)/bootstrap.sh; fi
- $(CURDIR)/configure --prefix=/usr --enable-plugin=no
-
- touch configure-stamp
-
-
- #Architecture
- build: build-arch build-indep
- # Tests disabled
- # $(MAKE) -C test check
-
- build-arch: build-arch-stamp
- $(CURDIR)/compiler/cpp/thrift build-arch-stamp: configure-stamp
-
- # Compile compiler
- $(MAKE) -C $(CURDIR)/compiler/cpp
-
- # Compile C++ library
- $(MAKE) -C $(CURDIR)/lib/cpp
-
- # Compile C (glib) library
- $(MAKE) -C $(CURDIR)/lib/c_glib
-
- # Python library
- cd $(CURDIR)/lib/py && \
- for py in $(PYVERS); do \
- $$py setup.py build; \
- $$py-dbg setup.py build; \
- done
-
- # PHP
- cd $(CURDIR)/lib/php/src/ext/thrift_protocol && \
- phpize && \
- ./configure && $(MAKE)
-
- touch $@
-
- build-indep: build-indep-stamp
- build-indep-stamp: configure-stamp $(CURDIR)/compiler/cpp/thrift
-
- # Add here commands to compile the indep part of the package.
- #$(MAKE) doc
-
- # Java
- cd $(CURDIR)/lib/java && \
- ./gradlew --no-daemon -Prelease=true jar
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
- # C#
- $(MAKE) -C $(CURDIR)/lib/csharp
-
- # Ruby
- $(MAKE) -C $(CURDIR)/lib/rb
-
- # Perl
- $(MAKE) -C $(CURDIR)/lib/perl INSTALLDIRS=vendor
-
- touch $@
-
- clean:
- dh_testdir
- dh_testroot
- rm -f build-arch-stamp build-indep-stamp configure-stamp
++# 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
++
++# 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
++# 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
++
++override_dh_strip:
++ dh_strip -ppython3-thrift --dbg-package=python3-thrift-dbg
++ dh_strip
+
- cd $(CURDIR)/lib/py && python setup.py clean --all
-
- # Add here commands to clean up after the build process.
- -$(MAKE) clean
-
- dh_clean
-
- install: install-indep install-arch
- install-indep:
- dh_testdir
- dh_testroot
- dh_prep -i
- dh_installdirs -i
-
- # Add here commands to install the indep part of the package into
- # debian/<package>-doc.
- #INSTALLDOC#
-
- # Java
- mkdir -p $(CURDIR)/debian/libthrift-java/usr/share/java/ && \
- cp $(CURDIR)/lib/java/build/libs/libthrift*.jar \
- $(CURDIR)/debian/libthrift-java/usr/share/java/
-
- # Ruby
- mkdir -p $(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1 && \
- cp $(CURDIR)/lib/rb/lib/thrift.rb \
- $(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1
- cp -r $(CURDIR)/lib/rb/lib/thrift \
- $(CURDIR)/debian/ruby-thrift/usr/lib/ruby/1.9.1
-
- # C#
- mkdir -p $(CURDIR)/debian/libthrift-cil/usr/lib/cli/thrift/ && \
- cp $(CURDIR)/lib/csharp/Thrift.dll \
- $(CURDIR)/debian/libthrift-cil/usr/lib/cli/thrift/Thrift.dll
-
- # Perl
- $(MAKE) -C $(CURDIR)/lib/perl install DESTDIR=$(CURDIR)/debian/libthrift-perl
- mkdir -p $(CURDIR)/debian/libthrift-perl/usr/share
- mv $(CURDIR)/debian/libthrift-perl/usr/local/lib/perl5 $(CURDIR)/debian/libthrift-perl/usr/share
- rmdir $(CURDIR)/debian/libthrift-perl/usr/local/lib
- rmdir $(CURDIR)/debian/libthrift-perl/usr/local
-
- dh_install -i
-
- install-arch:
- dh_testdir
- dh_testroot
- dh_clean -k -s
- dh_installdirs -s
-
- # Add here commands to install the arch part of the package into
- # debian/tmp.
- #$(MAKE) DESTDIR=$(CURDIR)/debian/thrift install
-
- # Compiler
- mkdir -p $(CURDIR)/debian/thrift-compiler/usr/bin && \
- cp $(CURDIR)/compiler/cpp/thrift \
- $(CURDIR)/debian/thrift-compiler/usr/bin/thrift && \
- rmdir $(CURDIR)/debian/thrift-compiler/usr/sbin
-
- # Python
- cd $(CURDIR)/lib/py && \
- python2 setup.py install --install-layout=deb --no-compile --root=$(CURDIR)/debian/python-thrift && \
- python2-dbg setup.py install --install-layout=deb --no-compile --root=$(CURDIR)/debian/python-thrift-dbg && \
- python3 setup.py install --install-layout=deb --no-compile --root=$(CURDIR)/debian/python3-thrift && \
- python3-dbg setup.py install --install-layout=deb --no-compile --root=$(CURDIR)/debian/python3-thrift-dbg
-
- find $(CURDIR)/debian/python-thrift -name "*.py[co]" -print0 | xargs -0 rm -f
- find $(CURDIR)/debian/python-thrift -name "__pycache__" -print0 | xargs -0 rm -fr
- find $(CURDIR)/debian/python-thrift-dbg -name "__pycache__" -print0 | xargs -0 rm -fr
- find $(CURDIR)/debian/python-thrift-dbg -name "*.py[co]" -print0 | xargs -0 rm -f
- find $(CURDIR)/debian/python-thrift-dbg -name "*.py" -print0 | xargs -0 rm -f
- find $(CURDIR)/debian/python-thrift-dbg -name "*.egg-info" -print0 | xargs -0 rm -rf
- find $(CURDIR)/debian/python-thrift-dbg -depth -type d -empty -exec rmdir {} \;
-
- find $(CURDIR)/debian/python3-thrift -name "*.py[co]" -print0 | xargs -0 rm -f
- find $(CURDIR)/debian/python3-thrift -name "__pycache__" -print0 | xargs -0 rm -fr
- find $(CURDIR)/debian/python3-thrift-dbg -name "__pycache__" -print0 | xargs -0 rm -fr
- find $(CURDIR)/debian/python3-thrift-dbg -name "*.py[co]" -print0 | xargs -0 rm -f
- find $(CURDIR)/debian/python3-thrift-dbg -name "*.py" -print0 | xargs -0 rm -f
- find $(CURDIR)/debian/python3-thrift-dbg -name "*.egg-info" -print0 | xargs -0 rm -rf
- find $(CURDIR)/debian/python3-thrift-dbg -depth -type d -empty -exec rmdir {} \;
-
- # PHP
- mkdir -p $(CURDIR)/debian/php5-thrift
- cd $(CURDIR)/lib/php && \
- $(MAKE) DESTDIR=$(CURDIR)/debian/php5-thrift install
-
- # C++ and C (glib)
- mkdir -p $(CURDIR)/debian/tmp; \
- cd $(CURDIR)/lib/cpp && \
- $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
- cd $(CURDIR)/lib/c_glib && \
- $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
- dh_install --sourcedir=debian/tmp -s
-
-
- # Must not depend on anything. This is to be called by
- # binary-arch/binary-indep
- # in another 'make' thread.
- binary-common:
- dh_testdir
- dh_testroot
- dh_installchangelogs
- dh_installdocs
- dh_installexamples
- dh_installman
- dh_link
- dh_strip -plibthrift0 --dbg-package=libthrift0-dbg
- dh_strip -ppython-thrift --dbg-package=python-thrift-dbg
- dh_strip -ppython3-thrift --dbg-package=python3-thrift-dbg
- dh_strip -pthrift-compiler
- dh_compress
- dh_fixperms
- dh_makeshlibs
- dh_installdeb
- dh_perl
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
- # Build architecture independent packages using the common target.
- binary-indep: build-indep install-indep
- $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
-
- # Build architecture dependent packages using the common target.
- binary-arch: build-arch install-arch
- echo "php:Depends=phpapi-$(shell php-config5 --phpapi)" > $(CURDIR)/debian/substvars
- $(MAKE) -f debian/rules DH_OPTIONS=-s binary-common
-
- binary: binary-arch binary-indep
- .PHONY: build clean binary-indep binary-arch binary install install-indep install-arch configure
++%:
++ 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 \
++ override_dh_strip
--- /dev/null
--- /dev/null
++3.0 (quilt)
--- /dev/null
--- /dev/null
++# Long lines only
++source-is-missing lib/js/test/phantom-client.js line length is 2016 characters (>512)
++source-is-missing lib/js/test/test-async.js line length is 2018 characters (>512)
++source-is-missing lib/js/test/test-es6.js line length is 2018 characters (>512)
++source-is-missing lib/js/test/test.js line length is 2018 characters (>512)
++
++# Only one file, not the whole source
++thrift source: license-problem-php-license debian/copyright
--- /dev/null
--- /dev/null
++NOTICE
--- /dev/null
--- /dev/null
++tutorial/tutorial.thrift
++tutorial/shared.thrift
--- /dev/null
--- /dev/null
++usr/bin/
--- /dev/null
--- /dev/null
++debian/thrift.1
--- /dev/null
- #DOCS#
-
++NOTICE
--- /dev/null
--- /dev/null
++.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 <eevans@debian.org> 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.
--- /dev/null
--- /dev/null
++version=3
++https://thrift.apache.org/download .*/thrift-(\d[\d\.]+)\.(?:tgz|tar\.(?:gz|bz2|xz))