From 61cfc817e3aaf1444cc865d5d44d62a33b9acb35 Mon Sep 17 00:00:00 2001 From: Shivam Mathur Date: Mon, 21 Sep 2026 22:33:41 +0530 Subject: [PATCH] Fix Couchbase support on Ubuntu 26.04 --- src/scripts/extensions/add_extensions.sh | 7 ++++--- src/scripts/extensions/couchbase.sh | 11 ++++++++++- src/scripts/extensions/patches/couchbase.sh | 12 ++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 src/scripts/extensions/patches/couchbase.sh diff --git a/src/scripts/extensions/add_extensions.sh b/src/scripts/extensions/add_extensions.sh index 82de71d2..46b862ce 100644 --- a/src/scripts/extensions/add_extensions.sh +++ b/src/scripts/extensions/add_extensions.sh @@ -195,14 +195,15 @@ pecl_install() { check_extension "${extension%-*}" && return 0 || return 1; else cpu_count="$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo '1')" - prefix_opts="$(parse_args "$extension" CONFIGURE_PREFIX_OPTS) MAKEFLAGS='-j $cpu_count'" + local prefix_opts=() + IFS=' ' read -r -a prefix_opts <<<"$(parse_args "$extension" CONFIGURE_PREFIX_OPTS)" suffix_opts="$(parse_args "$extension" CONFIGURE_OPTS) $(parse_args "$extension" CONFIGURE_SUFFIX_OPTS)" IFS=' ' read -r -a libraries <<<"$(parse_args "$extension" LIBS) $(parse_args "$extension" "$(uname -s)"_LIBS)" (( ${#libraries[@]} )) && add_libs "${libraries[@]}" >/dev/null 2>&1 if [ "$version" = "5.3" ]; then - yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f "$extension" >/dev/null 2>&1 + yes '' 2>/dev/null | sudo env "${prefix_opts[@]}" MAKEFLAGS="-j $cpu_count" pecl install -f "$extension" >/dev/null 2>&1 else - yes '' 2>/dev/null | sudo "$prefix_opts" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" >/dev/null 2>&1 + yes '' 2>/dev/null | sudo env "${prefix_opts[@]}" MAKEFLAGS="-j $cpu_count" pecl install -f -D "$(parse_pecl_configure_options "$suffix_opts")" "$extension" >/dev/null 2>&1 fi local exit_code=$? sudo pecl info "$extension" 2>/dev/null | grep -iq 'zend extension' && prefix=zend_extension diff --git a/src/scripts/extensions/couchbase.sh b/src/scripts/extensions/couchbase.sh index 9a827a44..86b65bf1 100644 --- a/src/scripts/extensions/couchbase.sh +++ b/src/scripts/extensions/couchbase.sh @@ -62,19 +62,28 @@ add_couchbase() { add_couchbase_clibs "$ext" >/dev/null 2>&1 else add_couchbase_cxxlibs >/dev/null 2>&1 + if [[ "$ext" =~ ^couchbase-4\.1\. ]]; then + export COUCHBASE_CONFIGURE_PREFIX_OPTS="${COUCHBASE_CONFIGURE_PREFIX_OPTS:-} COUCHBASE_CMAKE_EXTRA=-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + fi fi enable_extension "couchbase" "extension" if check_extension "couchbase"; then add_log "${tick:?}" "couchbase" "Enabled" else + local install_method=pecl_install if [ "$ext" = "couchbase" ]; then ext="couchbase-$(get_pecl_version "couchbase" "stable")" n_proc="$(nproc)" export COUCHBASE_SUFFIX_OPTS="CMAKE_BUILD_TYPE=Release" export CMAKE_BUILD_PARALLEL_LEVEL="$n_proc" + install_method=add_extension_from_source + elif [[ "$ext" =~ ^couchbase-4\.1\. ]]; then + install_method=add_extension_from_source + fi + if [ "$install_method" = add_extension_from_source ]; then add_extension_from_source couchbase https://pecl.php.net couchbase couchbase "${ext##*-}" extension pecl >/dev/null 2>&1 else - pecl_install "${ext}" >/dev/null 2>&1 + "$install_method" "${ext}" >/dev/null 2>&1 fi add_extension_log "couchbase" "Installed and enabled" fi diff --git a/src/scripts/extensions/patches/couchbase.sh b/src/scripts/extensions/patches/couchbase.sh new file mode 100644 index 00000000..8629d8fc --- /dev/null +++ b/src/scripts/extensions/patches/couchbase.sh @@ -0,0 +1,12 @@ +patch_couchbase() { + local operation_queue query_index_manager + operation_queue=src/deps/couchbase-cxx-client/core/mcbp/operation_queue.cxx + query_index_manager=src/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx + if [ -e "$operation_queue" ] && ! grep -q '^#include ' "$operation_queue"; then + sed -i.bak '/^#include /i#include ' "$operation_queue" + fi + if [ -e "$query_index_manager" ] && ! grep -q '^#include ' "$query_index_manager"; then + sed -i.bak '/^#include /i#include ' "$query_index_manager" + fi + rm -f "$operation_queue.bak" "$query_index_manager.bak" +}