Fix Couchbase support on Ubuntu 26.04

This commit is contained in:
Shivam Mathur
2026-09-21 22:33:41 +05:30
parent 5ed818fc70
commit 61cfc817e3
3 changed files with 26 additions and 4 deletions
+4 -3
View File
@@ -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
+10 -1
View File
@@ -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
@@ -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 <algorithm>' "$operation_queue"; then
sed -i.bak '/^#include <memory>/i#include <algorithm>' "$operation_queue"
fi
if [ -e "$query_index_manager" ] && ! grep -q '^#include <algorithm>' "$query_index_manager"; then
sed -i.bak '/^#include <utility>/i#include <algorithm>' "$query_index_manager"
fi
rm -f "$operation_queue.bak" "$query_index_manager.bak"
}