Skip to content

jazzy migration - #285

Open
kevinjin0420 wants to merge 128 commits into
mainfrom
skj/ubuntu24-native
Open

jazzy migration#285
kevinjin0420 wants to merge 128 commits into
mainfrom
skj/ubuntu24-native

Conversation

@kevinjin0420

@kevinjin0420 kevinjin0420 commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Migrate from ROS 2 Humble/Ubuntu 22 to ROS 2 Jazzy/Ubuntu 24
    • Qt5 -> Qt6 for camera_client (Qt::Widgets/Multimedia/MultimediaWidgets -> Qt6::..., setMedia -> setSource)
    • drop the deadsnakes Python PPA, GCC-13 PPA, and Kitware CMake PPA from the build role, Ubuntu 24 ships new-enough versions of all three natively
    • delete ansible/jetson.yml, jetson_build.yml already includes the jetson_networks role it existed solely to invoke
  • BIG CHANGE: Flatten the repo layout: ~/mrover-ros2 instead of the nested ~/ros2_ws/src/mrover colcon workspace
    • mrover is a single package, the src/ nesting was never actually required
    • also prep for pixi: portable/pixi package resolution gets much uglier on top of a nested workspace, flattening now avoids doing this migration twice
    • bootstrap.sh clones straight to ~/mrover-ros2 with --recurse-submodules, no interactive workspace-path prompt anymore
      • that path prompt NEVER worked. there are so many hard coded paths (used to be ~/ros2_ws/src/mrover) that if a user specified a custom path it will 100% break. removing this feature
    • build.sh/clean.sh no longer pushd ../.., this repo IS the workspace root now
    • ansible ros2_workspace var (and jetson roles' hardcoded ros2_ws/src/mrover paths) replaced with mrover_repo everywhere
    • cmake/macros.cmake: mrover_add_component's post-install symlink no longer hardcodes the old nested ../../build/.../install/... path, uses ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_PREFIX}
    • panorama.py/pano-copy.sh drop the ament_index_python + ../../../../../src/mrover/... path hack for a plain MROVER_REPO-relative path
  • CMake fixes surfaced by the above
    • cmake_policy(SET CMP0148 NEW), drops the now-illegal (and dead, its one consumer was already commented out) find_package(PythonLibs REQUIRED) under if (APPLE)
    • manif: try find_package first, FetchContent only as a fallback, pre-moving for when pixi provides it
    • Dawn: list(PREPEND CMAKE_PREFIX_PATH ...) instead of Dawn_ROOT, matches how find_package(Dawn QUIET) actually searches
    • wrap rosidl's generated Python target's raw INTERFACE_INCLUDE_DIRECTORIES in $<BUILD_INTERFACE:...>, CMP0052 otherwise rejects them
    • gst_utils only links PkgConfig::Gst/GstApp if found, so macOS (no GStreamer) doesn't fail configure
    • gate the fallback units target behind "esw/fw submodule absent," esw/fw/lib/units already defines it once checked out
  • Rebuild the CI Docker image for ubuntu:noble (Dockerfile)
    • sudo grant moved to a per-user sudoers.d drop-in, noble's default /etc/sudoers ships an active %sudo (password-required) rule that a later NOPASSWD %sudo rule doesn't reliably override
    • ADD ./scripts since it was missing entirely, the ci role's Dawn download step had been silently failing (ENOENT) on every image build
    • setup_dawn.sh now mkdir -ps its destination's parent dir, deps/ doesn't exist yet in a fresh container checkout
    • clean apt cache/lists in the same layer as the install so the space is actually reclaimed, not just whited-out in a later layer
    • ethan if you have credentials to the team dockerhub acc feel free to push and change image to be under umrover1
  • CI workflow (ci.yml) fixes to match
    • Build step now activates the venv first, colcon lives there via the ansible role's pip install, not system-wide
    • delete build_ci.sh, ci.yml calls ./build.sh Release directly now like main does
    • Checkout ESW Submodule step now also sets safe.directory explicitly, actions/checkout's own exception for this doesn't carry over to a separately-invoked git command in the same container job
  • Ansible role modernization
    • apt repos moved off deprecated apt_key/apt_repository (removed in ansible-core 2.25, already warning in CI today) onto deb822_repository, which also takes a key URL directly via signed_by, no separate key-download task needed
    • RPM repos (dev role) moved off raw dnf config-manager shell-outs onto the portable yum_repository module, so dnf.yml now works unchanged on both dnf and dnf5 hosts, dnf5.yml is gone, dispatch normalizes dnf5 -> dnf before the include_tasks
    • add community.general collection dependency, needed by modules already in use
    • split platform-specific package installs into apt.yml/dnf.yml/pacman.yml/homebrew.yml, dispatched via ansible_pkg_mgr, groundwork for non-Ubuntu dev machines
    • ~/.zshrc no longer gets overwritten, only a single blockinfile-managed block sourcing ~/.mrover.zshenv gets appended, oh-my-zsh/plugins/theme are staged but never force-activated
    • resolve the zsh binary via which zsh instead of a hardcoded /usr/bin/zsh, macOS ships it at /bin/zsh
  • Misc cleanup
    • delete environment.bash, a personal dev leftover pointing at /home/quintin's Humble workspace
    • style.sh: error output goes to stderr, fix a couple of shellcheck SC2155 warnings

Verification

  • CI Build + Style green
  • Fresh clone / clean tree build succeeds
  • Sim launches and renders

Tested on clean installs of

  • Ubuntu 24
  • Kubuntu 24

@ejhon1116 ejhon1116 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

review

Comment thread perception/cost_map/pch.hpp
Comment thread scripts/debug_typing.py
Comment thread teleoperation/basestation_gui/gui_chromium.sh
Comment thread navigation/drive.py
Comment thread navigation/recovery.py
Comment thread navigation/stuck_recovery.py
Comment thread ansible/roles/dev/tasks/apt.yml

@ejhon1116 ejhon1116 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

quick review

Comment thread ansible/build.yml Outdated
Comment thread ansible.sh Outdated

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

@danielryckman can you take a look and update this for ubuntu 24?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

will do

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

think khush already bumped

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@MyCabbages4 are we officially switching to cuda 13.0? also, roles/jetson_build/tasks/main.yml still installs ubuntu2204 cuda keyring, should probably change that too

@MyCabbages4 MyCabbages4 Sep 1, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I believe the switch is real but @ejhon1116 can you confirm? Changed the jetson_build yaml but I noticed that the ZED SDK v5.4 only supports up to CUDA 13.2 for jetpack 7.2 right now so I'm switching the percep yaml to use that version instead. Should I do something different? Edit: Jetpack 7.2 officially adds CUDA 13 to the jetson

@danielryckman danielryckman Sep 1, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

we'll have a couple issues if we decide to switch over to cuda-13, there is a cuda 12 option for the newest zed sdk so if possible i would prefer we stay on cuda 12. if not i can look into what we need to change

@qhdwight

Copy link
Copy Markdown
Contributor

delete environment.bash, a personal dev leftover pointing at /home/quintin's Humble workspace

Dang Claude does not know me

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.

5 participants