Bug 2312672 - boost makes feather fail to compile on f41
Summary: boost makes feather fail to compile on f41
Keywords:
Status: CLOSED DUPLICATE of bug 2296114
Alias: None
Product: Fedora
Classification: Fedora
Component: boost
Version: 41
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Jonathan Wakely
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2024-09-16 20:54 UTC by Jonathan S.
Modified: 2024-09-17 19:34 UTC (History)
6 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2024-09-17 19:32:42 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Jonathan S. 2024-09-16 20:54:57 UTC
/usr/include/boost/asio/ssl/detail/openssl_types.hpp:26:11: fatal error: openssl/engine.h: No such file or directory

https://kojipkgs.fedoraproject.org//work/tasks/3545/123503545/build.log

Seems like it should depend on the proper OpenSSL package?

Interestingly, it works in f39, f40 and rawhide.

Reproducible: Always

Comment 1 Jonathan Wakely 2024-09-17 09:35:28 UTC
No it should not depend on openssl, which wouldn't help anyway because openssl/engine.h has been removed.

You need to build your package with -DOPENSSL_NO_ENGINE so that headers do not try to use the deprecate engines feature.

*** This bug has been marked as a duplicate of bug 2296114 ***

Comment 2 Jonathan S. 2024-09-17 19:14:12 UTC
What I don't understand is:

a.) Why does https://fedoraproject.org/wiki/Changes/OpensslNoEngine say this change was dropped?
b.) Why does it work in rawhide?

It seems to me this accidentally made it into f41 but was dropped from rawhide. Shouldn't it be dropped from f41 as well then?

Also, even if we don't want the engines and hence don't want to add the missing dependency to boost: This is coming from a boost include. It's not feather trying to include openssl here without that include, it's boost doing that. In that case, boost should define OPENSSL_NO_ENGINE. It is unreasonable to expect that everything using boost adds a define that is required by boost manually.

Comment 3 Jonathan Wakely 2024-09-17 19:32:42 UTC
(In reply to Jonathan S. from comment #2)
> What I don't understand is:
> 
> a.) Why does https://fedoraproject.org/wiki/Changes/OpensslNoEngine say this
> change was dropped?

Because that was dropped. A different change was made instead:
https://fedoraproject.org/wiki/Changes/OpensslDeprecateEngine

The approved change split Engine support into a separate package (openssl-engine) instead of dropping it entirely.

> b.) Why does it work in rawhide?

Because the openssl headers were fixed to make it work:

https://src.fedoraproject.org/rpms/openssl/c/13b583a535e62d12521cfeb5088a68e5811eb6e6?branch=rawhide

But that fix came too late for F41 and was not approved.

> It seems to me this accidentally made it into f41 but was dropped from
> rawhide.

No, that's not what happened.

> Shouldn't it be dropped from f41 as well then?

It was proposed, and rejected because it was too close to the F41 release date.
 
> Also, even if we don't want the engines and hence don't want to add the
> missing dependency to boost: This is coming from a boost include. It's not
> feather trying to include openssl here without that include, it's boost
> doing that. In that case, boost should define OPENSSL_NO_ENGINE. It is
> unreasonable to expect that everything using boost adds a define that is
> required by boost manually.

It's not strictly required by boost, because the boost headers do this:

#ifndef OPENSSL_NO_ENGINE
# include <openssl/engine.h>
#endif

So by not defining the macro, you're telling boost you want to use Engines. In that case, it's up to you to install the openssl-engine package that provides the header, or tell Boost not to try and use it. See the discussion in Bug 2297642.

This was a breaking change in the openssl headers in F41, which affects Boost and a number of other packages. The workaround is to define OPENSSL_NO_ENGINE

*** This bug has been marked as a duplicate of bug 2296114 ***

Comment 4 Jonathan Wakely 2024-09-17 19:34:37 UTC
Oops, I think the engine support was split into a new package called openssl-devel-engine not openssl-engine.


Note You need to log in before you can comment on or make changes to this bug.