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 | |
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 '')
78 files changed, 5881 insertions, 0 deletions
diff --git a/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-build.bat b/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-build.bat new file mode 100644 index 000000000..7f3328714 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-build.bat @@ -0,0 +1,35 @@ +:: +:: 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. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_build.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B + +SET CMAKEARGS=^ + -G'%GENERATOR%' ^ + -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^ + -DCMAKE_INSTALL_PREFIX=%INSTDIR% ^ + -DCMAKE_CXX_FLAGS="-D_GNU_SOURCE" ^ + -DWITH_JAVA=OFF ^ + -DWITH_PYTHON=OFF + +:: -DCMAKE_CXX_EXTENSIONS=ON ^ +:: -DCMAKE_CXX_STANDARD=11 ^ + +@ECHO ON +%BASH% -lc "mkdir -p %BUILDDIR% && cd %BUILDDIR% && cmake.exe %SRCDIR% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% --target install" || EXIT /B +@ECHO OFF diff --git a/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-install.bat b/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-install.bat new file mode 100644 index 000000000..72712b20e --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-install.bat @@ -0,0 +1,50 @@ +:: +:: 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. +:: + +:: +:: Appveyor install script for CYGWIN +:: Installs third party packages we need for a cmake build +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_install.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +CALL cl_showenv.bat || EXIT /B + +:: +:: Upgrades cygwin to the latest, if you want... +:: +:: appveyor DownloadFile "https://cygwin.com/setup-x86_64.exe" +:: setup-x86_64.exe --quiet-mode --wait --upgrade-also --packages="gcc-g++" + +:: +:: Install apt-cyg for package management +:: + +%BASH% -lc "wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg && install apt-cyg /bin && rm -f apt-cyg" || EXIT /B +%BASH% -lc "apt-cyg update" || EXIT /B +%BASH% -lc "apt-cyg install bison cmake flex gcc-g++ libboost-devel libevent-devel make openssl-devel xz zlib-devel" + +:: +:: We need a newer version of cmake, the one cygwin provides is too old +:: to recognize the version of boost. Luckily there is a pre-release +:: one available, however cygwin's own setup program has no command line +:: option to allow access to test packages! +:: + +%BASH% -lc "apt-cyg remove cmake" +%BASH% -lc "cd / && wget http://mirror.clarkson.edu/cygwin/x86_64/release/cmake/cmake-3.13.1-1.tar.xz && tar xJf cmake-3.13.1-1.tar.xz && hash -r && cmake --version" diff --git a/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-test.bat b/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-test.bat new file mode 100644 index 000000000..b667f9bb1 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/CYGW-appveyor-test.bat @@ -0,0 +1,21 @@ +:: +:: 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. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion +CD build\appveyor || EXIT /B +CALL cl_banner_test.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B + +%BASH% -lc "cd %BUILDDIR% && ctest.exe -C %CONFIGURATION% --timeout 300 -VV -E '%DISABLED_TESTS%'" || EXIT /B diff --git a/src/jaegertracing/thrift/build/appveyor/MING-appveyor-build.bat b/src/jaegertracing/thrift/build/appveyor/MING-appveyor-build.bat new file mode 100644 index 000000000..eec65f897 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MING-appveyor-build.bat @@ -0,0 +1,34 @@ +:: +:: 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. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_build.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B + +SET CMAKEARGS=^ + -G'%GENERATOR%' ^ + -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^ + -DCMAKE_INSTALL_PREFIX=%INSTDIR% ^ + -DCMAKE_MAKE_PROGRAM=/mingw%NORM_PLATFORM%/bin/mingw32-make ^ + -DCMAKE_C_COMPILER=/mingw%NORM_PLATFORM%/bin/gcc.exe ^ + -DCMAKE_CXX_COMPILER=/mingw%NORM_PLATFORM%/bin/g++.exe ^ + -DOPENSSL_ROOT_DIR=/mingw%NORM_PLATFORM% ^ + -DWITH_PYTHON=OFF + +@ECHO ON +%BASH% -lc "mkdir -p %BUILDDIR% && cd %BUILDDIR% && cmake.exe %SRCDIR% %CMAKEARGS% && cmake --build . --config %CONFIGURATION% --target install" || EXIT /B +@ECHO OFF diff --git a/src/jaegertracing/thrift/build/appveyor/MING-appveyor-install.bat b/src/jaegertracing/thrift/build/appveyor/MING-appveyor-install.bat new file mode 100644 index 000000000..4b5d730fb --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MING-appveyor-install.bat @@ -0,0 +1,51 @@ +:: +:: 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. +:: + +:: +:: Appveyor install script for MINGW on MSYS2 +:: Installs third party packages we need for a cmake build +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_install.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +CALL cl_showenv.bat || EXIT /B + +SET PACKAGES=^ + --needed -S bison flex make ^ + mingw-w64-%MINGWPLAT%-boost ^ + mingw-w64-%MINGWPLAT%-cmake ^ + mingw-w64-%MINGWPLAT%-libevent ^ + mingw-w64-%MINGWPLAT%-openssl ^ + mingw-w64-%MINGWPLAT%-toolchain ^ + mingw-w64-%MINGWPLAT%-zlib + +::mingw-w64-%MINGWPLAT%-qt5 : WAY too large (1GB download!) - tested in cygwin builds anyway + +:: the following uninstall and system upgrade was causing issues; appveyor's is relatively new +:: Remove old packages that no longer exist to avoid an error +:: %BASH% -lc "pacman --noconfirm --remove libcatgets catgets || true" || EXIT /B + +:: Remove incompatible packages 8.2.0-3 and 7.3.0-2 (mingw packaging bugs if you ask me!) +:: %BASH% -lc "pacman --noconfirm --remove mingw-w64-x86_64-gcc-ada mingw-w64-x86_64-gcc-objc || true" || EXIT /B +:: %BASH% -lc "pacman --noconfirm --remove mingw-w64-x86_64-gcc-ada mingw-w64-x86_64-gcc-objc || true" || EXIT /B + +:: Upgrade things +:: %BASH% -lc "pacman --noconfirm -Syu %IGNORE%" || EXIT /B +:: %BASH% -lc "pacman --noconfirm -Su %IGNORE%" || EXIT /B +:: +%BASH% -lc "pacman --noconfirm %PACKAGES%" || EXIT /B diff --git a/src/jaegertracing/thrift/build/appveyor/MING-appveyor-test.bat b/src/jaegertracing/thrift/build/appveyor/MING-appveyor-test.bat new file mode 100644 index 000000000..499c1ff80 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MING-appveyor-test.bat @@ -0,0 +1,22 @@ +:: +:: 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. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_test.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B + +%BASH% -lc "cd %BUILDDIR% && ctest.exe -C %CONFIGURATION% --timeout 300 -VV -E '%DISABLED_TESTS%'" || EXIT /B diff --git a/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-build.bat b/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-build.bat new file mode 100644 index 000000000..3d2bbeed3 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-build.bat @@ -0,0 +1,59 @@ +:: +:: 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. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_build.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +MKDIR "%BUILDDIR%" || EXIT /B +CD "%BUILDDIR%" || EXIT /B + +:: When libraries cannot be found, things might have been updated +:: so uncomment this and submit a pull request to see what's there +:: now... +:: DIR C:\Libraries +:: DIR C:\Libraries\boost_1_69_0\lib* +:: DIR C:\Libraries\boost_1_68_0\lib* +:: DIR C:\Libraries\boost_1_67_0\lib* +:: DIR C:\Libraries\boost_1_66_0\lib* +:: DIR C:\Libraries\boost_1_65_0\lib* +:: DIR C:\Libraries\boost_1_64_0\lib* +:: DIR C:\Libraries\boost_1_63_0\lib* +:: DIR C:\Libraries\boost_1_62_0\lib* +:: DIR C:\Libraries\boost_1_61_0\lib* +:: DIR C:\Libraries\boost_1_60_0\lib* + +@ECHO ON + cmake "%SRCDIR%" ^ + -G"%GENERATOR%" ^ + -DBISON_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_bison.exe ^ + -DBOOST_ROOT="%BOOST_ROOT%" ^ + -DBOOST_LIBRARYDIR="%BOOST_LIBRARYDIR%" ^ + -DBUILD_SHARED_LIBS="%BUILD_SHARED_LIBS%" ^ + -DCMAKE_BUILD_TYPE="%CONFIGURATION%" ^ + -DCMAKE_INSTALL_PREFIX="%INSTDIR%" ^ + -DFLEX_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_flex.exe ^ + -DLIBEVENT_ROOT="%WIN3P%\libevent-%LIBEVENT_VERSION%-stable" ^ + -DOPENSSL_ROOT_DIR="%OPENSSL_ROOT%" ^ + -DOPENSSL_USE_STATIC_LIBS=OFF ^ + -DZLIB_LIBRARY="%WIN3P%\zlib-inst\lib\zlib%ZLIB_LIB_SUFFIX%.lib" ^ + -DZLIB_ROOT="%WIN3P%\zlib-inst" ^ + -DWITH_PYTHON=%WITH_PYTHON% || EXIT /B +@ECHO OFF + +cmake --build . ^ + --config "%CONFIGURATION%" ^ + --target INSTALL || EXIT /B diff --git a/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-install.bat b/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-install.bat new file mode 100644 index 000000000..bc4655a76 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-install.bat @@ -0,0 +1,66 @@ +:: +:: 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. +:: + +:: +:: Appveyor install script for MSVC +:: Installs (or builds) third party packages we need +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_install.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +CALL cl_showenv.bat || EXIT /B +MKDIR "%WIN3P%" || EXIT /B + +choco feature enable -n allowGlobalConfirmation || EXIT /B + +:: Things to install when NOT running in appveyor: +IF "%APPVEYOR_BUILD_ID%" == "" ( + cup -y chocolatey || EXIT /B + cinst -y curl || EXIT /B + cinst -y 7zip || EXIT /B + cinst -y python3 || EXIT /B + cinst -y openssl.light || EXIT /B +) + +cinst -y jdk8 || EXIT /B +cinst -y winflexbison3 || EXIT /B + +:: zlib - not available through chocolatey +CD "%APPVEYOR_SCRIPTS%" || EXIT /B +call build-zlib.bat || EXIT /B + +:: libevent - not available through chocolatey +CD "%APPVEYOR_SCRIPTS%" || EXIT /B +call build-libevent.bat || EXIT /B + +:: python packages (correct path to pip set in cl_setenv.bat) +pip.exe ^ + install backports.ssl_match_hostname ^ + ipaddress ^ + six ^ + tornado ^ + twisted || EXIT /B + +cinst -y ghc || EXIT /B + +:: Adobe Flex SDK 4.6 for ActionScript +MKDIR "C:\Adobe\Flex\SDK\4.6" || EXIT /B +appveyor DownloadFile http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip -FileName C:\Adobe\Flex\SDK\4.6\SDK.zip || EXIT /B +CD "C:\Adobe\Flex\SDK\4.6" || EXIT /B +7z x SDK.zip || EXIT /B +SETX FLEX_HOME "C:\Adobe\Flex\SDK\4.6" diff --git a/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-test.bat b/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-test.bat new file mode 100644 index 000000000..35945792a --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MSVC-appveyor-test.bat @@ -0,0 +1,32 @@ +:: +:: 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. +:: + +@ECHO ON +SETLOCAL EnableDelayedExpansion +CD build\appveyor || EXIT /B +CALL cl_banner_test.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +CD "%BUILDDIR%" || EXIT /B + +DIR C:\libraries +DIR C:\libraries\boost_1_59_0 +DIR C:\libraries\boost_1_60_0 +DIR C:\libraries\boost_1_62_0 +DIR C:\libraries\boost_1_63_0 +DIR C:\libraries\boost_1_64_0 + +:: Add directories to the path to find DLLs of third party libraries so tests run properly! +SET PATH=%BOOST_LIBRARYDIR:/=\%;%OPENSSL_ROOT%\bin;%WIN3P%\zlib-inst\bin;%PATH% + +ctest -C %CONFIGURATION% --timeout 300 -VV -E "(%DISABLED_TESTS%)" || EXIT /B diff --git a/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-build.bat b/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-build.bat new file mode 100644 index 000000000..44017295e --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-build.bat @@ -0,0 +1,48 @@ +:: +:: 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. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_build.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B + +SET BASH=C:\msys64\usr\bin\bash +SET CMAKE=/c/msys64/mingw64/bin/cmake.exe + +@ECHO ON +SET CMAKEARGS=-G\"%GENERATOR%\" ^ + -DBoost_DEBUG=ON ^ + -DBoost_NAMESPACE=libboost ^ + -DBOOST_INCLUDEDIR=%BOOST_INCLUDEDIR% ^ + -DBOOST_LIBRARYDIR=%BOOST_LIBRARYDIR% ^ + -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^ + -DCMAKE_C_COMPILER=gcc.exe ^ + -DCMAKE_CXX_COMPILER=g++.exe ^ + -DCMAKE_MAKE_PROGRAM=make.exe ^ + -DCMAKE_INSTALL_PREFIX=%INSTDIR_MSYS% ^ + -DLIBEVENT_ROOT=%LIBEVENT_ROOT% ^ + -DOPENSSL_LIBRARIES=%OPENSSL_LIBRARIES% ^ + -DOPENSSL_ROOT_DIR=%OPENSSL_ROOT% ^ + -DOPENSSL_USE_STATIC_LIBS=ON ^ + -DWITH_BOOST_STATIC=ON ^ + -DWITH_JAVA=OFF ^ + -DWITH_LIBEVENT=ON ^ + -DWITH_PYTHON=%WITH_PYTHON% ^ + -DWITH_SHARED_LIB=OFF ^ + -DWITH_STATIC_LIB=ON + +%BASH% -lc "mkdir %BUILDDIR_MSYS% && cd %BUILDDIR_MSYS% && %CMAKE% %SRCDIR_MSYS% %CMAKEARGS% && %CMAKE% --build . --config %CONFIGURATION% --target install" || EXIT /B +@ECHO OFF diff --git a/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-install.bat b/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-install.bat new file mode 100644 index 000000000..a818df305 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-install.bat @@ -0,0 +1,48 @@ +:: +:: 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. +:: + +:: +:: Appveyor install script for MSYS +:: Installs (or builds) third party packages we need +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_install.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +CALL cl_showenv.bat || EXIT /B + +:: We're going to keep boost at a version cmake understands +SET BOOSTPKG=mingw-w64-x86_64-boost-1.64.0-3-any.pkg.tar.xz +SET IGNORE=--ignore mingw-w64-x86_64-boost + +SET PACKAGES=^ + --needed -S bison flex make ^ + mingw-w64-x86_64-cmake ^ + mingw-w64-x86_64-libevent ^ + mingw-w64-x86_64-openssl ^ + mingw-w64-x86_64-toolchain ^ + mingw-w64-x86_64-zlib + +%BASH% -lc "pacman --noconfirm -Syu %IGNORE%" || EXIT /B +%BASH% -lc "pacman --noconfirm -Su %IGNORE%" || EXIT /B +%BASH% -lc "pacman --noconfirm %PACKAGES%" || EXIT /B + +:: Install a slightly older boost (1.64.0) as cmake 3.10 +:: does not have built-in dependencies for boost 1.66.0 yet +:: -- this cuts down on build warning output -- +%BASH% -lc "wget http://repo.msys2.org/mingw/x86_64/%BOOSTPKG% && pacman --noconfirm --needed -U %BOOSTPKG% && rm %BOOSTPKG%" || EXIT /B + diff --git a/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-test.bat b/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-test.bat new file mode 100644 index 000000000..0f37ec51f --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/MSYS-appveyor-test.bat @@ -0,0 +1,26 @@ +:: +:: 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. +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +CD build\appveyor || EXIT /B +CALL cl_banner_test.bat || EXIT /B +CALL cl_setenv.bat || EXIT /B +CD "%BUILDDIR%" || EXIT /B + +:: randomly fails on mingw; see Jira THRIFT-4106 +SET DISABLED_TESTS=concurrency_test + +%BASH% -lc "cd %BUILDDIR_MSYS% && ctest.exe -C %CONFIGURATION% --timeout 300 -VV -E '(%DISABLED_TESTS%)'" || EXIT /B diff --git a/src/jaegertracing/thrift/build/appveyor/README.md b/src/jaegertracing/thrift/build/appveyor/README.md new file mode 100644 index 000000000..1a2aa306b --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/README.md @@ -0,0 +1,34 @@ +<!--- +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. +--> + +# Appveyor Build + +Appveyor is capable of building MSVC 2010 through 2015 as well as +having the latest MSYS2/MinGW 64-bit environment. It has many versions +of boost and python installed as well. See what appveyor has +[installed on build workers](https://www.appveyor.com/docs/installed-software/). + +We run a matrix build on Appveyor and build the following combinations: + +* MinGW x64 (gcc 6.3.0) +* MSVC 2010 x86, an older boost, an older python +* MSVC 2015 x86/x64, the latest boost, the latest python +* MSYS2 x64 (gcc 6.3.0) - this is a work in progress + +The Appveyor script takes the first four letters from the PROFILE specified in +the environment stanza and runs these scripts in order: + +????-appveyor-install.bat will install third party libraries and set up the environment +????-appveyor-build.bat will build with cmake +????-appveyor-test.bat will run ctest diff --git a/src/jaegertracing/thrift/build/appveyor/build-libevent.bat b/src/jaegertracing/thrift/build/appveyor/build-libevent.bat new file mode 100644 index 000000000..64b635b1e --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/build-libevent.bat @@ -0,0 +1,37 @@ +:: +:: 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. +:: + +SETLOCAL EnableDelayedExpansion + +SET URLFILE=libevent-%LIBEVENT_VERSION%-stable.tar.gz +SET URL=https://github.com/libevent/libevent/releases/download/release-%LIBEVENT_VERSION%-stable/%URLFILE% + +:: Download - support running a local build or a build in appveyor +CD "%WIN3P%" || EXIT /B +IF "%APPVEYOR_BUILD_ID%" == "" ( + curl -L -f -o "%URLFILE%" "%URL%" +) ELSE ( + appveyor DownloadFile "%URL%" +) +7z x "%URLFILE%" -so | 7z x -si -ttar > nul || EXIT /B +CD "libevent-%LIBEVENT_VERSION%-stable" || EXIT /B +nmake -f Makefile.nmake static_libs || EXIT /B + +:: in libevent 2.0 there is no nmake subdirectory in WIN32-Code, but in 2.1 there is +mkdir lib || EXIT /B +move *.lib lib\ || EXIT /B +move WIN32-Code\event2\* include\event2\ || move WIN32-Code\nmake\event2\* include\event2\ || EXIT /B +move *.h include\ || EXIT /B + +ENDLOCAL diff --git a/src/jaegertracing/thrift/build/appveyor/build-zlib.bat b/src/jaegertracing/thrift/build/appveyor/build-zlib.bat new file mode 100644 index 000000000..9195726d5 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/build-zlib.bat @@ -0,0 +1,56 @@ +:: +:: 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. +:: + +SETLOCAL EnableDelayedExpansion + +SET PACKAGE=zlib-%ZLIB_VERSION% +SET BUILDDIR=%WIN3P%\zlib-build +SET INSTDIR=%WIN3P%\zlib-inst +SET SRCDIR=%WIN3P%\%PACKAGE% +SET URLFILE=%PACKAGE%.tar.gz + +:: This allows us to tolerate when the current version is archived +SET URL=http://zlib.net/%URLFILE% +SET FURL=http://zlib.net/fossils/%URLFILE% + +:: Download - support running a local build or a build in appveyor +CD "%WIN3P%" || EXIT /B +IF "%APPVEYOR_BUILD_ID%" == "" ( + curl -L -f -o "%URLFILE%" "%URL%" + IF ERRORLEVEL 1 ( + curl -L -f -o "%URLFILE%" "%FURL%" + ) +) ELSE ( + appveyor DownloadFile "%URL%" + IF ERRORLEVEL 1 ( + appveyor DownloadFile "%FURL%" || EXIT /B + ) +) +7z x "%URLFILE%" -so | 7z x -si -ttar > nul || EXIT /B + +:: Generate +MKDIR "%BUILDDIR%" || EXIT /B +CD "%BUILDDIR%" || EXIT /B +cmake "%SRCDIR%" ^ + -G"NMake Makefiles" ^ + -DCMAKE_INSTALL_PREFIX="%INSTDIR%" ^ + -DCMAKE_BUILD_TYPE="%CONFIGURATION%" || EXIT /B + +:: Build +nmake /fMakefile install || EXIT /B +IF "%CONFIGURATION%" == "Debug" ( + COPY "%BUILDDIR%\zlibd.pdb" "%INSTDIR%\bin\" || EXIT /B +) + +ENDLOCAL diff --git a/src/jaegertracing/thrift/build/appveyor/cl_banner_apache_thrift.bat b/src/jaegertracing/thrift/build/appveyor/cl_banner_apache_thrift.bat new file mode 100644 index 000000000..78f2a2aab --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/cl_banner_apache_thrift.bat @@ -0,0 +1,24 @@ +:: +:: 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. +:: + +:: A visual indicator in a large log helps you locate things when scanning +:: http://www.patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Apache%20Thrift + +ECHO/ +ECHO ___ __ ________ _ _____ +ECHO / _ | ___ ___ _____/ / ___ /_ __/ / ____(_) _/ /_ +ECHO / __ |/ _ \/ _ `/ __/ _ \/ -_) / / / _ \/ __/ / _/ __/ +ECHO /_/ |_/ .__/\_,_/\__/_//_/\__/ /_/ /_//_/_/ /_/_/ \__/ +ECHO /_/ +ECHO/ diff --git a/src/jaegertracing/thrift/build/appveyor/cl_banner_build.bat b/src/jaegertracing/thrift/build/appveyor/cl_banner_build.bat new file mode 100644 index 000000000..60272f335 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/cl_banner_build.bat @@ -0,0 +1,23 @@ +:: +:: 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. +:: + +:: A visual indicator in a large log helps you locate things when scanning +:: http://www.patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Build + +ECHO/ +ECHO ___ _ __ __ +ECHO / _ )__ __(_) /__/ / +ECHO / _ / // / / / _ / @@@ BUILD +ECHO /____/\_,_/_/_/\_,_/ +ECHO/ diff --git a/src/jaegertracing/thrift/build/appveyor/cl_banner_install.bat b/src/jaegertracing/thrift/build/appveyor/cl_banner_install.bat new file mode 100644 index 000000000..fde3da21a --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/cl_banner_install.bat @@ -0,0 +1,23 @@ +:: +:: 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. +:: + +:: A visual indicator in a large log helps you locate things when scanning +:: http://www.patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Install + +ECHO/ +ECHO ____ __ ____ +ECHO / _/__ ___ / /____ _/ / / +ECHO _/ // _ \(_-^</ __/ _ \/ / / @@@ INSTALL +ECHO /___/_//_/___/\__/\_,_/_/_/ +ECHO/ diff --git a/src/jaegertracing/thrift/build/appveyor/cl_banner_test.bat b/src/jaegertracing/thrift/build/appveyor/cl_banner_test.bat new file mode 100644 index 000000000..44e2d1077 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/cl_banner_test.bat @@ -0,0 +1,23 @@ +:: +:: 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. +:: + +:: A visual indicator in a large log helps you locate things when scanning +:: http://www.patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Test + +ECHO/ +ECHO ______ __ +ECHO /_ __/__ ___ / /_ +ECHO / / / -_^|_-^</ __/ @@@ TEST +ECHO /_/ \__/___/\__/ +ECHO/ diff --git a/src/jaegertracing/thrift/build/appveyor/cl_setcompiler.bat b/src/jaegertracing/thrift/build/appveyor/cl_setcompiler.bat new file mode 100644 index 000000000..733ffc538 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/cl_setcompiler.bat @@ -0,0 +1,63 @@ +:: +:: 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. +:: + +:: +:: Detect the compiler edition we're building in. +:: Set the COMPILER environment variable to one of: +:: gcc = MinGW / MSYS2 and gcc toolchain +:: vc100 = Visual Studio 2010 +:: vc110 = Visual Studio 2012 +:: vc120 = Visual Studio 2013 +:: vc140 = Visual Studio 2015 +:: vc141 = Visual Studio 2017 +:: +:: Honors any existing COMPILER environment variable +:: setting instead of overwriting it, to allow it +:: to be forced if needed. +:: +:: Sets ERRORLEVEL to 0 if COMPILER can be determined, +:: to 1 if it cannot. +:: + +IF DEFINED COMPILER ( + ECHO [warn ] using existing environment variable COMPILER + EXIT /B 0 +) + +IF NOT "%PROFILE:~0,4%" == "MSVC" ( + SET COMPILER=gcc +) ELSE ( + CALL :CHECK 16 + IF !ERRORLEVEL! == 0 (SET COMPILER=vc100) + CALL :CHECK 17 + IF !ERRORLEVEL! == 0 (SET COMPILER=vc110) + CALL :CHECK 18 + IF !ERRORLEVEL! == 0 (SET COMPILER=vc120) + CALL :CHECK 19.0 + IF !ERRORLEVEL! == 0 (SET COMPILER=vc140) + CALL :CHECK 19.1 + IF !ERRORLEVEL! == 0 (SET COMPILER=vc141) +) + +IF NOT DEFINED COMPILER ( + ECHO [error] unable to determine the compiler edition + EXIT /B 1 +) + +ECHO [info ] detected compiler edition %COMPILER% +EXIT /B 0 + +:CHECK +cl /? 2>&1 | findstr /C:"Version %1%" > nul +EXIT /B diff --git a/src/jaegertracing/thrift/build/appveyor/cl_setenv.bat b/src/jaegertracing/thrift/build/appveyor/cl_setenv.bat new file mode 100644 index 000000000..98931a603 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/cl_setenv.bat @@ -0,0 +1,122 @@ +:: +:: 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. +:: + +@ECHO OFF + +IF "%PROFILE%" == "MSVC2012" ( + CALL "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" %PLATFORM% +) ELSE IF "%PROFILE%" == "MSVC2013" ( + CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %PLATFORM% +) ELSE IF "%PROFILE%" == "MSVC2015" ( + CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %PLATFORM% +) ELSE IF "%PROFILE%" == "MSVC2017" ( + CALL :SETUPNEWERMSVC || EXIT /B +) ELSE IF "%PROFILE%" == "MINGW" ( + REM Supported, nothing special to do here. +) ELSE IF "%PROFILE%" == "CYGWIN" ( + REM Supported, nothing special to do here. +) ELSE ( + ECHO Unsupported PROFILE=%PROFILE% or PLATFORM=%PLATFORM% + EXIT /B 1 +) + +CALL cl_setcompiler.bat || EXIT /B +CALL cl_setgenerator.bat || EXIT /B + +SET APPVEYOR_SCRIPTS=%APPVEYOR_BUILD_FOLDER%\build\appveyor +SET BUILDDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM% +SET INSTDIR=%APPVEYOR_BUILD_FOLDER%\..\build\%PROFILE%\%PLATFORM% +SET SRCDIR=%APPVEYOR_BUILD_FOLDER% + +:: PLATFORM is x64 or x86 +:: NORM_PLATFORM is 64 or 32 +SET NORM_PLATFORM=%PLATFORM:~-2,2% +IF "%NORM_PLATFORM%" == "86" (SET NORM_PLATFORM=32) + +IF "%PROFILE:~0,4%" == "MSVC" ( + + :: FindBoost needs forward slashes so cmake doesn't see something as an escaped character + SET BOOST_ROOT=C:/Libraries/boost_%BOOST_VERSION:.=_% + SET BOOST_LIBRARYDIR=!BOOST_ROOT!/lib%NORM_PLATFORM%-msvc-%COMPILER:~-3,2%.%COMPILER:~-1,1% + SET OPENSSL_ROOT=C:\OpenSSL-Win%NORM_PLATFORM% + SET WIN3P=%APPVEYOR_BUILD_FOLDER%\thirdparty + + IF "%PYTHON_VERSION%" == "" ( + SET WITH_PYTHON=OFF + ) ELSE ( + SET WITH_PYTHON=ON + IF /i "%PLATFORM%" == "x64" SET PTEXT=-x64 + SET PATH=C:\Python%PYTHON_VERSION:.=%!PTEXT!\scripts;C:\Python%PYTHON_VERSION:.=%!PTEXT!;!PATH! + ) + IF "%CONFIGURATION%" == "Debug" (SET ZLIB_LIB_SUFFIX=d) + + IF NOT "%QT_VERSION%" == "" ( + IF /i "%PLATFORM%" == "x64" SET QTEXT=_64 + SET PATH=C:\Qt\%QT_VERSION%\%PROFILE%!QTEXT!\bin;!PATH! + ) + +) ELSE IF "%PROFILE:~0,4%" == "MING" ( + + :: PLATFORM = x86 means MINGWPLAT i686 + :: PLATFORM = x64 means MINGWPLAT x86_64 + SET MINGWPLAT=x86_64 + IF "%PLATFORM%" == "x86" (SET MINGWPLAT=i686) + + SET BASH=C:\msys64\usr\bin\bash.exe + !BASH! -lc "sed -i '/export PATH=\/mingw32\/bin/d' ~/.bash_profile && sed -i '/export PATH=\/mingw64\/bin/d' ~/.bash_profile && echo 'export PATH=/mingw%NORM_PLATFORM%/bin:$PATH' >> ~/.bash_profile" || EXIT /B + + SET BUILDDIR=%BUILDDIR:\=/% + SET BUILDDIR=/c!BUILDDIR:~2! + SET INSTDIR=%INSTDIR:\=/% + SET INSTDIR=/c!INSTDIR:~2! + SET SRCDIR=%SRCDIR:\=/% + SET SRCDIR=/c!SRCDIR:~2! + +) ELSE IF "%PROFILE:~0,4%" == "CYGW" ( + + SET CYGWINROOT=C:\cygwin + IF "%PLATFORM%" == "x64" (SET CYGWINROOT=!CYGWINROOT!64) + + SET BASH=!CYGWINROOT!\bin\bash.exe + SET SETUP=!CYGWINROOT!\setup-x86 + IF "%PLATFORM%" == "x64" (SET SETUP=!SETUP!_64) + SET SETUP=!SETUP!.exe + + SET BUILDDIR=%BUILDDIR:\=/% + SET BUILDDIR=/cygdrive/c!BUILDDIR:~2! + SET INSTDIR=%INSTDIR:\=/% + SET INSTDIR_CYG=/cygdrive/c!INSTDIR:~2! + SET SRCDIR=%SRCDIR:\=/% + SET SRCDIR=/cygdrive/c!SRCDIR:~2! + +) + +GOTO :EOF + +:SETUPNEWERMSVC + :: If VsDevCmd.bat has already executed, as is the case in the + :: msvc2017 docker container, skip this... + IF NOT DEFINED VSCMD_VER ( + FOR /F "USEBACKQ TOKENS=*" %%i IN (`call "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version "[15.0,16.0)" -property installationPath`) DO ( + IF "%MSVCROOT%" == "" (SET MSVCROOT=%%i) + ) + SET MSVCPLAT=x86 + IF "%PLATFORM%" == "x64" (SET MSVCPLAT=amd64) + + SET CURRENTDIR=%CD% + CALL "!MSVCROOT!\Common7\Tools\VsDevCmd.bat" -arch=!MSVCPLAT! || EXIT /B + CD %CURRENTDIR% + EXIT /B + ) +:EOF diff --git a/src/jaegertracing/thrift/build/appveyor/cl_setgenerator.bat b/src/jaegertracing/thrift/build/appveyor/cl_setgenerator.bat new file mode 100644 index 000000000..5eb6ff31f --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/cl_setgenerator.bat @@ -0,0 +1,79 @@ +:: +:: 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. +:: + +:: +:: Detect the compiler edition we're building in and then +:: set the GENERATOR environment variable to one of: +:: +:: Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files. +:: Optional [arch] can be "Win64" or "ARM". +:: Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. +:: Optional [arch] can be "Win64" or "ARM". +:: Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. +:: Optional [arch] can be "Win64" or "ARM". +:: Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. +:: Optional [arch] can be "Win64" or "ARM". +:: Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. +:: Optional [arch] can be "Win64" or "IA64". +:: MinGW Makefiles = Generates makefiles for MinGW +:: MSYS Makefiles = Generates makefiles for MSYS +:: Unix Makefiles = Generates makefiles for CYGWIN +:: +:: Honors any existing GENERATOR environment variable +:: setting instead of overwriting it, to allow it +:: to be forced if needed. +:: +:: Sets ERRORLEVEL to 0 if GENERATOR can be determined, +:: to 1 if it cannot. +:: + +IF DEFINED GENERATOR ( + ECHO [warn ] using existing environment variable GENERATOR + EXIT /B 0 +) + + +IF "%PROFILE:~0,4%" == "MING" ( + SET GENERATOR=MinGW Makefiles + +) ELSE IF "%PROFILE:~0,4%" == "CYGW" ( + SET GENERATOR=Unix Makefiles + +) ELSE IF "%PROFILE:~0,4%" == "MSYS" ( + SET GENERATOR=MSYS Makefiles +) ELSE ( + IF /i "%PLATFORM%" == "x64" SET GENARCH= Win64 + CALL :CHECK 16 + IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 10 2010!GENARCH! + CALL :CHECK 17 + IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 11 2012!GENARCH! + CALL :CHECK 18 + IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 12 2013!GENARCH! + CALL :CHECK 19.0 + IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 14 2015!GENARCH! + CALL :CHECK 19.1 + IF !ERRORLEVEL! == 0 SET GENERATOR=Visual Studio 15 2017!GENARCH! +) + +IF NOT DEFINED GENERATOR ( + ECHO [error] unable to determine the CMake generator to use + EXIT /B 1 +) + +ECHO [info ] using CMake generator %GENERATOR% +EXIT /B 0 + +:CHECK +cl /? 2>&1 | findstr /C:"Version %1%" > nul +EXIT /B diff --git a/src/jaegertracing/thrift/build/appveyor/cl_showenv.bat b/src/jaegertracing/thrift/build/appveyor/cl_showenv.bat new file mode 100644 index 000000000..a70a4906a --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/cl_showenv.bat @@ -0,0 +1,63 @@ +:: +:: 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. +:: + +ECHO/ +ECHO =============================================================================== +IF "%PROFILE:~0,4%" == "MSVC" ( +ECHO Versions +ECHO ------------------------------------------------------------------------------- +ECHO boost = %BOOST_VERSION% +ECHO libevent = %LIBEVENT_VERSION% +ECHO python = %PYTHON_VERSION% +ECHO qt = %QT_VERSION% +ECHO zlib = %ZLIB_VERSION% +ECHO/ +) +ECHO Appveyor Variables +ECHO ------------------------------------------------------------------------------- +ECHO APPVEYOR_BUILD_FOLDER = %APPVEYOR_BUILD_FOLDER% +ECHO CONFIGURATION = %CONFIGURATION% +ECHO PLATFORM = %PLATFORM% +ECHO PROFILE = %PROFILE% +ECHO/ +ECHO Our Variables +ECHO ------------------------------------------------------------------------------- +ECHO APPVEYOR_SCRIPTS = %APPVEYOR_SCRIPTS% +ECHO BASH = %BASH% +ECHO BOOST_ROOT = %BOOST_ROOT% +ECHO BOOST_INCLUDEDIR = %BOOST_INCLUDEDIR% +ECHO BOOST_LIBRARYDIR = %BOOST_LIBRARYDIR% +ECHO BUILDDIR = %BUILDDIR% +ECHO COMPILER = %COMPILER% +ECHO GENERATOR = %GENERATOR% +ECHO INSTDIR = %INSTDIR% +ECHO JAVA_HOME = %JAVA_HOME% +ECHO OPENSSL_ROOT = %OPENSSL_ROOT% +ECHO SETUP = %SETUP% +ECHO SRCDIR = %SRCDIR% +ECHO WIN3P = %WIN3P% +ECHO WITH_PYTHON = %WITH_PYTHON% +ECHO ZLIB_STATIC_SUFFIX = %ZLIB_STATIC_SUFFIX% +IF NOT "%PROFILE:~0,4%" == "MSVC" ( + ECHO/ + ECHO UNIXy PATH + ECHO ------------------------------------------------------------------------------- + %BASH% -lc "echo $PATH" +) +ECHO/ +ECHO Windows PATH +ECHO ------------------------------------------------------------------------------- +ECHO %PATH% +ECHO =============================================================================== +ECHO/ diff --git a/src/jaegertracing/thrift/build/appveyor/simulate-appveyor.bat b/src/jaegertracing/thrift/build/appveyor/simulate-appveyor.bat new file mode 100644 index 000000000..8674f40b7 --- /dev/null +++ b/src/jaegertracing/thrift/build/appveyor/simulate-appveyor.bat @@ -0,0 +1,35 @@ +:: +:: 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. +:: + +:: +:: Helps build thrift by pretending to be appveyor +:: Usage: +:: cd build\appveyor +:: simulate-appveyor.bat [Debug|Release] [x86|x64] [CYGWIN|MINGW|MSVC201?] +:: + +@ECHO OFF +SETLOCAL EnableDelayedExpansion + +SET APPVEYOR_BUILD_FOLDER=%~dp0..\.. +SET CONFIGURATION=%1 +SET PLATFORM=%2 +SET PROFILE=%3 + +CD %APPVEYOR_BUILD_FOLDER% +CALL build\appveyor\%PROFILE:~0,4%-appveyor-install.bat || EXIT /B +CD %APPVEYOR_BUILD_FOLDER% +CALL build\appveyor\%PROFILE:~0,4%-appveyor-build.bat || EXIT /B +CD %APPVEYOR_BUILD_FOLDER% +CALL build\appveyor\%PROFILE:~0,4%-appveyor-test.bat diff --git a/src/jaegertracing/thrift/build/cmake/BoostMacros.cmake b/src/jaegertracing/thrift/build/cmake/BoostMacros.cmake new file mode 100644 index 000000000..cc50b53db --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/BoostMacros.cmake @@ -0,0 +1,49 @@ +# +# 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(BOOST_MINREV 1.56) + +# we are not ready for the new style link targets introduced in +# boost 1.70.0 and cmake 3.14.2 which showed up on appveyor in +# mingw builds +set(Boost_NO_BOOST_CMAKE ON) + +macro(REQUIRE_BOOST_HEADERS) + find_package(Boost ${BOOST_MINREV} QUIET REQUIRED) + if (NOT Boost_FOUND) + string(CONCAT fatal_message + "Boost ${BOOST_MINREV} or later is required to build sources in ${CMAKE_CURRENT_SOURCE_DIR}") + message(FATAL_ERROR, ${fatal_message}) + endif() + if (DEFINED Boost_INCLUDE_DIRS) + # pre-boost 1.70.0 aware cmake, otherwise it is using targets + include_directories(SYSTEM "${Boost_INCLUDE_DIRS}") + endif() +endmacro() + +macro(REQUIRE_BOOST_LIBRARIES libs) + message(STATUS "Locating boost libraries required by sources in ${CMAKE_CURRENT_SOURCE_DIR}") + find_package(Boost ${BOOST_MINREV} REQUIRED COMPONENTS ${${libs}}) + if (NOT Boost_FOUND) + string(CONCAT fatal_message + "Boost ${BOOST_MINREV} or later is required to build sources in ${CMAKE_CURRENT_SOURCE_DIR}, " + "or use -DBUILD_TESTING=OFF") + message(FATAL_ERROR, ${fatal_message}) + endif() +endmacro() diff --git a/src/jaegertracing/thrift/build/cmake/BuildType.cmake b/src/jaegertracing/thrift/build/cmake/BuildType.cmake new file mode 100644 index 000000000..b3bf35306 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/BuildType.cmake @@ -0,0 +1,36 @@ +# +# 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. +# + +# originally from: +# https://raw.githubusercontent.com/OpenChemistry/tomviz/master/cmake/BuildType.cmake + +# Set a default build type if none was specified +set(default_build_type "RelWithDebInfo") +if(EXISTS "${CMAKE_SOURCE_DIR}/.git") + set(default_build_type "Debug") +endif() + +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "Setting build type to '${default_build_type}' as none was specified.") + set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE + STRING "Choose the type of build." FORCE) + # Set the possible values of build type for cmake-gui + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" + "MinSizeRel" "RelWithDebInfo") +endif() diff --git a/src/jaegertracing/thrift/build/cmake/CPackConfig.cmake b/src/jaegertracing/thrift/build/cmake/CPackConfig.cmake new file mode 100644 index 000000000..fdc1b4e76 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/CPackConfig.cmake @@ -0,0 +1,68 @@ +# +# 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. +# + + +#TODO: Should we bundle system libraries for DLLs? +#include(InstallRequiredSystemLibraries) + +# For help take a look at: +# http://www.cmake.org/Wiki/CMake:CPackConfiguration + +### general settings +set(CPACK_PACKAGE_NAME "thrift") +set(CPACK_PACKAGE_VERSION "${PACKAGE_VERSION}") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Apache Thrift") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") +set(CPACK_PACKAGE_VENDOR "Apache Software Foundation") +set(CPACK_PACKAGE_CONTACT "dev@thrift.apache.org") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") +set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}") + +### versions +set(CPACK_PACKAGE_VERSION_MAJOR ${thrift_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${thrift_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${thrift_VERSION_PATCH}) + +### source generator +set(CPACK_SOURCE_GENERATOR "TGZ") +set(CPACK_SOURCE_IGNORE_FILES "~$;[.]swp$;/[.]svn/;/[.]git/;.gitignore;/build/;tags;cscope.*") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") + +### zip generator +set(CPACK_GENERATOR "ZIP") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "thrift") + + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(CPACK_GENERATOR "NSIS") + set(CPACK_NSIS_HELP_LINK "http://thrift.apache.org") + set(CPACK_NSIS_MENU_LINKS + "http://thrift.apache.org" "Apache Thrift - Web Site" + "https://issues.apache.org/jira/browse/THRIFT" "Apache Thrift - Issues") + set(CPACK_NSIS_CONTACT ${CPACK_PACKAGE_CONTACT}) + set(CPACK_NSIS_MODIFY_PATH "ON") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") +else() + set(CPACK_GENERATOR "DEB" ) + set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT}) +endif() + + +include(CPack) diff --git a/src/jaegertracing/thrift/build/cmake/ConfigureChecks.cmake b/src/jaegertracing/thrift/build/cmake/ConfigureChecks.cmake new file mode 100644 index 000000000..457bfe05d --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/ConfigureChecks.cmake @@ -0,0 +1,79 @@ +# +# 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. +# + +include(CheckFunctionExists) +include(CheckIncludeFile) +include(CheckIncludeFiles) +include(CheckSymbolExists) + +if (Inttypes_FOUND) + # This allows the inttypes.h and stdint.h checks to succeed on platforms that + # do not natively provide there. + set (CMAKE_REQUIRED_INCLUDES ${INTTYPES_INCLUDE_DIRS}) +endif () + +check_include_file(arpa/inet.h HAVE_ARPA_INET_H) +check_include_file(fcntl.h HAVE_FCNTL_H) +check_include_file(getopt.h HAVE_GETOPT_H) +check_include_file(inttypes.h HAVE_INTTYPES_H) +check_include_file(netdb.h HAVE_NETDB_H) +check_include_file(netinet/in.h HAVE_NETINET_IN_H) +check_include_file(signal.h HAVE_SIGNAL_H) +check_include_file(stdint.h HAVE_STDINT_H) +check_include_file(unistd.h HAVE_UNISTD_H) +check_include_file(pthread.h HAVE_PTHREAD_H) +check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_H) +check_include_file(sys/param.h HAVE_SYS_PARAM_H) +check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H) +check_include_file(sys/socket.h HAVE_SYS_SOCKET_H) +check_include_file(sys/stat.h HAVE_SYS_STAT_H) +check_include_file(sys/time.h HAVE_SYS_TIME_H) +check_include_file(sys/un.h HAVE_SYS_UN_H) +check_include_file(poll.h HAVE_POLL_H) +check_include_file(sys/poll.h HAVE_SYS_POLL_H) +check_include_file(sys/select.h HAVE_SYS_SELECT_H) +check_include_file(sched.h HAVE_SCHED_H) +check_include_file(string.h HAVE_STRING_H) +check_include_file(strings.h HAVE_STRINGS_H) + +check_function_exists(gethostbyname HAVE_GETHOSTBYNAME) +check_function_exists(gethostbyname_r HAVE_GETHOSTBYNAME_R) +check_function_exists(strerror_r HAVE_STRERROR_R) +check_function_exists(sched_get_priority_max HAVE_SCHED_GET_PRIORITY_MAX) +check_function_exists(sched_get_priority_min HAVE_SCHED_GET_PRIORITY_MIN) + +include(CheckCSourceCompiles) +include(CheckCXXSourceCompiles) + +check_cxx_source_compiles( + " + #include <string.h> + int main(){char b;char *a = strerror_r(0, &b, 0); return(0);} + " + STRERROR_R_CHAR_P) + + +set(PACKAGE ${PACKAGE_NAME}) +set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") +set(VERSION ${thrift_VERSION}) + +# generate a config.h file +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/thrift/config.h") + +include_directories("${CMAKE_CURRENT_BINARY_DIR}") diff --git a/src/jaegertracing/thrift/build/cmake/DefineCMakeDefaults.cmake b/src/jaegertracing/thrift/build/cmake/DefineCMakeDefaults.cmake new file mode 100644 index 000000000..2b0cdbb94 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/DefineCMakeDefaults.cmake @@ -0,0 +1,92 @@ +# +# 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. +# + + +# Always include srcdir and builddir in include path +# This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY} in +# about every subdir +# since cmake 2.4.0 +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +# Put the include dirs which are in the source or build tree +# before all other include dirs, so the headers in the sources +# are preferred over the already installed ones +# since cmake 2.4.1 +set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) + +# Use colored output +# since cmake 2.4.0 +set(CMAKE_COLOR_MAKEFILE ON) + +# Create the compile command database for clang by default +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# Set the CMAKE_BUILD_TYPE if it is not already defined +include(BuildType) + +# Put the libraries and binaries that get built into directories at the +# top of the build tree rather than in hard-to-find leaf +# directories. This simplifies manual testing and the use of the build +# tree rather than installed thrift libraries. +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +# +# "rpath" support. +# See http://www.itk.org/Wiki/index.php?title=CMake_RPATH_handling +# +# On MacOSX, for shared libraries, enable rpath support. +set(CMAKE_MACOSX_RPATH TRUE) +# +# On any OS, for executables, allow linking with shared libraries in non-system +# locations and running the executables without LD_PRELOAD or similar. +# This requires the library to be built with rpath support. +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + +# +# C++ Language Level Defaults - this depends on the compiler capabilities +# +if (NOT DEFINED CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 11) # C++11 + message(STATUS "Setting C++11 as the default language level.") + message(STATUS "To specify a different C++ language level, set CMAKE_CXX_STANDARD") +endif() + +if (CMAKE_CXX_STANDARD EQUAL 98) + message(FATAL_ERROR "only C++11 or above C++ standard is supported") +elseif (CMAKE_CXX_STANDARD EQUAL 11) + # should not fallback to C++98 + set(CMAKE_CXX_STANDARD_REQUIRED ON) +endif() + +if (NOT DEFINED CMAKE_CXX_EXTENSIONS) + set(CMAKE_CXX_EXTENSIONS OFF) # use standards compliant language level for portability +endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + include(CheckCXXCompilerFlag) + set(CMAKE_REQUIRED_QUIET ON) + check_cxx_compiler_flag("/Zc:__cplusplus" res_var) + if (res_var) + # Make MSVC reporting correct value for __cplusplus + # See https://blogs.msdn.microsoft.com/vcblog/2018/04/09/msvc-now-correctly-reports-__cplusplus/ + add_compile_options("/Zc:__cplusplus") + endif() +endif() diff --git a/src/jaegertracing/thrift/build/cmake/DefineInstallationPaths.cmake b/src/jaegertracing/thrift/build/cmake/DefineInstallationPaths.cmake new file mode 100644 index 000000000..0c824cc7a --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/DefineInstallationPaths.cmake @@ -0,0 +1,32 @@ +# +# 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. +# + + +# Define the default install paths +set(BIN_INSTALL_DIR "bin" CACHE PATH "The binary install dir (default: bin)") +set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The library install dir (default: lib${LIB_SUFFIX})") +set(INCLUDE_INSTALL_DIR "include" CACHE PATH "The library install dir (default: include)") +set(CMAKE_INSTALL_DIR "lib/cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)") +set(PKGCONFIG_INSTALL_DIR "lib/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)") +set(DOC_INSTALL_DIR "share/doc" CACHE PATH "The subdirectory to install documentation files (default: share/doc)") +set(prefix "${CMAKE_INSTALL_PREFIX}") +set(exec_prefix "${CMAKE_INSTALL_PREFIX}/bin") +set(libdir "${CMAKE_INSTALL_PREFIX}/lib") +set(includedir "${CMAKE_INSTALL_PREFIX}/include") +set(cmakedir "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DIR}") diff --git a/src/jaegertracing/thrift/build/cmake/DefineOptions.cmake b/src/jaegertracing/thrift/build/cmake/DefineOptions.cmake new file mode 100644 index 000000000..778be8dff --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/DefineOptions.cmake @@ -0,0 +1,196 @@ +# +# 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. +# + + +include(CMakeDependentOption) + +set(THRIFT_COMPILER "" CACHE FILEPATH "External Thrift compiler to use during build") + +# Additional components +option(BUILD_COMPILER "Build Thrift compiler" ON) + +if(BUILD_COMPILER OR EXISTS ${THRIFT_COMPILER}) + set(HAVE_COMPILER ON) +endif() +CMAKE_DEPENDENT_OPTION(BUILD_TESTING "Build with unit tests" ON "HAVE_COMPILER" OFF) +CMAKE_DEPENDENT_OPTION(BUILD_TUTORIALS "Build Thrift tutorials" ON "HAVE_COMPILER" OFF) +option(BUILD_LIBRARIES "Build Thrift libraries" ON) + +# Libraries to build + +# Each language library can be enabled or disabled using the WITH_<LANG> flag. +# By default CMake checks if the required dependencies for a language are present +# and enables the library if all are found. This means the default is to build as +# much as possible but leaving out libraries if their dependencies are not met. + +if (NOT Boost_USE_STATIC_LIBS) + add_definitions(-DBOOST_ALL_DYN_LINK) + add_definitions(-DBOOST_TEST_DYN_LINK) +endif() + +# as3 +option(WITH_AS3 "Build ActionScript 3 Thrift Library" ON) +if (WITH_AS3) + set(POSSIBLE_PATHS "${FLEX_HOME}/bin" "$ENV{FLEX_HOME}/bin") + find_program(HAVE_COMPC NAMES compc HINTS ${POSSIBLE_PATHS}) +endif () +CMAKE_DEPENDENT_OPTION(BUILD_AS3 "Build as3 library" ON + "BUILD_LIBRARIES;WITH_AS3;HAVE_COMPC" OFF) + +# C++ +option(WITH_CPP "Build C++ Thrift library" ON) +if(WITH_CPP) + # NOTE: Currently the following options are C++ specific, + # but in future other libraries might reuse them. + # So they are not dependent on WITH_CPP but setting them without WITH_CPP currently + # has no effect. + if(ZLIB_LIBRARY) + # FindZLIB.cmake does not normalize path so we need to do it ourselves. + file(TO_CMAKE_PATH ${ZLIB_LIBRARY} ZLIB_LIBRARY) + endif() + find_package(ZLIB QUIET) + CMAKE_DEPENDENT_OPTION(WITH_ZLIB "Build with ZLIB support" ON + "ZLIB_FOUND" OFF) + find_package(Libevent QUIET) + CMAKE_DEPENDENT_OPTION(WITH_LIBEVENT "Build with libevent support" ON + "Libevent_FOUND" OFF) + find_package(Qt5 QUIET COMPONENTS Core Network) + CMAKE_DEPENDENT_OPTION(WITH_QT5 "Build with Qt5 support" ON + "Qt5_FOUND" OFF) + find_package(OpenSSL QUIET) + CMAKE_DEPENDENT_OPTION(WITH_OPENSSL "Build with OpenSSL support" ON + "OPENSSL_FOUND" OFF) +endif() +CMAKE_DEPENDENT_OPTION(BUILD_CPP "Build C++ library" ON + "BUILD_LIBRARIES;WITH_CPP" OFF) + +# C GLib +option(WITH_C_GLIB "Build C (GLib) Thrift library" ON) +if(WITH_C_GLIB) + find_package(GLIB QUIET COMPONENTS gobject) +endif() +CMAKE_DEPENDENT_OPTION(BUILD_C_GLIB "Build C (GLib) library" ON + "BUILD_LIBRARIES;WITH_C_GLIB;GLIB_FOUND" OFF) + +# Java +option(WITH_JAVA "Build Java Thrift library" ON) +if(ANDROID) + find_package(Gradle QUIET) + CMAKE_DEPENDENT_OPTION(BUILD_JAVA "Build Java library" ON + "BUILD_LIBRARIES;WITH_JAVA;GRADLE_FOUND" OFF) +else() + find_package(Gradlew QUIET) + find_package(Java QUIET) + CMAKE_DEPENDENT_OPTION(BUILD_JAVA "Build Java library" ON + "BUILD_LIBRARIES;WITH_JAVA;JAVA_FOUND;GRADLEW_FOUND" OFF) +endif() + +# Python +option(WITH_PYTHON "Build Python Thrift library" ON) +find_package(PythonInterp QUIET) # for Python executable +find_package(PythonLibs QUIET) # for Python.h +CMAKE_DEPENDENT_OPTION(BUILD_PYTHON "Build Python library" ON + "BUILD_LIBRARIES;WITH_PYTHON;PYTHONINTERP_FOUND;PYTHONLIBS_FOUND" OFF) + +# Haskell +option(WITH_HASKELL "Build Haskell Thrift library" ON) +find_package(GHC QUIET) +find_package(Cabal QUIET) +CMAKE_DEPENDENT_OPTION(BUILD_HASKELL "Build GHC library" ON + "BUILD_LIBRARIES;WITH_HASKELL;GHC_FOUND;CABAL_FOUND" OFF) + +# Common library options +# https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html +# Default on Windows is static, shared mode library support needs work... +CMAKE_DEPENDENT_OPTION(BUILD_SHARED_LIBS "Build shared libraries" OFF "WIN32" ON) + +if (WITH_SHARED_LIB) + message(WARNING "WITH_SHARED_LIB is deprecated; use -DBUILD_SHARED_LIBS=ON instead") + set(BUILD_SHARED_LIBS ON) +elseif (WITH_STATIC_LIB) + if (WITH_SHARED_LIB) + message(FATAL_ERROR "Cannot build shared and static together; set BUILD_SHARED_LIBS instead.") + endif () + message(WARNING "WITH_STATIC_LIB is deprecated; use -DBUILD_SHARED_LIBS=OFF instead") + set(BUILD_SHARED_LIBS OFF) +endif () + +# Visual Studio only options +if(MSVC) + option(WITH_MT "Build using MT instead of MD (MSVC only)" OFF) +endif(MSVC) + +macro(MESSAGE_DEP flag summary) +if(NOT ${flag}) + message(STATUS " - ${summary}") +endif() +endmacro(MESSAGE_DEP flag summary) + +macro(PRINT_CONFIG_SUMMARY) +message(STATUS "----------------------------------------------------------") +message(STATUS "Thrift version: ${thrift_VERSION} (${thrift_VERSION_MAJOR}.${thrift_VERSION_MINOR}.${thrift_VERSION_PATCH})") +message(STATUS "Thrift package version: ${PACKAGE_VERSION}") +message(STATUS) +message(STATUS "Build configuration summary") +message(STATUS " Build compiler: ${BUILD_COMPILER}") +message(STATUS " Build libraries: ${BUILD_LIBRARIES}") +message(STATUS " Build tests: ${BUILD_TESTING}") +MESSAGE_DEP(HAVE_COMPILER "Disabled because BUILD_THRIFT=OFF and no valid THRIFT_COMPILER is given") +message(STATUS " Build type: ${CMAKE_BUILD_TYPE}") +message(STATUS) +message(STATUS "Language libraries:") +message(STATUS) +message(STATUS " Build as3 library: ${BUILD_AS3}") +MESSAGE_DEP(WITH_AS3 "Disabled by WITH_AS3=OFF") +MESSAGE_DEP(HAVE_COMPC "Adobe Flex compc was not found - did you set env var FLEX_HOME?") +message(STATUS) +message(STATUS " Build C++ library: ${BUILD_CPP}") +MESSAGE_DEP(WITH_CPP "Disabled by WITH_CPP=OFF") +if (BUILD_CPP) + message(STATUS " C++ Language Level: ${CXX_LANGUAGE_LEVEL}") + message(STATUS " Build shared libraries: ${BUILD_SHARED_LIBS}") + message(STATUS " Build with libevent support: ${WITH_LIBEVENT}") + message(STATUS " Build with Qt5 support: ${WITH_QT5}") + message(STATUS " Build with ZLIB support: ${WITH_ZLIB}") +endif () +message(STATUS) +message(STATUS " Build C (GLib) library: ${BUILD_C_GLIB}") +MESSAGE_DEP(WITH_C_GLIB "Disabled by WITH_C_GLIB=OFF") +MESSAGE_DEP(GLIB_FOUND "GLib missing") +message(STATUS) +message(STATUS " Build Java library: ${BUILD_JAVA}") +MESSAGE_DEP(WITH_JAVA "Disabled by WITH_JAVA=OFF") +if(ANDROID) + MESSAGE_DEP(GRADLE_FOUND "Gradle missing") +else() + MESSAGE_DEP(JAVA_FOUND "Java Runtime missing") + MESSAGE_DEP(GRADLEW_FOUND "Gradle Wrapper missing") +endif() +message(STATUS) +message(STATUS " Build Python library: ${BUILD_PYTHON}") +MESSAGE_DEP(WITH_PYTHON "Disabled by WITH_PYTHON=OFF") +MESSAGE_DEP(PYTHONLIBS_FOUND "Python libraries missing") +message(STATUS) +message(STATUS " Build Haskell library: ${BUILD_HASKELL}") +MESSAGE_DEP(WITH_HASKELL "Disabled by WITH_HASKELL=OFF") +MESSAGE_DEP(GHC_FOUND "GHC missing") +MESSAGE_DEP(CABAL_FOUND "Cabal missing") +message(STATUS) +message(STATUS "----------------------------------------------------------") +endmacro(PRINT_CONFIG_SUMMARY) diff --git a/src/jaegertracing/thrift/build/cmake/DefinePlatformSpecifc.cmake b/src/jaegertracing/thrift/build/cmake/DefinePlatformSpecifc.cmake new file mode 100644 index 000000000..c0bb529c3 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/DefinePlatformSpecifc.cmake @@ -0,0 +1,116 @@ +# +# 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. +# + +# Uncomment this to show some basic cmake variables about platforms +# include (NewPlatformDebug) + +# For Debug build types, append a "d" to the library names. +set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Set debug library postfix" FORCE) + +# basic options +foreach(lang IN ITEMS C CXX) + if(CMAKE_${lang}_COMPILER_ID STREQUAL "Clang") + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -Wall") + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -ferror-limit=1") + elseif(CMAKE_${lang}_COMPILER_ID STREQUAL "GNU") + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -Wall -Wextra") + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -fmax-errors=1") + elseif(CMAKE_${lang}_COMPILER_ID STREQUAL "MSVC") + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} /MP") # parallel build + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} /W3") # warning level 3 + include(CheckCXXCompilerFlag) + set(CMAKE_REQUIRED_QUIET ON) + check_cxx_compiler_flag("/source-charset:utf-8" res_var) + if (res_var) + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} /source-charset:utf-8") + endif() + check_cxx_compiler_flag("/execution-charset:utf-8" res_var) + if (res_var) + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} /execution-charset:utf-8") + endif() + add_definitions("-DUNICODE -D_UNICODE") + endif() +endforeach() + +# Visual Studio specific options +if(MSVC) + # Allow for shared library builds + if(BUILD_SHARED_LIBS) + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON CACHE TYPE BOOL FORCE) + endif() + + #For visual studio the library naming is as following: + # Dynamic libraries: + # - thrift.dll for release library + # - thriftd.dll for debug library + # + # Static libraries: + # - thriftmd.lib for /MD release build + # - thriftmt.lib for /MT release build + # + # - thriftmdd.lib for /MD debug build + # - thriftmtd.lib for /MT debug build + # + # the same holds for other libraries like libthriftz etc. + + # Build using /MT option instead of /MD if the WITH_MT options is set + if(WITH_MT) + set(CompilerFlags + CMAKE_CXX_FLAGS + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_RELWITHDEBINFO + ) + foreach(CompilerFlag ${CompilerFlags}) + string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}") + endforeach() + set(THRIFT_RUNTIME_POSTFIX "mt" CACHE STRING "Set runtime library postfix" FORCE) + else(WITH_MT) + set(THRIFT_RUNTIME_POSTFIX "md" CACHE STRING "Set runtime library postfix" FORCE) + endif(WITH_MT) + + # Disable boost auto linking pragmas - cmake includes the right files + add_definitions("-DBOOST_ALL_NO_LIB") +elseif(UNIX) + find_program( MEMORYCHECK_COMMAND valgrind ) + set( MEMORYCHECK_COMMAND_OPTIONS "--gen-suppressions=all --leak-check=full" ) + set( MEMORYCHECK_SUPPRESSIONS_FILE "${PROJECT_SOURCE_DIR}/test/valgrind.suppress" ) +endif() + +add_definitions("-D__STDC_FORMAT_MACROS") +add_definitions("-D__STDC_LIMIT_MACROS") + +# C++ Language Level +set(CXX_LANGUAGE_LEVEL "C++${CMAKE_CXX_STANDARD}") +if (CMAKE_CXX_STANDARD_REQUIRED) + string(CONCAT CXX_LANGUAGE_LEVEL "${CXX_LANGUAGE_LEVEL} [compiler must support it]") +else() + string(CONCAT CXX_LANGUAGE_LEVEL "${CXX_LANGUAGE_LEVEL} [fallback to earlier if compiler does not support it]") +endif() +if (CMAKE_CXX_EXTENSIONS) + string(CONCAT CXX_LANGUAGE_LEVEL "${CXX_LANGUAGE_LEVEL} [with compiler-specific extensions]") +endif() + +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-register") +endif() diff --git a/src/jaegertracing/thrift/build/cmake/FindAnt.cmake b/src/jaegertracing/thrift/build/cmake/FindAnt.cmake new file mode 100644 index 000000000..8b0371d91 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindAnt.cmake @@ -0,0 +1,30 @@ +# +# 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. +# + + +# ANT_FOUND - system has Ant +# Ant_EXECUTABLE - the Ant executable +# +# It will search the environment variable ANT_HOME if it is set + +include(FindPackageHandleStandardArgs) + +find_program(Ant_EXECUTABLE NAMES ant PATHS $ENV{ANT_HOME}/bin) +find_package_handle_standard_args(Ant DEFAULT_MSG Ant_EXECUTABLE) +mark_as_advanced(Ant_EXECUTABLE) diff --git a/src/jaegertracing/thrift/build/cmake/FindCabal.cmake b/src/jaegertracing/thrift/build/cmake/FindCabal.cmake new file mode 100644 index 000000000..fed337bd4 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindCabal.cmake @@ -0,0 +1,30 @@ +# +# 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. +# + + +# Cabal_FOUND - system has Cabal +# Cabal - the Cabal executable +# +# It will search the environment variable CABAL_HOME if it is set + +include(FindPackageHandleStandardArgs) + +find_program(CABAL NAMES cabal PATHS $ENV{HOME}/.cabal/bin $ENV{CABAL_HOME}/bin) +find_package_handle_standard_args(CABAL DEFAULT_MSG CABAL) +mark_as_advanced(CABAL) diff --git a/src/jaegertracing/thrift/build/cmake/FindClangTools.cmake b/src/jaegertracing/thrift/build/cmake/FindClangTools.cmake new file mode 100644 index 000000000..b72bea765 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindClangTools.cmake @@ -0,0 +1,28 @@ +# - Try to find Clang tools +# +# The following are set after configuration is done: +# clang-tidy_FOUND +# ClangTools::clang-tidy +# clang-apply-replacements_FOUND +# ClangTools::clang-apply-replacements +# run-clang-tidy_FOUND +# ClangTools::run-clang-tidy + +include_guard() +include(FindPackageHandleStandardArgs) + +foreach(program_name IN ITEMS clang-tidy clang-apply-replacements) + find_program(${program_name}_BINARY NAMES ${program_name}-devel ${program_name}-8 ${program_name} PATH_SUFFIXES "LLVM/bin") + find_package_handle_standard_args(${program_name} DEFAULT_MSG ${program_name}_BINARY) + if(${program_name}_FOUND AND NOT TARGET ClangTools::${program_name}) + add_executable(ClangTools::${program_name} IMPORTED) + set_property(TARGET ClangTools::${program_name} PROPERTY IMPORTED_LOCATION "${${program_name}_BINARY}") + endif() +endforeach() + +find_program(run-clang-tidy_BINARY NAMES run-clang-tidy run-clang-tidy.py PATH_SUFFIXES "LLVM/bin" "llvm-devel/share/clang") +find_package_handle_standard_args(run-clang-tidy DEFAULT_MSG run-clang-tidy_BINARY) +if(run-clang-tidy_FOUND AND NOT TARGET ClangTools::run-clang-tidy) + add_executable(ClangTools::run-clang-tidy IMPORTED) + set_property(TARGET ClangTools::run-clang-tidy PROPERTY IMPORTED_LOCATION "${run-clang-tidy_BINARY}") +endif() diff --git a/src/jaegertracing/thrift/build/cmake/FindGHC.cmake b/src/jaegertracing/thrift/build/cmake/FindGHC.cmake new file mode 100644 index 000000000..48738472c --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindGHC.cmake @@ -0,0 +1,36 @@ +# +# 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. +# + + +# GHC_FOUND - system has GHC +# GHC - the GHC executable +# RUN_HASKELL_FOUND - system has runhaskell +# RUN_HASKELL - the runhaskell executable +# +# It will search the environment variable GHC_HOME if it is set + +include(FindPackageHandleStandardArgs) + +find_program(GHC NAMES ghc PATHS $ENV{GHC_HOME}/bin) +find_package_handle_standard_args(GHC DEFAULT_MSG GHC) +mark_as_advanced(GHC) + +find_program(RUN_HASKELL NAMES runhaskell PATHS $ENV{GHC_HOME}/bin) +find_package_handle_standard_args(RUN_HASKELL DEFAULT_MSG RUN_HASKELL) +mark_as_advanced(RUN_HASKELL) diff --git a/src/jaegertracing/thrift/build/cmake/FindGLIB.cmake b/src/jaegertracing/thrift/build/cmake/FindGLIB.cmake new file mode 100644 index 000000000..acbe433e3 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindGLIB.cmake @@ -0,0 +1,122 @@ +# - Try to find Glib and its components (gio, gobject etc) +# Once done, this will define +# +# GLIB_FOUND - system has Glib +# GLIB_INCLUDE_DIRS - the Glib include directories +# GLIB_LIBRARIES - link these to use Glib +# +# Optionally, the COMPONENTS keyword can be passed to find_package() +# and Glib components can be looked for. Currently, the following +# components can be used, and they define the following variables if +# found: +# +# gio: GLIB_GIO_LIBRARIES +# gobject: GLIB_GOBJECT_LIBRARIES +# gmodule: GLIB_GMODULE_LIBRARIES +# gthread: GLIB_GTHREAD_LIBRARIES +# +# Note that the respective _INCLUDE_DIR variables are not set, since +# all headers are in the same directory as GLIB_INCLUDE_DIRS. +# +# Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS +# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +find_package(PkgConfig) +pkg_check_modules(PC_GLIB QUIET glib-2.0) + +find_library(GLIB_LIBRARIES + NAMES glib-2.0 + HINTS ${PC_GLIB_LIBDIR} + ${PC_GLIB_LIBRARY_DIRS} +) + +# Files in glib's main include path may include glibconfig.h, which, +# for some odd reason, is normally in $LIBDIR/glib-2.0/include. +get_filename_component(_GLIB_LIBRARY_DIR ${GLIB_LIBRARIES} PATH) +find_path(GLIBCONFIG_INCLUDE_DIR + NAMES glibconfig.h + HINTS ${PC_LIBDIR} ${PC_LIBRARY_DIRS} ${_GLIB_LIBRARY_DIR} + ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} + PATH_SUFFIXES glib-2.0/include +) + +find_path(GLIB_INCLUDE_DIR + NAMES glib.h + HINTS ${PC_GLIB_INCLUDEDIR} + ${PC_GLIB_INCLUDE_DIRS} + PATH_SUFFIXES glib-2.0 +) + +set(GLIB_INCLUDE_DIRS ${GLIB_INCLUDE_DIR} ${GLIBCONFIG_INCLUDE_DIR}) + +if(GLIBCONFIG_INCLUDE_DIR) + # Version detection + file(READ "${GLIBCONFIG_INCLUDE_DIR}/glibconfig.h" GLIBCONFIG_H_CONTENTS) + string(REGEX MATCH "#define GLIB_MAJOR_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}") + set(GLIB_VERSION_MAJOR "${CMAKE_MATCH_1}") + string(REGEX MATCH "#define GLIB_MINOR_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}") + set(GLIB_VERSION_MINOR "${CMAKE_MATCH_1}") + string(REGEX MATCH "#define GLIB_MICRO_VERSION ([0-9]+)" _dummy "${GLIBCONFIG_H_CONTENTS}") + set(GLIB_VERSION_MICRO "${CMAKE_MATCH_1}") + set(GLIB_VERSION "${GLIB_VERSION_MAJOR}.${GLIB_VERSION_MINOR}.${GLIB_VERSION_MICRO}") +endif() + +# Additional Glib components. We only look for libraries, as not all of them +# have corresponding headers and all headers are installed alongside the main +# glib ones. +foreach (_component ${GLIB_FIND_COMPONENTS}) + if (${_component} STREQUAL "gio") + find_library(GLIB_GIO_LIBRARIES NAMES gio-2.0 HINTS ${_GLIB_LIBRARY_DIR}) + set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GIO_LIBRARIES) + elseif (${_component} STREQUAL "gobject") + find_library(GLIB_GOBJECT_LIBRARIES NAMES gobject-2.0 HINTS ${_GLIB_LIBRARY_DIR}) + set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GOBJECT_LIBRARIES) + elseif (${_component} STREQUAL "gmodule") + find_library(GLIB_GMODULE_LIBRARIES NAMES gmodule-2.0 HINTS ${_GLIB_LIBRARY_DIR}) + set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GMODULE_LIBRARIES) + elseif (${_component} STREQUAL "gthread") + find_library(GLIB_GTHREAD_LIBRARIES NAMES gthread-2.0 HINTS ${_GLIB_LIBRARY_DIR}) + set(ADDITIONAL_REQUIRED_VARS ${ADDITIONAL_REQUIRED_VARS} GLIB_GTHREAD_LIBRARIES) + elseif (${_component} STREQUAL "gio-unix") + # gio-unix is compiled as part of the gio library, but the include paths + # are separate from the shared glib ones. Since this is currently only used + # by WebKitGTK+ we don't go to extraordinary measures beyond pkg-config. + pkg_check_modules(GIO_UNIX QUIET gio-unix-2.0) + endif () +endforeach () + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLIB REQUIRED_VARS GLIB_INCLUDE_DIRS GLIB_LIBRARIES ${ADDITIONAL_REQUIRED_VARS} + VERSION_VAR GLIB_VERSION) + +mark_as_advanced( + GLIBCONFIG_INCLUDE_DIR + GLIB_GIO_LIBRARIES + GLIB_GIO_UNIX_LIBRARIES + GLIB_GMODULE_LIBRARIES + GLIB_GOBJECT_LIBRARIES + GLIB_GTHREAD_LIBRARIES + GLIB_INCLUDE_DIR + GLIB_INCLUDE_DIRS + GLIB_LIBRARIES +) diff --git a/src/jaegertracing/thrift/build/cmake/FindGradle.cmake b/src/jaegertracing/thrift/build/cmake/FindGradle.cmake new file mode 100644 index 000000000..8845d697e --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindGradle.cmake @@ -0,0 +1,30 @@ +# +# 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. +# + + +# GRADLE_FOUND - system has Gradle +# GRADLE_EXECUTABLE - the Gradle executable +# +# It will search the environment variable ANT_HOME if it is set + +include(FindPackageHandleStandardArgs) + +find_program(GRADLE_EXECUTABLE NAMES gradle PATHS $ENV{GRADLE_HOME}/bin NO_CMAKE_FIND_ROOT_PATH) +find_package_handle_standard_args(Gradle DEFAULT_MSG GRADLE_EXECUTABLE) +mark_as_advanced(GRADLE_EXECUTABLE) diff --git a/src/jaegertracing/thrift/build/cmake/FindGradlew.cmake b/src/jaegertracing/thrift/build/cmake/FindGradlew.cmake new file mode 100644 index 000000000..17bb99899 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindGradlew.cmake @@ -0,0 +1,36 @@ +# +# 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. +# + + +# GRADLEW_FOUND - system has Gradlew +# GRADLEW_EXECUTABLE - the Gradlew executable +# +# It will search the location CMAKE_SOURCE_DIR/lib/java + +include(FindPackageHandleStandardArgs) + +find_program(GRADLEW_EXECUTABLE gradlew PATHS ${CMAKE_SOURCE_DIR}/lib/java NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) +find_package_handle_standard_args(Gradlew DEFAULT_MSG GRADLEW_EXECUTABLE) +mark_as_advanced(GRADLEW_EXECUTABLE) + +# Buggy find_program cannot find gradlew.bat when gradlew is at the same path +# and even buggier ctest will not execute gradlew.bat when gradlew is given. +if(CMAKE_HOST_WIN32) + string(REGEX REPLACE "(.+gradlew)$" "\\1.bat" GRADLEW_EXECUTABLE ${GRADLEW_EXECUTABLE}) +endif(CMAKE_HOST_WIN32) diff --git a/src/jaegertracing/thrift/build/cmake/FindInttypes.cmake b/src/jaegertracing/thrift/build/cmake/FindInttypes.cmake new file mode 100644 index 000000000..e661f7887 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindInttypes.cmake @@ -0,0 +1,41 @@ +# +# 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. +# + +# find msinttypes on compilers that don't provide it, for example +# VS2010 + +# Usage: +# Provide INTTYPES_ROOT if you need it +# Result: INTTYPES_INCLUDE_DIRS, where to find inttypes.h +# Result: Inttypes_FOUND, If false, inttypes.h was not found + +find_path(INTTYPES_INCLUDE_DIRS inttypes.h HINTS ${INTTYPES_ROOT}) +if (INTTYPES_INCLUDE_DIRS) + set(Inttypes_FOUND TRUE) +else () + set(Inttypes_FOUND FALSE) + if (Inttypes_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find inttypes.h") + endif () + message(STATUS "inttypes.h NOT found") +endif () + +mark_as_advanced( + INTTYPES_INCLUDE_DIRS +) diff --git a/src/jaegertracing/thrift/build/cmake/FindLibevent.cmake b/src/jaegertracing/thrift/build/cmake/FindLibevent.cmake new file mode 100644 index 000000000..ac6a078a1 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/FindLibevent.cmake @@ -0,0 +1,45 @@ +# find LibEvent +# an event notification library (http://libevent.org/) +# +# Usage: +# LIBEVENT_INCLUDE_DIRS, where to find LibEvent headers +# LIBEVENT_LIBRARIES, LibEvent libraries +# Libevent_FOUND, If false, do not try to use libevent + +set(LIBEVENT_ROOT CACHE PATH "Root directory of libevent installation") +set(LibEvent_EXTRA_PREFIXES /usr/local /opt/local "$ENV{HOME}" ${LIBEVENT_ROOT}) +foreach(prefix ${LibEvent_EXTRA_PREFIXES}) + list(APPEND LibEvent_INCLUDE_PATHS "${prefix}/include") + list(APPEND LibEvent_LIBRARIES_PATHS "${prefix}/lib") +endforeach() + +# Looking for "event.h" will find the Platform SDK include dir on windows +# so we also look for a peer header like evhttp.h to get the right path +find_path(LIBEVENT_INCLUDE_DIRS evhttp.h event.h PATHS ${LibEvent_INCLUDE_PATHS}) + +# "lib" prefix is needed on Windows in some cases +# newer versions of libevent use three libraries +find_library(LIBEVENT_LIBRARIES NAMES event event_core event_extra libevent PATHS ${LibEvent_LIBRARIES_PATHS}) + +if (LIBEVENT_LIBRARIES AND LIBEVENT_INCLUDE_DIRS) + set(Libevent_FOUND TRUE) + set(LIBEVENT_LIBRARIES ${LIBEVENT_LIBRARIES}) +else () + set(Libevent_FOUND FALSE) +endif () + +if (Libevent_FOUND) + if (NOT Libevent_FIND_QUIETLY) + message(STATUS "Found libevent: ${LIBEVENT_LIBRARIES}") + endif () +else () + if (LibEvent_FIND_REQUIRED) + message(FATAL_ERROR "Could NOT find libevent.") + endif () + message(STATUS "libevent NOT found.") +endif () + +mark_as_advanced( + LIBEVENT_LIBRARIES + LIBEVENT_INCLUDE_DIRS + ) diff --git a/src/jaegertracing/thrift/build/cmake/GenerateConfigModule.cmake b/src/jaegertracing/thrift/build/cmake/GenerateConfigModule.cmake new file mode 100644 index 000000000..9533c8235 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/GenerateConfigModule.cmake @@ -0,0 +1,44 @@ +# +# 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. +# + +include(CMakePackageConfigHelpers) +set(PACKAGE_INCLUDE_INSTALL_DIR "${includedir}/thrift") +set(PACKAGE_CMAKE_INSTALL_DIR "${cmakedir}/thrift") +set(PACKAGE_BIN_INSTALL_DIR "${exec_prefix}") + +# In CYGWIN enviroment below commands does not work properly +if (NOT CYGWIN) + configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/ThriftConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/ThriftConfig.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_DIR}/thrift" + PATH_VARS + PACKAGE_INCLUDE_INSTALL_DIR + PACKAGE_CMAKE_INSTALL_DIR + PACKAGE_BIN_INSTALL_DIR + ) + + write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/ThriftConfigVersion.cmake" + VERSION ${thrift_VERSION_MAJOR}.${thrift_VERSION_MINOR}.${thrift_VERSION_PATCH} + COMPATIBILITY SameMajorVersion + ) + + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ThriftConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/ThriftConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_DIR}/thrift") +endif() diff --git a/src/jaegertracing/thrift/build/cmake/NewPlatformDebug.cmake b/src/jaegertracing/thrift/build/cmake/NewPlatformDebug.cmake new file mode 100644 index 000000000..aa4d30230 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/NewPlatformDebug.cmake @@ -0,0 +1,44 @@ +# +# 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. +# + +# +# For debugging new platforms, just to see what some environment flags are... +# +macro(SHOWFLAG flag) + message(STATUS "${flag} = ${${flag}}") +endmacro(SHOWFLAG) + +set(NEWPLATFORMDEBUG ON) + +if(NEWPLATFORMDEBUG) + SHOWFLAG("APPLE") + SHOWFLAG("BORLAND") + SHOWFLAG("CMAKE_C_COMPILER_ID") + SHOWFLAG("CMAKE_CXX_COMPILER_ID") + SHOWFLAG("CMAKE_COMPILER_IS_GNUCC") + SHOWFLAG("CMAKE_COMPILER_IS_GNUCXX") + SHOWFLAG("CYGWIN") + SHOWFLAG("MINGW") + SHOWFLAG("MSVC") + SHOWFLAG("MSVC_VERSION") + SHOWFLAG("MSYS") + SHOWFLAG("UNIX") + SHOWFLAG("WATCOM") + SHOWFLAG("WIN32") +endif(NEWPLATFORMDEBUG) diff --git a/src/jaegertracing/thrift/build/cmake/README-MSYS2.md b/src/jaegertracing/thrift/build/cmake/README-MSYS2.md new file mode 100644 index 000000000..07cad92ba --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/README-MSYS2.md @@ -0,0 +1,63 @@ +<!--- +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. +--> + +# Building thrift on Windows (MinGW64/MSYS2) + +Thrift uses cmake to make it easier to build the project on multiple platforms, however to build a fully functional and production ready thrift on Windows requires a number of third party libraries to be obtained. Once third party libraries are ready, the right combination of options must be passed to cmake in order to generate the correct environment. + +> Note: libevent and libevent-devel do not work with this toolchain as they do not properly detect mingw64 and expect some headers to exist that do not, so the non-blocking server is not currently built into this solution. + +## MSYS2 + +Download and fully upgrade msys2 following the instructions at: + + https://msys2.github.io/ + +Install the necessary toolchain items for C++: + + $ pacman --needed -S bison flex make mingw-w64-x86_64-openssl \ + mingw-w64-x86_64-boost mingw-w64-x86_64-cmake \ + mingw-w64-x86_64-toolchain mingw-w64-x86_64-zlib + +Update your msys2 bash path to include /mingw64/bin by adding a line to your ~/.bash_profiles using this command: + + echo "export PATH=/mingw64/bin:\$PATH" >> ~/.bash_profile + +After that, close your shell and open a new one. + +Use cmake to create a MinGW makefile, out of tree (assumes you are in the top level of the thrift source tree): + + mkdir ../thrift-build + cd ../thrift-build + cmake -G"MinGW Makefiles" -DCMAKE_MAKE_PROGRAM=/mingw64/bin/mingw32-make \ + -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc.exe \ + -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++.exe \ + -DWITH_LIBEVENT=OFF \ + -DWITH_SHARED_LIB=OFF -DWITH_STATIC_LIB=ON \ + -DWITH_JAVA=OFF -DWITH_PYTHON=OFF -DWITH_PERL=OFF \ + ../thrift + +Build thrift (inside thrift-build): + + cmake --build . + +Run the tests (inside thrift-build): + + ctest + +> If you run into issues, check Apache Jira THRIFT-4046 for patches relating to MinGW64/MSYS2 builds. + +## Tested With + +msys2 64-bit 2016-10-26 distribution diff --git a/src/jaegertracing/thrift/build/cmake/README.md b/src/jaegertracing/thrift/build/cmake/README.md new file mode 100644 index 000000000..a0eb859bd --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/README.md @@ -0,0 +1,78 @@ +# Apache Thrift - CMake Build + +## Goal + +Extend Apache Thrift's *make cross* approach to the build system. + +Due to growing the field of operating system support, a proper executable +and library detection mechanism running on as much platforms as possible +becomes required. The other aspect to simplify the release process and +package generation process. + +As nice side benefit of CMake is the generation of development environment +specific soultion files. => No solution files within source tree. + +## Prerequisites + +These are language-specific, however for C++ you must provide: + +- Boost +- OpenSSL + +You may optionally provide: + +- libevent +- zlib + +## Usage + +To use CMake you first create an out-of-tree build directory, then use +CMake to generate a build framework, then build: + + mkdir /tmp/build + cd /tmp/build + cmake /location/to/thrift + +if you use a specific toolchain pass it to cmake, the same for options: + + cmake -DCMAKE_TOOLCHAIN_FILE=../build/cmake/mingw32-toolchain.cmake .. + cmake -DCMAKE_C_COMPILER=clang-3.5 -DCMAKE_CXX_COMPILER=clang++-3.5 .. + cmake -DTHRIFT_COMPILER_HS=OFF .. + cmake -DWITH_ZLIB=ON .. + +and open the development environment you like with the solution or do this: + + make + make check + make cross + make dist + +or on Windows, the following will produce a solution file you can use +inside Visual Studio: + + cmake -G "Visual Studio 15 2017 Win64" \ + -DBOOST_ROOT=C:/3rdparty/boost_1_69_0 \ + -DBOOST_LIBRARYDIR=C:/3rdparty/boost_1_69_0/lib64-msvc-14.1^ + -DZLIB_ROOT=C:/3rdparty/zlib-1.2.11 + +<!-- +To generate an installer and distribution package do this: + + cpack +--> + +## TODO + +* git hash or tag based versioning depending on source state +* build tutorial +* build test +* enable/disable +* make cross +* make dist (create an alias to make package_source) +* make doc +* cpack (C++ and make dist only ?) + * thrift-compiler + * libthrift + * tutorial + * test +* merge into /README.md
\ No newline at end of file diff --git a/src/jaegertracing/thrift/build/cmake/StaticCodeAnalysis.cmake b/src/jaegertracing/thrift/build/cmake/StaticCodeAnalysis.cmake new file mode 100644 index 000000000..3356c761d --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/StaticCodeAnalysis.cmake @@ -0,0 +1,9 @@ +find_package(ClangTools QUIET) +if(clang-tidy_FOUND AND run-clang-tidy_FOUND AND NOT TARGET do_run_clang_tidy) + add_custom_target( + do_run_clang_tidy + COMMAND ClangTools::run-clang-tidy -clang-tidy-binary "$<TARGET_FILE:ClangTools::clang-tidy>" -p ${CMAKE_BINARY_DIR} "-quiet" > ./run-clang-tidy.txt + DEPENDS ${CMAKE_BINARY_DIR}/compile_commands.json + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) +endif() diff --git a/src/jaegertracing/thrift/build/cmake/ThriftConfig.cmake.in b/src/jaegertracing/thrift/build/cmake/ThriftConfig.cmake.in new file mode 100644 index 000000000..c304da04d --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/ThriftConfig.cmake.in @@ -0,0 +1,42 @@ +# +# 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(THRIFT_VERSION ${thrift_VERSION}) + +@PACKAGE_INIT@ + +set_and_check(THRIFT_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") +set_and_check(THRIFT_CMAKE_DIR "@PACKAGE_CMAKE_INSTALL_DIR@") +set_and_check(THRIFT_BIN_DIR "@PACKAGE_BIN_INSTALL_DIR@") + +if (NOT TARGET thrift::thrift) + include("${THRIFT_CMAKE_DIR}/thriftTargets.cmake") +endif() + +set(THRIFT_LIBRARIES thrift::thrift) + +if ("${THRIFT_LIBRARIES}" STREQUAL "") + message(FATAL_ERROR "thrift libraries were not found") +endif() + +if (NOT Thrift_FIND_QUIETLY) + message(STATUS "Found thrift: ${PACKAGE_PREFIX_DIR}") +endif() + +check_required_components(Thrift) diff --git a/src/jaegertracing/thrift/build/cmake/ThriftMacros.cmake b/src/jaegertracing/thrift/build/cmake/ThriftMacros.cmake new file mode 100644 index 000000000..d068b2ae6 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/ThriftMacros.cmake @@ -0,0 +1,62 @@ +# +# 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. +# + +macro(ADD_PKGCONFIG_THRIFT name) + configure_file("${name}.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/${name}.pc" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${name}.pc" + DESTINATION "${PKGCONFIG_INSTALL_DIR}") +endmacro(ADD_PKGCONFIG_THRIFT) + +macro(ADD_LIBRARY_THRIFT name) + add_library(${name} ${ARGN}) + set_target_properties(${name} PROPERTIES + OUTPUT_NAME ${name}${THRIFT_RUNTIME_POSTFIX} # windows link variants (/MT, /MD, /MTd, /MDd) get different names + VERSION ${thrift_VERSION} ) + # set_target_properties(${name} PROPERTIES PUBLIC_HEADER "${thriftcpp_HEADERS}") + install(TARGETS ${name} EXPORT "${name}Targets" + RUNTIME DESTINATION "${BIN_INSTALL_DIR}" + LIBRARY DESTINATION "${LIB_INSTALL_DIR}" + ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" + PUBLIC_HEADER DESTINATION "${INCLUDE_INSTALL_DIR}") + + export(EXPORT "${name}Targets" + FILE "${CMAKE_CURRENT_BINARY_DIR}/${name}/${name}Targets.cmake" + NAMESPACE "${name}::") + + install(EXPORT "${name}Targets" + FILE "${name}Targets.cmake" + NAMESPACE "${name}::" + DESTINATION "${CMAKE_INSTALL_DIR}/thrift") +endmacro() + +macro(TARGET_INCLUDE_DIRECTORIES_THRIFT name) + target_include_directories(${name} ${ARGN}) +endmacro() + +macro(TARGET_LINK_LIBRARIES_THRIFT name) + target_link_libraries(${name} ${ARGN}) +endmacro() + +macro(LINK_AGAINST_THRIFT_LIBRARY target libname) + target_link_libraries(${target} ${libname}) +endmacro() + +macro(TARGET_LINK_LIBRARIES_THRIFT_AGAINST_THRIFT_LIBRARY target libname) + target_link_libraries(${target} ${ARGN} ${libname}) +endmacro() diff --git a/src/jaegertracing/thrift/build/cmake/android-toolchain.cmake b/src/jaegertracing/thrift/build/cmake/android-toolchain.cmake new file mode 100644 index 000000000..15f3d002a --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/android-toolchain.cmake @@ -0,0 +1,26 @@ +set(ANDROID_NDK "/opt/android-ndk" CACHE) +set(ANDROID_PLATFORM "android-15" CACHE) +set(ANDROID_ARCH "arch-arm" CACHE) +set(ANDROID_TOOL_ARCH "android-arm" CACHE) +set(ANDROID_CPU "armeabi-v7a" CACHE) +set(ANDROID_GCC_VERSION 4.9 CACHE) +set(HOST_ARCH linux-x86_64 CACHE) + +set(CMAKE_SYSTEM_NAME Android) +set(ANDROID_SYSROOT "${ANDROID_NDK}/platforms/${ANDROID_PLATFORM}/${ANDROID_ARCH}") +set(ANDROID_TRIPLET arm-linux-androideabi) +set(ANDROID_STL "${ANDROID_NDK}/sources/cxx-stl/gnu-libstd++/${ANDROID_GCC_VERSION}") + +set(_COMPILER_ROOT ${ANDROID_NDK}/prebuilt/${ANDROID_TRIPLET}-${ANDROID_GCC_VERSION}/prebuilt/${HOST_ARCH}) +set(CMAKE_C_COMPILER ${_COMPILER_ROOT}/bin/${ANDROID_TRIPLET}-gcc) +set(CMAKE_CXCX_COMPILER ${_COMPILER_ROOT}/bin/${ANDROID_TRIPLET}-g++) + +include_directories( + ${ANDROID_STL}/include + ${ANDROID_STL}/libs/${ANDROID_CPU}/include) + +set(CMAKE_FIND_ROOT_PATH ${ANDROID_SYSROOT}) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/src/jaegertracing/thrift/build/cmake/config.h.in b/src/jaegertracing/thrift/build/cmake/config.h.in new file mode 100644 index 000000000..a3d66428c --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/config.h.in @@ -0,0 +1,157 @@ +/* + * 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. + */ + +/* config.h generated by CMake from config.h.in */ + +#ifndef CONFIG_H +#define CONFIG_H + + +/* Name of package */ +#cmakedefine PACKAGE "${PACKAGE}" + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT "${PACKAGE_BUGREPORT}" + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME "${PACKAGE_NAME}" + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME "${PACKAGE_TARNAME}" + +/* Define to the home page for this package. */ +#cmakedefine PACKAGE_URL "${PACKAGE_URL}" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "${PACKAGE_VERSION}" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "${PACKAGE_STRING}" + +/************************** DEFINES *************************/ + +/* Define if the AI_ADDRCONFIG symbol is unavailable */ +#cmakedefine AI_ADDRCONFIG 0 + +/* Possible value for SIGNED_RIGHT_SHIFT_IS */ +/* TODO: This is just set to 1 for the moment + port the macro aclocal/ax_signed_right_shift.m4 to CMake to make this work */ +#define ARITHMETIC_RIGHT_SHIFT 1 + +/* Indicates the effect of the right shift operator on negative signed + integers */ +/* TODO: This is just set to 1 for the moment */ +#define SIGNED_RIGHT_SHIFT_IS 1 + +/* Use *.h extension for parser header file */ +/* TODO: This might now be necessary anymore as it is set only for automake < 1.11 + see: aclocal/ac_prog_bison.m4 */ +#cmakedefine BISON_USE_PARSER_H_EXTENSION 1 + +/* Define to 1 if strerror_r returns char *. */ +#cmakedefine STRERROR_R_CHAR_P 1 + + +/************************** HEADER FILES *************************/ + +/* Define to 1 if you have the <arpa/inet.h> header file. */ +#cmakedefine HAVE_ARPA_INET_H 1 + +/* Define to 1 if you have the <fcntl.h> header file. */ +#cmakedefine HAVE_FCNTL_H 1 + +/* Define to 1 if you have the <inttypes.h> header file. */ +#cmakedefine HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the <netdb.h> header file. */ +#cmakedefine HAVE_NETDB_H 1 + +/* Define to 1 if you have the <netinet/in.h> header file. */ +#cmakedefine HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the <signal.h> header file. */ +#cmakedefine HAVE_SIGNAL_H 1 + +/* Define to 1 if you have the <stdint.h> header file. */ +#cmakedefine HAVE_STDINT_H 1 + +/* Define to 1 if you have the <unistd.h> header file. */ +#cmakedefine HAVE_UNISTD_H 1 + +/* Define to 1 if you have the <pthread.h> header file. */ +#cmakedefine HAVE_PTHREAD_H 1 + +/* Define to 1 if you have the <sys/ioctl.h> header file. */ +#cmakedefine HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the <sys/param.h> header file. */ +#cmakedefine HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the <sys/resource.h> header file. */ +#cmakedefine HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the <sys/socket.h> header file. */ +#cmakedefine HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#cmakedefine HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/un.h> header file. */ +#cmakedefine HAVE_SYS_UN_H 1 + +/* Define to 1 if you have the <poll.h> header file. */ +#cmakedefine HAVE_POLL_H 1 + +/* Define to 1 if you have the <sys/poll.h> header file. */ +#cmakedefine HAVE_SYS_POLL_H 1 + +/* Define to 1 if you have the <sys/select.h> header file. */ +#cmakedefine HAVE_SYS_SELECT_H 1 + +/* Define to 1 if you have the <sys/time.h> header file. */ +#cmakedefine HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the <sched.h> header file. */ +#cmakedefine HAVE_SCHED_H 1 + +/* Define to 1 if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1 + +/*************************** FUNCTIONS ***************************/ + +/* Define to 1 if you have the `gethostbyname' function. */ +#cmakedefine HAVE_GETHOSTBYNAME 1 + +/* Define to 1 if you have the `gethostbyname_r' function. */ +#cmakedefine HAVE_GETHOSTBYNAME_R 1 + +/* Define to 1 if you have the `strerror_r' function. */ +#cmakedefine HAVE_STRERROR_R 1 + +/* Define to 1 if you have the `sched_get_priority_max' function. */ +#cmakedefine HAVE_SCHED_GET_PRIORITY_MAX 1 + +/* Define to 1 if you have the `sched_get_priority_min' function. */ +#cmakedefine HAVE_SCHED_GET_PRIORITY_MIN 1 + + +/* Define to 1 if strerror_r returns char *. */ +#cmakedefine STRERROR_R_CHAR_P 1 + +#endif diff --git a/src/jaegertracing/thrift/build/cmake/mingw32-toolchain.cmake b/src/jaegertracing/thrift/build/cmake/mingw32-toolchain.cmake new file mode 100644 index 000000000..864c0ebe4 --- /dev/null +++ b/src/jaegertracing/thrift/build/cmake/mingw32-toolchain.cmake @@ -0,0 +1,24 @@ +# CMake mingw32 cross compile toolchain file + +# the name of the target operating system +SET(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +SET(CMAKE_C_COMPILER i586-mingw32msvc-gcc) +SET(CMAKE_CXX_COMPILER i586-mingw32msvc-g++) +SET(CMAKE_RC_COMPILER i586-mingw32msvc-windres) + +# here is the target environment located +SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +set(BUILD_SHARED_LIBS OFF) +SET(CMAKE_EXE_LINKER_FLAGS "-static") +set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} "-static-libgcc") +set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-static-libstdc++") 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 diff --git a/src/jaegertracing/thrift/build/fixchanges.sh b/src/jaegertracing/thrift/build/fixchanges.sh new file mode 100755 index 000000000..6c57b5497 --- /dev/null +++ b/src/jaegertracing/thrift/build/fixchanges.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env 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. +# + +# +# fixchanges will take a file as input and look for text matching +# the pattern [THRIFT-nnnn] (the number of digits is not important) +# which is not a markdown link, and change it to be a markdown link. +# The tool writes to stdout so you can redirect it to a temporary +# file and then compare against the original file before replacing +# it. +# +# This tool was developed after the 0.12.0 release to assist with +# generation of CHANGES.md content. +# + +while IFS='' read -r line || [[ -n "$line" ]]; do + if [[ "$line" =~ ^(.*)\[(THRIFT-[[:digit:]]+)\][^\(](.*)$ ]]; then + echo "${BASH_REMATCH[1]}[${BASH_REMATCH[2]}](https://issues.apache.org/jira/browse/${BASH_REMATCH[2]}) ${BASH_REMATCH[3]}" + else + echo "$line" + fi +done < "$1" diff --git a/src/jaegertracing/thrift/build/veralign.sh b/src/jaegertracing/thrift/build/veralign.sh new file mode 100755 index 000000000..1dd1e6f4a --- /dev/null +++ b/src/jaegertracing/thrift/build/veralign.sh @@ -0,0 +1,319 @@ +#!/usr/bin/env 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 veralign script sets the appropriate versions in all of +# the package configuration files for all of the supported +# languages. It is used to prepare a release or move master +# forward to the next anticipated version. +# +# USAGE +# ----------------------------------------------------------- +# usage: veralign.sh <oldVersion> <newVersion> +# +# EXAMPLE +# ----------------------------------------------------------- +# $ ./veralign.sh 0.12.0 1.0.0 +# $ ./veralign.sh 1.0.0 1.1.0 +# +# IMPORTANT USAGE NOTE +# ----------------------------------------------------------- +# Define the environment variable DRYRUN to have the script +# print out all matches to the oldVersion hilighted so that +# you can verify it will change the right things. +# + +declare -A FILES + +# These files require a manual touch: +FILES[CHANGES.md]=manual +FILES[debian/changelog]=manual +FILES[doap.rdf]=manual + +# These files can be updated automatically: +FILES[ApacheThrift.nuspec]=simpleReplace +FILES[CMakeLists.txt]=simpleReplace +FILES[Thrift.podspec]=simpleReplace +FILES[appveyor.yml]=simpleReplace +FILES[bower.json]=jsonReplace +FILES[configure.ac]=configureReplace +FILES[contrib/thrift.spec]=simpleReplace +FILES[doc/specs/idl.md]=simpleReplace +FILES[lib/as3/gradle.properties]=simpleReplace +FILES[lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs]=simpleReplace +FILES[lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj]=simpleReplace +FILES[lib/csharp/src/Properties/AssemblyInfo.cs]=simpleReplace +FILES[lib/csharp/src/Thrift.csproj]=simpleReplace +FILES[lib/csharp/test/Multiplex/Client/MultiplexClient.csproj]=simpleReplace +FILES[lib/csharp/test/Multiplex/Client/Properties/AssemblyInfo.cs]=simpleReplace +FILES[lib/csharp/test/Multiplex/Server/MultiplexServer.csproj]=simpleReplace +FILES[lib/csharp/test/Multiplex/Server/Properties/AssemblyInfo.cs]=simpleReplace +FILES[lib/csharp/test/ThriftMVCTest/Properties/AssemblyInfo.cs]=simpleReplace +FILES[lib/d/src/thrift/base.d]=simpleReplace +FILES[lib/dart/pubspec.yaml]=pubspecReplace +FILES[lib/delphi/src/Thrift.pas]=simpleReplace +FILES[lib/erl/src/thrift.app.src]=simpleReplace +FILES[lib/haxe/haxelib.json]=simpleReplace +FILES[lib/hs/thrift.cabal]=simpleReplace +FILES[lib/java/gradle.properties]=simpleReplace +FILES[lib/js/package.json]=jsonReplace +FILES[lib/js/src/thrift.js]=simpleReplace +FILES[lib/lua/Thrift.lua]=simpleReplace +FILES[lib/netcore/Thrift/Properties/AssemblyInfo.cs]=simpleReplace +FILES[lib/netcore/Thrift/Transports/Client/THttpClientTransport.cs]=simpleReplace +FILES[lib/netstd/Thrift/Properties/AssemblyInfo.cs]=simpleReplace +FILES[lib/netstd/Thrift/Transports/Client/THttpClientTransport.cs]=simpleReplace +FILES[lib/netstd/Thrift/Thrift.csproj]=simpleReplace +FILES[lib/ocaml/_oasis]=simpleReplace +FILES[lib/perl/lib/Thrift.pm]=simpleReplace +FILES[lib/py/setup.py]=simpleReplace +FILES[lib/rb/thrift.gemspec]=simpleReplace +FILES[lib/rs/Cargo.toml]=simpleReplace +FILES[lib/st/package.xml]=simpleReplace +FILES[lib/swift/Sources/Thrift.swift]=simpleReplace +FILES[lib/swift/Tests/ThriftTests/ThriftTests.swift]=simpleReplace +FILES[lib/ts/package.json]=jsonReplace +FILES[package.json]=jsonReplace +FILES[sonar-project.properties]=simpleReplace +FILES[test/csharp/Properties/AssemblyInfo.cs]=simpleReplace +FILES[test/csharp/ThriftTest.csproj]=simpleReplace +FILES[test/dart/test_client/pubspec.yaml]=pubspecReplace +FILES[test/erl/src/thrift_test.app.src]=simpleReplace +FILES[tutorial/csharp/CsharpClient/Properties/AssemblyInfo.cs]=simpleReplace +FILES[tutorial/csharp/CsharpServer/Properties/AssemblyInfo.cs]=simpleReplace +FILES[tutorial/dart/client/pubspec.yaml]=pubspecReplace +FILES[tutorial/dart/console_client/pubspec.yaml]=pubspecReplace +FILES[tutorial/dart/server/pubspec.yaml]=pubspecReplace +FILES[tutorial/delphi/DelphiClient/DelphiClient.dproj]=simpleReplace +FILES[tutorial/delphi/DelphiServer/DelphiServer.dproj]=simpleReplace +FILES[tutorial/hs/ThriftTutorial.cabal]=simpleReplace +FILES[tutorial/ocaml/_oasis]=simpleReplace + +if [ ! -f "CHANGES.md" ]; then + >&2 echo "error: run veralign.sh while in the thrift root directory" + exit 1 +fi + +if [ $# -ne 2 ]; then + >&2 echo "usage: veralign.sh <oldVersion> <newVersion>" + exit 1 +fi + +jq --version 1>/dev/null 2>/dev/null +if [ $? -ne 0 ]; then + >&2 echo "error: the 'jq' package is not installed" + exit 1 +fi + +# +# validateVersion: check that a version matches the major.minor.patch +# format which is the lowest common denominator supported by all +# project systems. +# \param $1 the version +# \returns 0 if the version is compliant +# +function validateVersion +{ + local result + local valid + valid=$(echo "$1" | sed '/^[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+$/!{q22}') + result=$? + if [ $result -eq 22 ]; then + >&2 echo "error: version '$1' does not conform to the required major.minor.patch format" + return ${result} + fi +} + +OLDVERSION=$1 +NEWVERSION=$2 +validateVersion "${OLDVERSION}" || exit $? +validateVersion "${NEWVERSION}" || exit $? + +# +# escapeVersion: escape the version for use as a sed search +# \param $1 the version to escape +# \output the escaped string +# \returns 0 +# \example VERSEARCH=$(escapeVersion "[1.0.0]"); echo $VERSEARCH; => "\[1\.0\.0\]" +# +function escapeVersion +{ + echo "$(echo $1 | sed 's/\./\\./g' | sed 's/\[/\\\[/g' | sed 's/\]/\\\]/g')" +} + +# Set up verbose hilighting if running interactive +if [ "$(tput colors)" -ne 0 ]; then + reverse=$(tput rev) + red=$(tput setaf 1) + green=$(tput setaf 2) + yellow=$(tput setaf 3) + normal=$(tput sgr0) +fi + +declare -A MANUAL + +# +# manual: note that update of said file is manual +# \param $1 filename to do replacements on +# \returns 0 +# +function manual +{ + MANUAL["$1"]="" + return 0 +} + +# +# configureReplace: replace the AC_INIT field in configure.ac +# \param $1 filename to do replacements on +# \returns 0 on success +# + +function configureReplace +{ + replace "$1" "[thrift], [${OLDVERSION}]" "[thrift], [${NEWVERSION}]" +} + +# +# jsonReplace: replace a specific version field in a JSON file +# must be a top level "version" field in the json structure +# \param $1 filename to do replacements on +# \returns 0 on success +# + +function jsonReplace +{ + local result + local output + if [ ! -z "$DRYRUN" ]; then + output=$(jq -e ".version" "$1") + else + output=$(jq -e ".version = \"${NEWVERSION}\"" "$1" > tmp.$$.json && mv tmp.$$.json "$1") + fi + result=$? + if [ $? -ne 0 ]; then + printf "%-60s | %5d | ${red}ERROR${normal}: version tag not found" "$1" "$count" + echo + return 1 + elif [ ! -z "$DRYRUN" ]; then + output=${output%\"} + output=${output#\"} + printf "%-60s | %5d | MATCHES: version: \"${reverse}${green}${output}${normal}\"" "$1" 1 + echo + return 0 + fi + printf "%-60s | %5d | ${green}OK${normal}" "$1" 1 + echo + return 0 +} + +# +# pubspecReplace: replace a specific version field in a YAML file +# must be a top level "version" field in the yaml structure +# did not find a package that preserves comments so this is +# somewhat brain-dead, but it gets the job done +# \param $1 filename to do replacements on +# \returns 0 on success +# + +function pubspecReplace +{ + replace "$1" "version: ${OLDVERSION}" "version: ${NEWVERSION}" +} + +# +# replace: replace occurrences of one string with another +# the file specified must contain the old string at least once +# in order to be successful. +# \param $1 filename to do replacements on +# \param $2 the "old" string to be replaced +# \param $3 the "new" striing to replace it with +# \returns 0 on success +# +function replace +{ + local result + local output + local oldString="$2" + local newString="$3" + local oldRegex=$(escapeVersion "${oldString}") + local count=$(grep -Ec "${oldRegex}" "$1") + local verbose + if [ $count -eq 0 ]; then + printf "%-60s | %5d | ${red}NOT FOUND${normal}: ${oldString}" "$1" 0 + echo + return 1 + elif [ ! -z "$DRYRUN" ]; then + printf "%-60s | %5d | MATCHES:" "$1" "$count" + echo + while read -r line; do + echo " > $(echo "$line" | sed "s/${oldRegex}/${reverse}${green}${oldString}${normal}/g")" + done < <(grep -E "${oldRegex}" "$1") + return 0 + fi + output=$(sed -i "s/${oldRegex}/${newString}/g" "$1") + result=$? + if [ $result -ne 0 ]; then + printf "%-60s | %5d | ${red}ERROR${normal}: %s" "$1" "$count" "$output" + echo + return 1 + fi + printf "%-60s | %5d | ${green}OK${normal}" "$1" "$count" + echo + return 0 +} + +# +# simpleReplace: replace occurrences of ${OLDVERSION} with ${NEWVERSION} +# the file specified must contain OLDVERSION at least once +# in order to be successful. +# \param $1 filename to do replacements on +# \param $2 the "old" string to be replaced +# \param $3 the "new" striing to replace it with +# \returns 0 on success +# +function simpleReplace +{ + replace "$1" "${OLDVERSION}" "${NEWVERSION}" +} + +echo "" +echo "Apache Thrift Version Alignment Tool" +echo "------------------------------------" +echo "" +echo "Previous Version: ${OLDVERSION}" +echo " New Version: ${NEWVERSION}" +echo "" +echo "-------------------------------------------------------------+-------+----------------------" +echo "Filename | Count | Status " +echo "-------------------------------------------------------------+-------+----------------------" + +for file in $(echo "${!FILES[@]}" | sort); do + ${FILES[$file]} $file || exit $? +done + +echo +echo "Files that must be modified manually:" +echo +for manu in $(echo "${!MANUAL[@]}" | sort); do + echo " > ${yellow}${manu}${normal}" +done + +exit 0 |