openssl: OpenSSL 3.2.0-alpha1: build failure on linux

Tried to build the alpha in conda-forge, ran into a build error on linux-64:

[...]
$BUILD_PREFIX/bin/x86_64-conda-linux-gnu-cc -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem $PREFIX/include -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/openssl_split-3.2.0.alpha1 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -Wa,--noexecstack  -Iapps -I. -Iinclude -Iapps/include  -pthread -m64 -Wa,--noexecstack -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/openssl_split-3.2.0.alpha1 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -Wa,--noexecstack -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem $PREFIX/include -MMD -MF apps/openssl-bin-version.d.tmp -MT apps/openssl-bin-version.o -c -o apps/openssl-bin-version.o apps/version.c
$BUILD_PREFIX/bin/x86_64-conda-linux-gnu-cc -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem $PREFIX/include -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/openssl_split-3.2.0.alpha1 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -Wa,--noexecstack  -Iapps -I. -Iinclude -Iapps/include  -pthread -m64 -Wa,--noexecstack -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/openssl_split-3.2.0.alpha1 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -Wa,--noexecstack -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem $PREFIX/include -MMD -MF apps/openssl-bin-x509.d.tmp -MT apps/openssl-bin-x509.o -c -o apps/openssl-bin-x509.o apps/x509.c
rm -f fuzz/cmp-test
${LDCMD:-$BUILD_PREFIX/bin/x86_64-conda-linux-gnu-cc -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem $PREFIX/include -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/openssl_split-3.2.0.alpha1 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -Wa,--noexecstack} -pthread -m64 -Wa,--noexecstack -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem $PREFIX/include -fdebug-prefix-map=$SRC_DIR=/usr/local/src/conda/openssl_split-3.2.0.alpha1 -fdebug-prefix-map=$PREFIX=/usr/local/src/conda-prefix -Wa,--noexecstack  -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,--allow-shlib-undefined -Wl,-rpath,$PREFIX/lib -Wl,-rpath-link,$PREFIX/lib -L$PREFIX/lib -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,--allow-shlib-undefined -Wl,-rpath,$PREFIX/lib -Wl,-rpath-link,$PREFIX/lib -L$PREFIX/lib \
	-o fuzz/cmp-test \
	fuzz/cmp-test-bin-cmp.o fuzz/cmp-test-bin-fuzz_rand.o \
	fuzz/cmp-test-bin-test-corpus.o \
	libcrypto.a -ldl -pthread 
/home/conda/feedstock_root/build_artifacts/openssl_split_1694128181501/_build_env/bin/../lib/gcc/x86_64-conda-linux-gnu/12.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: libcrypto.a(libcrypto-lib-bss_dgram.o): in function `dgram_sendmmsg':
bss_dgram.c:(.text.dgram_sendmmsg+0x1ef): undefined reference to `sendmmsg'

Main config:

+ perl ./Configure --libdir=lib --prefix=$PREFIX enable-legacy no-fips no-module no-zlib shared threads enable-ktls linux-x86_64 -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,--allow-shlib-undefined -Wl,-rpath,$PREFIX/lib -Wl,-rpath-link,$PREFIX/lib -L$PREFIX/lib
Configuring OpenSSL version 3.2.0-alpha1 for target linux-x86_64
Using os-specific seed configuration
Created configdata.pm
Running configdata.pm
Created Makefile.in
Created Makefile
Created include/openssl/configuration.h

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL.md file first)      ***
***                                                                ***
**********************************************************************

I’m leaving out how we point CC etc. to our compilers, set up CFLAGS etc., but can provide that if desired.

Interestingly, the build does not fail for linux on other arches (aarch64 / ppc64le), nor on other platforms.

About this issue

  • Original URL
  • State: closed
  • Created 10 months ago
  • Comments: 15 (15 by maintainers)

Commits related to this issue

Most upvoted comments

This is not a QUIC configuration issue as BIO_sendmmsg is a general new BIO feature and should be available even if QUIC is disabled.

This is a bug in our code because we have a sendmsg-based fallback we can use if sendmmsg is unavailable. If even sendmsg is unavailable we also support sendto.

@h-vetinari See crypto/bio/bss_dgram.c line 56 — we currently detect availability of sendmmsg/recvmmsg based on MSG_WAITFORONE being defined. However you can override this by defining NO_RECVMMSG. So configuring with -DNO_RECVMMSG should work around this for now.