Skip to content

Commit ec62864

Browse files
committed
turn symlinks into regular files
1 parent ccdd0b9 commit ec62864

File tree

2 files changed

+206
-5
lines changed

2 files changed

+206
-5
lines changed
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
name: "Test packaging"
2+
on:
3+
push:
4+
branches:
5+
- 'symlinks'
6+
jobs:
7+
build-ubuntu:
8+
runs-on: ubuntu-latest
9+
container:
10+
image: ubuntu:20.04
11+
env:
12+
OPENTELEMETRY_MATLAB_INSTALL_FOLDER: "otel_matlab_install" # not including the context github.workspace since it doesn't work inside a container due to a bug
13+
steps:
14+
- name: Download OpenTelemetry-Matlab source
15+
uses: actions/checkout@v3
16+
with:
17+
path: opentelemetry-matlab
18+
- name: Install compiler and other tools
19+
env:
20+
DEBIAN_FRONTEND: "noninteractive"
21+
run: apt update && apt install -y build-essential git curl pkg-config zip python3 ninja-build
22+
- name: Install CMake
23+
env:
24+
MY_CMAKE_VERSION: 4.1.2
25+
run: |
26+
curl -LO https://github.com/Kitware/CMake/releases/download/v$MY_CMAKE_VERSION/cmake-$MY_CMAKE_VERSION-linux-x86_64.tar.gz
27+
tar -xvzf cmake-$MY_CMAKE_VERSION-linux-x86_64.tar.gz
28+
echo "$GITHUB_WORKSPACE/cmake-$MY_CMAKE_VERSION-linux-x86_64/bin" >> "$GITHUB_PATH"
29+
- name: Install MATLAB
30+
uses: matlab-actions/setup-matlab@v2
31+
with:
32+
release: R2025a
33+
products: MATLAB_Compiler
34+
- name: Build OpenTelemetry-Matlab
35+
working-directory: opentelemetry-matlab
36+
run: |
37+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DWITH_OTLP_FILE=ON -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/$OPENTELEMETRY_MATLAB_INSTALL_FOLDER
38+
cmake --build build --config Release --target install
39+
- name: Compress into single artifact
40+
run: tar -czf otel-matlab-ubuntu.tar.gz otel_matlab_install
41+
- name: Upload artifacts
42+
uses: actions/upload-artifact@v4
43+
with:
44+
name: otel-matlab-ubuntu.tar.gz
45+
path: ./otel-matlab-ubuntu.tar.gz
46+
build-windows:
47+
runs-on: windows-latest
48+
env:
49+
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
50+
steps:
51+
- name: Download OpenTelemetry-Matlab source
52+
uses: actions/checkout@v3
53+
with:
54+
path: opentelemetry-matlab
55+
- name: Install ninja-build
56+
run: choco install ninja
57+
- name: Install MATLAB
58+
uses: matlab-actions/setup-matlab@v2
59+
with:
60+
release: R2025a
61+
products: MATLAB_Compiler
62+
- name: Build OpenTelemetry-Matlab
63+
working-directory: opentelemetry-matlab
64+
shell: cmd
65+
run: |
66+
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
67+
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DWITH_OTLP_FILE=ON -DFETCH_VCPKG=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
68+
cmake --build build --config Release --target install
69+
- name: Compress into single artifact
70+
working-directory: ${{ github.workspace }}
71+
run: tar -czf otel-matlab-windows.tar.gz otel_matlab_install
72+
- name: Upload artifacts
73+
uses: actions/upload-artifact@v4
74+
with:
75+
name: otel-matlab-windows.tar.gz
76+
path: ${{ github.workspace }}/otel-matlab-windows.tar.gz
77+
build-macos:
78+
runs-on: ${{ matrix.os }}
79+
strategy:
80+
matrix:
81+
os: [macos-13, macos-14] # runs on Mac with both Intel (macos-13) and Apple Silicon (macos-14) processors
82+
env:
83+
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
84+
steps:
85+
- name: Download OpenTelemetry-Matlab source
86+
uses: actions/checkout@v3
87+
with:
88+
path: opentelemetry-matlab
89+
- name: Install ninja-build
90+
run: brew install ninja
91+
- name: Install MATLAB
92+
uses: matlab-actions/setup-matlab@v2
93+
with:
94+
release: R2025a
95+
products: MATLAB_Compiler
96+
- name: Build OpenTelemetry-Matlab
97+
working-directory: opentelemetry-matlab
98+
env:
99+
CMAKE_POLICY_VERSION_MINIMUM: 3.5 # required by upb because its cmake requirement is not compatible with cmake 4
100+
run: |
101+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DWITH_OTLP_FILE=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
102+
cmake --build build --config Release --target install
103+
- name: Compress into single artifact
104+
working-directory: ${{ github.workspace }}
105+
run: tar -czf otel-matlab-${{ matrix.os }}.tar.gz otel_matlab_install
106+
- name: Upload artifacts
107+
uses: actions/upload-artifact@v4
108+
with:
109+
name: otel-matlab-${{ matrix.os }}.tar.gz
110+
path: ${{ github.workspace }}/otel-matlab-${{ matrix.os }}.tar.gz
111+
package-mltbx:
112+
name: Package MATLAB Toolbox (MLTBX) Files
113+
runs-on: windows-latest
114+
permissions:
115+
contents: write
116+
needs:
117+
- build-ubuntu
118+
- build-windows
119+
- build-macos
120+
env:
121+
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}\\otel_matlab_install"
122+
WITHGRPC_FOLDER: "${{ github.workspace }}\\withgrpc"
123+
steps:
124+
- name: Checkout OpenTelemetry-Matlab
125+
uses: actions/checkout@v3
126+
with:
127+
path: OpenTelemetry-Matlab
128+
- name: Download Artifacts
129+
uses: actions/download-artifact@v4
130+
with:
131+
path: artifacts-downloaded
132+
merge-multiple: true
133+
- name: Decompress Artifacts
134+
shell: cmd
135+
run: |
136+
mkdir ${{ env.WITHGRPC_FOLDER }}
137+
cd ${{ env.WITHGRPC_FOLDER }}
138+
move ..\artifacts-downloaded\otel-matlab-*.tar.gz .
139+
tar -xzf otel-matlab-ubuntu.tar.gz
140+
tar -xzf otel-matlab-macos-13.tar.gz
141+
tar -xzf otel-matlab-macos-14.tar.gz
142+
tar -xzf otel-matlab-windows.tar.gz
143+
- name: Install MATLAB
144+
uses: matlab-actions/setup-matlab@v2
145+
with:
146+
release: R2025a
147+
- name: Package Toolbox
148+
env:
149+
MATLABPATH: OpenTelemetry-Matlab/tools
150+
WORKING_FOLDER: ${{ env.WITHGRPC_FOLDER }}
151+
OTEL_MATLAB_TOOLBOX_FOLDER: otel_matlab_install
152+
OTEL_MATLAB_TOOLBOX_OUTPUT_FOLDER: ${{ env.WITHGRPC_FOLDER }}
153+
OTEL_MATLAB_TOOLBOX_VERSION: 1.0.0
154+
OTEL_MATLAB_TOOLBOX_NAME: otel-matlab
155+
uses: matlab-actions/run-command@v1
156+
with:
157+
command: packageMatlabInterface
158+
- name: Upload artifacts
159+
uses: actions/upload-artifact@v4
160+
with:
161+
name: otel-matlab.mltbx.tar.gz
162+
path: ${{ env.WITHGRPC_FOLDER }}/otel-matlab.mltbx

CMakeLists.txt

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,25 @@ endif()
649649
# toolbox path into MATLAB path. This issue is fixed in R2024a
650650
install(FILES ${OTLP_MISC_FILES} DESTINATION .)
651651

652+
# Macro: accepts base name, full version, and short version
653+
macro(install_and_shorten_version base full_version short_version)
654+
if(APPLE)
655+
# macOS: version before extension
656+
set(SRC_FILE "${base}.${full_version}${CMAKE_SHARED_LIBRARY_SUFFIX}")
657+
set(DEST_FILE "${base}.${short_version}${CMAKE_SHARED_LIBRARY_SUFFIX}")
658+
else()
659+
# Linux: version after extension
660+
set(SRC_FILE "${base}${CMAKE_SHARED_LIBRARY_SUFFIX}.${full_version}")
661+
set(DEST_FILE "${base}${CMAKE_SHARED_LIBRARY_SUFFIX}.${short_version}")
662+
endif()
663+
664+
# Install the original file
665+
install(FILES "${GRPC_INSTALL_LIB_DIR}/${SRC_FILE}" DESTINATION "${DEPENDENT_RUNTIME_INSTALLED_DIR}")
666+
667+
# Rename after installation
668+
install(CODE "file(RENAME \"${CMAKE_INSTALL_PREFIX}/${DEPENDENT_RUNTIME_INSTALLED_DIR}/${SRC_FILE}\" \"${CMAKE_INSTALL_PREFIX}/${DEPENDENT_RUNTIME_INSTALLED_DIR}/${DEST_FILE}\")")
669+
endmacro()
670+
652671
# Install dependent runtime libraries
653672
set(LIBMEXCLASS_PACKAGE_DIRECTORY +libmexclass/+proxy)
654673
if(WIN32)
@@ -662,11 +681,30 @@ endif()
662681
install(FILES ${OPENTELEMETRY_PROXY_RUNTIME_LIBRARIES} DESTINATION ${DEPENDENT_RUNTIME_INSTALLED_DIR})
663682
if(UNIX)
664683
if(WITH_OTLP_GRPC)
665-
install(DIRECTORY ${GRPC_INSTALL_LIB_DIR}/ DESTINATION ${DEPENDENT_RUNTIME_INSTALLED_DIR}
666-
FILES_MATCHING
667-
PATTERN "*.*"
668-
PATTERN "cmake" EXCLUDE
669-
PATTERN "pkgconfig" EXCLUDE)
684+
# Uniform version numbers for most files
685+
set(FULL_VERSION "41.0.0")
686+
set(SHORT_VERSION "41")
687+
688+
# Loop through all base names (no version numbers here)
689+
foreach(base IN ITEMS
690+
libaddress_sorting
691+
libgpr
692+
libgrpc
693+
libgrpc_unsecure
694+
libupb_base_lib
695+
libupb_json_lib
696+
libupb_mem_lib
697+
libupb_message_lib
698+
libupb_textformat_lib
699+
libutf8_range_lib
700+
)
701+
install_and_shorten_version(${base} ${FULL_VERSION} ${SHORT_VERSION})
702+
endforeach()
703+
704+
# Handle libgrpc++ separately (different version scheme)
705+
set(GRPCPP_FULL_VERSION "1.64.2")
706+
set(GRPCPP_SHORT_VERSION "1.64")
707+
install_and_shorten_version(libgrpc++ ${GRPCPP_FULL_VERSION} ${GRPCPP_SHORT_VERSION})
670708
endif()
671709

672710
# Move any shared libraries to platform specific directories, so that they won't overwrite each other
@@ -684,3 +722,4 @@ if(WITH_EXAMPLES)
684722
add_subdirectory(examples)
685723
endif()
686724

725+

0 commit comments

Comments
 (0)