Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions patch/dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,9 @@ vision_msgs_rviz_plugins:
add_host: ["REQUIRE_OPENGL"]
velodyne_pointcloud:
add_host: ["libboost-devel"]
# TODO unvendor?!
uncrustify_vendor:
add_build: ["vcstool"]
add_host: ["uncrustify"]
add_run: ["uncrustify"]
mimick_vendor:
add_build: ["vcstool"]
gz_cmake_vendor:
Expand Down Expand Up @@ -252,9 +252,15 @@ rclpy:
add_run: ["typing_extensions"]
image_tools:
# Depends on opencv with gui support, see https://github.com/ros2/demos/blob/8f361a1ece2daae54016959f3ea9ab2e7692ddbb/image_tools/src/showimage.cpp#L190
add_run: ["libopencv * *qt6*"]
add_run: ["libopencv * *qt6*"]
camera_calibration:
# Depends on opencv with gui support, see https://github.com/ros-perception/image_pipeline/blob/746268fcfd21b389bc39ae60bb6345a53c838558/camera_calibration/src/camera_calibration/camera_calibrator.py#L286
add_run: ["libopencv * *qt6*"]
livox_ros_driver2:
add_host: ["livox-sdk2"]
spdlog_vendor:
add_host: ["spdlog"]
add_run: ["spdlog"]
console_bridge_vendor:
add_host: ["console_bridge"]
add_run: ["console_bridge"]
166 changes: 133 additions & 33 deletions patch/ros-kilted-ament-cmake-vendor-package.patch
Original file line number Diff line number Diff line change
@@ -1,53 +1,153 @@
diff --git a/cmake/ament_vendor.cmake b/cmake/ament_vendor.cmake
index c9b963cd0..d23ff2aa2 100644
--- a/cmake/ament_vendor.cmake
+++ b/cmake/ament_vendor.cmake
@@ -49,6 +49,14 @@
From 1132cb348f7267c51627ec596182bbcaa4d57c07 Mon Sep 17 00:00:00 2001
From: Silvio <[email protected]>
Date: Thu, 3 Jul 2025 10:14:56 +0200
Subject: [PATCH] ament_vendor: Add IS_VENDORED_OUTPUT_VARIABLE_NAME argument
and AMENT_VENDOR_POLICY CMake option

Signed-off-by: Silvio <[email protected]>
---
.../cmake/ament_vendor.cmake | 93 ++++++++++++++++++-
1 file changed, 88 insertions(+), 5 deletions(-)

diff --git a/ament_cmake_vendor_package/cmake/ament_vendor.cmake b/ament_cmake_vendor_package/cmake/ament_vendor.cmake
index c9b963cd..2ca2f40a 100644
--- a/ament_cmake_vendor_package/cmake/ament_vendor.cmake
+++ b/ament_cmake_vendor_package/cmake/ament_vendor.cmake
@@ -48,6 +48,31 @@
# project, expose the external project globally to any downstream CMake
# projects.
# :type GLOBAL_HOOK: option
#
+# Beside CMake macro options, the macro is also influenced by the following two
+# CMake options, that can be set at the CMake invocation for the project that
+# uses ament_vendor() macro:
+# * `FORCE_BUILD_VENDOR_PKG`: If ON build vendor packages from source, even if
+# system-installed packages are available
+# * `AMENT_VENDOR_NEVER_VENDOR`: If ON, raise an error if SATISFIED argument is
+# not true instead of building the vendored package
+# :param IS_VENDORED_OUTPUT_VARIABLE_NAME: the name of the variable that
+# will be set to ``TRUE`` if the package has been vendored, or ``FALSE``
+# otherwise.
+# :type IS_VENDORED_OUTPUT_VARIABLE_NAME: string
+#
+# Beside proper CMake macro arguments, the macro also is influenced by the
+# following CMake advanced options, that can be set from the CMake command
+# line when the project that contains the 'ament_vendor' call is configured.
+#
+# AMENT_VENDOR_POLICY: String option that specifies how ament_vendor behaves,
+# the allowed values are listed in the following.
+# DEFAULT: Vendor if ``SATISFIED`` argument is not supplied or false,
+# do not vendor otherwise.
+# FORCE_BUILD_VENDOR: Always vendor, independently of the value of the
+# ``SATISFIED`` argument.
+# NEVER_VENDOR: Never vendor, and raise an error if ``SATISFIED`` argument
+# is not supplied or false.
+# NEVER_VENDOR_IGNORE_SATISFIED_CHECK: Never vendor, and do not raise
+# an error even if ``SATISFIED`` argument is not supplied
+# or false. This option is in unsupported by most packages,
+# so use at your own risk, as it could break the buid.
+#
+# To check if a package has been actually vendored, downstream users of
+# ``ament_vendor` can pass a variable name to IS_VENDORED_OUTPUT_VARIABLE_NAME
+# argument, and check its value.
#
# @public
#
macro(ament_vendor TARGET_NAME)
@@ -97,6 +105,18 @@ macro(ament_vendor TARGET_NAME)
@@ -60,7 +85,7 @@ macro(ament_vendor TARGET_NAME)
message(FATAL_ERROR "ament_vendor() must be called before ament_package()")
endif()

- cmake_parse_arguments(_ARG "GLOBAL_HOOK;SKIP_INSTALL" "SOURCE_SUBDIR;VCS_TYPE;VCS_URL;VCS_VERSION;SATISFIED" "CMAKE_ARGS;PATCHES" ${ARGN})
+ cmake_parse_arguments(_ARG "GLOBAL_HOOK;SKIP_INSTALL" "SOURCE_SUBDIR;VCS_TYPE;VCS_URL;VCS_VERSION;SATISFIED;IS_VENDORED_OUTPUT_VARIABLE_NAME" "CMAKE_ARGS;PATCHES" ${ARGN})
if(_ARG_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "ament_vendor() called with unused arguments: "
"${_ARG_UNPARSED_ARGUMENTS}")
@@ -93,15 +118,57 @@ macro(ament_vendor TARGET_NAME)
set(_ARG_SATISFIED FALSE)
endif()

+ # If defined, let's set ${_ARG_IS_VENDORED_OUTPUT_VARIABLE_NAME} to FALSE, it will be set
+ # to TRUE if the package is actually vendored
+ if(DEFINED _ARG_IS_VENDORED_OUTPUT_VARIABLE_NAME)
+ # There is no PARENT_SCOPE as this is a cmake macro,
+ # if it is converted to a function PARENT_SCOPE will need to be added
+ set(${_ARG_IS_VENDORED_OUTPUT_VARIABLE_NAME} FALSE)
+ endif()
+
option(FORCE_BUILD_VENDOR_PKG
"Build vendor packages from source, even if system-installed packages are available"
OFF)

+ option(AMENT_VENDOR_NEVER_VENDOR
+ "If ON, raise an error if SATISFIED argument is not true instead of building the vendored package"
+ OFF)
+ mark_as_advanced(FORCE_BUILD_VENDOR_PKG)
+
+ if(FORCE_BUILD_VENDOR_PKG AND AMENT_VENDOR_NEVER_VENDOR)
+ message(FATAL_ERROR "ament_vendor() cannot have both FORCE_BUILD_VENDOR_PKG and AMENT_VENDOR_NEVER_VENDOR options enabled")
+ set(_AMENT_VENDOR_POLICY_DOCS "Specify how ament_vendor behaves, allowed values are DEFAULT, FORCE_BUILD_VENDOR, NEVER_VENDOR and NEVER_VENDOR_IGNORE_SATISFIED_CHECK.")
+ set(AMENT_VENDOR_POLICY "DEFAULT" CACHE STRING ${_AMENT_VENDOR_POLICY_DOCS})
+ set_property(CACHE AMENT_VENDOR_POLICY PROPERTY STRINGS "DEFAULT" "FORCE_BUILD_VENDOR" "NEVER_VENDOR" "NEVER_VENDOR_IGNORE_SATISFIED_CHECK")
+ mark_as_advanced(AMENT_VENDOR_POLICY)

- if(NOT _ARG_SATISFIED OR FORCE_BUILD_VENDOR_PKG)
+ if(FORCE_BUILD_VENDOR_PKG AND NOT AMENT_VENDOR_POLICY STREQUAL "FORCE_BUILD_VENDOR")
+ message(DEPRECATION "FORCE_BUILD_VENDOR_PKG set to ON detected, FORCE_BUILD_VENDOR_PKG variable is deprecated, please set AMENT_VENDOR_POLICY to FORCE_BUILD_VENDOR instead.")
+ set(CMAKE_BUILD_TYPE "FORCE_BUILD_VENDOR" CACHE STRING ${_AMENT_VENDOR_POLICY_DOCS} FORCE)
+ endif()
+
+ if(NOT _ARG_SATISFIED AND AMENT_VENDOR_NEVER_VENDOR)
+ message(FATAL_ERROR "ament_vendor() SATISFIED option is OFF and AMENT_VENDOR_NEVER_VENDOR is ON")
+ endif()
+ # AMENT_VENDOR_POLICY
+
if(NOT _ARG_SATISFIED OR FORCE_BUILD_VENDOR_PKG)
+ if(AMENT_VENDOR_POLICY STREQUAL "FORCE_BUILD_VENDOR")
+ set(_call_ament_vendor TRUE)
+ if(_ARG_SATISFIED)
+ message(STATUS "Forcing vendor package build for '${TARGET_NAME}', which is already satisfied as AMENT_VENDOR_POLICY is set to FORCE_BUILD_VENDOR")
+ endif()
+ elseif(AMENT_VENDOR_POLICY STREQUAL "NEVER_VENDOR")
+ if(NOT _ARG_SATISFIED)
+ message(FATAL_ERROR "Error as SATISFIED argument is not TRUE, but AMENT_VENDOR_POLICY is set to NEVER_VENDOR")
+ endif()
+ set(_call_ament_vendor FALSE)
+ elseif(AMENT_VENDOR_POLICY STREQUAL "NEVER_VENDOR_IGNORE_SATISFIED_CHECK")
+ if(NOT _ARG_SATISFIED)
+ message(STATUS "Not vendoring even if SATISFIED is not TRUE as AMENT_VENDOR_POLICY is set to NEVER_VENDOR_IGNORE_SATISFIED_CHECK")
+ endif()
+ set(_call_ament_vendor FALSE)
+ else()
+ # This is the default case
if(_ARG_SATISFIED)
message(STATUS "Forcing vendor package build for '${TARGET_NAME}', which is already satisfied")
@@ -245,6 +245,10 @@ function(_ament_vendor TARGET_NAME VCS_TYPE VCS_URL VCS_VERSION PATCHES CMAKE_AR
set(CMAKE_ARGS_CONTENT "${CMAKE_ARGS_CONTENT}\nset(CMAKE_MODULE_PATH [=[${CMAKE_MODULE_PATH}]=] CACHE INTERNAL \"\")")
- message(STATUS "Forcing vendor package build for '${TARGET_NAME}', which is already satisfied")
+ message(STATUS "Skipping vendor package build for '${TARGET_NAME}', as SATISFIED is TRUE and AMENT_VENDOR_POLICY is set to DEFAULT")
+ set(_call_ament_vendor FALSE)
+ else()
+ set(_call_ament_vendor TRUE)
endif()
+ endif()

+ if(_call_ament_vendor)
list_append_unique(_AMENT_CMAKE_VENDOR_PACKAGE_PREFIX_PATH "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}-prefix/install")

_ament_vendor(
@@ -115,6 +182,12 @@ macro(ament_vendor TARGET_NAME)
"${_ARG_SKIP_INSTALL}"
)

+ if(DEFINED _ARG_IS_VENDORED_OUTPUT_VARIABLE_NAME)
+ # There is no PARENT_SCOPE as this is a cmake macro,
+ # if it is converted to a function PARENT_SCOPE will need to be added
+ set(${_ARG_IS_VENDORED_OUTPUT_VARIABLE_NAME} TRUE)
+ endif()
+
if(NOT _ament_vendor_called AND NOT _ARG_SKIP_INSTALL)
# Hooks for CMAKE_PREFIX_PATH
if(_ARG_GLOBAL_HOOK)
@@ -142,8 +215,6 @@ macro(ament_vendor TARGET_NAME)

set(_ament_vendor_called TRUE)
endif()
- else()
- message(STATUS "Skipping vendor package build for '${TARGET_NAME}', which is already satisfied")
endif()
endmacro()

@@ -241,6 +312,10 @@ function(_ament_vendor TARGET_NAME VCS_TYPE VCS_URL VCS_VERSION PATCHES CMAKE_AR
set(CMAKE_ARGS_CONTENT "${CMAKE_ARGS_CONTENT}\nset(CMAKE_BUILD_TYPE [=[${CMAKE_BUILD_TYPE}]=] CACHE INTERNAL \"\")")
endif()

+ if(DEFINED CMAKE_IGNORE_PREFIX_PATH)
+ set(CMAKE_ARGS_CONTENT "${CMAKE_ARGS_CONTENT}\nset(CMAKE_IGNORE_PREFIX_PATH [=[${CMAKE_IGNORE_PREFIX_PATH}]=] CACHE INTERNAL \"\")")
+ endif()
+
list(PREPEND CMAKE_PREFIX_PATH ${_AMENT_CMAKE_VENDOR_PACKAGE_PREFIX_PATH})
set(CMAKE_ARGS_CONTENT "${CMAKE_ARGS_CONTENT}\nset(CMAKE_PREFIX_PATH [=[${CMAKE_PREFIX_PATH}]=] CACHE INTERNAL \"\")")

@@ -256,6 +260,14 @@ function(_ament_vendor TARGET_NAME VCS_TYPE VCS_URL VCS_VERSION PATCHES CMAKE_AR
if(DEFINED CMAKE_MODULE_PATH)
set(CMAKE_ARGS_CONTENT "${CMAKE_ARGS_CONTENT}\nset(CMAKE_MODULE_PATH [=[${CMAKE_MODULE_PATH}]=] CACHE INTERNAL \"\")")
endif()
@@ -256,6 +331,14 @@ function(_ament_vendor TARGET_NAME VCS_TYPE VCS_URL VCS_VERSION PATCHES CMAKE_AR
set(CMAKE_ARGS_CONTENT "${CMAKE_ARGS_CONTENT}\nset(BUILD_SHARED_LIBS ON CACHE BOOL \"\")")
endif()

Expand All @@ -56,7 +156,7 @@ index c9b963cd0..d23ff2aa2 100644
+ endif()
+
+ if(DEFINED Python3_EXECUTABLE)
+ set(CMAKE_ARGS_CONTENT "${CMAKE_ARGS_CONTENT}\nset(Python3_EXECUTABLE [=[${Python3_EXECUTABLE}]=] CACHE INTERNAL \"\")")
+ set(CMAKE_ARGS_CONTENT "${CMAKE_ARGS_CONTENT}\nset(CMAKE_IGNORE_PREFIX_PATH [=[${Python3_EXECUTABLE}]=] CACHE INTERNAL \"\")")
+ endif()
+
file(GENERATE OUTPUT "${CMAKE_ARGS_FILE}" CONTENT "${CMAKE_ARGS_CONTENT}")
Expand Down
8 changes: 0 additions & 8 deletions patch/ros-kilted-gz-cmake-vendor.patch

This file was deleted.

13 changes: 0 additions & 13 deletions patch/ros-kilted-gz-common-vendor.patch

This file was deleted.

23 changes: 0 additions & 23 deletions patch/ros-kilted-gz-dartsim-vendor.patch

This file was deleted.

13 changes: 0 additions & 13 deletions patch/ros-kilted-gz-fuel-tools-vendor.patch

This file was deleted.

13 changes: 0 additions & 13 deletions patch/ros-kilted-gz-gui-vendor.patch

This file was deleted.

13 changes: 0 additions & 13 deletions patch/ros-kilted-gz-math-vendor.patch

This file was deleted.

13 changes: 0 additions & 13 deletions patch/ros-kilted-gz-msgs-vendor.patch

This file was deleted.

Loading