Hello,

The FTBFS (fails to build from source) error with OpenSSL 4.0 on robotraconteur has been resolved upstream.

The pull request with the fix can be found here:
https://github.com/robotraconteur/robotraconteur/pull/456

A unified diff is also attached.

This fix will be included in the upcoming next release.

john w

On 6/19/2026 9:44 PM, Sebastian Andrzej Siewior wrote:
Package: robotraconteur
Version: 1.2.7-2
Severity: normal
Tags: sid
control: affects -1 src:openssl
User:[email protected]
Usertags: openssl-4.0

OpenSSL 4.0 is in experimental. This package fails to build against it:
| [ 31%] Building CXX object 
RobotRaconteurCore/CMakeFiles/RobotRaconteurCore.dir/src/OpenSSLAuthContext.cpp.o
| cd 
/build/reproducible-path/robotraconteur-1.2.7/obj-x86_64-linux-gnu/RobotRaconteurCore 
&& /usr/bin/x86_64-linux-gnu-g++ -DBOOST_ATOMIC_DYN_LINK -DBOOST_ATOMIC_NO_LIB 
-DBOOST_CHRONO_DYN_LINK -DBOOST_CHRONO_NO_LIB -DBOOST_CONTAINER_DYN_LINK 
-DBOOST_CONTAINER_NO_LIB -DBOOST_DATE_TIME_DYN_LINK -DBOOST_DATE_TIME_NO_LIB 
-DBOOST_FILESYSTEM_DYN_LINK -DBOOST_FILESYSTEM_NO_LIB -DBOOST_PROGRAM_OPTIONS_DYN_LINK 
-DBOOST_PROGRAM_OPTIONS_NO_LIB -DBOOST_RANDOM_DYN_LINK -DBOOST_RANDOM_NO_LIB 
-DBOOST_REGEX_DYN_LINK -DBOOST_REGEX_NO_LIB -DBOOST_THREAD_DYN_LINK 
-DBOOST_THREAD_NO_LIB -DROBOTRACONTEUR_CORE_EXPORTS -DROBOTRACONTEUR_USE_OPENSSL 
-DRobotRaconteurCore_EXPORTS -I/usr/include/dbus-1.0 
-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/libusb-1.0 
-I/build/reproducible-path/robotraconteur-1.2.7/RobotRaconteurCore/include -g -O2 
-ffile-prefix-map=/build/reproducible-path/robotraconteur-1.2.7=. 
-fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security 
-fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -fPIC -MD -MT 
RobotRaconteurCore/CMakeFiles/RobotRaconteurCore.dir/src/OpenSSLAuthContext.cpp.o -MF 
CMakeFiles/RobotRaconteurCore.dir/src/OpenSSLAuthContext.cpp.o.d -o 
CMakeFiles/RobotRaconteurCore.dir/src/OpenSSLAuthContext.cpp.o -c 
/build/reproducible-path/robotraconteur

From 6f2016b8bd6d860e562f68bb9ee8e565c48eca83 Mon Sep 17 00:00:00 2001
From: John Wason <[email protected]>
Date: Wed, 1 Jul 2026 18:45:10 -0400
Subject: [PATCH] Improve compatibility with openssl4

---
 RobotRaconteurCore/src/OpenSSLAuthContext.cpp | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/RobotRaconteurCore/src/OpenSSLAuthContext.cpp 
b/RobotRaconteurCore/src/OpenSSLAuthContext.cpp
index 13bfa04de..7c50c438d 100644
--- a/RobotRaconteurCore/src/OpenSSLAuthContext.cpp
+++ b/RobotRaconteurCore/src/OpenSSLAuthContext.cpp
@@ -21,6 +21,12 @@
 #include "RobotRaconteurNodeRootCA.h"
 #include <boost/shared_array.hpp>
 
+#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 4
+#define OPENSSL4_CONST const
+#else
+#define OPENSSL4_CONST
+#endif
+
 namespace RobotRaconteur
 {
 namespace detail
@@ -106,8 +112,8 @@ bool verify_callback(bool preverified, 
boost::asio::ssl::verify_context& ctx)
         return false;
     }
 
-    X509_NAME* sub_name = X509_get_subject_name(cert);
-    X509_NAME* iss_name = X509_get_issuer_name(cert);
+    OPENSSL4_CONST X509_NAME* sub_name = X509_get_subject_name(cert);
+    OPENSSL4_CONST X509_NAME* iss_name = X509_get_issuer_name(cert);
 
     bool isroot = false;
 
@@ -124,12 +130,12 @@ bool verify_callback(bool preverified, 
boost::asio::ssl::verify_context& ctx)
 
         for (int i = 0; i < ext_count; i++)
         {
-            X509_EXTENSION* e = X509_get_ext(cert, i);
+            OPENSSL4_CONST X509_EXTENSION* e = X509_get_ext(cert, i);
             if (!e)
                 return false;
             if (::X509_EXTENSION_get_critical(e))
             {
-                ASN1_OBJECT* obj = ::X509_EXTENSION_get_object(e);
+                OPENSSL4_CONST ASN1_OBJECT* obj = 
::X509_EXTENSION_get_object(e);
                 if (!obj)
                     return false;
                 boost::array<char, 64> buf = {};
@@ -483,12 +489,12 @@ bool OpenSSLAuthContext::VerifyRemoteNodeCertificate(SSL* 
connection, const Node
 
     for (int i = 0; i < ext_count; i++)
     {
-        X509_EXTENSION* e = X509_get_ext(cert, i);
+        OPENSSL4_CONST X509_EXTENSION* e = X509_get_ext(cert, i);
         if (!e)
             return false;
         if (::X509_EXTENSION_get_critical(e))
         {
-            ASN1_OBJECT* obj = ::X509_EXTENSION_get_object(e);
+            OPENSSL4_CONST ASN1_OBJECT* obj = ::X509_EXTENSION_get_object(e);
             if (!obj)
                 return false;
             boost::array<char, 64> buf3 = {};

Reply via email to