diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/jaegertracing/thrift/build/docker | |
parent | Initial commit. (diff) | |
download | ceph-upstream/16.2.11+ds.tar.xz ceph-upstream/16.2.11+ds.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 '')
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 |