Skip to content

Commit 0f9b36d

Browse files
committed
Only copy during build
Signed-off-by: Nadav Elkabets <[email protected]>
1 parent 143a498 commit 0f9b36d

File tree

1 file changed

+31
-66
lines changed

1 file changed

+31
-66
lines changed

ament_cmake_python/cmake/ament_python_install_registered_packages.cmake

Lines changed: 31 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function(_ament_cmake_python_install_package_impl package_name)
1212
endforeach()
1313

1414
_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})
1616

1717
# Technically, we should call find_package(Python3) first to ensure that Python3::Interpreter
1818
# is available. But we skip this here because this macro requires ament_cmake, and ament_cmake
@@ -55,79 +55,44 @@ setup(
5555

5656
endmacro()
5757

58-
macro(_ament_cmake_python_copy_or_symlink package_name)
58+
macro(_ament_cmake_python_copy_build_files package_name)
5959
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}")
6067

61-
set(_dsts "")
62-
set(_srcs "")
6368
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}")
7772
endforeach()
7873

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-
11174
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")
12778
endif()
12879

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)
13094

95+
add_custom_target(${_sync_target} DEPENDS "${_stamp}")
13196
endmacro()
13297

13398
macro(_ament_cmake_python_generate_egg package_name)
@@ -195,4 +160,4 @@ macro(_ament_cmake_python_byte_compile package_name)
195160
)
196161
endmacro()
197162

198-
ament_cmake_python_install_registered_packages()
163+
ament_cmake_python_install_registered_packages()

0 commit comments

Comments
 (0)