Skip to content

Commit 3e06fee

Browse files
committed
Refs #21886: Make hello world docker compose file generic and refactor CMakeLists.txt
Signed-off-by: Mario Dominguez <[email protected]>
1 parent 16018d9 commit 3e06fee

File tree

2 files changed

+62
-31
lines changed

2 files changed

+62
-31
lines changed

test/examples/CMakeLists.txt

+48-17
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,21 @@ set(SHELL_EXECUTABLE "")
2828
set(TINYXML2_LIB_DIR_COMPOSE_VOLUME "")
2929
set(TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH "")
3030

31+
# Configure TinyXML2 library path if installed in user library path
32+
if(NOT (TINYXML2_FROM_SOURCE OR TINYXML2_FROM_THIRDPARTY))
33+
message(STATUS "TINYXML2_LIBRARY " ${TINYXML2_LIBRARY})
34+
file(GLOB TINYXML2_LIBRARY_DIRS LIST_DIRECTORIES false ${TINYXML2_LIBRARY})
35+
if (TINYXML2_LIBRARY_DIRS)
36+
list (GET TINYXML2_LIBRARY_DIRS 0 TINYXML2_LIBRARY_HEAD_DIR)
37+
get_filename_component(TINYXML2_LIB_DIR ${TINYXML2_LIBRARY_HEAD_DIR} DIRECTORY)
38+
message(STATUS "TINYXML2_LIB_DIR " ${TINYXML2_LIB_DIR})
39+
set(TINYXML2_LIB_DIR_COMPOSE_VOLUME "- ${TINYXML2_LIB_DIR}:${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/fastdds:ro")
40+
set(TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH "${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/fastdds")
41+
else()
42+
message(FATAL_ERROR "Could not find a valid TinyXML 2 lirbary path.")
43+
endif()
44+
endif()
45+
3146
# Linux configurations
3247
if(UNIX AND NOT(APPLE) AND NOT(QNXNTO) AND NOT(ANDROID))
3348
# Find bash
@@ -39,6 +54,21 @@ if(UNIX AND NOT(APPLE) AND NOT(QNXNTO) AND NOT(ANDROID))
3954
set(SHELL_EXECUTABLE ${BASH_EXECUTABLE})
4055
set(DOCKER_IMAGE_NAME "ubuntu:22.04")
4156

57+
set(PROJECT_BINATY_DIR_COMPOSE_VOLUME "${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR}")
58+
set(fastcdr_LIB_DIR_COMPOSE_VOLUME "${fastcdr_LIB_DIR}:${fastcdr_LIB_DIR}")
59+
set(CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME "${CMAKE_INSTALL_PREFIX}:${CMAKE_INSTALL_PREFIX}")
60+
61+
set(PATH_ENVIRONMENT_VARIABLE_COMPOSE "LD_LIBRARY_PATH: ${PROJECT_BINARY_DIR}/src/cpp:${fastcdr_LIB_DIR}")
62+
if (TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH)
63+
set(PATH_ENVIRONMENT_VARIABLE_COMPOSE "${PATH_ENVIRONMENT_VARIABLE_COMPOSE}:${TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH}")
64+
endif()
65+
set(EXAMPLE_PREFIX_DIR_COMPOSE "${PROJECT_BINARY_DIR}/examples/cpp")
66+
set(EXAMPLE_SUFFIX_DIR_COMPOSE "")
67+
set(FASTDDS_DEFAULT_PROFILES_FILE_PREFIX_COMPOSE "${PROJECT_BINARY_DIR}/examples/cpp/")
68+
set(COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE "$\${EXAMPLE_DIR}")
69+
set(COMMAND_CONCATENATE_COMPOSE "&")
70+
set(COMMAND_BACKGROUND_JOB_COMPOSE "")
71+
4272
# Windows configurations
4373
elseif(WIN32)
4474
# Find pwsh
@@ -47,8 +77,8 @@ elseif(WIN32)
4777
message(FATAL_ERROR "pwsh not found")
4878
endif()
4979

50-
# Temporary, in the is installed here
51-
set(SHELL_EXECUTABLE "C:/Program Files/PowerShell/latest/pwsh.exe")
80+
set(PWSH_VERSION_DOCKER "latest")
81+
set(SHELL_EXECUTABLE "C:/\"Program Files\"/PowerShell/${PWSH_VERSION_DOCKER}/pwsh.exe")
5282

5383
set(FILE_EXTENSION ".exe")
5484
set(DOCKER_IMAGE_NAME "windows-testing")
@@ -60,6 +90,22 @@ elseif(WIN32)
6090
string(REGEX REPLACE ".:" "C:" PROJECT_BINARY_DIR_C ${PROJECT_BINARY_DIR})
6191
string(REGEX REPLACE ".:" "C:" fastcdr_INSTALL_DIR_C ${fastcdr_INSTALL_DIR})
6292

93+
set(PROJECT_BINATY_DIR_COMPOSE_VOLUME "${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR_C}")
94+
set(fastcdr_LIB_DIR_COMPOSE_VOLUME "${fastcdr_INSTALL_DIR}/bin:${fastcdr_INSTALL_DIR_C}/bin")
95+
set(CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME "${CMAKE_INSTALL_PREFIX}/bin:${CMAKE_INSTALL_PREFIX_C}/bin")
96+
97+
set(PATH_ENVIRONMENT_VARIABLE_COMPOSE "PATH: C:/Program Files/OpenSSL-Win64;${CMAKE_INSTALL_PREFIX_C}/bin;${fastcdr_INSTALL_DIR_C}/bin;C:/Windows/System32;C:/Windows/System32/downlevel;")
98+
set(EXAMPLE_PREFIX_DIR_COMPOSE "${PROJECT_BINARY_DIR_C}/examples/cpp")
99+
if (CMAKE_BUILD_TYPE)
100+
set(EXAMPLE_SUFFIX_DIR_COMPOSE "${CMAKE_BUILD_TYPE}")
101+
else()
102+
set(EXAMPLE_SUFFIX_DIR_COMPOSE "Release")
103+
endif()
104+
set(FASTDDS_DEFAULT_PROFILES_FILE_PREFIX_COMPOSE "${PROJECT_BINARY_DIR_C}/examples/cpp")
105+
set(COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE "& $\$Env:EXAMPLE_DIR")
106+
set(COMMAND_CONCATENATE_COMPOSE "&\" \"")
107+
set(COMMAND_BACKGROUND_JOB_COMPOSE "; Receive-Job 1 -Wait")
108+
63109
set(WIN_DOCKERFILE ${CMAKE_CURRENT_LIST_DIR}/windows/Dockerfile)
64110
# Generate image for testing
65111
add_custom_target(
@@ -77,21 +123,6 @@ else()
77123
message(FATAL_ERROR "Unsupported platform")
78124
endif()
79125

80-
# Configure TinyXML2 library path if installed in user library path
81-
if(NOT (TINYXML2_FROM_SOURCE OR TINYXML2_FROM_THIRDPARTY))
82-
message(STATUS "TINYXML2_LIBRARY " ${TINYXML2_LIBRARY})
83-
file(GLOB TINYXML2_LIBRARY_DIRS LIST_DIRECTORIES false ${TINYXML2_LIBRARY})
84-
if (TINYXML2_LIBRARY_DIRS)
85-
list (GET TINYXML2_LIBRARY_DIRS 0 TINYXML2_LIBRARY_HEAD_DIR)
86-
get_filename_component(TINYXML2_LIB_DIR ${TINYXML2_LIBRARY_HEAD_DIR} DIRECTORY)
87-
message(STATUS "TINYXML2_LIB_DIR " ${TINYXML2_LIB_DIR})
88-
set(TINYXML2_LIB_DIR_COMPOSE_VOLUME "- ${TINYXML2_LIB_DIR}:${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/fastdds:ro")
89-
set(TINYXML2_LIB_DIR_COMPOSE_LD_LIBRARY_PATH ":${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}/fastdds")
90-
else()
91-
message(FATAL_ERROR "Could not find a valid TinyXML 2 lirbary path.")
92-
endif()
93-
endif()
94-
95126
# Find all pytest files for testing
96127
file(GLOB examples_python_tests RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*world.py)
97128

test/examples/hello_world.compose.yml

+14-14
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,27 @@ services:
1616
waitset-subscriber:
1717
image: @DOCKER_IMAGE_NAME@
1818
volumes:
19-
- @PROJECT_BINARY_DIR@:@PROJECT_BINARY_DIR_C@
20-
- @fastcdr_INSTALL_DIR@/bin:@fastcdr_INSTALL_DIR_C@/bin
21-
- @CMAKE_INSTALL_PREFIX@/bin:@CMAKE_INSTALL_PREFIX_C@/bin
19+
- @PROJECT_BINATY_DIR_COMPOSE_VOLUME@
20+
- @fastcdr_LIB_DIR_COMPOSE_VOLUME@
21+
- @CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME@
2222
@TINYXML2_LIB_DIR_COMPOSE_VOLUME@
2323
environment:
24-
PATH: C:/Program Files/OpenSSL-Win64;@CMAKE_INSTALL_PREFIX_C@/bin;@fastcdr_INSTALL_DIR_C@/bin;C:/Windows/System32;C:/Windows/System32/downlevel;
25-
EXAMPLE_DIR: @PROJECT_BINARY_DIR_C@/examples/cpp/hello_world/RelWithDebInfo
26-
FASTDDS_DEFAULT_PROFILES_FILE: @PROJECT_BINARY_DIR_C@/examples/cpp/hello_world/hello_world_profile.xml
27-
command: @SHELL_EXECUTABLE@ -c "& $$Env:EXAMPLE_DIR/hello_world@FILE_EXTENSION@ subscriber --waitset --samples 30"
24+
@PATH_ENVIRONMENT_VARIABLE_COMPOSE@
25+
EXAMPLE_DIR: @EXAMPLE_PREFIX_DIR_COMPOSE@/hello_world/@EXAMPLE_SUFFIX_DIR_COMPOSE@
26+
FASTDDS_DEFAULT_PROFILES_FILE: @FASTDDS_DEFAULT_PROFILES_FILE_PREFIX_COMPOSE@/hello_world/hello_world_profile.xml
27+
command: @SHELL_EXECUTABLE@ -c "@COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/hello_world@FILE_EXTENSION@ subscriber --waitset --samples 10"
2828

2929
subscriber-publisher:
3030
image: @DOCKER_IMAGE_NAME@
3131
volumes:
32-
- @PROJECT_BINARY_DIR@:@PROJECT_BINARY_DIR_C@
33-
- @fastcdr_INSTALL_DIR@/bin:@fastcdr_INSTALL_DIR_C@/bin
34-
- @CMAKE_INSTALL_PREFIX@/bin:@CMAKE_INSTALL_PREFIX_C@/bin
32+
- @PROJECT_BINATY_DIR_COMPOSE_VOLUME@
33+
- @fastcdr_LIB_DIR_COMPOSE_VOLUME@
34+
- @CMAKE_INSTALL_PREFIX_COMPOSE_VOLUME@
3535
@TINYXML2_LIB_DIR_COMPOSE_VOLUME@
3636
environment:
37-
PATH: C:/Program Files/OpenSSL-Win64;@CMAKE_INSTALL_PREFIX_C@/bin;@fastcdr_INSTALL_DIR_C@/bin;C:/Windows/System32;C:/Windows/System32/downlevel;
38-
EXAMPLE_DIR: @PROJECT_BINARY_DIR_C@/examples/cpp/hello_world/RelWithDebInfo
39-
FASTDDS_DEFAULT_PROFILES_FILE: @PROJECT_BINARY_DIR_C@/examples/cpp/hello_world/hello_world_profile.xml
40-
command: @SHELL_EXECUTABLE@ -c "& $$Env:EXAMPLE_DIR/hello_world@FILE_EXTENSION@ publisher --samples 30 &" "& $$Env:EXAMPLE_DIR/hello_world@FILE_EXTENSION@ subscriber --samples 30; Receive-Job 1 -Wait"
37+
@PATH_ENVIRONMENT_VARIABLE_COMPOSE@
38+
EXAMPLE_DIR: @EXAMPLE_PREFIX_DIR_COMPOSE@/hello_world/@EXAMPLE_SUFFIX_DIR_COMPOSE@
39+
FASTDDS_DEFAULT_PROFILES_FILE: @FASTDDS_DEFAULT_PROFILES_FILE_PREFIX_COMPOSE@/hello_world/hello_world_profile.xml
40+
command: @SHELL_EXECUTABLE@ -c "@COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/hello_world@FILE_EXTENSION@ publisher --samples 10 --matched 2 @COMMAND_CONCATENATE_COMPOSE@ @COMMAND_EXAMPLE_DIR_PREFIX_COMPOSE@/hello_world@FILE_EXTENSION@ subscriber --samples 10@COMMAND_BACKGROUND_JOB_COMPOSE@"
4141
depends_on:
4242
- waitset-subscriber

0 commit comments

Comments
 (0)