From: Richard Levitte Date: Mon, 22 Sep 2025 16:26:50 +0000 (+0200) Subject: Change test/recipes/95-test_external_oqsprovider.t to allow out-of-source builds X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=07474a3e8f1996e620e28659dc02c8e2a3dced1f;p=thirdparty%2Fopenssl.git Change test/recipes/95-test_external_oqsprovider.t to allow out-of-source builds Unfortunately, CMake's FindOpenSSL.cmake module doesn't handle OpenSSL's build tree very well when it's out-of-source. This is resolved by create a local OpenSSL "installation" with a minimum amount of symbolic links, and using that. Reviewed-by: Tomas Mraz Reviewed-by: Dmitry Belyavskiy Reviewed-by: Neil Horman (Merged from https://github.com/openssl/openssl/pull/28638) --- diff --git a/test/recipes/95-test_external_oqsprovider.t b/test/recipes/95-test_external_oqsprovider.t index 66b584f384d..139fc811be4 100644 --- a/test/recipes/95-test_external_oqsprovider.t +++ b/test/recipes/95-test_external_oqsprovider.t @@ -19,10 +19,10 @@ plan skip_all => "oqsprovider tests not available on Windows or VMS" if $^O =~ /^(VMS|MSWin32)$/; plan skip_all => "oqsprovider tests only available in a shared build" if disabled("shared"); -plan skip_all => "oqsprovider tests not supported in out of tree builds" - if bldtop_dir() ne srctop_dir(); plan tests => 1; +$ENV{SHLIB_VERSION_NUMBER} = config('shlib_version'); + ok(run(cmd(["sh", data_file("oqsprovider.sh")])), "running oqsprovider tests"); diff --git a/test/recipes/95-test_external_oqsprovider_data/oqsprovider.sh b/test/recipes/95-test_external_oqsprovider_data/oqsprovider.sh index 4568309766f..31a1e7f9be9 100755 --- a/test/recipes/95-test_external_oqsprovider_data/oqsprovider.sh +++ b/test/recipes/95-test_external_oqsprovider_data/oqsprovider.sh @@ -16,22 +16,28 @@ PWD="$(pwd)" SRCTOP="$(cd $SRCTOP; pwd)" BLDTOP="$(cd $BLDTOP; pwd)" +INSTALLTOP=$BLDTOP/oqs-provider/.local -if [ "$SRCTOP" != "$BLDTOP" ] ; then - echo "Out of tree builds not supported with oqsprovider test!" - exit 1 -fi +# Prepare minimal local OpenSSL "installation" +mkdir -p $INSTALLTOP/bin +mkdir -p $INSTALLTOP/include/openssl +mkdir -p $INSTALLTOP/lib +ln -sf $SRCTOP/include/openssl/*.h $INSTALLTOP/include/openssl/ +ln -sf $BLDTOP/include/openssl/*.h $INSTALLTOP/include/openssl/ +ln -sf $BLDTOP/libcrypto.so.$SHLIB_VERSION_NUMBER $INSTALLTOP/lib/ +ln -sf $BLDTOP/libssl.so.$SHLIB_VERSION_NUMBER $INSTALLTOP/lib/ +ln -sf libcrypto.so.$SHLIB_VERSION_NUMBER $INSTALLTOP/lib/libcrypto.so +ln -sf libssl.so.$SHLIB_VERSION_NUMBER $INSTALLTOP/lib/libssl.so +ln -sf $BLDTOP/apps/openssl $INSTALLTOP/bin/ -O_EXE="$BLDTOP/apps" -O_BINC="$BLDTOP/include" -O_SINC="$SRCTOP/include" -O_LIB="$BLDTOP" +O_EXE="$INSTALLTOP/bin" +O_INC="$INSTALLTOP/include" +O_LIB="$INSTALLTOP/lib" unset OPENSSL_CONF export PATH="$O_EXE:$PATH" export LD_LIBRARY_PATH="$O_LIB:$LD_LIBRARY_PATH" -export OPENSSL_ROOT_DIR="$O_LIB" # Check/Set openssl version OPENSSL_VERSION=`openssl version | cut -f 2 -d ' '` @@ -41,29 +47,30 @@ echo "Testing OpenSSL using oqsprovider:" echo " CWD: $PWD" echo " SRCTOP: $SRCTOP" echo " BLDTOP: $BLDTOP" -echo " OPENSSL_ROOT_DIR: $OPENSSL_ROOT_DIR" +echo " INSTALLTOP: $INSTALLTOP" echo " OpenSSL version: $OPENSSL_VERSION" echo "------------------------------------------------------------------" -if [ ! -d $SRCTOP/oqs-provider/.local ]; then +if [ ! -f $INSTALLTOP/lib/liboqs.a ]; then # this version of oqsprovider dependent on v0.11.0 of liboqs, so set this; # also be sure to use this openssl for liboqs-internal OpenSSL use; # see all libops config options listed at # https://github.com/open-quantum-safe/liboqs/wiki/Customizing-liboqs ( - cd $SRCTOP/oqs-provider \ + cd $SRCTOP/oqs-provider \ + && rm -rf liboqs \ && git clone --depth 1 --branch 0.11.0 https://github.com/open-quantum-safe/liboqs.git \ && cd liboqs \ && mkdir build \ && cd build \ - && cmake -DOPENSSL_ROOT_DIR=$OPENSSL_ROOT_DIR -DCMAKE_INSTALL_PREFIX=$SRCTOP/oqs-provider/.local .. \ + && cmake -DOPENSSL_ROOT_DIR=$INSTALLTOP -DCMAKE_INSTALL_PREFIX=$INSTALLTOP .. \ && make \ && make install ) fi echo " CWD: $PWD" -liboqs_DIR=$SRCTOP/oqs-provider/.local cmake $SRCTOP/oqs-provider -DOPENSSL_ROOT_DIR="$OPENSSL_ROOT_DIR" -B _build && cmake --build _build +liboqs_DIR=$INSTALLTOP cmake $SRCTOP/oqs-provider -DOPENSSL_ROOT_DIR="$INSTALLTOP" -B _build && cmake --build _build export CTEST_OUTPUT_ON_FAILURE=1 export OPENSSL_APP="$O_EXE/openssl" export OPENSSL_MODULES=$PWD/_build/lib