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 = {};