Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release plan #1195

Open
andy9a9 opened this issue Jul 15, 2024 · 8 comments
Open

Release plan #1195

andy9a9 opened this issue Jul 15, 2024 · 8 comments

Comments

@andy9a9
Copy link

andy9a9 commented Jul 15, 2024

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

@robwoolley
Copy link
Collaborator

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

@robwoolley robwoolley changed the title Rlease plan Release plan Jul 22, 2024
@andy9a9
Copy link
Author

andy9a9 commented Jul 23, 2024

Hello @robwoolley ,

That's a great news, thanks!

  • I tried to migrate my layer the iron branch to jazzy, here are my changes which I had to do (I'm not at the end yet):
    • missing commit ea5be5a
    • extend some recipes for native variant
      • rqt-runtime-monitor -> python3-pyqt5-sip -> python3-pyqt5 -> qtquickcontrols2
      • this is little bit funny, while python3-pyqt5-native recipe doesn't exist since kirkstone
    • 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

More info will come once I move forward...

@robwoolley
Copy link
Collaborator

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

@andy9a9
Copy link
Author

andy9a9 commented Jul 23, 2024

Good to know :).
But have can I proceed with the liblz4-vendor error? I see there an options:

  • remove depends liblz4-vendor from mcap-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-vendor to get rid of liblz4-vendor dependency just for now
  • or ?

@robwoolley
Copy link
Collaborator

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.

@andy9a9
Copy link
Author

andy9a9 commented Jul 26, 2024

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.bbclass which is dealing with that, but not fully, while is not handling paths under ros_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-module
          • orocos-kdl-vendor
          • shared-queues-vendor
  • shared-queues-vendor_0.26.1-2
    • this component will never be build from dc17fed08353f30a7e20676df7c8fc5e842ed011
      • previous branch release/jazzy/shared_queues_vendor doesn't exist anymore and release/rolling/shared_queues_vendor/0.24.0-1 is not a tag
        • so ROS_BRANCH = "nobranch=1" has to be set
  • orocos-kdl-vendor_0.5.0-3
    • same problem with building as with shared-queues-vendor_0.26.1-2
      • nobranch
    • 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-kdl as a build-dep, but this component requires orocos-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"
          
  • yaml-cpp-vendor_9.0.0-2
    • requires similar changes as here https://github.com/ros/meta-ros/commit/ad82ae26c7d098ab8d9bccf59de971e089e862f2 but 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"
         )

I'm still not at the end :)

@andy9a9
Copy link
Author

andy9a9 commented Jul 29, 2024

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 90d0996 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 Add ALL target for ament_generate_version_header target. ament/ament_cmake#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}")
  • control-toolbox
    • ROS_BUILDTOOL_DEPENDS += "generate-parameter-library-py-native"
  • orocos-kdl-vendor
    • f1bbaed1b5190dbfefd08ca445e53d20d1a0066e has a problem with compilation, switching back to original version
      • SRCREV_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-warnings patch
    • controller-interface
    • controller-manager
    • hardware-interface
    • forward-command-controller
    • imu-sensor-broadcaster
    • joint-state-broadcaster
    • joint-trajectory-controller
    • pid-controller
      • ROS_BUILDTOOL_DEPENDS += "generate-parameter-library-py-native"
    • position-controllers
    • range-sensor-broadcaster
    • velocity-controllers
  • rosbag2-compression-zstd
    • refresh 0001-CMakeLists.txt-drop-dependency-on-zstd_vendor
  • rsl
    • ROS_BUILDTOOL_DEPENDS += "rosidl-default-runtime-native"
  • fix license issues

Basically that it! :) I didn't try to run it yet, so lets see... .

@andy9a9
Copy link
Author

andy9a9 commented Sep 8, 2024

@robwoolley Are there any news? :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants