Bug 269316 - devel/qt6-base fails to build with libressl 3.5.x
Summary: devel/qt6-base fails to build with libressl 3.5.x
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-kde (group)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-02-04 07:01 UTC by tjlegg
Modified: 2023-10-24 21:35 UTC (History)
2 users (show)

See Also:
jhale: maintainer-feedback+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description tjlegg 2023-02-04 07:01:48 UTC
In file included from /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qtlsbackend_openssl.cpp:4:
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:209:22: error: unknown type name 'OPENSSL_STACK'
int q_OPENSSL_sk_num(OPENSSL_STACK *a);
                     ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:210:28: error: unknown type name 'OPENSSL_STACK'
void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
                           ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:211:1: error: unknown type name 'OPENSSL_STACK'; did you mean 'OPENSSL_BLOCK'?
OPENSSL_STACK *q_OPENSSL_sk_new_null();
^~~~~~~~~~~~~
OPENSSL_BLOCK
/usr/local/include/openssl/safestack.h:132:15: note: 'OPENSSL_BLOCK' declared here
typedef void *OPENSSL_BLOCK;
              ^
In file included from /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qtlsbackend_openssl.cpp:4:
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:212:24: error: unknown type name 'OPENSSL_STACK'
void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
                       ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:213:24: error: unknown type name 'OPENSSL_STACK'
void q_OPENSSL_sk_free(OPENSSL_STACK *a);
                       ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:214:27: error: unknown type name 'OPENSSL_STACK'
void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
                          ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:217:45: error: unknown type name 'OPENSSL_INIT_SETTINGS'
int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
                                            ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:250:48: error: unknown type name 'OPENSSL_INIT_SETTINGS'
int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
                                               ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:294:29: error: unknown type name 'BIO_ADDR'
int q_DTLSv1_listen(SSL *s, BIO_ADDR *client);
                            ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:295:1: error: unknown type name 'BIO_ADDR'
BIO_ADDR *q_BIO_ADDR_new();
^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:296:22: error: unknown type name 'BIO_ADDR'
void q_BIO_ADDR_free(BIO_ADDR *ap);
                     ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:428:1: error: unknown type name 'SSL_CONF_CTX'; did you mean 'SSL_AEAD_CTX'?
SSL_CONF_CTX *q_SSL_CONF_CTX_new();
^~~~~~~~~~~~
SSL_AEAD_CTX
/usr/local/include/openssl/ssl.h:519:32: note: 'SSL_AEAD_CTX' declared here
typedef struct ssl_aead_ctx_st SSL_AEAD_CTX;
                               ^
In file included from /wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qtlsbackend_openssl.cpp:4:
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:429:26: error: unknown type name 'SSL_CONF_CTX'
void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
                         ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:430:33: error: unknown type name 'SSL_CONF_CTX'
void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
                                ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:431:39: error: unknown type name 'SSL_CONF_CTX'
unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
                                      ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:432:27: error: unknown type name 'SSL_CONF_CTX'
int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
                          ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:433:20: error: unknown type name 'SSL_CONF_CTX'
int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
                   ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qtlsbackend_openssl.cpp:44:25: error: use of undeclared identifier 'OPENSSL_STACK'
    for (int i = 0; i < q_sk_SSL_CIPHER_num(supportedCiphers); ++i) {
                        ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:542:33: note: expanded from macro 'q_sk_SSL_CIPHER_num'
#define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num((st))
                                ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:241:44: note: expanded from macro 'q_SKM_sk_num'
#define q_SKM_sk_num(st) q_OPENSSL_sk_num((OPENSSL_STACK *)st)
                                           ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qtlsbackend_openssl.cpp:44:25: error: expected expression
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:542:33: note: expanded from macro 'q_sk_SSL_CIPHER_num'
#define q_sk_SSL_CIPHER_num(st) q_SKM_sk_num((st))
                                ^
/wrkdirs/usr/ports/devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qsslsocket_openssl_symbols_p.h:241:59: note: expanded from macro 'q_SKM_sk_num'
#define q_SKM_sk_num(st) q_OPENSSL_sk_num((OPENSSL_STACK *)st)
                                                          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.


Found this "QSslSocket: OpenSSL >= 1.1.1 is required; %s was found instead" in devel/qt6-base/work/qtbase-everywhere-src-6.4.2/src/plugins/tls/openssl/qopenssl_p.h which is annoying as qt6-base 6.3 actually built with libressl.
Comment 1 mhambley 2023-05-23 10:54:11 UTC
Also doesn't work with LibreSSL 3.6.2. Looks like the same errors.
Comment 2 commit-hook freebsd_committer freebsd_triage 2023-10-24 21:26:45 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=8efd8ab39b18ee443a41a4c0c780e6663843e9ab

commit 8efd8ab39b18ee443a41a4c0c780e6663843e9ab
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2023-10-24 19:12:16 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2023-10-24 21:26:04 +0000

    devel/qt6-base: Enable building with non-base SSL

    Fix detection of desired SSL provider. Previously, qt6-base was only
    using OpenSSL from base, but this change allows users to build against
    whichever SSL provider they have chosen via DEFAULT_VERSIONS.

    LibreSSL support has also been added and is largely based on patches
    obtained from the OpenBSD ports tree. Fixes [1].

    Subsequently, refresh old patches.

    PR:             269316 [1]
    Reported by:    <tjlegg@gmail.com> [1]
    MFH:            2023Q4 (after 1 week)

 devel/qt6-base/Makefile                            |  18 ++-
 devel/qt6-base/files/patch-cmake_QtBuild.cmake     |   4 +-
 .../files/patch-cmake_QtFlagHandlingHelpers.cmake  |   4 +-
 .../files/patch-cmake_QtPkgConfigHelpers.cmake     |   4 +-
 .../files/patch-cmake_QtRpathHelpers.cmake         |   6 +-
 ...t_input_evdevkeyboard_qevdevkeyboardhandler.cpp |   4 +-
 ...support_input_evdevmouse_qevdevmousehandler.cpp |   4 +-
 ...pport_input_evdevtablet_qevdevtablethandler.cpp |   4 +-
 ...support_input_evdevtouch_qevdevtouchhandler.cpp |   4 +-
 ...tch-src_plugins_tls_openssl_qopenssl__p.h (new) |  16 ++
 ...gins_tls_openssl_qsslcontext__openssl.cpp (new) |  62 ++++++++
 ..._openssl_qsslsocket__openssl__symbols.cpp (new) | 170 +++++++++++++++++++++
 ...openssl_qsslsocket__openssl__symbols__p.h (new) | 146 ++++++++++++++++++
 ...src_plugins_tls_openssl_qtls__openssl.cpp (new) |  18 +++
 ...rc_plugins_tls_openssl_qx509__openssl.cpp (new) |  68 +++++++++
 devel/qt6-base/pkg-plist                           |   8 +-
 16 files changed, 517 insertions(+), 23 deletions(-)
Comment 3 Jason E. Hale freebsd_committer freebsd_triage 2023-10-24 21:35:06 UTC
Sorry it took so long to address the issue, but qt6-base 6.5.3 now builds and runs with at least LibreSSL 3.7.3.