[Bug 274494] databases/mariadb106: fix build with LibreSSL
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 274494] databases/mariadb106: fix build with LibreSSL"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 15 Oct 2023 19:12:58 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=274494 --- Comment #2 from Ivan Rozhuk <rozhuk.im@gmail.com> --- (In reply to Bernard Spil from comment #1) Strange, it should not build with libressl. I use my patch + workaround from: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273961 LibreSSL 3.7.3_1 includes are used, as far it have definition with 1 arg: /usr/local/include/openssl/crypto.h:int CRYPTO_set_mem_functions(void *(*m)(size_t), void *(*r)(void *, size_t), void (*f)(void *)); Base OpenSSL have definition with 3 args: /usr/include/openssl/crypto.h:int CRYPTO_set_mem_functions( void *(*m) (size_t, const char *, int), void *(*r) (void *, size_t, const char *, int), void (*f) (void *, const char *, int)); Maria defines: /* OpenSSL version specific definitions */ #if defined(OPENSSL_VERSION_NUMBER) #if OPENSSL_VERSION_NUMBER >= 0x10100000L && \ !(defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L) #define HAVE_OPENSSL11 1 Next if HAVE_OPENSSL11 defined than it build code to call CRYPTO_set_mem_functions(). So it is 100% that LibreSSL includes used. If I do replace to #if OPENSSL_VERSION_NUMBER >= 0x10100000L && \ !(defined(LIBRESSL_VERSION_NUMBER)) and HAVE_OPENSSL11 is undefined then another error happen: ... FAILED: vio/CMakeFiles/vio.dir/viosslfactories.c.o /usr/local/libexec/ccache/cc -DHAVE_CONFIG_H -DHAVE_OPENSSL -I/tmp/ports/usr/ports/databases/mariadb106-client/work/mariadb-10.6.15/include -I/usr/local/include -O2 -pipe -O3 -pipe -funroll-loops -mretpoline -fno-delete-null-pointer-checks -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -fdebug-prefix-map=/tmp/ports/usr/ports/databases/mariadb106-client/work/mariadb-10.6.15=. -fstack-protector --param=ssp-buffer-size=4 -O2 -pipe -O3 -pipe -funroll-loops -mretpoline -fno-delete-null-pointer-checks -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing -fdebug-prefix-map=/tmp/ports/usr/ports/databases/mariadb106-client/work/mariadb-10.6.15=. -DNDEBUG -D_FORTIFY_SOURCE=2 -DDBUG_OFF -std=gnu99 -I/usr/local/include -isystem /usr/local/include -fPIC -MD -MT vio/CMakeFiles/vio.dir/viosslfactories.c.o -MF vio/CMakeFiles/vio.dir/viosslfactories.c.o.d -o vio/CMakeFiles/vio.dir/viosslfactories.c.o -c /tmp/ports/usr/ports/databases/mariadb106-client/work/mariadb-10.6.15/vio/viosslfactories.c In file included from vio/viosslfactories.c:17: In file included from vio/vio_priv.h:25: In file included from include/my_sys.h:28: include/m_ctype.h:47:23: warning: redefinition of typedef 'ulong' is a C11 feature [-Wtypedef-redefinition] typedef unsigned long ulong; ^ include/my_global.h:891:23: note: previous definition is here typedef unsigned long ulong; /* Short for unsigned long */ ^ vio/viosslfactories.c:67:17: error: incomplete definition of type 'struct dh_st' || !DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/ssl_compat.h:78:45: note: expanded from macro 'DH_set0_pqg' #define DH_set0_pqg(D,P,Q,G) ((D)->p= (P), (D)->g= (G)) ~~~^ /usr/local/include/openssl/ossl_typ.h:132:16: note: forward declaration of 'struct dh_st' typedef struct dh_st DH; ^ vio/viosslfactories.c:67:17: error: incomplete definition of type 'struct dh_st' || !DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/ssl_compat.h:78:58: note: expanded from macro 'DH_set0_pqg' #define DH_set0_pqg(D,P,Q,G) ((D)->p= (P), (D)->g= (G)) ~~~^ /usr/local/include/openssl/ossl_typ.h:132:16: note: forward declaration of 'struct dh_st' typedef struct dh_st DH; ^ 1 warning and 2 errors generated. ... .... /* The check is only done for OpenSSL 1.1.x. It could run for OpenSSL 1.0.x but it doesn't make much sense and it hits this bug: https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/1594748 */ #ifndef HAVE_OPENSSL11 int check_openssl_compatibility() { return 0; } #else ... here code that was fixed by attached patch... check_openssl_compatibility() - always build by CMake, and called by runtime: ... #ifdef HAVE_OPENSSL if (check_openssl_compatibility()) { sql_print_error("Incompatible OpenSSL version. Cannot continue..."); exit(1); } #endif ... Is it possible that you some how build without OpenSSL support or with WolfSSL as cryptoengine? (sorry for long and mess post, there is no formatting features) -- You are receiving this mail because: You are the assignee for the bug.