Skip to content

Commit f1cde89

Browse files
committed
Add FindAndMergeDllPath to collect all PATHs needed to run test. Add more comments for opentelemetry_proto and opentelemetry_proto_grpc
1 parent 51f309e commit f1cde89

File tree

2 files changed

+57
-37
lines changed

2 files changed

+57
-37
lines changed

ci/do_ci.ps1

Lines changed: 48 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,35 @@ $VCPKG_DIR = Join-Path "$SRC_DIR" "tools/vcpkg"
3434

3535
$Env:CTEST_OUTPUT_ON_FAILURE = "1"
3636

37+
function FindAndMergeDllPath {
38+
param (
39+
[string[]]$AdditionalDirs
40+
)
41+
42+
$FINAL_PATH = $env:PATH
43+
$PATH_SET = @{}
44+
$PATH_ITEMS = $FINAL_PATH -split [IO.Path]::PathSeparator
45+
foreach ($item in $PATH_ITEMS) {
46+
$PATH_SET[$item] = $true
47+
}
48+
49+
foreach ($dir in $AdditionalDirs) {
50+
$GLOB_PATTERN = Join-Path "$dir" "*.dll"
51+
$DETECTED_DLL_FILES = Get-ChildItem -Path $GLOB_PATTERN -Recurse
52+
$DETECTED_DLL_DIRS = $(foreach ($dll_file in $DETECTED_DLL_FILES) {
53+
$dll_file.Directory.FullName
54+
}) | Sort-Object | Get-Unique
55+
foreach ($dll_dir in $DETECTED_DLL_DIRS) {
56+
if (-not $PATH_SET.ContainsKey($dll_dir)) {
57+
$FINAL_PATH = "$dll_dir" + [IO.Path]::PathSeparator + $FINAL_PATH
58+
$PATH_SET[$dll_dir] = $true
59+
}
60+
}
61+
}
62+
63+
return $FINAL_PATH
64+
}
65+
3766
switch ($action) {
3867
"bazel.build" {
3968
bazel $BAZEL_STARTUP_OPTIONS build $BAZEL_OPTIONS --action_env=VCPKG_DIR=$VCPKG_DIR --deleted_packages=opentracing-shim -- //...
@@ -77,7 +106,7 @@ switch ($action) {
77106
if ($exit -ne 0) {
78107
exit $exit
79108
}
80-
$env:PATH = "$BUILD_DIR\ext\src\dll\Debug;$env:PATH"
109+
$env:PATH = FindAndMergeDllPath "$BUILD_DIR\ext\src\dll\Debug"
81110
ctest -C Debug
82111
$exit = $LASTEXITCODE
83112
if ($exit -ne 0) {
@@ -100,7 +129,7 @@ switch ($action) {
100129
if ($exit -ne 0) {
101130
exit $exit
102131
}
103-
$env:PATH = "$BUILD_DIR\ext\src\dll\Debug;$env:PATH"
132+
$env:PATH = FindAndMergeDllPath "$BUILD_DIR\ext\src\dll\Debug"
104133
ctest -C Debug
105134
$exit = $LASTEXITCODE
106135
if ($exit -ne 0) {
@@ -126,11 +155,7 @@ switch ($action) {
126155
exit $exit
127156
}
128157

129-
$ALL_DLL_FILES = Get-ChildItem -Path "./*.dll" -Recurse
130-
$ALL_DLL_DIRS = $(foreach ($dll_file in $ALL_DLL_FILES) {
131-
$dll_file.Directory.FullName
132-
}) | Sort-Object | Get-Unique
133-
$env:PATH = ($ALL_DLL_DIRS -Join [IO.Path]::PathSeparator) + [IO.Path]::PathSeparator + $env:PATH
158+
$env:PATH = FindAndMergeDllPath "."
134159
Write-Output "PATH=$env:PATH"
135160

136161
ctest -C Debug
@@ -160,11 +185,7 @@ switch ($action) {
160185
exit $exit
161186
}
162187

163-
$ALL_DLL_FILES = Get-ChildItem -Path "./*.dll" -Recurse
164-
$ALL_DLL_DIRS = $(foreach ($dll_file in $ALL_DLL_FILES) {
165-
$dll_file.Directory.FullName
166-
}) | Sort-Object | Get-Unique
167-
$env:PATH = ($ALL_DLL_DIRS -Join [IO.Path]::PathSeparator) + [IO.Path]::PathSeparator + $env:PATH
188+
$env:PATH = FindAndMergeDllPath "."
168189
Write-Output "PATH=$env:PATH"
169190

170191
ctest -C Debug
@@ -192,11 +213,7 @@ switch ($action) {
192213
exit $exit
193214
}
194215

195-
$ALL_DLL_FILES = Get-ChildItem -Path "./*.dll" -Recurse
196-
$ALL_DLL_DIRS = $(foreach ($dll_file in $ALL_DLL_FILES) {
197-
$dll_file.Directory.FullName
198-
}) | Sort-Object | Get-Unique
199-
$env:PATH = ($ALL_DLL_DIRS -Join [IO.Path]::PathSeparator) + [IO.Path]::PathSeparator + $env:PATH
216+
$env:PATH = FindAndMergeDllPath "."
200217
Write-Output "PATH=$env:PATH"
201218

202219
ctest -C Debug
@@ -221,11 +238,7 @@ switch ($action) {
221238
exit $exit
222239
}
223240

224-
$ALL_DLL_FILES = Get-ChildItem -Path "./*.dll" -Recurse
225-
$ALL_DLL_DIRS = $(foreach ($dll_file in $ALL_DLL_FILES) {
226-
$dll_file.Directory.FullName
227-
}) | Sort-Object | Get-Unique
228-
$env:PATH = ($ALL_DLL_DIRS -Join [IO.Path]::PathSeparator) + [IO.Path]::PathSeparator + $env:PATH
241+
$env:PATH = FindAndMergeDllPath "."
229242
Write-Output "PATH=$env:PATH"
230243

231244
ctest -C Debug
@@ -240,7 +253,7 @@ switch ($action) {
240253
"-C $SRC_DIR/test_common/cmake/all-options-abiv1-preview.cmake" `
241254
-DWITH_OPENTRACING=OFF `
242255
-DVCPKG_TARGET_TRIPLET=x64-windows `
243-
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
256+
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
244257
$exit = $LASTEXITCODE
245258
if ($exit -ne 0) {
246259
exit $exit
@@ -251,11 +264,7 @@ switch ($action) {
251264
exit $exit
252265
}
253266

254-
$ALL_DLL_FILES = Get-ChildItem -Path "./*.dll" -Recurse
255-
$ALL_DLL_DIRS = $(foreach ($dll_file in $ALL_DLL_FILES) {
256-
$dll_file.Directory.FullName
257-
}) | Sort-Object | Get-Unique
258-
$env:PATH = ($ALL_DLL_DIRS -Join [IO.Path]::PathSeparator) + [IO.Path]::PathSeparator + $env:PATH
267+
$env:PATH = FindAndMergeDllPath "."
259268
Write-Output "PATH=$env:PATH"
260269

261270
ctest -C Debug
@@ -280,7 +289,7 @@ switch ($action) {
280289
if ($exit -ne 0) {
281290
exit $exit
282291
}
283-
$env:PATH = "$BUILD_DIR\ext\src\dll\Debug;$env:PATH"
292+
$env:PATH = FindAndMergeDllPath "$BUILD_DIR\ext\src\dll\Debug"
284293
ctest -C Debug
285294
$exit = $LASTEXITCODE
286295
if ($exit -ne 0) {
@@ -305,11 +314,7 @@ switch ($action) {
305314
exit $exit
306315
}
307316

308-
$ALL_DLL_FILES = Get-ChildItem -Path "./*.dll" -Recurse
309-
$ALL_DLL_DIRS = $(foreach ($dll_file in $ALL_DLL_FILES) {
310-
$dll_file.Directory.FullName
311-
}) | Sort-Object | Get-Unique
312-
$env:PATH = ($ALL_DLL_DIRS -Join [IO.Path]::PathSeparator) + [IO.Path]::PathSeparator + $env:PATH
317+
$env:PATH = FindAndMergeDllPath "."
313318
Write-Output "PATH=$env:PATH"
314319

315320
ctest -C Debug
@@ -413,7 +418,7 @@ switch ($action) {
413418
exit $exit
414419
}
415420

416-
$env:PATH = "$INSTALL_TEST_DIR\bin;$env:PATH"
421+
$env:PATH = FindAndMergeDllPath "." "$INSTALL_TEST_DIR\bin"
417422

418423
$CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
419424

@@ -438,6 +443,9 @@ switch ($action) {
438443
mkdir "$BUILD_DIR\install_test"
439444
cd "$BUILD_DIR\install_test"
440445

446+
$env:PATH = FindAndMergeDllPath "."
447+
Write-Output "PATH=$env:PATH"
448+
441449
cmake $CMAKE_OPTIONS `
442450
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
443451
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
@@ -513,9 +521,9 @@ switch ($action) {
513521
exit $exit
514522
}
515523

516-
$env:PATH = "$INSTALL_TEST_DIR\bin;$env:PATH"
524+
$env:PATH = FindAndMergeDllPath "." "$INSTALL_TEST_DIR\bin"
517525

518-
echo "$env:PATH"
526+
Write-Output "PATH=$env:PATH"
519527

520528
$CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
521529

@@ -533,6 +541,9 @@ switch ($action) {
533541
mkdir "$BUILD_DIR\install_test"
534542
cd "$BUILD_DIR\install_test"
535543

544+
$env:PATH = FindAndMergeDllPath "."
545+
Write-Output "PATH=$env:PATH"
546+
536547
cmake $CMAKE_OPTIONS `
537548
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
538549
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `

cmake/opentelemetry-proto.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,12 +343,21 @@ if(WITH_OTLP_GRPC)
343343
# The codes generated by gRPC plugin do not support dll export/import
344344
# declarations. To work around this, we enable WINDOWS_EXPORT_ALL_SYMBOLS
345345
# property to export all symbols when building a shared library.
346+
# TODO: This can be removed once gRPC plugin supports dll export/import.
346347
set_target_properties(opentelemetry_proto_grpc
347348
PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
348349
endif()
349350
endif()
350351

351352
# Disable include-what-you-use and clang-tidy on generated code.
353+
# The codes generated by gRPC plugin do not support symbol visibility
354+
# declarations for public APIs. To work around this, we set visibility
355+
# to default and disable hidden inline visibility. Otherwise, building
356+
# a shared library will fail when user changes the default visibility
357+
# to hidden (e.g., via -fvisibility=hidden compiler flag).
358+
# TODO: C_VISIBILITY_PRESET, CXX_VISIBILITY_PRESET, and
359+
# VISIBILITY_INLINES_HIDDEN can be removed once gRPC plugin supports symbol
360+
# visibility declarations.
352361
set_target_properties(
353362
opentelemetry_proto_grpc
354363
PROPERTIES CXX_INCLUDE_WHAT_YOU_USE ""

0 commit comments

Comments
 (0)