Skip to content

Remove tinyxml2 vendor on rolling#1135

Merged
facontidavide merged 4 commits into
BehaviorTree:masterfrom
mini-1235:fix/tinyxml2
Jul 6, 2026
Merged

Remove tinyxml2 vendor on rolling#1135
facontidavide merged 4 commits into
BehaviorTree:masterfrom
mini-1235:fix/tinyxml2

Conversation

@mini-1235

Copy link
Copy Markdown
Contributor

In Nav2, we are building BT.CPP from source temporarily, however, we are failing to build now:

#20 2.012 Get:20 http://archive.ubuntu.com/ubuntu noble-backports/main amd64 Packages [49.0 kB]
#20 2.013 Get:21 http://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Packages [671 B]
#20 2.013 Get:22 http://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Packages [35.6 kB]
#20 3.087 Fetched 41.5 MB in 3s (14.2 MB/s)
#20 3.087 Reading package lists...
#20 4.120 /usr/bin/rosdep:6: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
#20 4.120   from pkg_resources import load_entry_point
#20 5.248 ERROR: the following packages/stacks could not have their rosdep keys resolved
#20 5.248 to system dependencies:
#20 5.248 behaviortree_cpp: No definition of [tinyxml2_vendor] for OS version [noble]
#20 ERROR: process "/bin/sh -c . /opt/ros/$ROS_DISTRO/setup.sh &&     apt-get update && rosdep install -q -y       --from-paths src       --skip-keys \"         slam_toolbox         \"       --ignore-src     && rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 1
------
 > [builder  6/11] RUN . /opt/ros/rolling/setup.sh &&     apt-get update && rosdep install -q -y       --from-paths src       --skip-keys "         slam_toolbox         "       --ignore-src     && rm -rf /var/lib/apt/lists/*:
2.012 Get:19 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [54.1 kB]
2.012 Get:20 http://archive.ubuntu.com/ubuntu noble-backports/main amd64 Packages [49.0 kB]
2.013 Get:21 http://archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Packages [671 B]
2.013 Get:22 http://archive.ubuntu.com/ubuntu noble-backports/universe amd64 Packages [35.6 kB]

4.120 /usr/bin/rosdep:6: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
4.120   from pkg_resources import load_entry_point
5.248 ERROR: the following packages/stacks could not have their rosdep keys resolved
5.248 to system dependencies:
5.248 behaviortree_cpp: No definition of [tinyxml2_vendor] for OS version [noble]
------

I believe this is because tinyxml2_vendor is deprecated and removed on rolling, so I am removing this in rolling.

ref: https://github.com/open-planning/roboplan/blob/6987faf083d5b097b4251f8f698a1a7832c3ac86/roboplan/package.xml#L15-L16

@mini-1235

mini-1235 commented Apr 29, 2026

Copy link
Copy Markdown
Contributor Author

It looks like the issue is also due to rolling moved to Ubuntu Resolute, this causes issue when running rosdep on Noble. But I still think this PR is useful, since tinyxml2_vendor is expected to be removed in the future (if I remember correctly, around the Lyrical release)

CMake Deprecation Warning at /opt/ros/rolling/share/tinyxml2_vendor/cmake/tinyxml2_vendorConfig.cmake:34 (message):
  Package 'tinyxml2_vendor' is deprecated (This package will be removed in
  ROS 2 Lyrical Luth.  Instead, use

        distributed package which provides same functionality.)
Call Stack (most recent call first):

@facontidavide

Copy link
Copy Markdown
Collaborator

rolling CI is still failing

@mini-1235

mini-1235 commented Jun 1, 2026

Copy link
Copy Markdown
Contributor Author
  $ sudo apt-get -qq install -y --no-upgrade --no-install-recommends ros-rolling-ros-environment | grep -E 'Setting up' 
  E: Unable to locate package ros-rolling-ros-environment
  'sudo apt-get -qq install -y --no-upgrade --no-install-recommends ros-rolling-ros-environment | grep -E 'Setting up' ' returned with 100
'setup_rosdep' returned with code '100' after 0 min 5 sec

I think there's something wrong with industrial ci and we might need to wait a few more weeks

Comment thread .github/workflows/ros2-rolling.yaml Outdated
matrix:
env:
- {ROS_DISTRO: rolling, ROS_REPO: main}
- {ROS_DISTRO: rolling, ROS_REPO: testing}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just noticed that the ROS PMC is considering dropping support for the main repository in favor of the testing repository only for Rolling. The CI was failing earlier because there were no syncs for Rolling on 26.04, switching to the testing repo fixed it. Thoughts on this change? @facontidavide

Related:

@mini-1235

Copy link
Copy Markdown
Contributor Author

@facontidavide does the changes here make sense to you? If yes, can we merge this and cut a new release, please?

mini-1235 and others added 3 commits July 6, 2026 21:05
Signed-off-by: Maurice <mauricepurnawan@gmail.com>
Signed-off-by: Maurice <mauricepurnawan@gmail.com>
The tinyxml2 rosdep key resolves on every supported distro, and the
previous package.xml already declared it directly. Only tinyxml2_vendor
needs to be conditional on the distros that still ship it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@facontidavide

Copy link
Copy Markdown
Collaborator

@mini-1235 thanks for the fix and for your patience — I took over the branch to get it ready for merging (I force-pushed to your fix/tinyxml2, so remember to git fetch + reset your local copy before touching it again).

What changed:

  • Rebased onto current master. Your two substantive commits (the package.xml conditional dependency and the find_package(tinyxml2_vendor QUIET) change) are preserved with your authorship.
  • Dropped the ROS_REPO: main → testing workflow change. That was a workaround attempt from April; the actual CI breakage was the Rolling→Resolute transition, which is now handled on master by pinning OS_CODE_NAME: noble (CI: Pin ros2-rolling to Ubuntu Noble until Rolling ships for Resolute (26.04) #1157). Rolling CI passes with main again, and it will now genuinely exercise this fix (the original No definition of [tinyxml2_vendor] for OS version [noble] rosdep failure is exactly what the new package.xml resolves). The ci: retrigger and merge commits were also dropped to keep the history clean.
  • Simplified package.xml: the direct tinyxml2 dependency is unconditional again (the rosdep key resolves on every supported distro, and the previous package.xml already declared it directly) — only tinyxml2_vendor is conditional on the distros that still ship it (humble/jazzy/kilted).

I also verified this locally on ROS Lyrical, where tinyxml2_vendor is already gone: current master reproduces the configure failure (Could not find a package configuration file provided by "tinyxml2_vendor"), while this branch configures via the system TinyXML2 config, builds, and passes the full test suite (492/492).

Will merge once CI is green, and a release will follow.

@facontidavide facontidavide merged commit b68b4b4 into BehaviorTree:master Jul 6, 2026
14 checks passed
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

Successfully merging this pull request may close these issues.

2 participants