]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Change test/recipes/95-test_external_oqsprovider.t to allow out-of-source builds
authorRichard Levitte <levitte@openssl.org>
Mon, 22 Sep 2025 16:26:50 +0000 (18:26 +0200)
committerNeil Horman <nhorman@openssl.org>
Thu, 25 Sep 2025 14:18:14 +0000 (10:18 -0400)
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 <tomas@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/28638)

test/recipes/95-test_external_oqsprovider.t
test/recipes/95-test_external_oqsprovider_data/oqsprovider.sh

index 66b584f384d601dc2b1d22fa0043ecee16513c36..139fc811be4f5c195e4f45a81d79d900c3272a18 100644 (file)
@@ -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");
index 4568309766fb9b40c575cbf3d8d00f1e9c75313d..31a1e7f9be9960f0698891f26b6a759ae3fe0b66 100755 (executable)
@@ -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