From edf14472e925309a93de3e12723a80d0c400928e Mon Sep 17 00:00:00 2001 From: Ivan Perez Date: Sat, 4 Jul 2026 12:48:31 +0000 Subject: [PATCH] Restrict humble packages to humble builds (#41). A recent update caused some packages to break due to them not being able to build the simulation repo when being installed on jazzy. This is affecting the demos repo, where now some demos no longer build. To keep this working until we can update all demos for jazzy, we want to protect the parts of the CMakeLists.txt that are specific to a ROS distro, so that they are ignored in other cases. This commit encloses the portions of the `CMakeLists.txt` that were affected by that update into conditions based on the ROS distribution for which the package is being compiled. It also adds conditions to the dependencies and exports included in the `package.xml` file so that they are only introduced when building on for the right ROS distribution. --- CMakeLists.txt | 147 ++++++++++++++++++++++++++----------------------- package.xml | 15 ++--- 2 files changed, 87 insertions(+), 75 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f414c3d..df63da3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,71 +1,80 @@ cmake_minimum_required(VERSION 3.8) project(simulation) +if(DEFINED ENV{ROS_DISTRO}) + set(ROS_DISTRO $ENV{ROS_DISTRO}) +endif() + # Find required packages find_package(ament_cmake REQUIRED) -find_package(ignition-plugin1 REQUIRED COMPONENTS register) -find_package(ignition-gazebo6 REQUIRED) -find_package(ignition-physics5 REQUIRED) -find_package(ignition-common4 REQUIRED) -find_package(ignition-rendering6 REQUIRED) - -# Set Gazebo plugin and sim versions -set(IGNITION_PLUGIN_VER ${ignition-plugin1_VERSION_MAJOR}) -set(IGNITION_SIM_VER ${ignition-gazebo6_VERSION_MAJOR}) -set(IGNITION_COMMON_VER ${ignition-common4_VERSION_MAJOR}) -set(IGNITION_RENDERING_VER ${ignition-rendering6_VERSION_MAJOR}) -set(IGNITION_SENSORS_VER ${ignition-sensors6_VERSION_MAJOR}) - -# Add the plugins directory to the include path -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/Plugins) - -# Add the SolarPanelPlugin library -add_library(SolarPanelPlugin SHARED - plugins/SolarPanelPlugin.cc -) - -# Link the SolarPanelPlugin library with required dependencies -target_link_libraries(SolarPanelPlugin - PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} - PRIVATE ignition-common${IGNITION_COMMON_VER}::ignition-common${IGNITION_COMMON_VER} - PRIVATE ignition-rendering${IGNITION_RENDERING_VER}::ignition-rendering${IGNITION_RENDERING_VER} - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core -) - -# Add the RadioisotopeThermalGeneratorPlugin library -add_library(RadioisotopeThermalGeneratorPlugin SHARED - plugins/RadioisotopeThermalGeneratorPlugin.cc -) - -# Link the RadioisotopeThermalGeneratorPlugin library with required dependencies -target_link_libraries(RadioisotopeThermalGeneratorPlugin - PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core -) -# Add the RechargeableBatteryPlugin library -add_library(RechargeableBatteryPlugin SHARED - plugins/RechargeableBatteryPlugin.cc -) - -# Link the RechargeableBatteryPlugin library with required dependencies -target_link_libraries(RechargeableBatteryPlugin - PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core -) - -# add the SensorPowerSystemPlugin library -add_library(SensorPowerSystemPlugin SHARED - plugins/SensorPowerSystemPlugin.cc -) - -# Link the SensorPowerSystemPlugin library with required dependencies -target_link_libraries(SensorPowerSystemPlugin - PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core - PRIVATE ignition-gazebo${IGNITION_SIM_VER}::ignition-gazebo${IGNITION_SIM_VER} - PRIVATE ignition-sensors${IGNITION_SENSORS_VER}::ignition-sensors${IGNITION_SENSORS_VER} -) +if(ROS_DISTRO STREQUAL "humble") + # Find required packages + find_package(ignition-plugin1 REQUIRED COMPONENTS register) + find_package(ignition-gazebo6 REQUIRED) + find_package(ignition-physics5 REQUIRED) + find_package(ignition-common4 REQUIRED) + find_package(ignition-rendering6 REQUIRED) + + # Set Gazebo plugin and sim versions + set(IGNITION_PLUGIN_VER ${ignition-plugin1_VERSION_MAJOR}) + set(IGNITION_SIM_VER ${ignition-gazebo6_VERSION_MAJOR}) + set(IGNITION_COMMON_VER ${ignition-common4_VERSION_MAJOR}) + set(IGNITION_RENDERING_VER ${ignition-rendering6_VERSION_MAJOR}) + set(IGNITION_SENSORS_VER ${ignition-sensors6_VERSION_MAJOR}) + + # Add the plugins directory to the include path + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/Plugins) + + # Add the SolarPanelPlugin library + add_library(SolarPanelPlugin SHARED + plugins/SolarPanelPlugin.cc + ) + + # Link the SolarPanelPlugin library with required dependencies + target_link_libraries(SolarPanelPlugin + PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} + PRIVATE ignition-common${IGNITION_COMMON_VER}::ignition-common${IGNITION_COMMON_VER} + PRIVATE ignition-rendering${IGNITION_RENDERING_VER}::ignition-rendering${IGNITION_RENDERING_VER} + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core + ) + + # Add the RadioisotopeThermalGeneratorPlugin library + add_library(RadioisotopeThermalGeneratorPlugin SHARED + plugins/RadioisotopeThermalGeneratorPlugin.cc + ) + + # Link the RadioisotopeThermalGeneratorPlugin library with required dependencies + target_link_libraries(RadioisotopeThermalGeneratorPlugin + PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core + ) + + # Add the RechargeableBatteryPlugin library + add_library(RechargeableBatteryPlugin SHARED + plugins/RechargeableBatteryPlugin.cc + ) + + # Link the RechargeableBatteryPlugin library with required dependencies + target_link_libraries(RechargeableBatteryPlugin + PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core + ) + + # add the SensorPowerSystemPlugin library + add_library(SensorPowerSystemPlugin SHARED + plugins/SensorPowerSystemPlugin.cc + ) + + # Link the SensorPowerSystemPlugin library with required dependencies + target_link_libraries(SensorPowerSystemPlugin + PRIVATE ignition-plugin${IGNITION_PLUGIN_VER}::ignition-plugin${IGNITION_PLUGIN_VER} + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::core + PRIVATE ignition-gazebo${IGNITION_SIM_VER}::ignition-gazebo${IGNITION_SIM_VER} + PRIVATE ignition-sensors${IGNITION_SENSORS_VER}::ignition-sensors${IGNITION_SENSORS_VER} + ) + +endif() # Create the models directory file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/models/curiosity_path) @@ -77,12 +86,14 @@ install(DIRECTORY DESTINATION share/${PROJECT_NAME}/ ) -# Install the plugin library -install(TARGETS SolarPanelPlugin RadioisotopeThermalGeneratorPlugin RechargeableBatteryPlugin SensorPowerSystemPlugin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - RUNTIME DESTINATION bin -) +if(ROS_DISTRO STREQUAL "humble") + # Install the plugin library + install(TARGETS SolarPanelPlugin RadioisotopeThermalGeneratorPlugin RechargeableBatteryPlugin SensorPowerSystemPlugin + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin + ) +endif() ament_environment_hooks("${CMAKE_CURRENT_SOURCE_DIR}/hooks/${PROJECT_NAME}.dsv.in") diff --git a/package.xml b/package.xml index 7e96866..ea52ba9 100644 --- a/package.xml +++ b/package.xml @@ -7,19 +7,20 @@ Dharini Dutia Apache-2.0 + ros_environment ament_cmake - ign-cmake2 - ign-plugin1 - ign-common4 - ign-gazebo6 - ign-rendering6 - ign-sensors6 + ign-cmake2 + ign-plugin1 + ign-common4 + ign-gazebo6 + ign-rendering6 + ign-sensors6 xacro ament_cmake - +