@@ -349,6 +349,53 @@ else
349349 "${STATIC_BUILD_DIR}/cassandra-integration-tests" --gtest_list_tests > /dev/null
350350endif
351351
352+ # =============================================================================
353+ # OpenSSL 3.0 Compatibility Verification
354+ # =============================================================================
355+ # Regression test for issue #455: ensures the static driver archive can link
356+ # against OpenSSL 3.0 (our minimum supported version). Rather than rebuilding
357+ # from source, this target installs the artifact already produced by the
358+ # build-static-driver target into a sysroot alongside OpenSSL 3.0.2 from a
359+ # pinned Launchpad deb. If the archive references symbols only available in
360+ # OpenSSL >3.0 (e.g. due to build environment contamination), the link fails.
361+ #
362+ # This target is Linux/amd64-only (matches our release artifact platform).
363+ # =============================================================================
364+
365+ OPENSSL_3_0_COMPAT_SYSROOT := /tmp/openssl-3.0-compat-sysroot
366+ OPENSSL_3_0_LIBSSL_DEV_URL := https://launchpad.net/ubuntu/+archive/primary/+files/libssl-dev_3.0.2-0ubuntu1_amd64.deb
367+
368+ verify-openssl-3.0-compat : build-static-driver
369+ @echo " === Verifying static driver links against OpenSSL 3.0 (issue #455) ==="
370+ rm -rf " $( OPENSSL_3_0_COMPAT_SYSROOT) "
371+ mkdir -p " $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/local/lib/x86_64-linux-gnu/pkgconfig"
372+ mkdir -p " $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/local/include"
373+ cp " $( STATIC_BUILD_DIR) /libscylladb_static.a" \
374+ " $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/local/lib/x86_64-linux-gnu/"
375+ cp " $( STATIC_BUILD_DIR) /scylla-rust-wrapper/scylladb_static.pc" \
376+ " $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/local/lib/x86_64-linux-gnu/pkgconfig/"
377+ cp include/cassandra.h include/cassandra_deleted_functions.h \
378+ " $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/local/include/"
379+ curl -fL -o /tmp/libssl-dev_3.0.2.deb " $( OPENSSL_3_0_LIBSSL_DEV_URL) "
380+ dpkg-deb -x /tmp/libssl-dev_3.0.2.deb " $( OPENSSL_3_0_COMPAT_SYSROOT) "
381+ rm -f " $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/lib/x86_64-linux-gnu/libssl.so"
382+ rm -f " $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/lib/x86_64-linux-gnu/libcrypto.so"
383+ PKG_CONFIG_SYSROOT_DIR=" $( OPENSSL_3_0_COMPAT_SYSROOT) " \
384+ PKG_CONFIG_PATH=" $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/local/lib/x86_64-linux-gnu/pkgconfig:$( OPENSSL_3_0_COMPAT_SYSROOT) /usr/lib/x86_64-linux-gnu/pkgconfig" \
385+ pkg-config --libs --static scylladb_static
386+ cc \
387+ $$(PKG_CONFIG_SYSROOT_DIR="$(OPENSSL_3_0_COMPAT_SYSROOT ) " \
388+ PKG_CONFIG_PATH=" $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/local/lib/x86_64-linux-gnu/pkgconfig:$( OPENSSL_3_0_COMPAT_SYSROOT) /usr/lib/x86_64-linux-gnu/pkgconfig" \
389+ pkg-config --cflags scylladb_static) \
390+ examples/ssl/ssl.c \
391+ $$(PKG_CONFIG_SYSROOT_DIR="$(OPENSSL_3_0_COMPAT_SYSROOT ) " \
392+ PKG_CONFIG_PATH=" $( OPENSSL_3_0_COMPAT_SYSROOT) /usr/local/lib/x86_64-linux-gnu/pkgconfig:$( OPENSSL_3_0_COMPAT_SYSROOT) /usr/lib/x86_64-linux-gnu/pkgconfig" \
393+ pkg-config --libs --static scylladb_static) \
394+ -o /tmp/openssl-3.0-compat-link-test
395+ @echo " === OpenSSL 3.0 compatibility verified ==="
396+ rm -rf " $( OPENSSL_3_0_COMPAT_SYSROOT) " \
397+ /tmp/libssl-dev_3.0.2.deb /tmp/openssl-3.0-compat-link-test
398+
352399build-examples :
353400 @echo " Building examples to ${EXAMPLES_DIR} "
354401 @mkdir " ${BUILD_DIR} " > /dev/null 2>&1 || true
0 commit comments