@@ -12,7 +12,7 @@ function(_ament_cmake_python_install_package_impl package_name)
12
12
endforeach ()
13
13
14
14
_ament_cmake_python_prepare_build (${package_name} )
15
- _ament_cmake_python_copy_or_symlink (${package_name} )
15
+ _ament_cmake_python_copy_build_files (${package_name} )
16
16
17
17
# Technically, we should call find_package(Python3) first to ensure that Python3::Interpreter
18
18
# is available. But we skip this here because this macro requires ament_cmake, and ament_cmake
@@ -55,79 +55,44 @@ setup(
55
55
56
56
endmacro ()
57
57
58
- macro (_ament_cmake_python_copy_or_symlink package_name )
58
+ macro (_ament_cmake_python_copy_build_files package_name )
59
59
set (_sync_target "ament_cmake_python_sync_${package_name} " )
60
+ set (_stage_dir "${_build_dir} /${package_name} " )
61
+ set (_stamp "${_stage_dir} /.sync_stamp" )
62
+
63
+ set (_cmds "" )
64
+
65
+ list (APPEND _cmds
66
+ COMMAND ${CMAKE_COMMAND} -E remove_directory "${_stage_dir} " )
60
67
61
- set (_dsts "" )
62
- set (_srcs "" )
63
68
foreach (_dir IN LISTS _PACKAGE_DIRS )
64
- file (GLOB_RECURSE _dir_files CONFIGURE_DEPENDS RELATIVE "${_dir} " "${_dir} /*" )
65
- foreach (_rel IN LISTS _dir_files )
66
- set (_src "${_dir} /${_rel} " )
67
- set (_dst "${_build_dir} /${package_name} /${_rel} " )
68
-
69
- list (FIND _dsts "${_dst} " _idx )
70
- if (NOT _idx EQUAL -1 )
71
- list (REMOVE_AT _dsts ${_idx} )
72
- list (REMOVE_AT _srcs ${_idx} )
73
- endif ()
74
- list (APPEND _dsts "${_dst} " )
75
- list (APPEND _srcs "${_src} " )
76
- endforeach ()
69
+ list (APPEND _cmds
70
+ COMMAND ${CMAKE_COMMAND} -E copy_directory
71
+ "${_dir} " "${_stage_dir} " )
77
72
endforeach ()
78
73
79
- set (_sync_deps "" )
80
- list (LENGTH _dsts _len )
81
- if (_len GREATER 0 )
82
- math (EXPR _last "${_len} - 1" )
83
- foreach (_file_idx RANGE 0 ${_last} )
84
- list (GET _dsts ${_file_idx} _dst )
85
- list (GET _srcs ${_file_idx} _src )
86
-
87
- get_filename_component (_dst_parent "${_dst} " DIRECTORY )
88
- file (MAKE_DIRECTORY "${_dst_parent} " )
89
-
90
- if (AMENT_CMAKE_SYMLINK_INSTALL )
91
- add_custom_command (
92
- OUTPUT "${_dst} "
93
- COMMAND ${CMAKE_COMMAND} -E create_symlink "${_src} " "${_dst} "
94
- DEPENDS "${_src} "
95
- COMMENT "Symlinking ${_dst} "
96
- VERBATIM
97
- )
98
- else ()
99
- add_custom_command (
100
- OUTPUT "${_dst} "
101
- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_src} " "${_dst} "
102
- DEPENDS "${_src} "
103
- COMMENT "Copying ${_dst} "
104
- VERBATIM
105
- )
106
- endif ()
107
- list (APPEND _sync_deps "${_dst} " )
108
- endforeach ()
109
- endif ()
110
-
111
74
if (_SETUP_CFG )
112
- set (_cfg_dst "${_build_dir} /setup.cfg" )
113
- if (AMENT_CMAKE_SYMLINK_INSTALL )
114
- set (_copy_cmd ${CMAKE_COMMAND} -E create_symlink "${_SETUP_CFG} " "${_cfg_dst} " )
115
- else ()
116
- set (_copy_cmd ${CMAKE_COMMAND} -E copy_if_different "${_SETUP_CFG} " "${_cfg_dst} " )
117
- endif ()
118
-
119
- add_custom_command (
120
- OUTPUT "${_cfg_dst} "
121
- COMMAND ${_copy_cmd}
122
- DEPENDS "${_SETUP_CFG} "
123
- COMMENT "Synchronising setup.cfg"
124
- VERBATIM
125
- )
126
- list (APPEND _sync_deps "${_cfg_dst} " )
75
+ list (APPEND _cmds
76
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
77
+ "${_SETUP_CFG} " "${_build_dir} /setup.cfg" )
127
78
endif ()
128
79
129
- add_custom_target (${_sync_target} DEPENDS ${_sync_deps} )
80
+ foreach (_dir IN LISTS _PACKAGE_DIRS )
81
+ list (APPEND _cmds
82
+ COMMAND ${CMAKE_COMMAND} -E touch "${_dir} " )
83
+ endforeach ()
84
+
85
+ list (APPEND _cmds
86
+ COMMAND ${CMAKE_COMMAND} -E touch "${_stamp} " )
87
+
88
+ add_custom_command (
89
+ OUTPUT "${_stamp} "
90
+ ${_cmds}
91
+ DEPENDS ${_PACKAGE_DIRS} ${_SETUP_CFG}
92
+ COMMENT "Synchronising sources for ${package_name} (copy_directory)"
93
+ VERBATIM )
130
94
95
+ add_custom_target (${_sync_target} DEPENDS "${_stamp} " )
131
96
endmacro ()
132
97
133
98
macro (_ament_cmake_python_generate_egg package_name )
@@ -195,4 +160,4 @@ macro(_ament_cmake_python_byte_compile package_name)
195
160
)
196
161
endmacro ()
197
162
198
- ament_cmake_python_install_registered_packages ()
163
+ ament_cmake_python_install_registered_packages ()
0 commit comments