From b4f4ed2208f37d89ea7733a73657ca01fb4e01a0 Mon Sep 17 00:00:00 2001 From: duncanpo Date: Thu, 25 Apr 2024 12:06:03 -0400 Subject: [PATCH 1/8] Remove install stage in context propagation example build --- .github/workflows/build_and_test.yml | 4 ++-- examples/context_propagation/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c908b4f..8e37eee 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -54,7 +54,7 @@ jobs: shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 - cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} + cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} cmake --build build --config Release --target install - name: Run tests env: @@ -85,7 +85,7 @@ jobs: - name: Build OpenTelemetry-Matlab working-directory: opentelemetry-matlab run: | - cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} + cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} cmake --build build --config Release --target install - name: Run tests env: diff --git a/examples/context_propagation/CMakeLists.txt b/examples/context_propagation/CMakeLists.txt index 03a07a0..d82b41f 100644 --- a/examples/context_propagation/CMakeLists.txt +++ b/examples/context_propagation/CMakeLists.txt @@ -27,4 +27,4 @@ if(Matlab_LIST_VERSION VERSION_GREATER_EQUAL 23.2.0) else() set(ARCHIVE_ROUTES "") endif() -install(CODE "execute_process(COMMAND ${Matlab_MCC_COMPILER} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} -a ${CMAKE_INSTALL_PREFIX} -a ${CMAKE_INSTALL_PREFIX}/+libmexclass/+proxy WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})") +# install(CODE "execute_process(COMMAND ${Matlab_MCC_COMPILER} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} -a ${CMAKE_INSTALL_PREFIX} -a ${CMAKE_INSTALL_PREFIX}/+libmexclass/+proxy WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})") From b6ecfce3207681800ad774768a61fe7fca28a56e Mon Sep 17 00:00:00 2001 From: duncanpo Date: Thu, 2 May 2024 11:43:43 -0400 Subject: [PATCH 2/8] Move the build of example ctf file from the install stage to build stage --- examples/context_propagation/CMakeLists.txt | 34 +++++++++++++++------ 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/examples/context_propagation/CMakeLists.txt b/examples/context_propagation/CMakeLists.txt index d82b41f..603f145 100644 --- a/examples/context_propagation/CMakeLists.txt +++ b/examples/context_propagation/CMakeLists.txt @@ -1,23 +1,24 @@ # C++ target -set(CONTEXTPROP_EXAMPLE_TARGET contextprop_example_client) -add_executable(${CONTEXTPROP_EXAMPLE_TARGET} cpp/client.cc) -add_dependencies(${CONTEXTPROP_EXAMPLE_TARGET} ${OTEL_CPP_PROJECT_NAME}) +set(CONTEXTPROP_EXAMPLE_CPP_TARGET contextprop_example_client) +add_executable(${CONTEXTPROP_EXAMPLE_CPP_TARGET} cpp/client.cc) +add_dependencies(${CONTEXTPROP_EXAMPLE_CPP_TARGET} ${OTEL_CPP_PROJECT_NAME}) -target_include_directories(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OTEL_CPP_PREFIX}/include) -target_link_libraries(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES}) +target_include_directories(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OTEL_CPP_PREFIX}/include) +target_link_libraries(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_LIBRARIES}) if(UNIX AND NOT APPLE AND NOT CYGWIN) - target_link_options(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS}) + target_link_options(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE ${OPENTELEMETRY_PROXY_LINK_OPTIONS}) elseif(APPLE) - set_target_properties(${CONTEXTPROP_EXAMPLE_TARGET} PROPERTIES BUILD_RPATH "${CMAKE_INSTALL_PREFIX}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}") + set_target_properties(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PROPERTIES BUILD_RPATH "${CMAKE_INSTALL_PREFIX}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}") endif() # use the same C++ standard as OpenTelemetry-cpp -target_compile_features(${CONTEXTPROP_EXAMPLE_TARGET} PRIVATE cxx_std_${OTEL_CPP_CXX_STANDARD}) +target_compile_features(${CONTEXTPROP_EXAMPLE_CPP_TARGET} PRIVATE cxx_std_${OTEL_CPP_CXX_STANDARD}) # MATLAB target find_package(Matlab REQUIRED COMPONENTS MCC_COMPILER MAIN_PROGRAM) set(CONTEXTPROP_EXAMPLE_DEPLOYNAME mymagic) +set(CONTEXTPROP_EXAMPLE_MATLAB_TARGET ${CONTEXTPROP_EXAMPLE_DEPLOYNAME}.ctf) set(CONTEXTPROP_EXAMPLE_MATLAB_SOURCE ${CMAKE_CURRENT_LIST_DIR}/matlab/${CONTEXTPROP_EXAMPLE_DEPLOYNAME}.m) set(CONTEXTPROP_EXAMPLE_ROUTES ../../../examples/context_propagation/matlab/routes.json) #somehow, only relative paths are allowed matlab_get_version_from_matlab_run(${Matlab_MAIN_PROGRAM} Matlab_LIST_VERSION) @@ -27,4 +28,19 @@ if(Matlab_LIST_VERSION VERSION_GREATER_EQUAL 23.2.0) else() set(ARCHIVE_ROUTES "") endif() -# install(CODE "execute_process(COMMAND ${Matlab_MCC_COMPILER} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} -a ${CMAKE_INSTALL_PREFIX} -a ${CMAKE_INSTALL_PREFIX}/+libmexclass/+proxy WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})") + +# A few libraries need to be moved to libmexclass.proxy package before calling mcc +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR} + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR} + COMMAND ${CMAKE_COMMAND} -E copy $ $ + $ ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES} + ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR} + DEPENDS ${OPENTELEMETRY_MEX_GATEWAY_NAME}) + +# Call mcc to create .ctf file for deployment with MATLAB Production Server +add_custom_target(${CONTEXTPROP_EXAMPLE_MATLAB_TARGET} ALL + ${Matlab_MCC_COMPILER} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} + -a ${CMAKE_SOURCE_DIR}/api/trace -a ${CMAKE_SOURCE_DIR}/api/context -a ${CMAKE_SOURCE_DIR}/api/common -a ${CMAKE_SOURCE_DIR}/sdk/trace + -a ${CMAKE_SOURCE_DIR}/sdk/common -a ${CMAKE_SOURCE_DIR}/exporters/otlp -a ${${LIBMEXCLASS_FETCH_CONTENT_NAME}_SOURCE_DIR}/libmexclass/matlab + -a ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR} + DEPENDS ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}) From e44d84127b54d0b2ac8cbb27fd3cd111c88f6933 Mon Sep 17 00:00:00 2001 From: duncanpo Date: Fri, 3 May 2024 10:24:47 -0400 Subject: [PATCH 3/8] Add a token to enable mcc in building context_propagation example --- .github/workflows/build_and_test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 8e37eee..d334562 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -2,6 +2,8 @@ name: "Build and Run Tests" on: workflow_dispatch: push: +env: + MLM_LICENSE_TOKEN: ${{ secrets.MLM_LICENSE_TOKEN }} # necessary for mcc in building context propagation example jobs: build-and-run-tests-ubuntu: # Running on ubuntu-latest would use a glibc version that is incompatible when using the built mex files on a Debian 11 From 855a62c111030266318754d3838594b4d2e1cedc Mon Sep 17 00:00:00 2001 From: duncanpo Date: Fri, 3 May 2024 11:34:23 -0400 Subject: [PATCH 4/8] provide license token to use mcc when building example --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index d334562..a143f45 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: push: env: - MLM_LICENSE_TOKEN: ${{ secrets.MLM_LICENSE_TOKEN }} # necessary for mcc in building context propagation example + MLM_LICENSE_TOKEN: ${{ secrets.MLM_LICENSE_TOKEN }} jobs: build-and-run-tests-ubuntu: # Running on ubuntu-latest would use a glibc version that is incompatible when using the built mex files on a Debian 11 From 1204c4bd11b38986ed326b8bb4d8a695197eed73 Mon Sep 17 00:00:00 2001 From: duncanpo Date: Fri, 3 May 2024 12:55:56 -0400 Subject: [PATCH 5/8] add MATLAB_Compiler_SDK when building example --- .github/workflows/build_and_test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index a143f45..fda8fd3 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -22,7 +22,7 @@ jobs: - name: Install MATLAB uses: matlab-actions/setup-matlab@v2 with: - products: MATLAB_Compiler + products: MATLAB_Compiler MATLAB_Compiler_SDK - name: Build OpenTelemetry-Matlab working-directory: opentelemetry-matlab run: | @@ -50,7 +50,7 @@ jobs: - name: Install MATLAB uses: matlab-actions/setup-matlab@v2 with: - products: MATLAB_Compiler + products: MATLAB_Compiler MATLAB_Compiler_SDK - name: Build OpenTelemetry-Matlab working-directory: opentelemetry-matlab shell: cmd @@ -83,7 +83,7 @@ jobs: - name: Install MATLAB uses: matlab-actions/setup-matlab@v2 with: - products: MATLAB_Compiler + products: MATLAB_Compiler MATLAB_Compiler_SDK - name: Build OpenTelemetry-Matlab working-directory: opentelemetry-matlab run: | From 54129d57f6060c5344f0de38d8fdfcb8f501e6c9 Mon Sep 17 00:00:00 2001 From: duncanpo Date: Tue, 7 May 2024 15:54:08 -0400 Subject: [PATCH 6/8] resolve MATLAB license issue when using mcc --- examples/context_propagation/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/context_propagation/CMakeLists.txt b/examples/context_propagation/CMakeLists.txt index 603f145..e7848fb 100644 --- a/examples/context_propagation/CMakeLists.txt +++ b/examples/context_propagation/CMakeLists.txt @@ -39,8 +39,8 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTAL # Call mcc to create .ctf file for deployment with MATLAB Production Server add_custom_target(${CONTEXTPROP_EXAMPLE_MATLAB_TARGET} ALL - ${Matlab_MCC_COMPILER} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} + matlab-batch \"mcc -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} -a ${CMAKE_SOURCE_DIR}/api/trace -a ${CMAKE_SOURCE_DIR}/api/context -a ${CMAKE_SOURCE_DIR}/api/common -a ${CMAKE_SOURCE_DIR}/sdk/trace -a ${CMAKE_SOURCE_DIR}/sdk/common -a ${CMAKE_SOURCE_DIR}/exporters/otlp -a ${${LIBMEXCLASS_FETCH_CONTENT_NAME}_SOURCE_DIR}/libmexclass/matlab - -a ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR} + -a ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}\" DEPENDS ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}) From 116448e84cbd85277d196515db2da8e56ce4d6a5 Mon Sep 17 00:00:00 2001 From: duncanpo Date: Wed, 8 May 2024 10:45:25 -0400 Subject: [PATCH 7/8] Use batch mode for mcc due to licensing constraints --- .github/workflows/build_and_test.yml | 6 +++--- examples/context_propagation/CMakeLists.txt | 13 +++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index fda8fd3..0218220 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -26,7 +26,7 @@ jobs: - name: Build OpenTelemetry-Matlab working-directory: opentelemetry-matlab run: | - cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} + cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} cmake --build build --config Release --target install - name: Run tests env: @@ -56,7 +56,7 @@ jobs: shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 - cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} + cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} cmake --build build --config Release --target install - name: Run tests env: @@ -87,7 +87,7 @@ jobs: - name: Build OpenTelemetry-Matlab working-directory: opentelemetry-matlab run: | - cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} + cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }} cmake --build build --config Release --target install - name: Run tests env: diff --git a/examples/context_propagation/CMakeLists.txt b/examples/context_propagation/CMakeLists.txt index e7848fb..c76ee77 100644 --- a/examples/context_propagation/CMakeLists.txt +++ b/examples/context_propagation/CMakeLists.txt @@ -1,3 +1,5 @@ +# Set this option to ON if running in GitHub Actions workflows +option(USE_BATCH_FOR_MCC "Running on GitHub Actions workflows requires calling mcc using matlab-batch due to licensing constraints." OFF) # C++ target set(CONTEXTPROP_EXAMPLE_CPP_TARGET contextprop_example_client) @@ -38,9 +40,16 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTAL DEPENDS ${OPENTELEMETRY_MEX_GATEWAY_NAME}) # Call mcc to create .ctf file for deployment with MATLAB Production Server +if(USE_BATCH_FOR_MCC) + set(MCC_START "matlab-batch \"mcc") + set(MCC_END "\"") +else() + set(MCC_START ${Matlab_MCC_COMPILER}) + set(MCC_END "") +endif() add_custom_target(${CONTEXTPROP_EXAMPLE_MATLAB_TARGET} ALL - matlab-batch \"mcc -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} + ${MCC_START} -W CTF:${CONTEXTPROP_EXAMPLE_DEPLOYNAME}${ARCHIVE_ROUTES} -U ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} -a ${CMAKE_SOURCE_DIR}/api/trace -a ${CMAKE_SOURCE_DIR}/api/context -a ${CMAKE_SOURCE_DIR}/api/common -a ${CMAKE_SOURCE_DIR}/sdk/trace -a ${CMAKE_SOURCE_DIR}/sdk/common -a ${CMAKE_SOURCE_DIR}/exporters/otlp -a ${${LIBMEXCLASS_FETCH_CONTENT_NAME}_SOURCE_DIR}/libmexclass/matlab - -a ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}\" + -a ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}${MCC_END} DEPENDS ${CONTEXTPROP_EXAMPLE_MATLAB_SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTALLED_DIR}) From ce28ea40c035a14dbf459d0a278fe15edd401886 Mon Sep 17 00:00:00 2001 From: duncanpo Date: Wed, 8 May 2024 11:06:44 -0400 Subject: [PATCH 8/8] Use batch mode for mcc due to licensing constraints --- examples/context_propagation/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/context_propagation/CMakeLists.txt b/examples/context_propagation/CMakeLists.txt index c76ee77..2a2f8c1 100644 --- a/examples/context_propagation/CMakeLists.txt +++ b/examples/context_propagation/CMakeLists.txt @@ -41,7 +41,7 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LIBMEXCLASS_PROXY_INSTAL # Call mcc to create .ctf file for deployment with MATLAB Production Server if(USE_BATCH_FOR_MCC) - set(MCC_START "matlab-batch \"mcc") + set(MCC_START matlab-batch \"mcc) set(MCC_END "\"") else() set(MCC_START ${Matlab_MCC_COMPILER})