Skip to content

Commit 9031f44

Browse files
authored
[Prebuild]add Lyrical Luth lane to Linux prebuild workflows (#1498)
Generate prebuilt binaries for ROS 2 Lyrical Luth (Ubuntu 26.04 / `resolute`) on both x64 and ARM64. The existing prebuild scripts are distro-agnostic and pick up `ROS_DISTRO` + Ubuntu codename automatically, so no changes are required in `scripts/tag_prebuilds.js`, `scripts/install.js`, `lib/prebuilds.js`, or `lib/native_loader.js`. Changes: - `.github/workflows/prebuild-linux-x64.yml`: Add `lyrical` to the `ros_distribution` matrix with `docker_image: ubuntu:26.04`, `ubuntu_codename: resolute`, and the Lyrical beta tarball URL (`ros2-lyrical-2026-04-30-resolute-x86_64.tar.bz2`). Skip `ros-tooling/setup-ros` for Lyrical and instead enable the ROS 2 apt source, install build/rosdep tooling, extract the tarball into `/opt/ros/lyrical`, and resolve runtime deps via `rosdep install` (mirroring the Lyrical lane already used in the test workflow). - `.github/workflows/prebuild-linux-arm64.yml`: same as above, using the `aarch64` Lyrical tarball. Fix: #1458
1 parent a3bb702 commit 9031f44

2 files changed

Lines changed: 66 additions & 0 deletions

File tree

.github/workflows/prebuild-linux-arm64.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jobs:
1818
- humble
1919
- jazzy
2020
- kilted
21+
- lyrical
2122
include:
2223
# Humble Hawksbill (May 2022 - May 2027)
2324
- docker_image: ubuntu:jammy
@@ -31,6 +32,14 @@ jobs:
3132
- docker_image: ubuntu:noble
3233
ros_distribution: kilted
3334
ubuntu_codename: noble
35+
# Lyrical Luth (May 2026 - May 2031, beta)
36+
# NOTE: the tarball URL below is a date-stamped beta snapshot and
37+
# must be refreshed manually until upstream publishes a stable
38+
# "latest" download (or until GA).
39+
- docker_image: ubuntu:26.04
40+
ros_distribution: lyrical
41+
ubuntu_codename: resolute
42+
ros_tar_url: "https://github.com/ros2/ros2/releases/download/release-lyrical-beta-20260430/ros2-lyrical-2026-04-30-resolute-aarch64.tar.bz2"
3443

3544
steps:
3645
- name: Setup Node.js ${{ matrix.node-version }} on ${{ matrix.architecture }}
@@ -40,10 +49,34 @@ jobs:
4049
architecture: ${{ matrix.architecture }}
4150

4251
- name: Setup ROS2
52+
if: ${{ matrix.ros_distribution != 'lyrical' }}
4353
uses: ros-tooling/setup-ros@v0.7
4454
with:
4555
required-ros-distributions: ${{ matrix.ros_distribution }}
4656

57+
- name: Enable ROS2 apt repository (lyrical)
58+
if: ${{ matrix.ros_distribution == 'lyrical' }}
59+
run: |
60+
apt-get update
61+
apt-get install -y software-properties-common curl
62+
add-apt-repository universe
63+
ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
64+
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
65+
dpkg -i /tmp/ros2-apt-source.deb
66+
apt-get update
67+
apt-get install -y build-essential cmake tar bzip2 python3 python3-rosdep python3-colcon-common-extensions
68+
69+
- name: Install ROS2 from binary tarball (lyrical)
70+
if: ${{ matrix.ros_distribution == 'lyrical' }}
71+
run: |
72+
curl -sL "${{ matrix.ros_tar_url }}" -o /tmp/ros2-${{ matrix.ros_distribution }}.tar.bz2
73+
mkdir -p /opt/ros/${{ matrix.ros_distribution }}
74+
tar xf /tmp/ros2-${{ matrix.ros_distribution }}.tar.bz2 --strip-components=1 -C /opt/ros/${{ matrix.ros_distribution }}
75+
rm /tmp/ros2-${{ matrix.ros_distribution }}.tar.bz2
76+
rosdep init || true
77+
rosdep update
78+
rosdep install --rosdistro ${{ matrix.ros_distribution }} --from-paths /opt/ros/${{ matrix.ros_distribution }}/share --ignore-src -y --skip-keys "cyclonedds fastcdr fastdds iceoryx_binding_c rmw_connextdds rti-connext-dds-7.3.0 rti-connext-dds-7.7.0 urdfdom_headers python3-pyqt6.qtsvg rosidl_buffer_py pybind11"
79+
4780
- uses: actions/checkout@v6
4881

4982
- name: Install dependencies

.github/workflows/prebuild-linux-x64.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jobs:
1818
- humble
1919
- jazzy
2020
- kilted
21+
- lyrical
2122
include:
2223
# Humble Hawksbill (May 2022 - May 2027)
2324
- docker_image: ubuntu:jammy
@@ -31,6 +32,14 @@ jobs:
3132
- docker_image: ubuntu:noble
3233
ros_distribution: kilted
3334
ubuntu_codename: noble
35+
# Lyrical Luth (May 2026 - May 2031, beta)
36+
# NOTE: the tarball URL below is a date-stamped beta snapshot and
37+
# must be refreshed manually until upstream publishes a stable
38+
# "latest" download (or until GA).
39+
- docker_image: ubuntu:26.04
40+
ros_distribution: lyrical
41+
ubuntu_codename: resolute
42+
ros_tar_url: "https://github.com/ros2/ros2/releases/download/release-lyrical-beta-20260430/ros2-lyrical-2026-04-30-resolute-x86_64.tar.bz2"
3443

3544
steps:
3645
- name: Setup Node.js ${{ matrix.node-version }} on ${{ matrix.architecture }}
@@ -40,10 +49,34 @@ jobs:
4049
architecture: ${{ matrix.architecture }}
4150

4251
- name: Setup ROS2
52+
if: ${{ matrix.ros_distribution != 'lyrical' }}
4353
uses: ros-tooling/setup-ros@v0.7
4454
with:
4555
required-ros-distributions: ${{ matrix.ros_distribution }}
4656

57+
- name: Enable ROS2 apt repository (lyrical)
58+
if: ${{ matrix.ros_distribution == 'lyrical' }}
59+
run: |
60+
apt-get update
61+
apt-get install -y software-properties-common curl
62+
add-apt-repository universe
63+
ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
64+
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
65+
dpkg -i /tmp/ros2-apt-source.deb
66+
apt-get update
67+
apt-get install -y build-essential cmake tar bzip2 python3 python3-rosdep python3-colcon-common-extensions
68+
69+
- name: Install ROS2 from binary tarball (lyrical)
70+
if: ${{ matrix.ros_distribution == 'lyrical' }}
71+
run: |
72+
curl -sL "${{ matrix.ros_tar_url }}" -o /tmp/ros2-${{ matrix.ros_distribution }}.tar.bz2
73+
mkdir -p /opt/ros/${{ matrix.ros_distribution }}
74+
tar xf /tmp/ros2-${{ matrix.ros_distribution }}.tar.bz2 --strip-components=1 -C /opt/ros/${{ matrix.ros_distribution }}
75+
rm /tmp/ros2-${{ matrix.ros_distribution }}.tar.bz2
76+
rosdep init || true
77+
rosdep update
78+
rosdep install --rosdistro ${{ matrix.ros_distribution }} --from-paths /opt/ros/${{ matrix.ros_distribution }}/share --ignore-src -y --skip-keys "cyclonedds fastcdr fastdds iceoryx_binding_c rmw_connextdds rti-connext-dds-7.3.0 rti-connext-dds-7.7.0 urdfdom_headers python3-pyqt6.qtsvg rosidl_buffer_py pybind11"
79+
4780
- uses: actions/checkout@v6
4881

4982
- name: Install dependencies

0 commit comments

Comments
 (0)