Re: devel/mongo-c-driver failed with undefined reference due to --no-allow-shlib-undefined: ERR_load_BIO_strings

From: Hiroo Ono <hiroo_at_oikumene.net>
Date: Thu, 27 Jul 2023 12:30:20 UTC
On Thu, 27 Jul 2023 17:07:28 +0900 (JST)
Yasuhiro Kimura <yasu@FreeBSD.org> wrote:

> From: Yasuhiro Kimura <yasu@FreeBSD.org>
> Subject: Re: devel/mongo-c-driver failed with undefined reference due
> to --no-allow-shlib-undefined: ERR_load_BIO_strings Date: Thu, 27 Jul
> 2023 14:55:11 +0900 (JST)
> 
> >> I tried build with poudriere and following 2 jails.
> >> 
> >> * 13.2-RELEASE-p1 amd64
> >> * 14.0-CURRENT main-n264279-92fd2f39e5b amd64
> >> 
> >> And build with the former succeeds but build with the latter fails
> >> with same error as KIRIYAMA-san.  
> > 
> > I added 'DEFAULT_VERSIONS+=ssl=openssl30' and tried build with
> > poudriere and 13.2-RELEASE-p1 amd64 jail. Then build fails with same
> > error as 14-CURRENT. So it seems the error is related with OpenSSL
> > 3.0.  
> 
> If I remove following 3 lines from Makefile, then build succeeds with
> OpenSSL 3.0.
> 
> ----------------------------------------------------------------------
> .if ( ${OPSYS} == FreeBSD && ${OSVERSION} >= 1400092 &&
> ${SSL_DEFAULT} == base ) || ${SSL_DEFAULT:Mopenssl3*} CFLAGS+=
> -DOPENSSL_API_COMPAT=0x30000000L" .endif 
> ----------------------------------------------------------------------

OK. The trailing double quote after 0x30000000L is the suspect.
See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272753 for the patch.

There are other ports with this mistake.

./mail/datovka/Makefile:CXXFLAGS+=      -DOPENSSL_API_COMPAT=0x30000000L"
./mail/archiveopteryx/Makefile:CXXFLAGS+=       -DOPENSSL_API_COMPAT=0x30000000L
"
./news/nzbget/Makefile:CXXFLAGS+=       -DOPENSSL_API_COMPAT=0x30000000L"
./devel/ucommon/Makefile:CXXFLAGS+=      -DOPENSSL_API_COMPAT=0x30000000L"
./devel/thrift-c_glib/Makefile:CXXFLAGS+=       -DOPENSSL_API_COMPAT=0x30000000L
"
./security/git-crypt/Makefile:CXXFLAGS+=        -DOPENSSL_API_COMPAT=0x30000000L
"
./databases/xrootd/Makefile:CXXFLAGS+=  -DOPENSSL_API_COMPAT=0x30000000L"
./lang/php80/Makefile:CXXFLAGS+=        -DOPENSSL_API_COMPAT=0x30000000L"
./net/asterisk18/Makefile:CFLAGS+=      -DOPENSSL_API_COMPAT=0x30000000L"
./sysutils/istatserver/Makefile:CXXFLAGS+=      -DOPENSSL_API_COMPAT=0x30000000L
"
./www/lagrange/Makefile:CXXFLAGS+=      -DOPENSSL_API_COMPAT=0x30000000L"

> Not sure if built binaries work fine.
> 
> ---
> Yasuhiro Kimura
>