As part of F41 changeset there are plans to deprecate Openssl engine support as described in: https://fedoraproject.org/wiki/Changes/OpensslDeprecateEngine Building fuse-btfs that depends on rb_libtorrent I see the following error: In file included from /usr/include/boost/asio/ssl/context_base.hpp:19, from /usr/include/boost/asio/ssl/context.hpp:23, from /usr/include/boost/asio/ssl.hpp:18, from /usr/include/libtorrent/ssl.hpp:67, from /usr/include/libtorrent/tracker_manager.hpp:69, from /usr/include/libtorrent/alert_types.hpp:69, from btfs.cc:42: /usr/include/boost/asio/ssl/detail/openssl_types.hpp:26:11: fatal error: openssl/engine.h: No such file or directory 26 | # include <openssl/engine.h> | ^~~~~~~~~~~~~~~~~~ compilation terminated. make[1]: *** [Makefile:419: btfs-btfs.o] Error 1 Errors can be seen in Koschei also: https://koschei.fedoraproject.org/package/fuse-btfs?collection=f41 Checking lb_libtorrent I can see similar error: In file included from /usr/include/boost/asio/ssl/context_base.hpp:19, from /usr/include/boost/asio/ssl/context.hpp:23, from /usr/include/boost/asio/ssl.hpp:18, from /builddir/build/BUILD/rb_libtorrent-2.0.10-build/libtorrent-rasterbar-2.0.10/include/libtorrent/ssl.hpp:67, from /builddir/build/BUILD/rb_libtorrent-2.0.10-build/libtorrent-rasterbar-2.0.10/include/libtorrent/tracker_manager.hpp:69, from /builddir/build/BUILD/rb_libtorrent-2.0.10-build/libtorrent-rasterbar-2.0.10/include/libtorrent/alert_types.hpp:69, from /builddir/build/BUILD/rb_libtorrent-2.0.10-build/libtorrent-rasterbar-2.0.10/src/alert.cpp:51: /usr/include/boost/asio/ssl/detail/openssl_types.hpp:26:11: fatal error: openssl/engine.h: No such file or directory 26 | # include <openssl/engine.h> | ^~~~~~~~~~~~~~~~~~ https://koschei.fedoraproject.org/package/rb_libtorrent One option would be to add a BuildRequire to lb_libtorrent to depend on openssl-engine-devel but I think it makes more sense to include it in boost, as other packages may be in the same situation. The other option, that I'm not sure how to activate it, would be to build boost with OPENSSL_NO_ENGINE. In include/boost/asio/ssl/detail/openssl_types.hpp I can see there is a flag to toogle it: (...) #if !defined(OPENSSL_NO_ENGINE) # include <openssl/engine.h> #endif // !defined(OPENSSL_NO_ENGINE) (...) Reproducible: Always
Also affects builds of nbdkit: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/LQK725374EXAD3XTYTYSKR3O23BTRAH4/
I'm not sure we want to add a hard dependency so that everything installing boost-devel also has to install an optional openssl package. The boost asio header does: #if !defined(OPENSSL_NO_ENGINE) # include <openssl/engine.h> #endif // !defined(OPENSSL_NO_ENGINE) So this can be fixed in the packages that don't actually require that feature.
The release notes of Boost 1.50 have: * Changed Asio's SSL wrapper to respect OpenSSL's OPENSSL_NO_ENGINE feature test #define (#6432). where the ticket points to a link which no longer works, so here's the IA link instead: https://web.archive.org/web/20221206205741/https://svn.boost.org/trac10/ticket/6432 The bug mentions ENGINE_cleanup but that is also protected by #if !defined(OPENSSL_NO_ENGINE) so we don't have to worry about that. So it looks like rb_libtorrent should be changed to do something like this (untested) in include/libtorrent/ssl.hpp: +#define OPENSSL_NO_ENGINE #include <boost/asio.hpp> #include <boost/asio/buffer.hpp> #include <boost/system/error_code.hpp>
Here's a scratch build of rb_libtorrent which makes the above change, for testing only. I did not suggest or send the patch upstream. https://koji.fedoraproject.org/koji/taskinfo?taskID=120739958
See also https://lists.fedorahosted.org/archives/list/devel@lists.fedoraproject.org/thread/H3OOWA43BGEBTSM2GRBYDN3SLUTETFL5/ And https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/LQK725374EXAD3XTYTYSKR3O23BTRAH4/ where I've suggested that openssl should fix it like so: --- /usr/include/openssl/conf.h 2023-08-31 01:00:00.000000000 +0100 +++ /tmp/conf.h 2024-07-19 15:29:43.754873277 +0100 @@ -31,6 +31,12 @@ # include <stdio.h> # endif +# ifndef OPENSSL_NO_ENGINE +# if ! __has_include(<openssl/engine.h>) +# define OPENSSL_NO_ENGINE +# endif +# endif + #ifdef __cplusplus extern "C" { #endif This way any build on a system that doesn't have the openssl-devel-engine package installed will default to OPENSSL_NO_ENGINE. That way, packages which don't want the deprecated engines don't have to do anything. Packages that actually want to use the engines can `BuildRequires: openssl-devel-engine`, which is as it should be. Reassigning to openssl.
(In reply to Richard W.M. Jones from comment #3) > The release notes of Boost 1.50 have: > > * Changed Asio's SSL wrapper to respect OpenSSL's OPENSSL_NO_ENGINE feature > test #define (#6432). > > where the ticket points to a link which no longer works, so here's the IA > link instead: > > https://web.archive.org/web/20221206205741/https://svn.boost.org/trac10/ > ticket/6432 FWIW Boost moved to github years ago, the commit in the new repo is: https://github.com/chriskohlhoff/asio/commit/1f65c999c626746e7f4568271470fe9d76e885a1
Has duplicate bug 2296114. *** This bug has been marked as a duplicate of bug 2296114 ***