Release plan
Dear community!
I would like to ask you a question about release plan. On the https://docs.ros.org/en/rolling/Releases.html I can see, that Jazzy has EOL set to 2029, which seems to me the LTS version.
If I look at the Release table I don't see such a combination. Yocto's Scarthgap branch is a LTS and I would like to use it with Jazzy I see here a meta-ros2-jazzy layer but not in a table. So is it possible to use such a combination? Would it be possible to update the table and mark a Jazzy as a LTS as well?
Thank you
Hi @andy9a9,
Yes, it is possible to use meta-ros2-jazzy with Scarthgap, Kirkstone, and with Styhead (ie "master"). You can see the kas configurations here: https://github.com/ros/meta-ros/tree/build/kas
I will update the table to reflect that soon. Most of my testing lately has been on Rolling while I have been working to set up CI/CD builds. If you encounter any problems with Jazzy let me know and I can backport any fixes you need.
Regards, Rob
Hello @robwoolley ,
That's a great news, thanks!
- I tried to migrate my layer the
ironbranch tojazzy, here are my changes which I had to do (I'm not at the end yet):- missing commit https://github.com/ros/meta-ros/commit/ea5be5a69008ad12628b7a224afa958b410e0a03
- extend some recipes for
nativevariantrqt-runtime-monitor->python3-pyqt5-sip->python3-pyqt5->qtquickcontrols2- this is little bit funny, while
python3-pyqt5-nativerecipe doesn't exist sincekirkstone
- unable to build
liblz4-vendor- stacked at the failing chain
ros-base,rosbag2,rosbag2-storage-default-plugins,rosbag2-storage-mcap,mcap-vendor,liblz4-vendor,ROS_UNRESOLVED_DEP-liblz4-dev
- stacked at the failing chain
More info will come once I move forward...
Hi @andy9a9 ,
The sip tool jumped several major releases between kirkstone and scarthgap.
Some major fixes were required. I need to upstream them to oe-core and meta-qt5.
Details can be found in the working group minutes: https://docs.google.com/document/d/1LqUjcu6vdlqVJO62SreCyjzddNDZhfO2n-7qYghY_cQ/edit?usp=drivesdk
Let me know if there's anything I can help with.
Regards, Rob
Good to know :).
But have can I proceed with the liblz4-vendor error? I see there an options:
- remove depends
liblz4-vendorfrommcap-vendor - create something like
SKIP_RECIPE[liblz4-vendor] ?= "${@bb.utils.contains('ROS_WORLD_SKIP_GROUPS', 'liblz4-vendor', 'Depends on unavailable ROS_UNRESOLVED_DEP-liblz4-dev', '', d)}" - downgrade
mcap-vendorto get rid ofliblz4-vendordependency just for now - or ?
As a temporary measure, I set the variable in ros-distro.inc (in master-next meta-ros2-rolling) ROS_UNRESOLVED_DEP-liblz4 = "lz4"
The correct long-term fix is to add an entry for OpenEmbedded under liblz4 in the rosdep metadata files.
Hi @robwoolley ,
thanks for ROS_UNRESOLVED_DEP-liblz4 = "lz4" hint. I made a little progress here:
- some packages are failing on
[buildpaths] in final- there is a class
ros2_distro.bbclasswhich is dealing with that, but not fully, while is not handling paths underros_prefix- I suggest to extend the class a little bit like:
-
+ROS_PREFIX_PATH ?= "${datadir}" do_install:append:class-target() { - if [ -d ${D}${datadir}/ament_index/resource_index/parent_prefix_path ]; then - find ${D}${datadir}/ament_index/resource_index/parent_prefix_path -type f \ + if [ -d ${D}${ROS_PREFIX_PATH}/ament_index/resource_index/parent_prefix_path ]; then + find ${D}${ROS_PREFIX_PATH}/ament_index/resource_index/parent_prefix_path -type f \ | xargs --no-run-if-empty sed -i -e 's@${STAGING_DIR_HOST}/@/@g' -e 's@${STAGING_DIR_NATIVE}/@/@g' else true
-
- default behavior is untouched, but recipes could override the path via
ROS_PREFIX_PATH ="${ros_datadir}"`- required changes
eigen3-cmake-moduleorocos-kdl-vendorshared-queues-vendor
- required changes
- I suggest to extend the class a little bit like:
- there is a class
shared-queues-vendor_0.26.1-2- this component will never be build from
dc17fed08353f30a7e20676df7c8fc5e842ed011- previous branch
release/jazzy/shared_queues_vendordoesn't exist anymore andrelease/rolling/shared_queues_vendor/0.24.0-1is not a tag- so
ROS_BRANCH = "nobranch=1"has to be set
- so
- previous branch
- this component will never be build from
orocos-kdl-vendor_0.5.0-3- same problem with building as with
shared-queues-vendor_0.26.1-2nobranch
0001-CMakeLists.txt-use-system-orocos-kdl.patch- never used
0001-CMakeLists.txt-fetch-orocos-kdl-with-bitbake-fetcher.patch- can't be applied
- requires
python-orocos-kdlas a build-dep, but this component requiresorocos-kdl-vendor- circular loop
- has to be fixed somehow!
- maybe...
-
ROS_BRANCH = "nobranch=1" LIC_FILES_CHKSUM = "file://package.xml;beginline=13;endline=13;md5=557f7c2686192731d23aed84d2eebcb9" S = "${WORKDIR}/git/orocos-kdl/orocos_kdl"
-
- maybe...
- same problem with building as with
yaml-cpp-vendor_9.0.0-2- requires similar changes as here
https://github.com/ros/meta-ros/commit/ad82ae26c7d098ab8d9bccf59de971e089e862f2but for different version-
--- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,26 +9,18 @@ ament_add_default_options() # NO_CMAKE_PACKAGE_REGISTRY used to avoid finding the library downloaded in WORKSPACE B # when building workspace A. # This should only find a system installed yaml-cpp and thus the environment hook isn't needed. -find_package(yaml-cpp 0.8.0 QUIET NO_CMAKE_PACKAGE_REGISTRY) - +find_package(yaml-cpp 0.8.0 QUIET NO_CMAKE_PACKAGE_REGISTRY) +if(yaml-cpp_FOUND) + message(STATUS "Found yaml-cpp ${yaml-cpp_VERSION}") +else() + message(FATAL_ERROR "yaml-cpp not found -- missing from DEPENDS?") +endif() + set(YAML_CPP_CXX_FLAGS "${CMAKE_CXX_FLAGS}") if(MSVC) set(YAML_CPP_CXX_FLAGS "/wd4251 /wd4275 ${YAML_CPP_CXX_FLAGS}") endif() -ament_vendor(yaml_cpp_vendor - SATISFIED ${yaml-cpp_FOUND} - VCS_URL https://github.com/jbeder/yaml-cpp.git - VCS_VERSION 0.8.0 - GLOBAL_HOOK - CMAKE_ARGS - "-DCMAKE_CXX_FLAGS=${YAML_CPP_CXX_FLAGS}" - -DYAML_CPP_BUILD_CONTRIB:BOOL=OFF - -DYAML_CPP_BUILD_TESTS:BOOL=OFF - -DYAML_CPP_BUILD_TOOLS:BOOL=OFF - -DYAML_BUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS} -) - ament_package( CONFIG_EXTRAS "yaml_cpp_vendor-extras.cmake.in" )
-
- requires similar changes as here
I'm still not at the end :)
Hello again,
so I went into end of compilation. Here are the latest changes which I had to made:
python-qt-binding-
# python3-pyqt5-native dependency which wasn't needed DEPENDS:remove = "sip3-native python3-pyqt5-native" DEPENDS:append = "sip-native "
-
ros2_distro.bbclass- this https://github.com/ros/meta-ros/commit/90d09961ad890fb9c2cb315c9a0b8d792e10e535 change the prefix, but didn't change everything
-
do_install:append:class-target() { - if [ -d ${D}${ros_datadir}/ament_index/resource_index/parent_prefix_path ]; then - find ${D}${ros_datadir}/ament_index/resource_index/parent_prefix_path -type f \ + if [ -d ${D}${ROS_PREFIX_PATH}/ament_index/resource_index/parent_prefix_path ]; then + find ${D}${ROS_PREFIX_PATH}/ament_index/resource_index/parent_prefix_path -type f \ | xargs --no-run-if-empty sed -i -e 's@${STAGING_DIR_HOST}/@/@g' -e 's@${STAGING_DIR_NATIVE}/@/@g' else true
ament-cmake-gen-version-h- reflect changes from https://github.com/ament/ament_cmake/pull/526
-
diff --git a/cmake/ament_generate_version_header.cmake b/cmake/ament_generate_version_header.cmake index d9470b40..5d2a2795 100644 --- a/cmake/ament_generate_version_header.cmake +++ b/cmake/ament_generate_version_header.cmake @@ -147,7 +147,7 @@ function(ament_generate_version_header target) "${SCRIPT_TEMPLATE_FILE}" COMMENT "Generating ${ARG_HEADER_PATH}") - add_custom_target("ament_generate_version_header__${target}" + add_custom_target("ament_generate_version_header__${target}" ALL DEPENDS "${GENERATED_HEADER_FILE}") add_dependencies("${target}" "ament_generate_version_header__${target}")
-
- reflect changes from https://github.com/ament/ament_cmake/pull/526
control-toolboxROS_BUILDTOOL_DEPENDS += "generate-parameter-library-py-native"
orocos-kdl-vendorf1bbaed1b5190dbfefd08ca445e53d20d1a0066ehas a problem with compilation, switching back to original versionSRCREV_release = "92eb6e580958a6834df2c1c1ecee92cdbac2f363"
- refresh
0001-CMakeLists.txt-fetch-orocos-kdl-with-bitbake-fetcher -
# remove ros_prefix from pkconfig files do_install:append:class-target() { for f in ${D}${ros_libdir}/pkgconfig/* ; do sed -i $f -e 's@${STAGING_DIR_HOST}${includedir}@\$\{includedir}@g' -e 's@${STAGING_DIR_NATIVE}${includedir}@\$\{includedir}@g' done }
- create/apply
disable-compiler-warningspatchcontroller-interfacecontroller-managerhardware-interfaceforward-command-controllerimu-sensor-broadcasterjoint-state-broadcasterjoint-trajectory-controllerpid-controllerROS_BUILDTOOL_DEPENDS += "generate-parameter-library-py-native"
position-controllersrange-sensor-broadcastervelocity-controllers
rosbag2-compression-zstd- refresh
0001-CMakeLists.txt-drop-dependency-on-zstd_vendor
- refresh
rslROS_BUILDTOOL_DEPENDS += "rosidl-default-runtime-native"
- fix license issues
Basically that it! :) I didn't try to run it yet, so lets see... .
@robwoolley Are there any news? :)