Skip to content

Commit 1351bfa

Browse files
committed
PYCBC-1699: Update SDK Build Setup
Changes ======= * Update C++ Core * Update CMakeLists.txt to handle C++ core changes * Update Python version detection to allow pre-release versions of Python * Update OpenSSL build path to use 3.x by default * Added new build flag: PYCBC_USE_OPENSSLV1_1 to enable building against OpenSSL v1.1. * Update default OpenSSL versions: 1.1.1w and 3.5.2 Change-Id: If6403314c27e7d44a93c57873df69493be736e13 Reviewed-on: https://review.couchbase.org/c/couchbase-python-client/+/232816 Reviewed-by: Dimitris Christodoulou <dimitris.christodoulou@couchbase.com> Tested-by: Build Bot <build@couchbase.com>
1 parent 83478e2 commit 1351bfa

File tree

3 files changed

+34
-13
lines changed

3 files changed

+34
-13
lines changed

CMakeLists.txt

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,16 @@ function(get_python_version)
2929
set(PYTHON3_EXE "python3")
3030
endif()
3131

32-
execute_process(COMMAND ${PYTHON3_EXE} -c "import platform;print(platform.python_version())"
33-
OUTPUT_VARIABLE local_python_version)
34-
string(STRIP "${local_python_version}" PYTHON_VERSION)
35-
set(LOCAL_PYTHON_VERSION "${PYTHON_VERSION}" PARENT_SCOPE)
32+
# Be careful with whitespace
33+
execute_process(COMMAND ${PYTHON3_EXE} -c
34+
"import platform
35+
import re
36+
version = platform.python_version()
37+
match = re.search(r'\\d+\\.\\d+\\.\\d+', version)
38+
print(match.group())"
39+
OUTPUT_VARIABLE local_python_version
40+
OUTPUT_STRIP_TRAILING_WHITESPACE)
41+
set(LOCAL_PYTHON_VERSION "${local_python_version}" PARENT_SCOPE)
3642
endfunction()
3743

3844
if(WIN32)
@@ -53,7 +59,7 @@ message(STATUS "LOCAL_PYTHON_VERSION=${LOCAL_PYTHON_VERSION}")
5359

5460
if(LOCAL_PYTHON_VERSION)
5561
set(Python3_FIND_VIRTUALENV FIRST)
56-
message("finding python version ${LOCAL_PYTHON_VERSION}")
62+
message(STATUS "Attempting to find python version: ${LOCAL_PYTHON_VERSION}")
5763
find_package(Python3 ${LOCAL_PYTHON_VERSION} EXACT COMPONENTS Interpreter Development.Module)
5864
else()
5965
find_package(Python3 COMPONENTS Interpreter Development.Module)
@@ -99,7 +105,7 @@ if(NOT USE_STATIC_BORINGSSL)
99105
if(NOT OPENSSL_VERSION)
100106
message(STATUS "No OpenSSL version set...cannot attempt to download.")
101107
else()
102-
# default version is currently 1.1.1g (see setup.py)
108+
# see pycbc_build_setup.py for default OpenSSL versions
103109
FetchContent_Declare(openssl
104110
URL https://github.com/python/cpython-bin-deps/archive/openssl-bin-${OPENSSL_VERSION}.zip)
105111
message(STATUS "fetching OpenSSL version: ${OPENSSL_VERSION}")
@@ -112,8 +118,15 @@ if(NOT USE_STATIC_BORINGSSL)
112118
find_program(BREW_COMMAND brew)
113119
if(BREW_COMMAND)
114120
message(STATUS "brew command: ${BREW_COMMAND}")
121+
set(BREW_OPENSSL "openssl@3")
122+
if(USE_OPENSSLV1_1)
123+
set(BREW_OPENSSL "openssl@1.1")
124+
message(STATUS "Using OpenSSL v1.1 from homebrew")
125+
else()
126+
message(STATUS "Using OpenSSL v3 from homebrew")
127+
endif()
115128
execute_process(
116-
COMMAND ${BREW_COMMAND} --prefix openssl@1.1
129+
COMMAND ${BREW_COMMAND} --prefix ${BREW_OPENSSL}
117130
OUTPUT_VARIABLE BREW_OPENSSL_PREFIX
118131
RESULT_VARIABLE BREW_RESULT
119132
OUTPUT_STRIP_TRAILING_WHITESPACE)
@@ -132,7 +145,7 @@ if(NOT USE_STATIC_BORINGSSL)
132145
endif()
133146

134147
message(STATUS "Adding ${OPENSSL_INCLUDE_DIR} to include dirs...")
135-
include_directories(${OPENSSL_INCLUDE_DIR})
148+
include_directories(SYSTEM ${OPENSSL_INCLUDE_DIR})
136149
else()
137150
set(COUCHBASE_CXX_CLIENT_POST_LINKED_OPENSSL
138151
OFF
@@ -244,7 +257,7 @@ target_include_directories(
244257
"${COUCHBASE_CXX_SOURCE_DIR}/third_party/cxx_function"
245258
"${COUCHBASE_CXX_SOURCE_DIR}/third_party/expected/include")
246259

247-
set(COUCHBASE_CXX_CLIENT_TARGET couchbase_cxx_client::couchbase_cxx_client_static)
260+
set(COUCHBASE_CXX_CLIENT_TARGET couchbase_cxx_client_static_intermediate)
248261

249262
if(WIN32)
250263
target_link_libraries(

deps/couchbase-cxx-client

pycbc_build_setup.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,20 @@ def process_build_env_vars(): # noqa: C901
7171

7272
# We use OpenSSL by default if building the SDK; however, starting with v4.1.9 we build our wheels using BoringSSL.
7373
pycbc_use_openssl = os.getenv('PYCBC_USE_OPENSSL', 'true').lower() in ENV_TRUE
74-
if pycbc_use_openssl is True:
74+
pycbc_use_opensslv1_1 = os.getenv('PYCBC_USE_OPENSSLV1_1', 'false').lower() in ENV_TRUE
75+
if pycbc_use_openssl is True or pycbc_use_opensslv1_1:
7576
cmake_extra_args += ['-DUSE_STATIC_BORINGSSL:BOOL=OFF']
7677
ssl_version = os.getenv('PYCBC_OPENSSL_VERSION', None)
77-
if not ssl_version:
78-
ssl_version = '1.1.1w'
78+
if pycbc_use_opensslv1_1 is True:
79+
cmake_extra_args += ['-DUSE_OPENSSLV1_1:BOOL=ON']
80+
if not ssl_version:
81+
# lastest 1.1 version: https://github.com/openssl/openssl/releases/tag/OpenSSL_1_1_1w
82+
ssl_version = '1.1.1w'
83+
elif not ssl_version:
84+
# lastest 3.x version: https://github.com/openssl/openssl/releases/tag/openssl-3.5.2
85+
ssl_version = '3.5.2'
7986
cmake_extra_args += [f'-DOPENSSL_VERSION={ssl_version}']
87+
8088
else:
8189
cmake_extra_args += ['-DUSE_STATIC_BORINGSSL:BOOL=ON']
8290

0 commit comments

Comments
 (0)