From fa42722d56b4e9eb65bf4e23e32991895c759fe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Schau?= Date: Wed, 13 May 2020 01:22:58 +0200 Subject: [PATCH] [jaeger-client-cpp] New port (#9126) * Initial commit * Add missing files * Add patchfile * UWP Builds not supported * Fix Linux version * Removed 'include(vcpkg_common_functions)' as it is no longer needed * Implemented proposed changes to portfile.cmake * Further changes to portfile.cmake * Added indicator that a failure is expected for arm64 * Added the expected failure on arm64 to ci.baseline.txt * Combined two separate vcpkg_fail_port_install() calls * Use upstream version compatible with opentracing 1.6 * Added 'Supports:' entry in CONTROL to signal missing arm64 support and removed vcpkg_fail_port_install() for UWP in portfile.cmake Co-authored-by: xgcssch --- ports/jaeger-client-cpp/CONTROL | 6 ++ ports/jaeger-client-cpp/fix-CMakeLists.patch | 32 +++++++++ ports/jaeger-client-cpp/portfile.cmake | 68 ++++++++++++++++++++ scripts/ci.baseline.txt | 1 + 4 files changed, 107 insertions(+) create mode 100644 ports/jaeger-client-cpp/CONTROL create mode 100644 ports/jaeger-client-cpp/fix-CMakeLists.patch create mode 100644 ports/jaeger-client-cpp/portfile.cmake diff --git a/ports/jaeger-client-cpp/CONTROL b/ports/jaeger-client-cpp/CONTROL new file mode 100644 index 000000000..399c48e85 --- /dev/null +++ b/ports/jaeger-client-cpp/CONTROL @@ -0,0 +1,6 @@ +Source: jaeger-client-cpp +Version: 0.5.1 +Build-Depends: nlohmann-json,thrift,yaml-cpp,opentracing +Homepage: https://github.com/jaegertracing/jaeger-client-cpp +Description: C++ OpenTracing binding for Jaeger https://jaegertracing.io/ +Supports: !arm64 \ No newline at end of file diff --git a/ports/jaeger-client-cpp/fix-CMakeLists.patch b/ports/jaeger-client-cpp/fix-CMakeLists.patch new file mode 100644 index 000000000..e0e1b6c59 --- /dev/null +++ b/ports/jaeger-client-cpp/fix-CMakeLists.patch @@ -0,0 +1,32 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5893f31..c8864fd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -59,7 +59,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND + endif() + + hunter_add_package(thrift) +-find_package(thrift ${hunter_config} REQUIRED) ++find_package(Thrift CONFIG REQUIRED) + if(HUNTER_ENABLED) + list(APPEND LIBS thrift::thrift_static) + else() +@@ -268,6 +268,9 @@ if(JAEGERTRACING_PLUGIN) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/export.map + "{ global: OpenTracingMakeTracerFactory; local: *; };") + add_library(jaegertracing_plugin MODULE ${SRC}) ++ if (WIN32) ++ target_link_libraries(jaegertracing_plugin PUBLIC Iphlpapi Ws2_32) ++ endif() + add_lib_deps(jaegertracing_plugin) + target_link_libraries(jaegertracing_plugin PUBLIC + -static-libgcc +@@ -410,7 +413,7 @@ include(GNUInstallDirs) + # * /lib*/cmake/ + # * /lib*/ + # * /include/ +-set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") ++set(config_install_dir "${CMAKE_INSTALL_DATAROOTDIR}/jaeger-client-cpp") + + set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") + diff --git a/ports/jaeger-client-cpp/portfile.cmake b/ports/jaeger-client-cpp/portfile.cmake new file mode 100644 index 000000000..1cf7b65fe --- /dev/null +++ b/ports/jaeger-client-cpp/portfile.cmake @@ -0,0 +1,68 @@ +vcpkg_fail_port_install(ON_ARCH "arm64") + +# Get jaeger-idl from github +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO jaegertracing/jaeger-idl + REF 378b83a64a4a822a4e7d2936bac5d787780555ad + SHA512 eceea3dc806600bea8a05b597e26035e97950db227bbefc582d8f20ad549e0be42ebfad92ef3927ebc4892233bac9bcf85a96a25c17ec71fbca0b1b1755f556f + HEAD_REF master +) + +# Create target directory for proxy/stub generation +file(MAKE_DIRECTORY ${SOURCE_PATH}/data) +# List of input files +set(THRIFT_SOURCE_FILES agent.thrift jaeger.thrift sampling.thrift zipkincore.thrift crossdock/tracetest.thrift baggage.thrift dependency.thrift aggregation_validator.thrift) + +# Generate proxy/stubs for the input files +foreach(THRIFT_SOURCE_FILE IN LISTS THRIFT_SOURCE_FILES) +vcpkg_execute_required_process( + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/installed/${TARGET_TRIPLET}/tools/thrift/thrift --gen cpp:no_skeleton -o "${SOURCE_PATH}/data" ${THRIFT_SOURCE_FILE} + WORKING_DIRECTORY ${SOURCE_PATH}/thrift + LOGNAME jaeger-idl-${TARGET_TRIPLET} +) +endforeach() + +# Save generated proxy/stub target directory +set(IDL_SOURCE_DIR "${SOURCE_PATH}/data/gen-cpp") + +# Get jaeger-client-cpp from github +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO jaegertracing/jaeger-client-cpp + REF 47fbf19aae2e48d59dd8335b6f2a1e1a99abba7f + SHA512 a07e4d3e585c0f3e99aff6a662229f6beed8aef80fc6f7188629da38421bc49ab9effea479398e0d94e0a127bd931054ab332b38b73c2191bf75d4adfe5f6928 + HEAD_REF master + PATCHES + "fix-CMakeLists.patch" +) + +# Do not use hunter, not testtools and build opentracing plugin +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DHUNTER_ENABLED=0 + -DBUILD_TESTING=0 + -DJAEGERTRACING_PLUGIN=0 + -DJAEGERTRACING_BUILD_EXAMPLES=0 +) + +# Copy generated files over to jaeger-client-cpp +file(GLOB IDL_SOURCE_FILES LIST_DIRECTORIES false ${IDL_SOURCE_DIR}/*) +file(COPY ${IDL_SOURCE_FILES} DESTINATION ${SOURCE_PATH}/src/jaegertracing/thrift-gen) + +# Generate Jaeger client +vcpkg_install_cmake() + +vcpkg_fixup_cmake_targets() + +# Cleanup unused Debug files +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) + +# Handle copyright +file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) + +# Cleanup +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/jaegertracing/testutils) diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 62c82e1b9..b271efb97 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -668,6 +668,7 @@ itk:x86-windows=fail ixwebsocket:x64-linux=ignore jack2:arm-uwp=fail jack2:x64-uwp=fail +jaeger-client-cpp:arm64-windows=fail jbig2dec:arm-uwp=fail jbig2dec:x64-uwp=fail jemalloc:arm64-windows=fail