From 23e744261a529e467ec6d42b2c5de8f82a1137b0 Mon Sep 17 00:00:00 2001 From: ruggero Date: Wed, 3 Jun 2026 13:33:35 +0200 Subject: [PATCH 1/6] update workflows, Dockerfile and README for ubuntu 26.04 resolve conflict from upodating broken links --- .ci/Dockerfile | 13 ++++++++----- .github/workflows/docker-image.yml | 8 ++++++++ .github/workflows/libfranka-build.yml | 2 ++ .github/workflows/pylibfranka-wheels.yml | 4 ++++ README.rst | 20 ++++++++++++++++++-- 5 files changed, 40 insertions(+), 7 deletions(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index dac6f0d2..4c3f5fc2 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -26,16 +26,19 @@ RUN groupadd --gid $USER_GID $USERNAME \ && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ && chmod 0440 /etc/sudoers.d/$USERNAME -# Add LLVM repository for newer clang versions +# Add LLVM repository for newer clang versions. +# apt.llvm.org publishes LLVM 18 for Ubuntu <= 24.04 but only LLVM 21+ for +# Ubuntu 26.04 (resolute); use LLVM 22 (current stable) for that release. RUN apt-get update && \ apt-get install -y wget gnupg lsb-release software-properties-common && \ wget https://apt.llvm.org/llvm.sh && \ chmod +x llvm.sh && \ - ./llvm.sh 18 && \ + if [ "${UBUNTU_VERSION}" = "26.04" ]; then LLVM_VER=22; else LLVM_VER=18; fi && \ + ./llvm.sh ${LLVM_VER} && \ apt-get update && \ - apt-get install -y clang-format-18 clang-tidy-18 \ - && ln -s $(which clang-tidy-18) /usr/bin/clang-tidy \ - && ln -s $(which clang-format-18) /usr/bin/clang-format + apt-get install -y clang-format-${LLVM_VER} clang-tidy-${LLVM_VER} && \ + ln -s $(which clang-tidy-${LLVM_VER}) /usr/bin/clang-tidy && \ + ln -s $(which clang-format-${LLVM_VER}) /usr/bin/clang-format # Install necessary packages (without Python - we'll install specific version later) # Note: pybind11-dev kept for devcontainer users (works with Ubuntu's default Python) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 1c333d46..91e80081 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -48,6 +48,10 @@ jobs: ubuntu-version: '22.04' name: 'Python 3.12' tag-prefix: 'py' + - python-version: '3.14' + ubuntu-version: '26.04' # Ubuntu 26.04 for glibc 2.43 compatibility + name: 'Python 3.14' + tag-prefix: 'py' # Debian package build images (Ubuntu version specific) - python-version: '3.8' ubuntu-version: '20.04' @@ -61,6 +65,10 @@ jobs: ubuntu-version: '24.04' name: 'Ubuntu 24.04' tag-prefix: 'ubuntu' + - python-version: '3.14' + ubuntu-version: '26.04' + name: 'Ubuntu 26.04' + tag-prefix: 'ubuntu' steps: - name: Checkout repository diff --git a/.github/workflows/libfranka-build.yml b/.github/workflows/libfranka-build.yml index 6563e3eb..7caebb97 100644 --- a/.github/workflows/libfranka-build.yml +++ b/.github/workflows/libfranka-build.yml @@ -31,6 +31,8 @@ jobs: python_version: "3.10" - ubuntu_version: "24.04" python_version: "3.12" + - ubuntu_version: "26.04" + python_version: "3.14" steps: - name: Checkout repository diff --git a/.github/workflows/pylibfranka-wheels.yml b/.github/workflows/pylibfranka-wheels.yml index 7d3c610e..8de32ed8 100644 --- a/.github/workflows/pylibfranka-wheels.yml +++ b/.github/workflows/pylibfranka-wheels.yml @@ -39,6 +39,10 @@ jobs: python-tag: 'cp312' ubuntu-version: '22.04' manylinux-tag: 'manylinux_2_34_x86_64' + - python-version: '3.14' + python-tag: 'cp314' + ubuntu-version: '26.04' + manylinux-tag: 'manylinux_2_43_x86_64' steps: - name: Checkout code diff --git a/README.rst b/README.rst index 18e6fabc..94ce1288 100644 --- a/README.rst +++ b/README.rst @@ -34,7 +34,7 @@ Key Features - **Low-level control**: Access precise motion control for research robots. - **Real-time communication**: Interact with the robot in real-time. -- **Multi-platform support**: Ubuntu 20.04, 22.04, and 24.04 LTS +- **Multi-platform support**: Ubuntu 20.04, 22.04, 24.04, and 26.04 LTS 1. System Requirements @@ -46,6 +46,7 @@ Before using **libfranka**, ensure your system meets the following requirements: - Ubuntu 20.04 LTS (Focal Fossa) - Ubuntu 22.04 LTS (Jammy Jellyfish) - Ubuntu 24.04 LTS (Noble Numbat) + - Ubuntu 26.04 LTS (Resolute Raccoon) - `Linux with PREEMPT_RT patched kernel `_ recommended for real-time control **Build Tools** (for building from source): @@ -59,7 +60,7 @@ Before using **libfranka**, ensure your system meets the following requirements: .. _installation-debian-package: -2. Installation from Debian Package (Recommended) +1. Installation from Debian Package (Recommended) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The easiest way to install **libfranka** is by using the pre-built Debian packages @@ -94,6 +95,12 @@ Supported Platforms - .. image:: https://img.shields.io/github/actions/workflow/status/frankarobotics/libfranka/libfranka-build.yml?label=Ubuntu+24.04&logo=ubuntu&logoColor=white :target: https://github.com/frankarobotics/libfranka/actions/workflows/libfranka-build.yml :alt: Ubuntu 24.04 build status + * - 26.04 LTS + - resolute + - amd64 + - .. image:: https://img.shields.io/github/actions/workflow/status/frankarobotics/libfranka/libfranka-build.yml?label=Ubuntu+26.04&logo=ubuntu&logoColor=white + :target: https://github.com/frankarobotics/libfranka/actions/workflows/libfranka-build.yml + :alt: Ubuntu 26.04 build status Quick Install ^^^^^^^^^^^^^ @@ -231,6 +238,9 @@ Method B: Using Docker Command Line # For Ubuntu 24.04 docker build --build-arg UBUNTU_VERSION=24.04 -t libfranka-build:24.04 .ci/ + # For Ubuntu 26.04 + docker build --build-arg UBUNTU_VERSION=26.04 -t libfranka-build:26.04 .ci/ + 2. **Run the container and build** .. code-block:: bash @@ -540,6 +550,10 @@ For more examples, see the `Usage Examples documentation Date: Wed, 3 Jun 2026 14:55:00 +0200 Subject: [PATCH 2/6] Minimum cmake version > 3.5 policy --- .ci/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index 4c3f5fc2..0c5409e3 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -128,7 +128,7 @@ RUN git clone --depth 1 --branch 10.0.0 https://github.com/leethomason/tinyxml2. RUN git clone --depth 1 --branch 1.0.2 https://github.com/ros/console_bridge.git \ && cd console_bridge \ && mkdir build && cd build \ - && cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + && cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ && make -j4 \ && make install \ && cd ../.. \ From 416bc1bc14b8f3fc23dbbbea554af32de0458490 Mon Sep 17 00:00:00 2001 From: ruggero Date: Wed, 3 Jun 2026 15:11:10 +0200 Subject: [PATCH 3/6] cmake compatibility fix for urdf packages --- .ci/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index 0c5409e3..5c9a5d0a 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -137,7 +137,7 @@ RUN git clone --depth 1 --branch 1.0.2 https://github.com/ros/console_bridge.git RUN git clone --depth 1 --branch 1.0.5 https://github.com/ros/urdfdom_headers.git \ && cd urdfdom_headers \ && mkdir build && cd build \ - && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ && make -j4 && make install \ && cd ../.. \ && rm -rf urdfdom_headers @@ -147,7 +147,7 @@ RUN git clone --depth 1 --branch 4.0.0 https://github.com/ros/urdfdom.git \ && cd urdfdom \ && git apply /tmp/urdfdom.patch \ && mkdir build && cd build \ - && cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + && cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ && make -j4 && make install \ && cd ../.. \ && rm -rf urdfdom From cdd8e1d449c8fcc061c4fe5a39dc261c06bb674b Mon Sep 17 00:00:00 2001 From: ruggero Date: Wed, 3 Jun 2026 15:34:29 +0200 Subject: [PATCH 4/6] patch urdfdom --- .ci/urdfdom.patch | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.ci/urdfdom.patch b/.ci/urdfdom.patch index 0824dd02..79fb72f3 100644 --- a/.ci/urdfdom.patch +++ b/.ci/urdfdom.patch @@ -11,3 +11,13 @@ index 20a6a05..5577e99 100644 ${add_urdfdom_library_SOURCES}) target_include_directories(${add_urdfdom_library_LIBNAME} PUBLIC "$" +diff --git a/urdf_parser/include/urdf_parser/urdf_parser.h b/urdf_parser/include/urdf_parser/urdf_parser.h +--- a/urdf_parser/include/urdf_parser/urdf_parser.h ++++ b/urdf_parser/include/urdf_parser/urdf_parser.h +@@ -49,6 +49,7 @@ + #include + #include + #include "exportdecl.h" ++#include + + namespace urdf_export_helpers { From 3a62857be1db0677af2097fd06332fc4c4708df2 Mon Sep 17 00:00:00 2001 From: ruggero Date: Wed, 3 Jun 2026 16:24:35 +0200 Subject: [PATCH 5/6] Add -DASSIMP_WARNINGS_AS_ERRORS=OFF when building assimp, refsactor urdf patch --- .ci/Dockerfile | 2 +- .ci/urdfdom.patch | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index 5c9a5d0a..da831126 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -155,7 +155,7 @@ RUN git clone --depth 1 --branch 4.0.0 https://github.com/ros/urdfdom.git \ RUN git clone --depth 1 --recurse-submodules --shallow-submodules --branch v5.4.3 https://github.com/assimp/assimp.git \ && cd assimp \ && mkdir build && cd build \ - && cmake .. -DBoost_USE_STATIC_LIBS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DASSIMP_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + && cmake .. -DBoost_USE_STATIC_LIBS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF -DASSIMP_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib -DASSIMP_WARNINGS_AS_ERRORS=OFF \ && make -j4 && make install \ && cd ../.. \ && rm -rf assimp diff --git a/.ci/urdfdom.patch b/.ci/urdfdom.patch index 79fb72f3..830f9034 100644 --- a/.ci/urdfdom.patch +++ b/.ci/urdfdom.patch @@ -5,7 +5,7 @@ index 20a6a05..5577e99 100644 @@ -3,7 +3,7 @@ macro(add_urdfdom_library) set(multiValueArgs SOURCES LINK) cmake_parse_arguments(add_urdfdom_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - + - add_library(${add_urdfdom_library_LIBNAME} SHARED + add_library(${add_urdfdom_library_LIBNAME} STATIC ${add_urdfdom_library_SOURCES}) @@ -14,10 +14,10 @@ index 20a6a05..5577e99 100644 diff --git a/urdf_parser/include/urdf_parser/urdf_parser.h b/urdf_parser/include/urdf_parser/urdf_parser.h --- a/urdf_parser/include/urdf_parser/urdf_parser.h +++ b/urdf_parser/include/urdf_parser/urdf_parser.h -@@ -49,6 +49,7 @@ - #include - #include +@@ -49,5 +49,6 @@ + #include + #include "exportdecl.h" +#include - - namespace urdf_export_helpers { + + namespace tinyxml2{ From efaf833fc0e2700564fafd7ab97204c9c5500a3a Mon Sep 17 00:00:00 2001 From: r-simonelli Date: Wed, 17 Jun 2026 13:41:57 +0200 Subject: [PATCH 6/6] Apply suggestion from @AndreasKushner --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 94ce1288..481553f5 100644 --- a/README.rst +++ b/README.rst @@ -60,7 +60,7 @@ Before using **libfranka**, ensure your system meets the following requirements: .. _installation-debian-package: -1. Installation from Debian Package (Recommended) +2. Installation from Debian Package (Recommended) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The easiest way to install **libfranka** is by using the pre-built Debian packages