summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/thrift/build/docker
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
commit19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch)
tree42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/jaegertracing/thrift/build/docker
parentInitial commit. (diff)
downloadceph-19fcec84d8d7d21e796c7624e521b60d28ee21ed.tar.xz
ceph-19fcec84d8d7d21e796c7624e521b60d28ee21ed.zip
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/jaegertracing/thrift/build/docker')
-rw-r--r--src/jaegertracing/thrift/build/docker/README.md197
-rw-r--r--src/jaegertracing/thrift/build/docker/msvc2017/Dockerfile103
-rw-r--r--src/jaegertracing/thrift/build/docker/msvc2017/README.md50
-rw-r--r--src/jaegertracing/thrift/build/docker/msvc2017/build-compiler.bat44
-rw-r--r--src/jaegertracing/thrift/build/docker/msvc2017/build.bat45
-rw-r--r--src/jaegertracing/thrift/build/docker/old/Vagrantfile59
-rw-r--r--src/jaegertracing/thrift/build/docker/old/centos-7.3/Dockerfile199
-rw-r--r--src/jaegertracing/thrift/build/docker/old/debian-jessie/Dockerfile205
-rw-r--r--src/jaegertracing/thrift/build/docker/old/debian-stretch/Dockerfile231
-rw-r--r--src/jaegertracing/thrift/build/docker/old/ubuntu-artful/Dockerfile270
-rw-r--r--src/jaegertracing/thrift/build/docker/old/ubuntu-trusty/Dockerfile244
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/refresh.sh82
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/run.sh30
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/autotools.sh6
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/cmake.sh22
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/coverity.sh40
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/covscan.sh50
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/cross-test.sh16
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/dpkg.sh5
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/make-dist.sh9
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/sca.sh58
-rwxr-xr-xsrc/jaegertracing/thrift/build/docker/scripts/ubsan.sh30
-rw-r--r--src/jaegertracing/thrift/build/docker/ubuntu-bionic/Dockerfile282
-rw-r--r--src/jaegertracing/thrift/build/docker/ubuntu-disco/Dockerfile285
-rw-r--r--src/jaegertracing/thrift/build/docker/ubuntu-xenial/Dockerfile272
25 files changed, 2834 insertions, 0 deletions
diff --git a/src/jaegertracing/thrift/build/docker/README.md b/src/jaegertracing/thrift/build/docker/README.md
new file mode 100644
index 000000000..08c137257
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/README.md
@@ -0,0 +1,197 @@
+# Docker Integration #
+
+Due to the large number of languages supported by Apache Thrift,
+docker containers are used to build and test the project on a
+variety of platforms to provide maximum test coverage.
+
+## Appveyor Integration ##
+
+At this time the Appveyor scripts do not use docker containers.
+Once Microsoft supports Visual Studio Build Tools running inside
+nano containers (instead of Core, which is huge) then we will
+consider using containers for the Windows builds as well.
+
+## Travis CI Integration ##
+
+The Travis CI scripts use the following environment variables and
+logic to determine their behavior:
+
+### Environment Variables ###
+
+| Variable | Default | Usage |
+| -------- | ----- | ------- |
+| `DISTRO` | `ubuntu-bionic` | Set by various build jobs in `.travis.yml` to run builds in different containers. Not intended to be set externally.|
+| `DOCKER_REPO` | `thrift/thrift-build` | The name of the Docker Hub repository to obtain and store docker images. |
+| `DOCKER_USER` | `<none>` | The Docker Hub account name containing the repository. |
+| `DOCKER_PASS` | `<none>` | The Docker Hub account password to use when pushing new tags. |
+
+For example, the default docker image that is used in builds if no overrides are specified would be: `thrift/thrift-build:ubuntu-bionic`
+
+### Forks ###
+
+If you have forked the Apache Thrift repository and you would like
+to use your own Docker Hub account to store thrift build images,
+you can use the Travis CI web interface to set the `DOCKER_USER`,
+`DOCKER_PASS`, and `DOCKER_REPO` variables in a secure manner.
+Your fork builds will then pull, push, and tag the docker images
+in your account.
+
+### Logic ###
+
+The Travis CI build runs in two phases - first the docker images are rebuilt
+for each of the supported containers if they do not match the Dockerfile that
+was used to build the most recent tag. If a `DOCKER_PASS` environment
+variable is specified, the docker stage builds will attempt to log into
+Docker Hub and push the resulting tags.
+
+## Supported Containers ##
+
+The Travis CI (continuous integration) builds use the Ubuntu Bionic
+(18.04 LTS) and Xenial (16.04 LTS) images to maximize language level
+coverage.
+
+### Ubuntu ###
+
+* bionic (stable, current)
+* artful (previous stable)
+* xenial (legacy)
+
+## Unsupported Containers ##
+
+These containers may be in various states, and may not build everything.
+They can be found in the `old/` subdirectory.
+
+### CentOS ###
+* 7.3
+ * make check in lib/py may hang in test_sslsocket - root cause unknown
+
+### Debian ###
+
+* jessie
+* stretch
+ * make check in lib/cpp fails due to https://svn.boost.org/trac10/ticket/12507
+
+## Building like Travis CI does, locally ##
+
+We recommend you build locally the same way Travis CI does, so that when you
+submit your pull request you will run into fewer surprises. To make it a
+little easier, put the following into your `~/.bash_aliases` file:
+
+ # Kill all running containers.
+ alias dockerkillall='docker kill $(docker ps -q)'
+
+ # Delete all stopped containers.
+ alias dockercleanc='printf "\n>>> Deleting stopped containers\n\n" && docker rm $(docker ps -a -q)'
+
+ # Delete all untagged images.
+ alias dockercleani='printf "\n>>> Deleting untagged images\n\n" && docker rmi $(docker images -q -f dangling=true)'
+
+ # Delete all stopped containers and untagged images.
+ alias dockerclean='dockercleanc || true && dockercleani'
+
+ # Build a thrift docker image (run from top level of git repo): argument #1 is image type (ubuntu, centos, etc).
+ function dockerbuild
+ {
+ docker build -t $1 build/docker/$1
+ }
+
+ # Run a thrift docker image: argument #1 is image type (ubuntu, centos, etc).
+ function dockerrun
+ {
+ docker run -v $(pwd):/thrift/src -it $1 /bin/bash
+ }
+
+Then, to pull down the current image being used to build (the same way
+Travis CI does it) - if it is out of date in any way it will build a
+new one for you:
+
+ thrift$ DOCKER_REPO=thrift/thrift-build DISTRO=ubuntu-bionic build/docker/refresh.sh
+
+To run all unit tests (just like Travis CI does):
+
+ thrift$ dockerrun thrift/thrift-build:ubuntu-bionic
+ root@8caf56b0ce7b:/thrift/src# build/docker/scripts/autotools.sh
+
+To run the cross tests (just like Travis CI does):
+
+ thrift$ dockerrun thrift/thrift-build:ubuntu-bionic
+ root@8caf56b0ce7b:/thrift/src# build/docker/scripts/cross-test.sh
+
+When you are done, you want to clean up occasionally so that docker isn't using lots of extra disk space:
+
+ thrift$ dockerclean
+
+You need to run the docker commands from the root of the local clone of the
+thrift git repository for them to work.
+
+When you are done in the root docker shell you can `exit` to go back to
+your user host shell. Once the unit tests and cross test passes locally,
+submit the changes, and if desired squash the pull request to one commit
+to make it easier to merge (the committers can squash at commit time now
+that GitHub is the master repository). Now you are building like Travis CI does!
+
+## Raw Commands for Building with Docker ##
+
+If you do not want to use the same scripts Travis CI does, you can do it manually:
+
+Build the image:
+
+ thrift$ docker build -t thrift build/docker/ubuntu-bionic
+
+Open a command prompt in the image:
+
+ thrift$ docker run -v $(pwd):/thrift/src -it thrift /bin/bash
+
+## Core Tool Versions per Dockerfile ##
+
+Last updated: October 1, 2017
+
+| Tool | ubuntu-xenial | ubuntu-bionic | Notes |
+| :-------- | :------------ | :------------ | :---- |
+| ant | 1.9.6 | 1.10.3 | |
+| autoconf | 2.69 | 2.69 | |
+| automake | 1.15 | 1.15.1 | |
+| bison | 3.0.4 | 3.0.4 | |
+| boost | 1.58.0 | 1.65.1 | |
+| cmake | 3.5.1 | 3.10.2 | |
+| cppcheck | 1.72 | 1.82 | |
+| flex | 2.6.0 | 2.6.4 | |
+| libc6 | 2.23 | 2.27 | glibc |
+| libevent | 2.0.21 | 2.1.8 | |
+| libstdc++ | 5.4.0 | 7.3.0 | |
+| make | 4.1 | 4.1 | |
+| openssl | 1.0.2g | 1.1.0g | |
+| qt5 | 5.5.1 | 5.9.5 | |
+
+## Compiler/Language Versions per Dockerfile ##
+
+| Language | ubuntu-xenial | ubuntu-bionic | Notes |
+| :-------- | :------------ | :------------ | :---- |
+| as of | Mar 06, 2018 | Jul 1, 2019 | |
+| as3 | | 4.6.0 | |
+| C++ gcc | 5.4.0 | 7.4.0 | |
+| C++ clang | 3.8 | 6.0 | |
+| C# (mono) | 4.2.1.0 | 4.6.2.7 | |
+| c_glib | 2.48.2 | 2.56.4 | |
+| cl (sbcl) | | 1.5.3 | |
+| d | 2.075.1 | 2.087.0 | |
+| dart | 2.0.0 | 2.4.0 | |
+| delphi | | | Not in CI |
+| dotnet | 2.1.503 | 2.2.300 | |
+| erlang | 18.3 | 22.0 | |
+| go | 1.10.8 | 1.12.6 | |
+| haskell | 7.10.3 | 8.0.2 | |
+| haxe | 3.2.1 | 3.4.4 | THRIFT-4352: avoid 3.4.2 |
+| java | 1.8.0_191 | 11.0.3 | |
+| js | | | Unsure how to look for version info? |
+| lua | | 5.2.4 | Lua 5.3: see THRIFT-4386 |
+| nodejs | 6.16.0 | 10.16.0 | |
+| ocaml | | 4.05.0 | THRIFT-4517: ocaml 4.02.3 on xenial appears broken |
+| perl | 5.22.1 | 5.26.1 | |
+| php | 7.0.32 | 7.2.19 | |
+| python | 2.7.12 | 2.7.15 | |
+| python3 | 3.5.2 | 3.6.8 | |
+| ruby | 2.3.1p112 | 2.5.1p57 | |
+| rust | 1.34.0 | 1.35.0 | |
+| smalltalk | | | Not in CI |
+| swift | | 4.2.1 | |
diff --git a/src/jaegertracing/thrift/build/docker/msvc2017/Dockerfile b/src/jaegertracing/thrift/build/docker/msvc2017/Dockerfile
new file mode 100644
index 000000000..a2b3cd7e2
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/msvc2017/Dockerfile
@@ -0,0 +1,103 @@
+# escape=`
+#
+# Licensed 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.
+#
+
+FROM microsoft/dotnet-framework:4.7.1
+
+# Restore the default Windows shell for correct batch processing below.
+SHELL ["cmd", "/S", "/C"]
+
+# Install Build Tools excluding workloads and components with known issues.
+ADD https://aka.ms/vs/15/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe
+RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
+ --installPath C:\BuildTools `
+ --all `
+ --remove Microsoft.VisualStudio.Component.Windows10SDK.10240 `
+ --remove Microsoft.VisualStudio.Component.Windows10SDK.10586 `
+ --remove Microsoft.VisualStudio.Component.Windows10SDK.14393 `
+ --remove Microsoft.VisualStudio.Component.Windows81SDK `
+ || IF "%ERRORLEVEL%"=="3010" EXIT 0
+RUN DEL C:\TEMP\vs_buildtools.exe
+
+# Install CMake
+ADD https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-win64-x64.msi C:\TEMP\cmake.msi
+RUN msiexec.exe /i C:\TEMP\cmake.msi /qn && `
+ SETX PATH "%PATH%;C:\Program Files\CMake\bin" && `
+ DEL C:\TEMP\cmake.msi
+
+# Install boost (for the thrift runtime library build)
+ADD https://boost.teeks99.com/bin/1.69.0/boost_1_69_0-msvc-14.1-64.exe C:\TEMP\boost.exe
+RUN C:\TEMP\boost.exe /DIR="C:\Libraries\boost_1_69_0" /SILENT && `
+ DEL C:\TEMP\boost.exe
+
+# Install chocolatey
+RUN @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" `
+ -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command `
+ "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" `
+ && SETX PATH "%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
+
+# Install winflexbison (for the thrift compiler build)
+RUN choco install winflexbison3 -y
+
+# Install 7zip and curl (used by the libevent and zlib build scripts)
+RUN choco install 7zip curl -y
+
+# Install libevent
+COPY appveyor\build-libevent.bat C:\TEMP\build-libevent.bat
+ENV LIBEVENT_VERSION=2.1.8
+ENV WIN3P=C:\TEMP\WIN3P
+RUN C:\BuildTools\Common7\Tools\VsDevCmd.bat -arch=amd64 && `
+ MKDIR C:\TEMP\WIN3P && `
+ C:\TEMP\build-libevent.bat && `
+ MKDIR C:\Libraries\libevent-%LIBEVENT_VERSION% && `
+ MOVE C:\TEMP\WIN3P\libevent-%LIBEVENT_VERSION%-stable\include C:\Libraries\libevent-%LIBEVENT_VERSION% && `
+ MOVE C:\TEMP\WIN3P\libevent-%LIBEVENT_VERSION%-stable\lib C:\Libraries\libevent-%LIBEVENT_VERSION% && `
+ RMDIR /S /Q C:\TEMP\WIN3P
+
+# Install zlib
+COPY appveyor\build-zlib.bat C:\TEMP\build-zlib.bat
+ENV ZLIB_VERSION=1.2.11
+ENV WIN3P=C:\TEMP\WIN3P
+RUN C:\BuildTools\Common7\Tools\VsDevCmd.bat -arch=amd64 && `
+ MKDIR C:\TEMP\WIN3P && `
+ C:\TEMP\build-zlib.bat && `
+ MOVE C:\TEMP\WIN3P\zlib-inst C:\Libraries\zlib-%ZLIB_VERSION% && `
+ RMDIR /S /Q C:\TEMP\WIN3P
+
+# Install OpenSSL 1.1.0
+ADD http://slproweb.com/download/Win64OpenSSL-1_1_0j.exe C:\TEMP\openssl.exe
+RUN C:\TEMP\openssl.exe /silent && `
+ DEL C:\TEMP\openssl.exe
+
+# Install java
+RUN choco install jdk8 -y
+
+# Install haskell
+RUN choco install ghc -y
+
+# Install python3
+RUN choco install python3 -y
+
+# Install Adobe Flex 4.6 SDK and set FLEX_HOME so it can be found
+ADD http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip C:\Adobe\Flex\SDK\4.6\SDK.zip
+RUN CD C:\Adobe\Flex\SDK\4.6 && `
+ 7z x SDK.zip && `
+ DEL SDK.zip && `
+ SETX FLEX_HOME "C:\Adobe\Flex\SDK\4.6"
+
+# Start developer command prompt with any other commands specified.
+ENTRYPOINT C:\BuildTools\Common7\Tools\VsDevCmd.bat -arch=amd64 &&
+
+# Default to PowerShell if no other command specified.
+CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
diff --git a/src/jaegertracing/thrift/build/docker/msvc2017/README.md b/src/jaegertracing/thrift/build/docker/msvc2017/README.md
new file mode 100644
index 000000000..0c882d747
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/msvc2017/README.md
@@ -0,0 +1,50 @@
+# Building Thrift using Docker for Windows
+
+The build image is very large (just under 30GB) so plan accordingly.
+Once Microsoft supports build tools in nano, it should get better.
+
+Install Docker for Windows and switch to Windows container mode.
+
+Pull from docker hub:
+
+ PS C:\> docker pull thrift/thrift-build:msvc2017
+
+or build in a docker for windows environment:
+
+ PS C:\Thrift> docker build -t thrift/thrift-build:msvc2017 -f build\docker\msvc2017\Dockerfile build\
+
+The following directories are used inside the container:
+
+ C:\Build the out-of-tree build directory
+ C:\Install the install target directory
+ C:\Thrift the source tree
+
+You can override these as docker volumes if desired.
+
+### Compiler
+
+To build a portable windows thrift compiler (with a statically linked
+runtime) and get it placed into C:\install:
+
+ docker run -v C:\thrift:C:\thrift^
+ -v C:\install:C:\install^
+ --rm -t thrift/thrift-build:msvc2017^
+ C:\thrift\build\docker\msvc2017\build-compiler.bat
+
+The end result is a portable windows thrift compiler located at
+
+ C:\Install\bin\thrift.exe
+
+If you run it through the [Dependency Walker](http://www.dependencywalker.com/)
+you will see it only depends on KERNEL32.DLL which means the runtime is statically
+linked, so the executable is portable and self-contained. This is how the
+windows thrift compiler is built for each Apache Thrift release.
+
+### Libraries
+
+To build, test everything and get the C++ SDK placed into C:\install:
+
+ docker run -v C:\thrift:C:\thrift^
+ -v C:\install:C:\install^
+ -m 4096 --rm -t thrift/thrift-build:msvc2017^
+ C:\thrift\build\docker\msvc2017\build.bat \ No newline at end of file
diff --git a/src/jaegertracing/thrift/build/docker/msvc2017/build-compiler.bat b/src/jaegertracing/thrift/build/docker/msvc2017/build-compiler.bat
new file mode 100644
index 000000000..5534428b4
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/msvc2017/build-compiler.bat
@@ -0,0 +1,44 @@
+::
+:: Licensed 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.
+::
+
+::
+:: Build script example for inside the windows docker container
+::
+:: C:\build is the out-of-tree build directory
+:: C:\install is the location where artifacts are placed
+:: C:\thrift is where the sources are
+::
+
+:: Make and go into the out-of-tree directory
+IF NOT EXIST C:\build (MKDIR C:\build)
+cd c:\build
+
+:: Generate the out-of-tree build files
+cmake^
+ -DBOOST_ROOT=C:\Libraries\boost_1_69_0^
+ -DBOOST_LIBRARYDIR=C:\Libraries\boost_1_69_0\lib64-msvc-14.1^
+ -DBUILD_LIBRARIES=OFF^
+ -DCMAKE_BUILD_TYPE=Release^
+ -DCMAKE_INSTALL_PREFIX=C:\install^
+ -DWITH_MT=ON^
+ c:\thrift || EXIT /B
+
+:: Build
+cmake --build . --target thrift-compiler --config Release || EXIT /B
+
+:: Test
+cmake --build . --target check || EXIT /B
+
+:: Install
+cmake --build . --target install \ No newline at end of file
diff --git a/src/jaegertracing/thrift/build/docker/msvc2017/build.bat b/src/jaegertracing/thrift/build/docker/msvc2017/build.bat
new file mode 100644
index 000000000..018805bca
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/msvc2017/build.bat
@@ -0,0 +1,45 @@
+::
+:: Licensed 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.
+::
+
+::
+:: Build script example for inside the windows docker container
+::
+:: C:\build is the out-of-tree build directory
+:: C:\install is the location where artifacts are placed
+:: C:\thrift is where the sources are
+::
+
+:: Make and go into the out-of-tree directory
+IF NOT EXIST C:\build (MKDIR C:\build)
+cd c:\build
+
+:: Generate the out-of-tree build files
+cmake^
+ -DBOOST_ROOT=C:\Libraries\boost_1_69_0^
+ -DBOOST_LIBRARYDIR=C:\Libraries\boost_1_69_0\lib64-msvc-14.1^
+ -DFLEX_HOME=C:\Adobe\Flex\SDK\4.6^
+ -DLIBEVENT_ROOT=C:\Libraries\libevent-2.1.8^
+ -DZLIB_ROOT=C:\Libraries\zlib-1.2.11^
+ -DCMAKE_BUILD_TYPE=Release^
+ -DCMAKE_INSTALL_PREFIX=C:\install^
+ c:\thrift || EXIT /B
+
+:: Build
+cmake --build . --config Release || EXIT /B
+
+:: Test
+cmake --build . --target check || EXIT /B
+
+:: Install
+cmake --build . --target install
diff --git a/src/jaegertracing/thrift/build/docker/old/Vagrantfile b/src/jaegertracing/thrift/build/docker/old/Vagrantfile
new file mode 100644
index 000000000..5eac6e686
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/old/Vagrantfile
@@ -0,0 +1,59 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+#
+# Licensed 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.
+
+# Base system bootstrap script
+$bootstrap_script = <<__BOOTSTRAP__
+echo "Provisioning defaults"
+
+sudo apt-get update -y
+sudo apt-get upgrade -y
+
+# Install default packages
+sudo apt-get install -y build-essential curl git
+
+# Install latest Docker version
+sudo curl -sSL https://get.docker.io/gpg | sudo apt-key add -
+sudo echo "deb http://get.docker.io/ubuntu docker main" > /etc/apt/sources.list.d/docker.list
+sudo apt-get update -y
+sudo apt-get install -y linux-image-extra-`uname -r` aufs-tools
+sudo apt-get install -y lxc-docker
+
+echo "Finished provisioning defaults"
+__BOOTSTRAP__
+
+Vagrant.configure("2") do |config|
+ config.vm.box = "trusty64"
+ config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
+ config.ssh.forward_agent = true
+
+ config.vm.provider :virtualbox do |vbox|
+ vbox.customize ["modifyvm", :id, "--memory", "1024"]
+ vbox.customize ["modifyvm", :id, "--cpus", "2"]
+ end
+
+ # Setup the default bootstrap script for our ubuntu base box image
+ config.vm.provision "shell", inline: $bootstrap_script
+
+ # Setup the custom docker image from our Ubuntu Dockerfile
+ config.vm.provision "docker" do |d|
+ d.build_image "/vagrant/ubuntu", args: "-t thrift"
+ end
+
+ # Setup the custom docker image from our Centos Dockerfile
+ #config.vm.provision "docker" do |d|
+ # d.build_image "/vagrant/centos", args: "-t thrift-centos"
+ #end
+
+end
diff --git a/src/jaegertracing/thrift/build/docker/old/centos-7.3/Dockerfile b/src/jaegertracing/thrift/build/docker/old/centos-7.3/Dockerfile
new file mode 100644
index 000000000..096bbaa45
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/old/centos-7.3/Dockerfile
@@ -0,0 +1,199 @@
+# Licensed 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.
+
+# Apache Thrift Docker build environment for CentOS
+#
+# Known missing client libraries:
+# - dotnet (will update to 2.0.0 separately)
+# - haxe (not in centos)
+
+FROM centos:7.3.1611
+MAINTAINER Apache Thrift <dev@thrift.apache.org>
+
+RUN yum install -y epel-release
+
+# General dependencies
+RUN yum install -y \
+ autoconf \
+ bison \
+ bison-devel \
+ clang \
+ clang-analyzer \
+ cmake3 \
+ curl \
+ flex \
+ gcc \
+ gcc-c++ \
+ gdb \
+ git \
+ libtool \
+ m4 \
+ make \
+ tar \
+ unzip \
+ valgrind \
+ wget && \
+ ln -s /usr/bin/cmake3 /usr/bin/cmake && \
+ ln -s /usr/bin/cpack3 /usr/bin/cpack && \
+ ln -s /usr/bin/ctest3 /usr/bin/ctest
+
+# C++ dependencies
+RUN yum install -y \
+ boost-devel-static \
+ zlib-devel \
+ openssl-devel \
+ libevent-devel && \
+ cd /usr/lib64 && \
+ ln -s libboost_thread-mt.a libboost_thread.a
+
+# C# Dependencies
+RUN yum install -y \
+ mono-core \
+ mono-devel \
+ mono-web-devel \
+ mono-extras
+
+# D Dependencies
+RUN yum install -y http://downloads.dlang.org/releases/2.x/2.076.0/dmd-2.076.0-0.fedora.x86_64.rpm xdg-utils
+RUN curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
+ curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
+ mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
+ mv libevent-master/deimos/* openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv libevent-master/C/* openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf libevent-master openssl-master
+
+# Dart
+RUN cd /usr/local && \
+ wget -q https://storage.googleapis.com/dart-archive/channels/stable/release/1.24.2/sdk/dartsdk-linux-x64-release.zip && \
+ unzip -q dartsdk-linux-x64-release.zip && \
+ rm dartsdk-linux-x64-release.zip
+ENV PATH /usr/local/dart-sdk/bin:$PATH
+
+# Erlang Dependencies
+RUN curl -sSL http://packages.erlang-solutions.com/rpm/centos/erlang_solutions.repo -o /etc/yum.repos.d/erlang_solutions.repo && \
+ yum install -y \
+ erlang-kernel \
+ erlang-erts \
+ erlang-stdlib \
+ erlang-eunit \
+ erlang-rebar \
+ erlang-tools
+
+# GLibC Dependencies
+RUN yum install -y glib2-devel
+
+# Go Dependencies
+RUN curl -sSL https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz | tar -C /usr/local/ -xz
+ENV PATH /usr/local/go/bin:$PATH
+
+# Haskell Dependencies
+RUN yum -y install haskell-platform
+
+# Haxe Dependencies
+# Not in debian/stretch
+
+# Java Dependencies
+RUN yum install -y \
+ ant \
+ junit \
+ ant-junit \
+ java-1.8.0-openjdk-devel
+
+# Lua Dependencies
+# Lua in epel is too old (5.1.4, need 5.2) so we get the latest
+RUN yum install -y readline-devel && \
+ wget -q http://www.lua.org/ftp/lua-5.3.4.tar.gz && \
+ tar xzf lua-5.3.4.tar.gz && \
+ cd lua-5.3.4 && \
+ sed -i 's/CFLAGS= /CFLAGS= -fPIC /g' src/Makefile && \
+ make linux && \
+ make install && \
+ cd .. && \
+ rm -rf lua-5*
+
+# MinGW Dependencies
+RUN yum install -y \
+ mingw32-binutils \
+ mingw32-crt \
+ mingw32-nsis
+
+# Node.js Dependencies
+# Work around epel issue where they removed http-parser that nodejs depends on!
+RUN yum -y install https://opensource.enda.eu/packages/http-parser-2.7.1-3.el7.x86_64.rpm
+RUN yum install -y \
+ nodejs \
+ npm
+
+# Ocaml Dependencies
+RUN yum install -y \
+ ocaml \
+ ocaml-ocamldoc && \
+ wget -q https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin && \
+ opam init --yes && \
+ opam install --yes oasis && \
+ echo '. /root/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true' >> ~/.bashrc
+
+# Perl Dependencies
+RUN yum install -y \
+ perl \
+ perl-version \
+ perl-Bit-Vector \
+ perl-Class-Accessor \
+ perl-ExtUtils-MakeMaker \
+ perl-Test-Simple \
+ perl-IO-Socket-SSL \
+ perl-Net-SSLeay \
+ perl-Crypt-SSLeay
+
+# PHP Dependencies
+RUN yum install -y \
+ php \
+ php-devel \
+ php-pear \
+ re2c \
+ php-phpunit-PHPUnit \
+ bzip2
+
+# Python Dependencies
+RUN yum install -y \
+ python \
+ python-devel \
+ python-pip \
+ python-setuptools \
+ python34 \
+ python34-devel \
+ python34-pip \
+ python34-setuptools
+RUN pip2 install --upgrade pip
+RUN pip2 install --upgrade backports.ssl_match_hostname ipaddress setuptools six tornado tornado-testing twisted virtualenv zope-interface
+RUN pip3 install --upgrade pip
+RUN pip3 install --upgrade backports.ssl_match_hostname ipaddress setuptools six tornado tornado-testing twisted virtualenv zope-interface
+
+# Ruby Dependencies
+RUN yum install -y \
+ ruby \
+ ruby-devel \
+ rubygems && \
+ gem install bundler rake
+
+# Rust
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain 1.17.0
+ENV PATH /root/.cargo/bin:$PATH
+
+# Clean up
+RUN rm -rf /tmp/* && \
+ yum clean all
+
+ENV THRIFT_ROOT /thrift
+RUN mkdir -p $THRIFT_ROOT/src
+COPY Dockerfile $THRIFT_ROOT/
+WORKDIR $THRIFT_ROOT/src
diff --git a/src/jaegertracing/thrift/build/docker/old/debian-jessie/Dockerfile b/src/jaegertracing/thrift/build/docker/old/debian-jessie/Dockerfile
new file mode 100644
index 000000000..941b4bb42
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/old/debian-jessie/Dockerfile
@@ -0,0 +1,205 @@
+# Licensed 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.
+
+# Apache Thrift Docker build environment for Debian
+#
+# Known missing client libraries:
+# - dotnetcore
+# - rust
+
+FROM buildpack-deps:jessie-scm
+MAINTAINER Apache Thrift <dev@thrift.apache.org>
+
+ENV DEBIAN_FRONTEND noninteractive
+
+# Add apt sources
+# jessie-backports for cmake and some ruby bits
+RUN echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list
+
+# Dart
+RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
+ curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \
+ sed -i /etc/apt/sources.list.d/dart_stable.list -e 's/https:/http:/g'
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# General dependencies` \
+ bison \
+ build-essential \
+ clang \
+ debhelper \
+ flex \
+ pkg-config && \
+ apt-get -t jessie-backports install -y --no-install-recommends cmake
+
+RUN apt-get install -y --no-install-recommends \
+`# C++ dependencies` \
+ libboost-dev \
+ libboost-filesystem-dev \
+ libboost-program-options-dev \
+ libboost-system-dev \
+ libboost-test-dev \
+ libboost-thread-dev \
+ libevent-dev \
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
+
+RUN apt-get install -y --no-install-recommends \
+`# Java dependencies` \
+ ant \
+ ant-optional \
+ openjdk-7-jdk \
+ maven
+
+RUN apt-get install -y --no-install-recommends \
+`# Python dependencies` \
+ python-all \
+ python-all-dbg \
+ python-all-dev \
+ python-pip \
+ python-setuptools \
+ python-twisted \
+ python-zope.interface \
+ python3-all \
+ python3-all-dbg \
+ python3-all-dev \
+ python3-setuptools \
+ python3-pip
+
+RUN apt-get install -y --no-install-recommends \
+`# Ruby dependencies` \
+ ruby \
+ ruby-bundler \
+ ruby-dev \
+`# Perl dependencies` \
+ libbit-vector-perl \
+ libclass-accessor-class-perl \
+ libcrypt-ssleay-perl \
+ libio-socket-ssl-perl \
+ libnet-ssleay-perl
+
+RUN apt-get -t jessie-backports install -y ruby-bundler
+RUN apt-get install -y --no-install-recommends \
+`# Php dependencies` \
+ php5 \
+ php5-dev \
+ php5-cli \
+ php-pear \
+ re2c \
+ phpunit \
+`# GlibC dependencies` \
+ libglib2.0-dev
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# Erlang dependencies` \
+ erlang-base \
+ erlang-eunit \
+ erlang-dev \
+ erlang-tools \
+ rebar
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# Haskell dependencies` \
+ ghc \
+ cabal-install \
+`# Haxe dependencies` \
+ neko \
+ neko-dev \
+ libneko0
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# Node.js dependencies` \
+ nodejs \
+ nodejs-dev \
+ nodejs-legacy \
+ npm
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# CSharp dependencies` \
+ libmono-system-web2.0-cil \
+ mono-devel
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# D dependencies` \
+ xdg-utils \
+`# Dart dependencies` \
+ dart \
+`# Lua dependencies` \
+ lua5.2 \
+ lua5.2-dev \
+`# MinGW dependencies` \
+ mingw32 \
+ mingw32-binutils \
+`# mingw32-runtime` \
+ nsis \
+`# Clean up` \
+ && rm -rf /var/cache/apt/* && \
+ rm -rf /var/lib/apt/lists/* && \
+ rm -rf /tmp/* && \
+ rm -rf /var/tmp/*
+
+# Ruby
+RUN gem install bundler --no-ri --no-rdoc
+
+# Python optional dependencies
+RUN pip2 install -U ipaddress backports.ssl_match_hostname tornado
+RUN pip3 install -U backports.ssl_match_hostname tornado
+
+# Go
+RUN curl -sSL https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz | tar -C /usr/local/ -xz
+ENV PATH /usr/local/go/bin:$PATH
+
+# Haxe
+RUN mkdir -p /usr/lib/haxe && \
+ wget -O - https://github.com/HaxeFoundation/haxe/releases/download/3.2.1/haxe-3.2.1-linux64.tar.gz | \
+ tar -C /usr/lib/haxe --strip-components=1 -xz && \
+ ln -s /usr/lib/haxe/haxe /usr/bin/haxe && \
+ ln -s /usr/lib/haxe/haxelib /usr/bin/haxelib && \
+ mkdir -p /usr/lib/haxe/lib && \
+ chmod -R 777 /usr/lib/haxe/lib && \
+ haxelib setup /usr/lib/haxe/lib && \
+ haxelib install hxcpp
+
+# D
+RUN curl -sSL http://downloads.dlang.org/releases/2.x/2.070.0/dmd_2.070.0-0_amd64.deb -o /tmp/dmd_2.070.0-0_amd64.deb && \
+ dpkg -i /tmp/dmd_2.070.0-0_amd64.deb && \
+ rm /tmp/dmd_2.070.0-0_amd64.deb && \
+ curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
+ curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
+ mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
+ mv libevent-master/deimos/* openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv libevent-master/C/* openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf libevent-master openssl-master && \
+ echo 'gcc -Wl,--no-as-needed $*' > /usr/local/bin/gcc-dmd && \
+ chmod 755 /usr/local/bin/gcc-dmd && \
+ echo 'CC=/usr/local/bin/gcc-dmd' >> /etc/dmd.conf
+
+# Dart
+ENV PATH /usr/lib/dart/bin:$PATH
+
+# OCaml
+RUN echo 'deb http://ppa.launchpad.net/avsm/ppa/ubuntu trusty main' > /etc/apt/sources.list.d/avsm-official-ocaml.list && \
+ gpg --keyserver keyserver.ubuntu.com --recv 61707B09 && \
+ gpg --export --armor 61707B09 | apt-key add - && \
+ apt-get update && \
+ apt-get install -y ocaml opam && \
+ opam init && \
+ opam install oasis
+
+# Force utf8 locale to successfully build Haskell tf-random
+ENV LC_ALL C.UTF-8
+
+ENV THRIFT_ROOT /thrift
+RUN mkdir -p $THRIFT_ROOT/src
+COPY Dockerfile $THRIFT_ROOT/
+WORKDIR $THRIFT_ROOT/src
diff --git a/src/jaegertracing/thrift/build/docker/old/debian-stretch/Dockerfile b/src/jaegertracing/thrift/build/docker/old/debian-stretch/Dockerfile
new file mode 100644
index 000000000..503eecd42
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/old/debian-stretch/Dockerfile
@@ -0,0 +1,231 @@
+# Licensed 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.
+
+# Apache Thrift Docker build environment for Debian Stretch
+#
+# Known issues:
+# - d: deimos for libevent and openssl disabled - build errors
+# - dotnetcore, because netcore is for 1.0.0-preview and 2.0.0 is out
+# - rust: cargo not in debian repo - perhaps not needed?
+
+FROM buildpack-deps:stretch-scm
+MAINTAINER Apache Thrift <dev@thrift.apache.org>
+
+ENV DEBIAN_FRONTEND noninteractive
+
+### Add apt repos
+
+RUN apt-get update && apt-get install -y --no-install-recommends apt apt-transport-https curl wget apt-utils
+
+# D
+RUN wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list && \
+ apt-get update && apt-get -y --allow-unauthenticated install --reinstall d-apt-keyring
+
+# Dart
+RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
+ curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list && \
+ sed -i /etc/apt/sources.list.d/dart_stable.list -e 's/https:/http:/g'
+
+# dotnet (core) 2.0.0 - project isn't ready for this yet:
+# RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg && \
+# echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list
+
+# node.js (this step runs apt-get update internally)
+RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
+
+
+### install general dependencies
+RUN apt-get install -y --no-install-recommends \
+`# General dependencies` \
+ bash-completion \
+ bison \
+ build-essential \
+ clang \
+ cmake \
+ debhelper \
+ flex \
+ gdb \
+ ninja-build \
+ pkg-config \
+ valgrind \
+ vim
+
+
+### languages
+
+RUN apt-get install -y --no-install-recommends \
+`# C++ dependencies` \
+ libboost-dev \
+ libboost-filesystem-dev \
+ libboost-program-options-dev \
+ libboost-system-dev \
+ libboost-test-dev \
+ libboost-thread-dev \
+ libevent-dev \
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
+
+RUN apt-get install -y --no-install-recommends \
+`# csharp (mono) dependencies` \
+ mono-devel
+
+RUN apt-get install -y --no-install-recommends \
+`# D dependencies` \
+ dmd-bin \
+ libevent-dev \
+ libssl-dev \
+ xdg-utils
+# libevent deimos disabled - build errors
+# RUN mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
+# curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
+# mv libevent-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+# mv libevent-master/C/* /usr/include/dmd/druntime/import/C/ && \
+# rm -rf libevent-master
+# openssl deimos doesn't work with openssl-1.1.0 - disabling it for now:
+# RUN curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
+# mv openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+# mv openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
+# rm -rf openssl-master
+
+RUN apt-get install -y --no-install-recommends \
+`# Dart dependencies` \
+ dart
+ENV PATH /usr/lib/dart/bin:$PATH
+
+# project isn't ready for this quite yet:
+# RUN apt-get install -y --no-install-recommends \
+# `# dotnet core dependencies` \
+# dotnet-sdk-2.0.0
+
+RUN apt-get install -y --no-install-recommends \
+`# Erlang dependencies` \
+ erlang-base \
+ erlang-eunit \
+ erlang-dev \
+ erlang-tools \
+ rebar
+
+RUN apt-get install -y --no-install-recommends \
+`# GlibC dependencies` \
+ libglib2.0-dev
+
+RUN apt-get install -y --no-install-recommends \
+`# golang (go) dependencies` \
+ golang-go
+
+RUN apt-get install -y --no-install-recommends \
+`# Haskell dependencies` \
+ ghc \
+ cabal-install
+
+RUN apt-get install -y --no-install-recommends \
+`# Haxe dependencies` \
+ haxe \
+ neko \
+ neko-dev
+RUN haxelib setup --always /usr/share/haxe/lib && \
+ haxelib install --always hxcpp
+
+RUN apt-get install -y --no-install-recommends \
+`# Java dependencies` \
+ ant \
+ ant-optional \
+ openjdk-8-jdk \
+ maven
+
+RUN apt-get install -y --no-install-recommends \
+`# Lua dependencies` \
+ lua5.2 \
+ lua5.2-dev
+# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
+# same for debian stretch
+# lua5.3 does not install alternatives so stick with 5.2 here
+
+RUN apt-get install -y --no-install-recommends \
+`# Node.js dependencies` \
+ nodejs
+
+RUN apt-get install -y --no-install-recommends \
+`# OCaml dependencies` \
+ ocaml \
+ opam && \
+ opam init --yes && \
+ opam install --yes oasis
+
+RUN apt-get install -y --no-install-recommends \
+`# Perl dependencies` \
+ libbit-vector-perl \
+ libclass-accessor-class-perl \
+ libcrypt-ssleay-perl \
+ libio-socket-ssl-perl \
+ libnet-ssleay-perl
+
+RUN apt-get install -y --no-install-recommends \
+`# Php dependencies` \
+ php7.0 \
+ php7.0-cli \
+ php7.0-dev \
+ php-pear \
+ re2c \
+ phpunit
+
+RUN apt-get install -y --no-install-recommends \
+`# Python dependencies` \
+ python-all \
+ python-all-dbg \
+ python-all-dev \
+ python-backports.ssl-match-hostname \
+ python-ipaddress \
+ python-pip \
+ python-setuptools \
+ python-six \
+ python-tornado \
+ python-twisted \
+ python-wheel \
+ python-zope.interface \
+ python3-all \
+ python3-all-dbg \
+ python3-all-dev \
+ python3-setuptools \
+ python3-six \
+ python3-tornado \
+ python3-twisted \
+ python3-wheel \
+ python3-zope.interface && \
+ pip install --upgrade backports.ssl_match_hostname
+
+RUN apt-get install -y --no-install-recommends \
+`# Ruby dependencies` \
+ ruby \
+ ruby-dev \
+ ruby-bundler
+RUN gem install bundler --no-ri --no-rdoc
+
+RUN apt-get install -y --no-install-recommends \
+`# Rust dependencies` \
+ rustc
+
+# Update anything else left hanging
+RUN apt-get dist-upgrade -y
+
+# Clean up
+RUN rm -rf /var/cache/apt/* && \
+ rm -rf /var/lib/apt/lists/* && \
+ rm -rf /tmp/* && \
+ rm -rf /var/tmp/*
+
+ENV THRIFT_ROOT /thrift
+RUN mkdir -p $THRIFT_ROOT/src
+COPY Dockerfile $THRIFT_ROOT/
+WORKDIR $THRIFT_ROOT/src
diff --git a/src/jaegertracing/thrift/build/docker/old/ubuntu-artful/Dockerfile b/src/jaegertracing/thrift/build/docker/old/ubuntu-artful/Dockerfile
new file mode 100644
index 000000000..abe84d11c
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/old/ubuntu-artful/Dockerfile
@@ -0,0 +1,270 @@
+# Licensed 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.
+
+#
+# Apache Thrift Docker build environment for Ubuntu Artful
+# Using all stock Ubuntu Artful packaging except for:
+# - cpp: stock boost 1.62 in artful has a nasty bug so we use stock boost 1.63
+# - d: dmd does not come with Ubuntu
+# - dart: does not come with Ubuntu. Pinned to last 1.x release
+# - dotnet: does not come with Ubuntu
+# - haxe: version 3.4.2 that comes with Ubuntu cores in our CI build
+# - go: artful comes with 1.9, we want the latest (supported)
+# - nodejs: want v8, artful comes with v6
+#
+
+FROM buildpack-deps:artful-scm
+MAINTAINER Apache Thrift <dev@thrift.apache.org>
+ENV DEBIAN_FRONTEND noninteractive
+
+### Add apt repos
+
+RUN apt-get update && \
+ apt-get dist-upgrade -y && \
+ apt-get install -y --no-install-recommends \
+ apt \
+ apt-transport-https \
+ apt-utils \
+ curl \
+ dirmngr \
+ software-properties-common \
+ wget
+
+# csharp (mono) - if we ever want a later version
+# RUN echo "deb http://download.mono-project.com/repo/debian xenial main" | tee /etc/apt/sources.list.d/mono.list && \
+# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A6A19B38D3D831EF
+
+# Dart
+RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
+ curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > \
+ /etc/apt/sources.list.d/dart_stable.list
+ENV DART_VERSION 1.24.3-1
+
+# dotnet (netcore)
+RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg && \
+ echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-artful-prod artful main" > \
+ /etc/apt/sources.list.d/dotnetdev.list
+
+# haxe (https://haxe.org/download/linux/)
+RUN add-apt-repository ppa:haxe/releases -y
+
+# node.js
+RUN curl -sL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
+ echo "deb https://deb.nodesource.com/node_8.x artful main" | tee /etc/apt/sources.list.d/nodesource.list
+
+### install general dependencies
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# General dependencies` \
+ bash-completion \
+ bison \
+ build-essential \
+ clang \
+ cmake \
+ debhelper \
+ flex \
+ gdb \
+ llvm \
+ ninja-build \
+ pkg-config \
+ valgrind \
+ vim
+ENV PATH /usr/lib/llvm-3.8/bin:$PATH
+
+# boost-1.62 has a terrible bug in boost::test, see https://svn.boost.org/trac10/ticket/12507
+RUN apt-get install -y --no-install-recommends \
+`# C++ dependencies` \
+ libboost1.63-all-dev \
+ libevent-dev \
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
+
+RUN apt-get install -y --no-install-recommends \
+`# csharp (mono) dependencies` \
+ mono-devel
+
+ENV SBCL_VERSION 1.4.5
+RUN \
+`# Common Lisp (sbcl) dependencies` \
+ curl --version && \
+ curl -O -J -L https://kent.dl.sourceforge.net/project/sbcl/sbcl/${SBCL_VERSION}/sbcl-${SBCL_VERSION}-x86-64-linux-binary.tar.bz2 && \
+ tar xjf sbcl-${SBCL_VERSION}-x86-64-linux-binary.tar.bz2 && \
+ cd sbcl-${SBCL_VERSION}-x86-64-linux && \
+ ./install.sh && \
+ sbcl --version && \
+ rm -rf sbcl*
+
+ENV D_VERSION 2.080.0
+ENV DMD_DEB dmd_2.080.0-0_amd64.deb
+RUN \
+`# D dependencies` \
+ wget -q http://downloads.dlang.org/releases/2.x/${D_VERSION}/${DMD_DEB} && \
+ dpkg --install ${DMD_DEB} && \
+ rm -f ${DMD_DEB} && \
+ mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
+ curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
+ mv libevent-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv libevent-master/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf libevent-master && \
+ curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
+ mv openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf openssl-master
+
+RUN apt-get install -y --no-install-recommends \
+ `# Dart dependencies` \
+ dart=$DART_VERSION
+ENV PATH /usr/lib/dart/bin:$PATH
+
+RUN apt-get install -y --no-install-recommends \
+`# dotnet core dependencies` \
+ dotnet-sdk-2.1.4
+
+RUN apt-get install -y --no-install-recommends \
+`# Erlang dependencies` \
+ erlang-base \
+ erlang-eunit \
+ erlang-dev \
+ erlang-tools \
+ rebar
+
+RUN apt-get install -y --no-install-recommends \
+`# GlibC dependencies` \
+ libglib2.0-dev
+
+# golang
+ENV GOLANG_VERSION 1.10
+ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
+ENV GOLANG_DOWNLOAD_SHA256 b5a64335f1490277b585832d1f6c7f8c6c11206cba5cd3f771dcb87b98ad1a33
+RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz && \
+ echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - && \
+ tar -C /usr/local -xzf golang.tar.gz && \
+ ln -s /usr/local/go/bin/go /usr/local/bin && \
+ rm golang.tar.gz
+
+RUN apt-get install -y --no-install-recommends \
+`# Haskell dependencies` \
+ ghc \
+ cabal-install
+
+RUN apt-get install -y --no-install-recommends \
+`# Haxe dependencies` \
+ haxe \
+ neko \
+ neko-dev && \
+ haxelib setup --always /usr/share/haxe/lib && \
+ haxelib install --always hxcpp 2>&1 > /dev/null
+
+RUN apt-get install -y --no-install-recommends \
+`# Java dependencies` \
+ ant \
+ ant-optional \
+ openjdk-8-jdk \
+ maven
+
+RUN apt-get install -y --no-install-recommends \
+`# Lua dependencies` \
+ lua5.2 \
+ lua5.2-dev
+# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
+# lua5.3 does not install alternatives!
+# need to update our luasocket code, lua doesn't have luaL_openlib any more
+
+RUN apt-get install -y --no-install-recommends \
+`# Node.js dependencies` \
+ nodejs
+
+# Test dependencies for running puppeteer
+RUN apt-get install -y --no-install-recommends \
+`# JS dependencies` \
+ libxss1
+
+RUN apt-get install -y --no-install-recommends \
+`# OCaml dependencies` \
+ ocaml \
+ opam && \
+ opam init --yes && \
+ opam install --yes oasis
+
+RUN apt-get install -y --no-install-recommends \
+`# Perl dependencies` \
+ libbit-vector-perl \
+ libclass-accessor-class-perl \
+ libcrypt-ssleay-perl \
+ libio-socket-ssl-perl \
+ libnet-ssleay-perl
+
+RUN apt-get install -y --no-install-recommends \
+`# Php dependencies` \
+ php \
+ php-cli \
+ php-dev \
+ php-pear \
+ re2c \
+ composer
+
+RUN apt-get install -y --no-install-recommends \
+`# Python dependencies` \
+ python-all \
+ python-all-dbg \
+ python-all-dev \
+ python-ipaddress \
+ python-pip \
+ python-setuptools \
+ python-six \
+ python-tornado \
+ python-twisted \
+ python-wheel \
+ python-zope.interface && \
+ pip install --upgrade backports.ssl_match_hostname
+
+RUN apt-get install -y --no-install-recommends \
+`# Python3 dependencies` \
+ python3-all \
+ python3-all-dbg \
+ python3-all-dev \
+ python3-pip \
+ python3-setuptools \
+ python3-six \
+ python3-tornado \
+ python3-twisted \
+ python3-wheel \
+ python3-zope.interface
+
+RUN apt-get install -y --no-install-recommends \
+`# Ruby dependencies` \
+ ruby \
+ ruby-dev \
+ ruby-bundler
+
+RUN apt-get install -y --no-install-recommends \
+`# Rust dependencies` \
+ cargo \
+ rustc
+
+RUN apt-get install -y --no-install-recommends \
+`# Static Code Analysis dependencies` \
+ cppcheck \
+ sloccount && \
+ pip install flake8
+
+# Clean up
+RUN rm -rf /var/cache/apt/* && \
+ rm -rf /var/lib/apt/lists/* && \
+ rm -rf /tmp/* && \
+ rm -rf /var/tmp/*
+
+ENV THRIFT_ROOT /thrift
+RUN mkdir -p $THRIFT_ROOT/src
+COPY Dockerfile $THRIFT_ROOT/
+WORKDIR $THRIFT_ROOT/src
diff --git a/src/jaegertracing/thrift/build/docker/old/ubuntu-trusty/Dockerfile b/src/jaegertracing/thrift/build/docker/old/ubuntu-trusty/Dockerfile
new file mode 100644
index 000000000..a8e4d3baa
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/old/ubuntu-trusty/Dockerfile
@@ -0,0 +1,244 @@
+# Licensed 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.
+
+#
+# Apache Thrift Docker build environment for Ubuntu Trusty
+# Using all stock Ubuntu Trusty packaging except for:
+# - d: does not come with Ubuntu so we're installing 2.070.0
+# - dart: does not come with Ubuntu so we're installing 1.20.1
+# - dotnetcore, disabled because netcore is for 1.0.0-preview and 2.0.0 is out
+# - haxe, disabled because the distro comes with 3.0.0 and it cores while installing
+# - node.js, disabled because it is at 0.10.0 in the distro which is too old (need 4+)
+# - ocaml, disabled because it fails to install properly
+#
+
+FROM buildpack-deps:trusty-scm
+MAINTAINER Apache Thrift <dev@thrift.apache.org>
+ENV DEBIAN_FRONTEND noninteractive
+
+### Add apt repos
+
+RUN apt-get update && \
+ apt-get dist-upgrade -y && \
+ apt-get install -y --no-install-recommends \
+ apt \
+ apt-transport-https \
+ apt-utils \
+ curl \
+ dirmngr \
+ software-properties-common \
+ wget
+
+# D
+RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EBCF975E5BA24D5E && \
+ wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list && \
+ wget -qO - https://dlang.org/d-keyring.gpg | apt-key add -
+
+# Dart
+RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
+ curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > \
+ /etc/apt/sources.list.d/dart_stable.list
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# General dependencies` \
+ bash-completion \
+ bison \
+ build-essential \
+ clang \
+ cmake \
+ debhelper \
+ flex \
+ gdb \
+ llvm \
+ ninja-build \
+ pkg-config \
+ valgrind \
+ vim
+ENV PATH /usr/lib/llvm-3.8/bin:$PATH
+
+RUN apt-get install -y --no-install-recommends \
+`# C++ dependencies` \
+ libboost-all-dev \
+ libevent-dev \
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
+
+RUN apt-get install -y --no-install-recommends \
+`# csharp (mono) dependencies` \
+ mono-devel
+
+RUN apt-get install -y --no-install-recommends \
+`# D dependencies` \
+ dmd-bin=2.070.2-0 \
+ libphobos2-dev=2.070.2-0 \
+ dub \
+ dfmt \
+ dscanner \
+ xdg-utils
+RUN mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
+ curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
+ mv libevent-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv libevent-master/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf libevent-master
+RUN curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/master.tar.gz| tar xz && \
+ mv openssl-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv openssl-master/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf openssl-master
+
+RUN apt-get install -y --no-install-recommends \
+`# Dart dependencies` \
+ dart=1.20.1-1
+ENV PATH /usr/lib/dart/bin:$PATH
+
+RUN apt-get install -y --no-install-recommends \
+`# Erlang dependencies` \
+ erlang-base \
+ erlang-eunit \
+ erlang-dev \
+ erlang-tools \
+ rebar
+
+RUN apt-get install -y --no-install-recommends \
+`# GlibC dependencies` \
+ libglib2.0-dev
+
+# golang
+ENV GOLANG_VERSION 1.7.6
+ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
+ENV GOLANG_DOWNLOAD_SHA256 ad5808bf42b014c22dd7646458f631385003049ded0bb6af2efc7f1f79fa29ea
+RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz && \
+ echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - && \
+ tar -C /usr/local -xzf golang.tar.gz && \
+ ln -s /usr/local/go/bin/go /usr/local/bin && \
+ rm golang.tar.gz
+
+RUN apt-get install -y --no-install-recommends \
+`# Haskell dependencies` \
+ ghc \
+ cabal-install
+
+# disabled because it cores while installing
+# RUN apt-get install -y --no-install-recommends \
+# `# Haxe dependencies` \
+# haxe \
+# neko \
+# neko-dev && \
+# haxelib setup /usr/share/haxe/lib && \
+# haxelib install hxcpp 3.2.102
+
+RUN apt-get install -y --no-install-recommends \
+`# Java dependencies` \
+ ant \
+ ant-optional \
+ openjdk-7-jdk \
+ maven
+
+RUN apt-get install -y --no-install-recommends \
+`# Lua dependencies` \
+ lua5.1 \
+ lua5.1-dev
+
+# disabled because it is too old
+# RUN apt-get install -y --no-install-recommends \
+# `# Node.js dependencies` \
+# nodejs \
+# npm
+
+# disabled because it fails to install properly
+# RUN apt-get install -y --no-install-recommends \
+# `# OCaml dependencies` \
+# ocaml \
+# opam && \
+# opam init --yes && \
+# opam install --yes oasis
+
+RUN apt-get install -y --no-install-recommends \
+`# Perl dependencies` \
+ libbit-vector-perl \
+ libclass-accessor-class-perl \
+ libcrypt-ssleay-perl \
+ libio-socket-ssl-perl \
+ libnet-ssleay-perl
+
+RUN apt-get install -y --no-install-recommends \
+`# Php dependencies` \
+ php5 \
+ php5-cli \
+ php5-dev \
+ php-pear \
+ re2c && \
+ wget https://getcomposer.org/installer -O - -q | php -- --quiet --install-dir=/usr/local/bin/ --filename=composer
+
+RUN apt-get install -y --no-install-recommends \
+`# Python dependencies` \
+ python-all \
+ python-all-dbg \
+ python-all-dev \
+ python-pip \
+ python-setuptools \
+ python-six \
+ python-twisted \
+ python-wheel \
+ python-zope.interface \
+ python3-all \
+ python3-all-dbg \
+ python3-all-dev \
+ python3-pip \
+ python3-setuptools \
+ python3-six \
+ python3-wheel \
+ python3-zope.interface && \
+ pip install -U ipaddress backports.ssl_match_hostname tornado && \
+ pip3 install -U backports.ssl_match_hostname tornado
+# installing tornado by pip/pip3 instead of debian package
+# if we install the debian package, the build fails in py2
+
+RUN apt-get install -y --no-install-recommends \
+`# Ruby dependencies` \
+ ruby \
+ ruby-dev \
+ ruby-bundler
+RUN gem install bundler --no-ri --no-rdoc
+
+RUN apt-get install -y --no-install-recommends \
+`# Rust dependencies` \
+ cargo \
+ rustc
+
+RUN apt-get install -y --no-install-recommends \
+`# Static Code Analysis dependencies` \
+ cppcheck \
+ sloccount && \
+ pip install flake8
+
+# Install BouncyCastle provider to fix Java builds issues with JDK 7
+# Builds accessing repote repositories fail as seen here: https://github.com/travis-ci/travis-ci/issues/8503
+RUN apt-get install -y --no-install-recommends \
+`# BouncyCastle JCE Provider dependencies` \
+ libbcprov-java && \
+ ln -s /usr/share/java/bcprov.jar /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/bcprov.jar && \
+ awk -F . -v OFS=. 'BEGIN{n=2}/^security\.provider/ {split($3, posAndEquals, "=");$3=n++"="posAndEquals[2];print;next} 1' /etc/java-7-openjdk/security/java.security > /tmp/java.security && \
+ echo "security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider" >> /tmp/java.security && \
+ mv /tmp/java.security /etc/java-7-openjdk/security/java.security
+
+# Clean up
+RUN rm -rf /var/cache/apt/* && \
+ rm -rf /var/lib/apt/lists/* && \
+ rm -rf /tmp/* && \
+ rm -rf /var/tmp/*
+
+ENV THRIFT_ROOT /thrift
+RUN mkdir -p $THRIFT_ROOT/src
+COPY Dockerfile $THRIFT_ROOT/
+WORKDIR $THRIFT_ROOT/src
diff --git a/src/jaegertracing/thrift/build/docker/refresh.sh b/src/jaegertracing/thrift/build/docker/refresh.sh
new file mode 100755
index 000000000..08cbc91e1
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/refresh.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+#
+# 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.
+#
+
+#
+# The build has two stages: "docker" and "test"
+# The "docker" stage is meant to rebuild the docker images
+# if needed. If we cannot push that result however then
+# there is no reason to do anything.
+# The "test" stage is an actual test job. Even if the docker
+# image doesn't match what's in the repo, we still build
+# the image so the build job can run properly.
+#
+
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+DOCKER_TAG=$DOCKER_REPO:$DISTRO
+
+function dockerfile_changed {
+ # image may not exist yet, so we have to let it fail silently:
+ docker pull $DOCKER_TAG || true
+ docker run $DOCKER_TAG bash -c 'cd .. && sha512sum Dockerfile' > .Dockerfile.sha512
+ sha512sum -c .Dockerfile.sha512
+}
+
+#
+# If this build has no DOCKER_PASS and it is in the docker stage
+# then there's no reason to do any processing because we cannot
+# push the result if the Dockerfile changed.
+#
+
+if [[ "$TRAVIS_BUILD_STAGE" == "docker" ]] && [[ -z "$DOCKER_PASS" ]]; then
+ echo Detected docker stage build and no defined DOCKER_PASS, this build job will be skipped.
+ echo Subsequent jobs in the test stage may each rebuild the docker image.
+ exit 0
+fi
+
+
+pushd ${SCRIPT_DIR}/$DISTRO
+if dockerfile_changed; then
+ echo Dockerfile has not changed. No need to rebuild.
+ exit 0
+else
+ echo Dockerfile has changed.
+fi
+popd
+
+#
+# Dockerfile has changed - rebuild it for the current build job.
+# If it is a "docker" stage build then we want to push it back
+# to the DOCKER_REPO. If it is a "test" stage build then we do
+# not. If nobody defined a DOCKER_PASS then it doesn't matter.
+#
+
+echo Rebuilding docker image $DISTRO
+docker build --tag $DOCKER_TAG build/docker/$DISTRO
+
+if [[ "$TRAVIS_BUILD_STAGE" == "docker" ]] && [[ ! -z "$DOCKER_USER" ]] && [[ ! -z "$DOCKER_PASS" ]]; then
+ echo Pushing docker image $DOCKER_TAG
+ docker login -u $DOCKER_USER -p $DOCKER_PASS
+ docker push $DOCKER_TAG
+else
+ echo Not pushing docker image: either not a docker stage build job, or one of DOCKER_USER or DOCKER_PASS is undefined.
+fi
+
diff --git a/src/jaegertracing/thrift/build/docker/run.sh b/src/jaegertracing/thrift/build/docker/run.sh
new file mode 100755
index 000000000..1fe19d563
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/run.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+# 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.
+#
+
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+DOCKER_TAG=$DOCKER_REPO:$DISTRO
+
+printenv | sort
+
+docker run --net=host -e BUILD_LIBS="$BUILD_LIBS" $BUILD_ENV -v $(pwd):/thrift/src \
+ -it $DOCKER_TAG build/docker/scripts/$SCRIPT $BUILD_ARG
+
diff --git a/src/jaegertracing/thrift/build/docker/scripts/autotools.sh b/src/jaegertracing/thrift/build/docker/scripts/autotools.sh
new file mode 100755
index 000000000..8388f728c
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/autotools.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -ev
+
+./bootstrap.sh
+./configure $*
+make check -j3
diff --git a/src/jaegertracing/thrift/build/docker/scripts/cmake.sh b/src/jaegertracing/thrift/build/docker/scripts/cmake.sh
new file mode 100755
index 000000000..eb384d552
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/cmake.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -ev
+
+CMAKE_FLAGS=$*
+MAKEPROG=make
+
+if ninja --version >/dev/null 2>&1; then
+ MAKEPROG=ninja
+ CMAKE_FLAGS="-GNinja $CMAKE_FLAGS"
+fi
+
+mkdir -p cmake_build && cd cmake_build
+cmake $CMAKE_FLAGS ..
+for LIB in $BUILD_LIBS; do
+ if ! grep "^BUILD_${LIB}:BOOL=ON$" CMakeCache.txt ; then
+ echo "failed to configure $LIB"
+ exit 1
+ fi
+done
+$MAKEPROG -j3
+cpack
+ctest -VV
diff --git a/src/jaegertracing/thrift/build/docker/scripts/coverity.sh b/src/jaegertracing/thrift/build/docker/scripts/coverity.sh
new file mode 100755
index 000000000..ecc7a282e
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/coverity.sh
@@ -0,0 +1,40 @@
+#! /bin/bash
+#
+# This script allows you to run coverity on the project and submit the
+# results. Do this inside the docker build container. Only works if
+# you are a coverity scan thrift project admin with access to the
+# necessary security token.
+#
+# Environment Variables
+#
+# COVERITY_SCAN_NOTIFICATION_EMAIL - email address to notify
+# COVERITY_SCAN_TOKEN - the Coverity Scan token (should be secure)
+# VERSION - the version to report we scanned
+
+set -ex
+
+wget -nv https://entrust.com/root-certificates/entrust_l1k.cer -O /tmp/scanca.cer
+
+pushd /tmp
+if [[ "$1" != "--skipdownload" ]]; then
+ rm -rf coverity_tool.tgz cov-analysis*
+ wget -nv -O coverity_tool.tgz https://scan.coverity.com/download/cxx/linux64 --post-data "project=thrift&token=$COVERITY_SCAN_TOKEN"
+ tar xzf coverity_tool.tgz
+fi
+COVBIN=$(echo $(pwd)/cov-analysis*/bin)
+export PATH=$COVBIN:$PATH
+popd
+
+./bootstrap.sh
+./configure $*
+rm -rf cov-int/
+cov-build --dir cov-int make check -j3
+tail -50 cov-int/build-log.txt
+tar cJf cov-int.tar.xz cov-int/
+curl --cacert /tmp/scanca.cer \
+ --form token="$COVERITY_SCAN_TOKEN" \
+ --form email="$COVERITY_SCAN_NOTIFICATION_EMAIL" \
+ --form file=@cov-int.tar.xz \
+ --form version="$VERSION" \
+ --form description="thrift master" \
+ https://scan.coverity.com/builds?project=thrift
diff --git a/src/jaegertracing/thrift/build/docker/scripts/covscan.sh b/src/jaegertracing/thrift/build/docker/scripts/covscan.sh
new file mode 100755
index 000000000..cb3f283eb
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/covscan.sh
@@ -0,0 +1,50 @@
+#
+# Coverity Scan Travis build script
+# To run this interactively, set the environment variables yourself,
+# and run this inside a docker container.
+#
+# Command-Line Arguments
+#
+# --skipdownload to skip re-downloading the Coverity Scan build package (large)
+#
+# Environment Variables (required)
+#
+# COVERITY_SCAN_NOTIFICATION_EMAIL - email address to notify
+# COVERITY_SCAN_TOKEN - the Coverity Scan token (should be secure)
+#
+# Environment Variables (defaulted)
+#
+# COVERITY_SCAN_BUILD_COMMAND - defaults to "build/docker/scripts/autotools.sh"
+# COVERITY_SCAN_DESCRIPTION - defaults to TRAVIS_BRANCH or "master" if empty
+# COVERITY_SCAN_PROJECT - defaults to "thrift"
+
+set -ex
+
+COVERITY_SCAN_BUILD_COMMAND=${COVERITY_SCAN_BUILD_COMMAND:-build/docker/scripts/autotools.sh}
+COVERITY_SCAN_DESCRIPTION=${COVERITY_SCAN_DESCRIPTION:-${TRAVIS_BRANCH:-master}}
+COVERITY_SCAN_PROJECT=${COVERITY_SCAN_PROJECT:-thrift}
+
+# download the coverity scan package
+
+pushd /tmp
+if [[ "$1" != "--skipdownload" ]]; then
+ rm -rf coverity_tool.tgz cov-analysis*
+ wget https://scan.coverity.com/download/linux64 --post-data "token=$COVERITY_SCAN_TOKEN&project=$COVERITY_SCAN_PROJECT" -O coverity_tool.tgz
+ tar xzf coverity_tool.tgz
+fi
+COVBIN=$(echo $(pwd)/cov-analysis*/bin)
+export PATH=$COVBIN:$PATH
+popd
+
+# build the project with coverity scan
+
+rm -rf cov-int/
+cov-build --dir cov-int $COVERITY_SCAN_BUILD_COMMAND
+tar cJf cov-int.tar.xz cov-int/
+curl --form token="$COVERITY_SCAN_TOKEN" \
+ --form email="$COVERITY_SCAN_NOTIFICATION_EMAIL" \
+ --form file=@cov-int.tar.xz \
+ --form version="$(git describe --tags)" \
+ --form description="$COVERITY_SCAN_DESCRIPTION" \
+ https://scan.coverity.com/builds?project="$COVERITY_SCAN_PROJECT"
+
diff --git a/src/jaegertracing/thrift/build/docker/scripts/cross-test.sh b/src/jaegertracing/thrift/build/docker/scripts/cross-test.sh
new file mode 100755
index 000000000..43581a5f3
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/cross-test.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -ev
+
+./bootstrap.sh
+./configure --enable-tutorial=no
+make -j3 precross
+
+set +e
+make cross$1
+
+RET=$?
+if [ $RET -ne 0 ]; then
+ cat test/log/unexpected_failures.log
+fi
+
+exit $RET
diff --git a/src/jaegertracing/thrift/build/docker/scripts/dpkg.sh b/src/jaegertracing/thrift/build/docker/scripts/dpkg.sh
new file mode 100755
index 000000000..3ba0cd482
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/dpkg.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -ev
+
+dpkg-buildpackage -tc -us -uc
+ls -al ..
diff --git a/src/jaegertracing/thrift/build/docker/scripts/make-dist.sh b/src/jaegertracing/thrift/build/docker/scripts/make-dist.sh
new file mode 100755
index 000000000..5a3681e18
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/make-dist.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -ev
+
+./bootstrap.sh
+./configure $*
+make dist
+tar xvf thrift-*.tar.gz
+cd thrift-*
+./build/docker/scripts/cmake.sh
diff --git a/src/jaegertracing/thrift/build/docker/scripts/sca.sh b/src/jaegertracing/thrift/build/docker/scripts/sca.sh
new file mode 100755
index 000000000..42128fc67
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/sca.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -ev
+
+#
+# Generate thrift files so the static code analysis includes an analysis
+# of the files the thrift compiler spits out. If running interactively
+# set the NOBUILD environment variable to skip the boot/config/make phase.
+#
+
+if [[ -z "$NOBUILD" ]]; then
+ ./bootstrap.sh
+ ./configure --enable-tutorial=no
+ make -j3 precross
+fi
+
+#
+# C/C++ static code analysis with cppcheck
+# add --error-exitcode=1 to --enable=all as soon as everything is fixed
+#
+# Python code style check with flake8
+#
+# search for TODO etc within source tree
+# some statistics about the code base
+# some info about the build machine
+
+# Compiler cppcheck (All)
+cppcheck --force --quiet --inline-suppr --enable=all -j2 compiler/cpp/src
+
+# C++ cppcheck (All)
+cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
+
+# C Glib cppcheck (All)
+cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
+
+# Silent error checks
+# See THRIFT-4371 : flex generated code triggers "possible null pointer dereference" in yy_init_buffer
+cppcheck --force --quiet --inline-suppr --suppress="*:thrift/thriftl.cc" --error-exitcode=1 -j2 compiler/cpp/src
+cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp
+cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib
+
+# Python code style
+flake8
+
+# PHP code style
+composer install --quiet
+./vendor/bin/phpcs
+
+# TODO etc
+echo FIXMEs: `grep -r FIXME * | wc -l`
+echo HACKs: `grep -r HACK * | wc -l`
+echo TODOs: `grep -r TODO * | wc -l`
+
+# LoC
+sloccount .
+
+# System Info
+dpkg -l
+uname -a
diff --git a/src/jaegertracing/thrift/build/docker/scripts/ubsan.sh b/src/jaegertracing/thrift/build/docker/scripts/ubsan.sh
new file mode 100755
index 000000000..650dba0a6
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/scripts/ubsan.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+set -e
+
+# Wraps autotools.sh, but each binary crashes if it exhibits undefined behavior.
+# Set the undefined behavior flags. This crashes on all undefined behavior except for
+# undefined casting, aka "vptr".
+# TODO: fix undefined vptr behavior and turn this option back on.
+
+export CFLAGS="-fsanitize=undefined -fno-sanitize-recover=undefined -O0 -ggdb3 -fno-omit-frame-pointer"
+export CXXFLAGS="${CFLAGS}"
+export LDFLAGS="-lubsan"
+export UBSAN_OPTIONS=print_stacktrace=1
+
+#
+# work around https://svn.boost.org/trac10/ticket/11632 if present
+#
+
+sed -i 's/, stream_t(rdbuf()) /, stream_t(pbase_type::member.get())/g' /usr/include/boost/format/alt_sstream.hpp
+
+# llvm-symbolizer must be on PATH to get a stack trace on error
+
+CLANG_PATH="$(mktemp -d)"
+trap "rm -rf ${CLANG_PATH}" EXIT
+ln -s "$(whereis llvm-symbolizer-4.0 | rev | cut -d ' ' -f 1 | rev)" \
+ "${CLANG_PATH}/llvm-symbolizer"
+export PATH="${CLANG_PATH}:${PATH}"
+llvm-symbolizer -version
+
+build/docker/scripts/autotools.sh $*
diff --git a/src/jaegertracing/thrift/build/docker/ubuntu-bionic/Dockerfile b/src/jaegertracing/thrift/build/docker/ubuntu-bionic/Dockerfile
new file mode 100644
index 000000000..5f9833f12
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/ubuntu-bionic/Dockerfile
@@ -0,0 +1,282 @@
+# Licensed 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.
+
+#
+# Apache Thrift Docker build environment for Ubuntu Bionic
+# with some updated packages.
+#
+
+FROM buildpack-deps:bionic-scm
+MAINTAINER Apache Thrift <dev@thrift.apache.org>
+ENV DEBIAN_FRONTEND noninteractive
+
+### Add apt repos
+
+RUN apt-get update && \
+ apt-get dist-upgrade -y && \
+ apt-get install -y --no-install-recommends \
+ apt \
+ apt-transport-https \
+ apt-utils \
+ curl \
+ dirmngr \
+ software-properties-common \
+ wget
+
+# Dart
+RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
+ curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > \
+ /etc/apt/sources.list.d/dart_stable.list
+
+# dotnet (netcore)
+RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg && \
+ wget -q -O /etc/apt/sources.list.d/microsoft-prod.list https://packages.microsoft.com/config/ubuntu/18.04/prod.list && \
+ chown root:root /etc/apt/trusted.gpg.d/microsoft.gpg && \
+ chown root:root /etc/apt/sources.list.d/microsoft-prod.list
+
+# erlang
+RUN wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | apt-key add - && \
+ echo "deb https://packages.erlang-solutions.com/ubuntu bionic contrib" | tee /etc/apt/sources.list.d/erlang.list
+
+# node.js
+RUN curl -sL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
+ echo "deb https://deb.nodesource.com/node_10.x bionic main" | tee /etc/apt/sources.list.d/nodesource.list
+
+### install general dependencies
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# General dependencies` \
+ bash-completion \
+ bison \
+ build-essential \
+ clang \
+ cmake \
+ debhelper \
+ flex \
+ gdb \
+ libasound2 \
+ libatk-bridge2.0-0 \
+ libgtk-3-0 \
+ llvm \
+ ninja-build \
+ pkg-config \
+ unzip \
+ valgrind \
+ vim
+ENV PATH /usr/lib/llvm-6.0/bin:$PATH
+
+# lib/as3 (ActionScript)
+RUN mkdir -p /usr/local/adobe/flex/4.6 && \
+ cd /usr/local/adobe/flex/4.6 && \
+ wget -q "http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip" && \
+ unzip flex_sdk_4.6.zip
+ENV FLEX_HOME /usr/local/adobe/flex/4.6
+
+RUN apt-get install -y --no-install-recommends \
+`# C++ dependencies` \
+ libboost-all-dev \
+ libevent-dev \
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
+
+RUN apt-get install -y --no-install-recommends \
+`# csharp (mono) dependencies` \
+ mono-devel
+
+ENV SBCL_VERSION 1.5.3
+RUN \
+`# Common Lisp (sbcl) dependencies` \
+ curl --version && \
+ curl -o sbcl-${SBCL_VERSION}-x86-64-linux-binary.tar.bz2 -J -L https://sourceforge.net/projects/sbcl/files/sbcl/${SBCL_VERSION}/sbcl-${SBCL_VERSION}-x86-64-linux-binary.tar.bz2/download?use_mirror=managedway# && \
+ tar xjf sbcl-${SBCL_VERSION}-x86-64-linux-binary.tar.bz2 && \
+ cd sbcl-${SBCL_VERSION}-x86-64-linux && \
+ ./install.sh && \
+ sbcl --version && \
+ cd .. && \
+ rm -rf sbcl*
+
+ENV D_VERSION 2.087.0
+ENV DMD_DEB dmd_2.087.0-0_amd64.deb
+RUN \
+`# D dependencies` \
+ wget -q http://downloads.dlang.org/releases/2.x/${D_VERSION}/${DMD_DEB} && \
+ dpkg --install ${DMD_DEB} && \
+ rm -f ${DMD_DEB} && \
+ mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
+ git clone -b 'v2.0.2+2.0.16' https://github.com/D-Programming-Deimos/libevent.git deimos-libevent-2.0 && \
+ mv deimos-libevent-2.0/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv deimos-libevent-2.0/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf deimos-libevent-2.0 && \
+ git clone -b 'v2.0.0+1.1.0h' https://github.com/D-Programming-Deimos/openssl.git deimos-openssl-1.1.0h && \
+ mv deimos-openssl-1.1.0h/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv deimos-openssl-1.1.0h/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf deimos-openssl-1.1.0h
+
+ENV DART_VERSION 2.4.0-1
+RUN apt-get install -y --no-install-recommends \
+ `# Dart dependencies` \
+ dart=$DART_VERSION
+ENV PATH /usr/lib/dart/bin:$PATH
+
+RUN apt-get install -y --no-install-recommends \
+`# dotnet core dependencies` \
+ dotnet-sdk-2.2
+
+RUN apt-get install -y --no-install-recommends \
+`# Erlang dependencies` \
+ erlang && \
+ wget https://s3.amazonaws.com/rebar3/rebar3 -O /usr/bin/rebar3 && \
+ chmod 755 /usr/bin/rebar3 && \
+ rebar3 --version
+
+RUN apt-get install -y --no-install-recommends \
+`# GlibC dependencies` \
+ libglib2.0-dev
+
+# golang
+ENV GOLANG_VERSION 1.13.1
+ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
+ENV GOLANG_DOWNLOAD_SHA256 94f874037b82ea5353f4061e543681a0e79657f787437974214629af8407d124
+RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz && \
+ echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - && \
+ tar -C /usr/local -xzf golang.tar.gz && \
+ ln -s /usr/local/go/bin/go /usr/local/bin && \
+ rm golang.tar.gz
+
+RUN apt-get install -y --no-install-recommends \
+`# Haskell dependencies` \
+ ghc \
+ cabal-install
+
+RUN apt-get install -y --no-install-recommends \
+`# Haxe dependencies` \
+ haxe \
+ neko \
+ neko-dev && \
+ haxelib setup --always /usr/share/haxe/lib && \
+ haxelib install --always hxcpp 2>&1 > /dev/null
+
+RUN apt-get install -y --no-install-recommends \
+`# Java dependencies` \
+ ant \
+ ant-optional \
+ maven \
+ openjdk-11-jdk-headless
+
+RUN apt-get install -y --no-install-recommends \
+`# Lua dependencies` \
+ lua5.2 \
+ lua5.2-dev
+# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
+# lua5.3 does not install alternatives!
+# need to update our luasocket code, lua doesn't have luaL_openlib any more
+
+RUN apt-get install -y --no-install-recommends \
+`# Node.js dependencies` \
+ nodejs
+
+# Test dependencies for running puppeteer
+RUN apt-get install -y --no-install-recommends \
+`# JS dependencies` \
+ libxss1
+
+RUN apt-get install -y --no-install-recommends \
+`# OCaml dependencies` \
+ ocaml \
+ opam && \
+ opam init --yes && \
+ opam install --yes oasis
+
+RUN apt-get install -y --no-install-recommends \
+`# Perl dependencies` \
+ libbit-vector-perl \
+ libclass-accessor-class-perl \
+ libcrypt-ssleay-perl \
+ libio-socket-ssl-perl \
+ libnet-ssleay-perl
+
+RUN apt-get install -y --no-install-recommends \
+`# Php dependencies` \
+ php \
+ php-cli \
+ php-dev \
+ php-json \
+ php-pear \
+ re2c \
+ composer
+
+RUN apt-get install -y --no-install-recommends \
+`# Python dependencies` \
+ python-all \
+ python-all-dbg \
+ python-all-dev \
+ python-ipaddress \
+ python-pip \
+ python-setuptools \
+ python-six \
+ python-tornado \
+ python-twisted \
+ python-wheel \
+ python-zope.interface && \
+ pip install --upgrade backports.ssl_match_hostname
+
+RUN apt-get install -y --no-install-recommends \
+`# Python3 dependencies` \
+ python3-all \
+ python3-all-dbg \
+ python3-all-dev \
+ python3-pip \
+ python3-setuptools \
+ python3-six \
+ python3-tornado \
+ python3-twisted \
+ python3-wheel \
+ python3-zope.interface
+
+RUN apt-get install -y --no-install-recommends \
+`# Ruby dependencies` \
+ ruby \
+ ruby-dev \
+ ruby-bundler
+
+# Rust dependencies
+RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.35.0 -y
+ENV PATH /root/.cargo/bin:$PATH
+
+# Swift on Linux for cross tests
+RUN cd / && \
+ wget --quiet https://swift.org/builds/swift-4.2.1-release/ubuntu1804/swift-4.2.1-RELEASE/swift-4.2.1-RELEASE-ubuntu18.04.tar.gz && \
+ tar xf swift-4.2.1-RELEASE-ubuntu18.04.tar.gz --strip-components=1 && \
+ rm swift-4.2.1-RELEASE-ubuntu18.04.tar.gz && \
+ swift --version
+
+# cppcheck-1.82 has a nasty cpp parser bug, so we're using something newer
+RUN apt-get install -y --no-install-recommends \
+`# Static Code Analysis dependencies` \
+ cppcheck \
+ sloccount && \
+ pip install flake8 && \
+ wget -q "https://launchpad.net/ubuntu/+source/cppcheck/1.83-2/+build/14874703/+files/cppcheck_1.83-2_amd64.deb" && \
+ dpkg -i cppcheck_1.83-2_amd64.deb && \
+ rm cppcheck_1.83-2_amd64.deb
+
+# Clean up
+RUN rm -rf /var/cache/apt/* && \
+ rm -rf /var/lib/apt/lists/* && \
+ rm -rf /tmp/* && \
+ rm -rf /var/tmp/*
+
+ENV THRIFT_ROOT /thrift
+RUN mkdir -p $THRIFT_ROOT/src
+COPY Dockerfile $THRIFT_ROOT/
+WORKDIR $THRIFT_ROOT/src
diff --git a/src/jaegertracing/thrift/build/docker/ubuntu-disco/Dockerfile b/src/jaegertracing/thrift/build/docker/ubuntu-disco/Dockerfile
new file mode 100644
index 000000000..b017c4e21
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/ubuntu-disco/Dockerfile
@@ -0,0 +1,285 @@
+# Licensed 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.
+
+#
+# Apache Thrift Docker build environment for Ubuntu Disco
+# with some updated packages.
+#
+
+FROM buildpack-deps:disco-scm
+MAINTAINER Apache Thrift <dev@thrift.apache.org>
+ENV DEBIAN_FRONTEND noninteractive
+
+### Add apt repos
+
+RUN apt-get update && \
+ apt-get dist-upgrade -y && \
+ apt-get install -y --no-install-recommends \
+ apt \
+ apt-transport-https \
+ apt-utils \
+ curl \
+ dirmngr \
+ software-properties-common \
+ wget
+
+# Dart
+RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
+ curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > \
+ /etc/apt/sources.list.d/dart_stable.list
+
+# dotnet (netcore)
+RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg && \
+ wget -q -O /etc/apt/sources.list.d/microsoft-prod.list https://packages.microsoft.com/config/ubuntu/18.04/prod.list && \
+ chown root:root /etc/apt/trusted.gpg.d/microsoft.gpg && \
+ chown root:root /etc/apt/sources.list.d/microsoft-prod.list
+
+# erlang
+RUN wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | apt-key add - && \
+ echo "deb https://packages.erlang-solutions.com/ubuntu disco contrib" | tee /etc/apt/sources.list.d/erlang.list
+
+# node.js
+RUN curl -sL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
+ echo "deb https://deb.nodesource.com/node_10.x disco main" | tee /etc/apt/sources.list.d/nodesource.list
+
+### install general dependencies
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# General dependencies` \
+ bash-completion \
+ bison \
+ build-essential \
+ clang \
+ cmake \
+ debhelper \
+ flex \
+ gdb \
+ libasound2 \
+ libatk-bridge2.0-0 \
+ libgtk-3-0 \
+ llvm \
+ ninja-build \
+ pkg-config \
+ unzip \
+ valgrind \
+ vim
+ENV PATH /usr/lib/llvm-6.0/bin:$PATH
+
+# lib/as3 (ActionScript)
+RUN mkdir -p /usr/local/adobe/flex/4.6 && \
+ cd /usr/local/adobe/flex/4.6 && \
+ wget -q "http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip" && \
+ unzip flex_sdk_4.6.zip
+ENV FLEX_HOME /usr/local/adobe/flex/4.6
+
+RUN apt-get install -y --no-install-recommends \
+`# C++ dependencies` \
+ libboost-all-dev \
+ libevent-dev \
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
+
+RUN apt-get install -y --no-install-recommends \
+`# csharp (mono) dependencies` \
+ mono-devel
+
+ENV SBCL_VERSION 1.5.3
+RUN \
+`# Common Lisp (sbcl) dependencies` \
+ curl --version && \
+ curl -o sbcl-${SBCL_VERSION}-x86-64-linux-binary.tar.bz2 -J -L https://sourceforge.net/projects/sbcl/files/sbcl/${SBCL_VERSION}/sbcl-${SBCL_VERSION}-x86-64-linux-binary.tar.bz2/download?use_mirror=managedway# && \
+ tar xjf sbcl-${SBCL_VERSION}-x86-64-linux-binary.tar.bz2 && \
+ cd sbcl-${SBCL_VERSION}-x86-64-linux && \
+ ./install.sh && \
+ sbcl --version && \
+ cd .. && \
+ rm -rf sbcl*
+
+ENV D_VERSION 2.087.0
+ENV DMD_DEB dmd_2.087.0-0_amd64.deb
+RUN \
+`# D dependencies` \
+ wget -q http://downloads.dlang.org/releases/2.x/${D_VERSION}/${DMD_DEB} && \
+ dpkg --install ${DMD_DEB} && \
+ rm -f ${DMD_DEB} && \
+ mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
+ git clone -b 'v2.0.2+2.0.16' https://github.com/D-Programming-Deimos/libevent.git deimos-libevent-2.0 && \
+ mv deimos-libevent-2.0/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv deimos-libevent-2.0/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf deimos-libevent-2.0 && \
+ git clone -b 'v2.0.0+1.1.0h' https://github.com/D-Programming-Deimos/openssl.git deimos-openssl-1.1.0h && \
+ mv deimos-openssl-1.1.0h/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv deimos-openssl-1.1.0h/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf deimos-openssl-1.1.0h
+
+ENV DART_VERSION 2.4.0-1
+RUN apt-get install -y --no-install-recommends \
+ `# Dart dependencies` \
+ dart=$DART_VERSION
+ENV PATH /usr/lib/dart/bin:$PATH
+
+RUN apt-get install -y --no-install-recommends \
+`# dotnet core dependencies` \
+ dotnet-sdk-2.2
+
+RUN apt-get install -y --no-install-recommends \
+`# Erlang dependencies` \
+ erlang && \
+ wget https://s3.amazonaws.com/rebar3/rebar3 -O /usr/bin/rebar3 && \
+ chmod 755 /usr/bin/rebar3 && \
+ rebar3 --version
+
+RUN apt-get install -y --no-install-recommends \
+`# GlibC dependencies` \
+ libglib2.0-dev
+
+# golang
+ENV GOLANG_VERSION 1.12.6
+ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
+ENV GOLANG_DOWNLOAD_SHA256 dbcf71a3c1ea53b8d54ef1b48c85a39a6c9a935d01fc8291ff2b92028e59913c
+RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz && \
+ echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - && \
+ tar -C /usr/local -xzf golang.tar.gz && \
+ ln -s /usr/local/go/bin/go /usr/local/bin && \
+ rm golang.tar.gz
+
+RUN apt-get install -y --no-install-recommends \
+`# Haskell dependencies` \
+ ghc \
+ cabal-install
+
+RUN apt-get install -y --no-install-recommends \
+`# Haxe dependencies` \
+ haxe \
+ neko \
+ neko-dev && \
+ haxelib setup --always /usr/share/haxe/lib && \
+ haxelib install --always hxcpp 2>&1 > /dev/null
+
+RUN apt-get install -y --no-install-recommends \
+`# Java dependencies` \
+ ant \
+ ant-optional \
+ maven \
+ openjdk-11-jdk-headless
+
+RUN apt-get install -y --no-install-recommends \
+`# Lua dependencies` \
+ lua5.2 \
+ lua5.2-dev
+# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
+# lua5.3 does not install alternatives!
+# need to update our luasocket code, lua doesn't have luaL_openlib any more
+
+RUN apt-get install -y --no-install-recommends \
+`# Node.js dependencies` \
+ nodejs
+
+# Test dependencies for running puppeteer
+RUN apt-get install -y --no-install-recommends \
+`# JS dependencies` \
+ libxss1
+
+# does not work on disco?
+# RUN apt-get install -y --no-install-recommends \
+# `# OCaml dependencies` \
+# ocaml \
+# opam && \
+# opam init --yes && \
+# opam install --yes oasis
+
+RUN apt-get install -y --no-install-recommends \
+`# Perl dependencies` \
+ libbit-vector-perl \
+ libclass-accessor-class-perl \
+ libcrypt-ssleay-perl \
+ libio-socket-ssl-perl \
+ libnet-ssleay-perl
+
+RUN apt-get install -y --no-install-recommends \
+`# Php dependencies` \
+ php \
+ php-cli \
+ php-dev \
+ php-json \
+ php-pear \
+ re2c \
+ composer
+
+RUN apt-get install -y --no-install-recommends \
+`# Python dependencies` \
+ python-all \
+ python-all-dbg \
+ python-all-dev \
+ python-ipaddress \
+ python-pip \
+ python-setuptools \
+ python-six \
+ python-tornado \
+ python-twisted \
+ python-wheel \
+ python-zope.interface && \
+ pip install --upgrade backports.ssl_match_hostname
+
+RUN apt-get install -y --no-install-recommends \
+`# Python3 dependencies` \
+ python3-all \
+ python3-all-dbg \
+ python3-all-dev \
+ python3-pip \
+ python3-setuptools \
+ python3-six \
+ python3-tornado \
+ python3-twisted \
+ python3-wheel \
+ python3-zope.interface
+
+RUN apt-get install -y --no-install-recommends \
+`# Ruby dependencies` \
+ ruby \
+ ruby-dev \
+ ruby-bundler
+
+# Rust dependencies
+RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.35.0 -y
+ENV PATH /root/.cargo/bin:$PATH
+
+# Swift on Linux for cross tests
+# does not work on disco
+# RUN cd / && \
+# wget --quiet https://swift.org/builds/swift-4.2.1-release/ubuntu1804/swift-4.2.1-RELEASE/swift-4.2.1-RELEASE-ubuntu18.04.tar.gz && \
+# tar xf swift-4.2.1-RELEASE-ubuntu18.04.tar.gz --strip-components=1 && \
+# rm swift-4.2.1-RELEASE-ubuntu18.04.tar.gz && \
+# swift --version
+
+# cppcheck-1.82 has a nasty cpp parser bug, so we're using something newer
+# don't need this on disco, nobody uses it
+# RUN apt-get install -y --no-install-recommends \
+# `# Static Code Analysis dependencies` \
+# cppcheck \
+# sloccount && \
+# pip install flake8 && \
+# wget -q "https://launchpad.net/ubuntu/+source/cppcheck/1.83-2/+build/14874703/+files/cppcheck_1.83-2_amd64.deb" && \
+# dpkg -i cppcheck_1.83-2_amd64.deb && \
+# rm cppcheck_1.83-2_amd64.deb
+
+# Clean up
+RUN rm -rf /var/cache/apt/* && \
+ rm -rf /var/lib/apt/lists/* && \
+ rm -rf /tmp/* && \
+ rm -rf /var/tmp/*
+
+ENV THRIFT_ROOT /thrift
+RUN mkdir -p $THRIFT_ROOT/src
+COPY Dockerfile $THRIFT_ROOT/
+WORKDIR $THRIFT_ROOT/src
diff --git a/src/jaegertracing/thrift/build/docker/ubuntu-xenial/Dockerfile b/src/jaegertracing/thrift/build/docker/ubuntu-xenial/Dockerfile
new file mode 100644
index 000000000..8dc6497dc
--- /dev/null
+++ b/src/jaegertracing/thrift/build/docker/ubuntu-xenial/Dockerfile
@@ -0,0 +1,272 @@
+# Licensed 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.
+
+#
+# Apache Thrift Docker build environment for Ubuntu Xenial
+# Using all stock Ubuntu Xenial packaging except for:
+# - d: does not come with Ubuntu so we're installing 2.075.1 for coverage
+# - dart: does not come with Ubuntu so we're installing 2.0.0-1 for coverage
+# - dotnet: does not come with Ubuntu
+# - go: Xenial comes with 1.6, but we need 1.10 or later
+# - nodejs: Xenial comes with 4.2.6 which exits LTS April 2018, so we're installing 6.x
+# - ocaml: causes stack overflow error, just started March 2018 not sure why
+#
+
+FROM buildpack-deps:xenial-scm
+MAINTAINER Apache Thrift <dev@thrift.apache.org>
+ENV DEBIAN_FRONTEND noninteractive
+
+### Add apt repos
+
+RUN apt-get update && \
+ apt-get dist-upgrade -y && \
+ apt-get install -y --no-install-recommends \
+ apt \
+ apt-transport-https \
+ apt-utils \
+ curl \
+ software-properties-common \
+ wget && \
+
+# csharp (mono)
+# echo "deb http://download.mono-project.com/repo/debian xenial main" | tee /etc/apt/sources.list.d/mono.list && \
+# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A6A19B38D3D831EF && \
+
+# D
+ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EBCF975E5BA24D5E && \
+ wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list && \
+ wget -qO - https://dlang.org/d-keyring.gpg | apt-key add - && \
+
+# Dart
+ curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
+ curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > \
+ /etc/apt/sources.list.d/dart_stable.list && \
+
+# dotnet (core)
+ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/microsoft.gpg && \
+ echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > \
+ /etc/apt/sources.list.d/dotnetdev.list && \
+
+# node.js
+ curl -sL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
+ echo "deb https://deb.nodesource.com/node_6.x xenial main" | tee /etc/apt/sources.list.d/nodesource.list
+
+### install general dependencies
+RUN apt-get update && apt-get install -y --no-install-recommends \
+`# General dependencies` \
+ bash-completion \
+ bison \
+ build-essential \
+ clang \
+ cmake \
+ debhelper \
+ flex \
+ gdb \
+ llvm \
+ ninja-build \
+ pkg-config \
+ valgrind \
+ vim
+ENV PATH /usr/lib/llvm-3.8/bin:$PATH
+
+### languages
+
+RUN apt-get install -y --no-install-recommends \
+`# C++ dependencies` \
+ libboost-dev \
+ libboost-filesystem-dev \
+ libboost-program-options-dev \
+ libboost-system-dev \
+ libboost-test-dev \
+ libboost-thread-dev \
+ libevent-dev \
+ libssl-dev \
+ qt5-default \
+ qtbase5-dev \
+ qtbase5-dev-tools
+
+RUN apt-get install -y --no-install-recommends \
+`# csharp (mono) dependencies` \
+ mono-devel
+
+ENV D_VERSION 2.075.1-0
+RUN apt-get install -y --allow-unauthenticated --no-install-recommends \
+`# D dependencies` \
+ dmd-bin=$D_VERSION \
+ libphobos2-dev=$D_VERSION \
+ dub=1.6.0-0 \
+ dfmt \
+ dscanner \
+ libevent-dev \
+ libssl-dev \
+ xdg-utils
+RUN mkdir -p /usr/include/dmd/druntime/import/deimos /usr/include/dmd/druntime/import/C && \
+ curl -sSL https://github.com/D-Programming-Deimos/libevent/archive/master.tar.gz| tar xz && \
+ mv libevent-master/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv libevent-master/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf libevent-master
+RUN curl -sSL https://github.com/D-Programming-Deimos/openssl/archive/v1.1.6+1.0.1g.tar.gz | tar xz && \
+ mv openssl-1.1.6-1.0.1g/deimos/* /usr/include/dmd/druntime/import/deimos/ && \
+ mv openssl-1.1.6-1.0.1g/C/* /usr/include/dmd/druntime/import/C/ && \
+ rm -rf openssl-1.1.6-1.0.1g
+
+ENV DART_VERSION 2.0.0-1
+RUN apt-get install -y --no-install-recommends \
+`# Dart dependencies` \
+ dart=$DART_VERSION
+ENV PATH /usr/lib/dart/bin:$PATH
+
+RUN apt-get install -y --no-install-recommends \
+`# dotnet core dependencies` \
+ dotnet-sdk-2.1
+
+RUN apt-get install -y --no-install-recommends \
+`# Erlang dependencies` \
+ erlang-base \
+ erlang-eunit \
+ erlang-dev \
+ erlang-tools \
+ rebar
+
+RUN apt-get install -y --no-install-recommends \
+`# GlibC dependencies` \
+ libglib2.0-dev
+
+# golang
+ENV GOLANG_VERSION 1.10.8
+ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
+ENV GOLANG_DOWNLOAD_SHA256 d8626fb6f9a3ab397d88c483b576be41fa81eefcec2fd18562c87626dbb3c39e
+RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz && \
+ echo "$GOLANG_DOWNLOAD_SHA256 golang.tar.gz" | sha256sum -c - && \
+ tar -C /usr/local -xzf golang.tar.gz && \
+ ln -s /usr/local/go/bin/go /usr/local/bin && \
+ rm golang.tar.gz
+
+# cabal 1.22 in xenial is too old so we grab a pre-built 1.24 binary
+RUN apt-get install -y --no-install-recommends \
+`# Haskell dependencies` \
+ ghc && \
+ cd /tmp && \
+ wget -q https://www.haskell.org/cabal/release/cabal-install-1.24.0.2/cabal-install-1.24.0.2-x86_64-unknown-linux.tar.gz && \
+ tar xzf cabal-install-1.24.0.2-x86_64-unknown-linux.tar.gz && \
+ find dist-newstyle/ -type f -name cabal -exec mv {} /usr/bin \; && \
+ rm -rf /tmp/cabal* && \
+ cabal --version && \
+ cabal update
+
+RUN apt-get install -y --no-install-recommends \
+`# Haxe dependencies` \
+ haxe \
+ neko \
+ neko-dev \
+ libneko0 && \
+ haxelib setup --always /usr/share/haxe/lib && \
+ haxelib install --always hxcpp 3.4.64 2>&1 > /dev/null
+# note: hxcpp 3.4.185 (latest) no longer ships static libraries, and caused a build failure
+
+RUN apt-get install -y --no-install-recommends \
+`# Java dependencies` \
+ ant \
+ ant-optional \
+ openjdk-8-jdk \
+ maven
+
+# disabled: same as ubuntu-bionic jobs
+# RUN apt-get install -y --no-install-recommends \
+# `# Lua dependencies` \
+# lua5.2 \
+# lua5.2-dev
+# https://bugs.launchpad.net/ubuntu/+source/lua5.3/+bug/1707212
+# lua5.3 does not install alternatives so stick with 5.2 here
+
+RUN apt-get install -y --no-install-recommends \
+`# Node.js dependencies` \
+ nodejs
+
+# Test dependencies for running puppeteer
+RUN apt-get install -y --no-install-recommends \
+`# JS dependencies` \
+ libxss1 \
+ libatk-bridge2.0-0 \
+ libgtk-3-0
+
+# THRIFT-4517: causes stack overflows; version too old; skip ocaml in xenial
+# RUN apt-get install -y --no-install-recommends \
+# `# OCaml dependencies` \
+# ocaml \
+# opam && \
+# opam init --yes && \
+# opam install --yes oasis
+
+RUN apt-get install -y --no-install-recommends \
+`# Perl dependencies` \
+ libbit-vector-perl \
+ libclass-accessor-class-perl \
+ libcrypt-ssleay-perl \
+ libio-socket-ssl-perl \
+ libnet-ssleay-perl
+
+RUN apt-get install -y --no-install-recommends \
+`# Php dependencies` \
+ php7.0 \
+ php7.0-cli \
+ php7.0-dev \
+ php-json \
+ php-pear \
+ re2c \
+ composer
+
+RUN apt-get install -y --no-install-recommends \
+`# Python dependencies` \
+ python-all \
+ python-all-dbg \
+ python-all-dev \
+ python-backports.ssl-match-hostname \
+ python-ipaddress \
+ python-pip \
+ python-setuptools \
+ python-six \
+ python-tornado \
+ python-twisted \
+ python-wheel \
+ python-zope.interface \
+ python3-all \
+ python3-all-dbg \
+ python3-all-dev \
+ python3-setuptools \
+ python3-six \
+ python3-tornado \
+ python3-twisted \
+ python3-wheel \
+ python3-zope.interface && \
+ pip install --upgrade backports.ssl_match_hostname
+
+RUN apt-get install -y --no-install-recommends \
+`# Ruby dependencies` \
+ ruby \
+ ruby-dev \
+ ruby-bundler
+
+# Rust dependencies
+RUN curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.34.0 -y
+
+# Clean up
+RUN rm -rf /var/cache/apt/* && \
+ rm -rf /var/lib/apt/lists/* && \
+ rm -rf /tmp/* && \
+ rm -rf /var/tmp/*
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT 1
+ENV THRIFT_ROOT /thrift
+RUN mkdir -p $THRIFT_ROOT/src
+COPY Dockerfile $THRIFT_ROOT/
+WORKDIR $THRIFT_ROOT/src