Skip to content

Commit b2b371d

Browse files
committed
ci: verify static driver links against OpenSSL 3.0
1 parent 4169d6c commit b2b371d

3 files changed

Lines changed: 60 additions & 4 deletions

File tree

.github/workflows/build-cpack-packages.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,12 @@ jobs:
5757
sudo apt-get update -y
5858
make install-build-dependencies
5959
make build-static-integration-test-bin
60-
rm -rf build-static
60+
61+
- name: Verify static driver links against OpenSSL 3.0 (issue #455)
62+
run: make verify-openssl-3.0-compat
63+
64+
- name: Clean up static build directory
65+
run: rm -rf build-static
6166

6267
- name: Collect artifacts
6368
if: inputs.save-artifacts

.github/workflows/build-lint-and-test.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,13 @@ jobs:
4848
run: make build-integration-test-bin
4949

5050
- name: Verify static linking builds (regression test for issue #164)
51-
run: |
52-
make build-static-integration-test-bin
53-
rm -rf build-static
51+
run: make build-static-integration-test-bin
52+
53+
- name: Verify static driver links against OpenSSL 3.0 (issue #455)
54+
run: make verify-openssl-3.0-compat
55+
56+
- name: Clean up static build directory
57+
run: rm -rf build-static
5458

5559
- name: Save integration test binary
5660
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4

Makefile

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,53 @@ else
349349
"${STATIC_BUILD_DIR}/cassandra-integration-tests" --gtest_list_tests > /dev/null
350350
endif
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+
352399
build-examples:
353400
@echo "Building examples to ${EXAMPLES_DIR}"
354401
@mkdir "${BUILD_DIR}" >/dev/null 2>&1 || true

0 commit comments

Comments
 (0)