Bug 11341 - Compiling qt5base-5.11.1 with libressl results in many 'was not declared in this scope' errors
Summary: Compiling qt5base-5.11.1 with libressl results in many 'was not declared in t...
Status: RESOLVED MOVED
Alias: None
Product: buildroot
Classification: Unclassified
Component: Other (show other bugs)
Version: unspecified
Hardware: All Linux
: P5 normal
Target Milestone: ---
Assignee: Peter Seiderer
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-09-11 14:10 UTC by Philipp Richter
Modified: 2024-06-15 14:48 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:


Attachments
Config file enabling qt5base and libressl (14.34 KB, application/x-xz)
2018-09-11 14:10 UTC, Philipp Richter
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Philipp Richter 2018-09-11 14:10:55 UTC
Created attachment 7776 [details]
Config file enabling qt5base and libressl

Hello,

so qt5base-5.11.1 doesn't seem to like libressl.
The compiler complains about missing symbols like:
error: ‘OPENSSL_STACK’ was not declared in this scope

As of commit 8062700e2d48f2914638755961bea6a56f1d5d8f

To reproduce:

1) Enable openssl and change the provider to libressl

2) select qt5base

3) make

Attached is a config file to reproduce.

Output:

In file included from ssl/qsslsocket_openssl_symbols_p.h:220,
                 from ssl/qsslcertificate.cpp:116:
ssl/qsslsocket_openssl11_symbols_p.h:87:22: error: ‘OPENSSL_STACK’ was not declared in this scope
 int q_OPENSSL_sk_num(OPENSSL_STACK *a);
                      ^~~~~~~~~~~~~
ssl/qsslsocket_openssl11_symbols_p.h:87:22: note: suggested alternative: ‘OPENSSL_BLOCK’
 int q_OPENSSL_sk_num(OPENSSL_STACK *a);
                      ^~~~~~~~~~~~~
                      OPENSSL_BLOCK
ssl/qsslsocket_openssl11_symbols_p.h:87:37: error: ‘a’ was not declared in this scope
 int q_OPENSSL_sk_num(OPENSSL_STACK *a);
                                     ^
ssl/qsslsocket_openssl11_symbols_p.h:88:28: error: variable or field ‘q_OPENSSL_sk_pop_free’ declared void
 void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
                            ^~~~~~~~~~~~~
ssl/qsslsocket_openssl11_symbols_p.h:88:28: error: ‘OPENSSL_STACK’ was not declared in this scope
ssl/qsslsocket_openssl11_symbols_p.h:88:28: note: suggested alternative: ‘OPENSSL_BLOCK’
 void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
                            ^~~~~~~~~~~~~
                            OPENSSL_BLOCK
ssl/qsslsocket_openssl11_symbols_p.h:88:43: error: ‘a’ was not declared in this scope
 void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
                                           ^
ssl/qsslsocket_openssl11_symbols_p.h:88:53: error: ‘b’ was not declared in this scope
 void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
                                                     ^
ssl/qsslsocket_openssl11_symbols_p.h:88:56: error: expected primary-expression before ‘void’
 void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
                                                        ^~~~
ssl/qsslsocket_openssl11_symbols_p.h:89:1: error: ‘OPENSSL_STACK’ does not name a type; did you mean ‘OPENSSL_BLOCK’?
 OPENSSL_STACK *q_OPENSSL_sk_new_null();
 ^~~~~~~~~~~~~
 OPENSSL_BLOCK
ssl/qsslsocket_openssl11_symbols_p.h:90:24: error: variable or field ‘q_OPENSSL_sk_push’ declared void
 void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
                        ^~~~~~~~~~~~~
ssl/qsslsocket_openssl11_symbols_p.h:90:24: error: ‘OPENSSL_STACK’ was not declared in this scope
ssl/qsslsocket_openssl11_symbols_p.h:90:24: note: suggested alternative: ‘OPENSSL_BLOCK’
 void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
                        ^~~~~~~~~~~~~
                        OPENSSL_BLOCK
ssl/qsslsocket_openssl11_symbols_p.h:90:39: error: ‘st’ was not declared in this scope
 void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
                                       ^~
ssl/qsslsocket_openssl11_symbols_p.h:90:39: note: suggested alternative: ‘Qt’
 void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
                                       ^~
                                       Qt
ssl/qsslsocket_openssl11_symbols_p.h:90:43: error: expected primary-expression before ‘void’
 void q_OPENSSL_sk_push(OPENSSL_STACK *st, void *data);
                                           ^~~~
ssl/qsslsocket_openssl11_symbols_p.h:91:24: error: variable or field ‘q_OPENSSL_sk_free’ declared void
 void q_OPENSSL_sk_free(OPENSSL_STACK *a);
                        ^~~~~~~~~~~~~
ssl/qsslsocket_openssl11_symbols_p.h:91:24: error: ‘OPENSSL_STACK’ was not declared in this scope
ssl/qsslsocket_openssl11_symbols_p.h:91:24: note: suggested alternative: ‘OPENSSL_BLOCK’
 void q_OPENSSL_sk_free(OPENSSL_STACK *a);
                        ^~~~~~~~~~~~~
                        OPENSSL_BLOCK
ssl/qsslsocket_openssl11_symbols_p.h:91:39: error: ‘a’ was not declared in this scope
 void q_OPENSSL_sk_free(OPENSSL_STACK *a);
                                       ^
ssl/qsslsocket_openssl11_symbols_p.h:92:27: error: ‘OPENSSL_STACK’ was not declared in this scope
 void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
                           ^~~~~~~~~~~~~
ssl/qsslsocket_openssl11_symbols_p.h:92:27: note: suggested alternative: ‘OPENSSL_BLOCK’
 void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
                           ^~~~~~~~~~~~~
                           OPENSSL_BLOCK
ssl/qsslsocket_openssl11_symbols_p.h:92:42: error: ‘a’ was not declared in this scope
 void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
                                          ^
ssl/qsslsocket_openssl11_symbols_p.h:92:45: error: expected primary-expression before ‘int’
 void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
                                             ^~~
ssl/qsslsocket_openssl11_symbols_p.h:92:50: error: expression list treated as compound expression in initializer [-fpermissive]
 void * q_OPENSSL_sk_value(OPENSSL_STACK *a, int b);
                                                  ^
ssl/qsslsocket_openssl11_symbols_p.h:95:45: error: ‘OPENSSL_INIT_SETTINGS’ does not name a type; did you mean ‘OPENSSL_INIT_ATFORK’?
 int q_OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
                                             ^~~~~~~~~~~~~~~~~~~~~
                                             OPENSSL_INIT_ATFORK
In file included from ssl/qsslsocket_openssl_symbols_p.h:220,
                 from ssl/qsslcertificate.cpp:116:
ssl/qsslsocket_openssl11_symbols_p.h:107:50: error: ‘X509_STORE_CTX_verify_cb’ has not been declared
 void q_X509_STORE_set_verify_cb(X509_STORE *ctx, X509_STORE_CTX_verify_cb verify_cb);
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~
ssl/qsslsocket_openssl11_symbols_p.h:124:48: error: ‘OPENSSL_INIT_SETTINGS’ does not name a type; did you mean ‘OPENSSL_INIT_ATFORK’?
 int q_OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
                                                ^~~~~~~~~~~~~~~~~~~~~
                                                OPENSSL_INIT_ATFORK
In file included from ssl/qsslcertificate.cpp:116:
ssl/qsslsocket_openssl_symbols_p.h:360:1: error: ‘SSL_CONF_CTX’ does not name a type; did you mean ‘SSL_AEAD_CTX’?
 SSL_CONF_CTX *q_SSL_CONF_CTX_new();
 ^~~~~~~~~~~~
 SSL_AEAD_CTX
ssl/qsslsocket_openssl_symbols_p.h:361:26: error: variable or field ‘q_SSL_CONF_CTX_free’ declared void
 void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
                          ^~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:361:26: error: ‘SSL_CONF_CTX’ was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:361:26: note: suggested alternative: ‘SSL_AEAD_CTX’
 void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
                          ^~~~~~~~~~~~
                          SSL_AEAD_CTX
ssl/qsslsocket_openssl_symbols_p.h:361:40: error: ‘a’ was not declared in this scope
 void q_SSL_CONF_CTX_free(SSL_CONF_CTX *a);
                                        ^
ssl/qsslsocket_openssl_symbols_p.h:362:33: error: variable or field ‘q_SSL_CONF_CTX_set_ssl_ctx’ declared void
 void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
                                 ^~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:362:33: error: ‘SSL_CONF_CTX’ was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:362:33: note: suggested alternative: ‘SSL_AEAD_CTX’
 void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
                                 ^~~~~~~~~~~~
                                 SSL_AEAD_CTX
ssl/qsslsocket_openssl_symbols_p.h:362:47: error: ‘a’ was not declared in this scope
 void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
                                               ^
ssl/qsslsocket_openssl_symbols_p.h:362:58: error: expected primary-expression before ‘*’ token
 void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
                                                          ^
ssl/qsslsocket_openssl_symbols_p.h:362:59: error: ‘b’ was not declared in this scope
 void q_SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *a, SSL_CTX *b);
                                                           ^
ssl/qsslsocket_openssl_symbols_p.h:363:39: error: ‘SSL_CONF_CTX’ was not declared in this scope
 unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
                                       ^~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:363:39: note: suggested alternative: ‘SSL_AEAD_CTX’
 unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
                                       ^~~~~~~~~~~~
                                       SSL_AEAD_CTX
ssl/qsslsocket_openssl_symbols_p.h:363:53: error: ‘a’ was not declared in this scope
 unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
                                                     ^
ssl/qsslsocket_openssl_symbols_p.h:363:56: error: expected primary-expression before ‘unsigned’
 unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
                                                        ^~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:363:70: error: expression list treated as compound expression in initializer [-fpermissive]
 unsigned int q_SSL_CONF_CTX_set_flags(SSL_CONF_CTX *a, unsigned int b);
                                                                      ^
ssl/qsslsocket_openssl_symbols_p.h:364:27: error: ‘SSL_CONF_CTX’ was not declared in this scope
 int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
                           ^~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:364:27: note: suggested alternative: ‘SSL_AEAD_CTX’
 int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
                           ^~~~~~~~~~~~
                           SSL_AEAD_CTX
ssl/qsslsocket_openssl_symbols_p.h:364:41: error: ‘a’ was not declared in this scope
 int q_SSL_CONF_CTX_finish(SSL_CONF_CTX *a);
                                         ^
ssl/qsslsocket_openssl_symbols_p.h:365:20: error: ‘SSL_CONF_CTX’ was not declared in this scope
 int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
                    ^~~~~~~~~~~~
ssl/qsslsocket_openssl_symbols_p.h:365:20: note: suggested alternative: ‘SSL_AEAD_CTX’
 int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
                    ^~~~~~~~~~~~
                    SSL_AEAD_CTX
ssl/qsslsocket_openssl_symbols_p.h:365:34: error: ‘a’ was not declared in this scope
 int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
                                  ^
ssl/qsslsocket_openssl_symbols_p.h:365:37: error: expected primary-expression before ‘const’
 int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
                                     ^~~~~
ssl/qsslsocket_openssl_symbols_p.h:365:52: error: expected primary-expression before ‘const’
 int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
                                                    ^~~~~
ssl/qsslsocket_openssl_symbols_p.h:365:65: error: expression list treated as compound expression in initializer [-fpermissive]
 int q_SSL_CONF_cmd(SSL_CONF_CTX *a, const char *b, const char *c);
                                                                 ^
make[4]: *** [Makefile:24347: .obj/qsslcertificate.o] Error 1
make[4]: *** Waiting for unfinished jobs....
Comment 1 Peter Seiderer 2018-09-11 19:53:39 UTC
There exits a freebsd provided patch to support libressl, see [1]/[2], but declined upstream, see [3].

[1] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228344
[2] https://bz-attachments.freebsd.org/attachment.cgi?id=196994
[3] https://bugreports.qt.io/browse/QTBUG-68374
Comment 2 Peter Seiderer 2018-09-11 20:07:23 UTC
Patch ported to buildroot, see [1]...

[1] https://patchwork.ozlabs.org/patch/968670
Comment 3 Thomas Petazzoni 2018-11-02 09:51:57 UTC
Peter, any news on this topic ? The patch you proposed is marked as Changes Requested, but my questions/comments never had any feedback. Thanks!
Comment 4 Peter Seiderer 2018-11-02 14:55:32 UTC
(In reply to Thomas Petazzoni from comment #3)

There seems ongoing work on the freebsd side [1] and updated
suggested patches (did not look at it at details) latest
versions from 2018-10-24/2018-10-25, no news from the qt side...

Would suggest waiting for a settled/accepted freebsd patch before
updating the buildroot port...

[1] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228344
Comment 5 Thomas Petazzoni 2019-08-15 14:32:44 UTC
Peter: building Qt5 (latest) with LibreSSL still fails, I can reproduce with the current master and the following defconfig:

BR2_arm=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2019.05.1.tar.bz2"
BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y
BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_INIT_NONE=y
BR2_SYSTEM_BIN_SH_NONE=y
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_QT5=y
BR2_PACKAGE_OPENSSL=y
BR2_PACKAGE_LIBRESSL=y
BR2_PACKAGE_PCRE=y
BR2_PACKAGE_PCRE_16=y
BR2_PACKAGE_PCRE_UTF=y
# BR2_TARGET_ROOTFS_TAR is not set
Comment 6 Yann E. MORIN 2024-06-15 14:48:11 UTC
THank you for your report.

The issue tracker for the Buildroot project has been moved to
the Gitlab.com issue tracker:
    https://gitlab.com/buildroot.org/buildroot/-/issues

We are taking this opportunity to close old issues in this old
tracker. If you believe your issue is still relevant, please
open one in the new issue tracker.

Thank you!